@vendasta/business-center 0.29.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,4 +5,4 @@
5
5
  // Interfaces.
6
6
  // *********************************
7
7
  export {};
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2J1c2luZXNzX2NlbnRlcl9zZGsvc3JjL2xpYi9faW50ZXJuYWwvaW50ZXJmYWNlcy9hcGkuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyQkFBMkI7QUFDM0IsZ0JBQWdCO0FBQ2hCLEVBQUU7QUFDRixjQUFjO0FBQ2Qsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBJbnRlcmZhY2VzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzSW50ZXJmYWNlIHtcbiAgICBhZGRyZXNzPzogc3RyaW5nO1xuICAgIGNpdHk/OiBzdHJpbmc7XG4gICAgc3RhdGU/OiBzdHJpbmc7XG4gICAgY291bnRyeT86IHN0cmluZztcbiAgICBwb3N0YWxDb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc29jaWF0ZWRVc2VySW50ZXJmYWNlIHtcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmc7XG4gICAgbGFzdE5hbWU/OiBzdHJpbmc7XG4gICAgcGhvbmU/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1c2luZXNzRGF0YUludGVyZmFjZSB7XG4gICAgYWRkcmVzcz86IEFkZHJlc3NJbnRlcmZhY2U7XG4gICAgYnVzaW5lc3NDYXRlZ29yeT86IHN0cmluZztcbiAgICBwaG9uZU51bWJlcj86IHN0cmluZztcbiAgICB3ZWJzaXRlVXJsPzogc3RyaW5nO1xuICAgIGZhY2Vib29rVXJsPzogc3RyaW5nO1xuICAgIHR3aXR0ZXJVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkludGVyZmFjZSB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBjbGllbnRUYWdzPzogc3RyaW5nW107XG4gICAgaXNWZXJpZmllZD86IGJvb2xlYW47XG4gICAgcGFnZXM/OiBDb25uZWN0aW9uSW50ZXJmYWNlW107XG4gICAgc3NpZD86IHN0cmluZztcbiAgICB0b2tlbklzQnJva2VuPzogYm9vbGVhbjtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIGxvY2F0aW9uSWQ/OiBzdHJpbmc7XG4gICAgbWFwc1VyaT86IHN0cmluZztcbiAgICBkZWxldGVVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkluZm9JbnRlcmZhY2Uge1xuICAgIGZhY2Vib29rPzogYm9vbGVhbjtcbiAgICBpbnN0YWdyYW0/OiBib29sZWFuO1xuICAgIGxpbmtlZGluPzogYm9vbGVhbjtcbiAgICB0d2l0dGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDb25uZWN0aW9uc1Jlc3BvbnNlQ29ubmVjdGlvbnNFbnRyeUludGVyZmFjZSB7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogUmVwZWF0ZWRDb25uZWN0aW9uSW50ZXJmYWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RJbnRlcmZhY2Uge1xuICAgIGZpcnN0TmFtZT86IHN0cmluZztcbiAgICBsYXN0TmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBbmRBc3NvY2lhdGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICBwYXJ0bmVySWQ/OiBzdHJpbmc7XG4gICAgYWNjb3VudEdyb3VwSWQ/OiBzdHJpbmc7XG4gICAgZmlyc3ROYW1lPzogc3RyaW5nO1xuICAgIGxhc3ROYW1lPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICAgIGNvbmZpcm1QYXNzd29yZD86IHN0cmluZztcbiAgICBwaG9uZT86IHN0cmluZztcbiAgICBncmVldGluZ05hbWU/OiBzdHJpbmc7XG4gICAgc2VuZFdlbGNvbWVFbWFpbD86IGJvb2xlYW47XG4gICAgd2VsY29tZU1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgZmFpbE9uRXhpc3RpbmdVc2VyPzogYm9vbGVhbjtcbiAgICBub3RpZmljYXRpb25zRmxhZz86IGJvb2xlYW47XG4gICAgZmFpbE9uRXhpc3RpbmdBc3NvY2lhdGlvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQW5kQXNzb2NpYXRlUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICB1bmlmaWVkVXNlcklkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUJ1c2luZXNzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZD86IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGRlbGV0ZVVzZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUZpbGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBmaWxlSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29ubmVjdGlvbnNJbmZvUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDb25uZWN0aW9uc0luZm9SZXNwb25zZUludGVyZmFjZSB7XG4gICAgY29ubmVjdGlvbkluZm8/OiBDb25uZWN0aW9uSW5mb0ludGVyZmFjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDb25uZWN0aW9uc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29ubmVjdGlvbnNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgY29ubmVjdGlvbnM/OiB7W2tleTogc3RyaW5nXTogUmVwZWF0ZWRDb25uZWN0aW9uSW50ZXJmYWNlfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDcmVhdGVQYXNzd29yZFVybFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICBwYXJ0bmVySWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q3JlYXRlUGFzc3dvcmRVcmxSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEZhY2Vib29rQXBwQ2hlY2tlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHJlY29ubmVjdEdyb3VwPzogUmVjb25uZWN0R3JvdXBJbnRlcmZhY2VbXTtcbiAgICB0b3RhbENvbm5lY3Rpb25zPzogbnVtYmVyO1xuICAgIHJlY29ubmVjdE5lZWRlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VHJhY2tlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHBhcnRuZXJJZD86IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VHJhY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0cmFja2Vycz86IFRyYWNrZXJzSW50ZXJmYWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFR3aXR0ZXJBcHBDaGVja2VyUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUd2l0dGVyQXBwQ2hlY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0b3RhbENvbm5lY3Rpb25zPzogbnVtYmVyO1xuICAgIHJlY29ubmVjdEdyb3VwPzogUmVjb25uZWN0R3JvdXBJbnRlcmZhY2VbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHBhcnRuZXJJZD86IHN0cmluZztcbiAgICB1c2VyTmFtZT86IHN0cmluZztcbiAgICBsb2dpblVybD86IHN0cmluZztcbiAgICBtYXJrZXRJZD86IHN0cmluZztcbiAgICB3ZWxjb21lTWVzc2FnZT86IHN0cmluZztcbiAgICBsYW5ndWFnZUNvZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdGVtcGxhdGVIdG1sPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3ROYW1lc3BhY2VEZXRhaWxzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgb3RwQ29kZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TmFtZXNwYWNlRGV0YWlsc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2VzPzogTmFtZXNwYWNlRGV0YWlsc0ludGVyZmFjZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RVc2Vyc0ZvckJ1c2luZXNzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFVzZXJzRm9yQnVzaW5lc3NSZXNwb25zZUludGVyZmFjZSB7XG4gICAgYXNzb2NpYXRlZFVzZXJzPzogQXNzb2NpYXRlZFVzZXJJbnRlcmZhY2VbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0VXNlcnNGb3JCdXNpbmVzc2VzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWRzPzogc3RyaW5nW107XG4gICAgbXVsdGlMb2NhdGlvblBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBhc3NvY2lhdGVkVXNlcnM/OiBBc3NvY2lhdGVkVXNlckludGVyZmFjZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZURldGFpbHNJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZT86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGxvZ29Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb25uZWN0R3JvdXBJbnRlcmZhY2Uge1xuICAgIHNzaWQ/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0b2tlbkJyb2tlbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBidXNpbmVzc0RhdGE/OiBCdXNpbmVzc0RhdGFJbnRlcmZhY2U7XG4gICAgY29udGFjdD86IENvbnRhY3RJbnRlcmZhY2U7XG4gICAgYnVzaW5lc3NOYW1lPzogc3RyaW5nO1xuICAgIHBhcnRuZXJJZD86IHN0cmluZztcbiAgICBtYXJrZXRJZD86IHN0cmluZztcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICBwbGFjZUlkPzogc3RyaW5nO1xuICAgIHNhbGVzUGVyc29uSWQ/OiBzdHJpbmc7XG4gICAgcmVjYXB0Y2hhPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZVVzZXJGcm9tQnVzaW5lc3NSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZD86IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwZWF0ZWRDb25uZWN0aW9uSW50ZXJmYWNlIHtcbiAgICBjb25uZWN0aW9uPzogQ29ubmVjdGlvbkludGVyZmFjZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RTaG9ydE9UUENvZGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBlbWFpbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0U2hvcnRPVFBDb2RlUmVzcG9uc2VJbnRlcmZhY2Uge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnNJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZmlsdGVycz86IFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnNJbnRlcmZhY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRXZWxjb21lRW1haWxSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIGxvZ2luVXJsPzogc3RyaW5nO1xuICAgIHVzZVBsYXRmb3JtRGVmYXVsdERvbWFpbj86IGJvb2xlYW47XG4gICAgbWFya2V0SWQ/OiBzdHJpbmc7XG4gICAgd2VsY29tZU1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2VDb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldFRyYWNrZXJSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIHRyYWNrZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0VHJhY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBzdWNjZXNzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja2Vyc0ludGVyZmFjZSB7XG4gICAgd2VsY29tZVZpZGVvPzogYm9vbGVhbjtcbiAgICBhY2FkZW15PzogYm9vbGVhbjtcbiAgICBza2lwcGVkR2JwQ29ubmVjdGlvbj86IGJvb2xlYW47XG4gICAgc2tpcHBlZEludGVncmF0aW9uQ29ubmVjdGlvbj86IGJvb2xlYW47XG4gICAgc2tpcHBlZFdlYmNoYXRTZXR1cD86IGJvb2xlYW47XG4gICAgc2tpcHBlZFNtc1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG4gICAgc2tpcHBlZE1vYmlsZU5vdGlmaWNhdGlvbj86IGJvb2xlYW47XG59XG5cbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2J1c2luZXNzX2NlbnRlcl9zZGsvc3JjL2xpYi9faW50ZXJuYWwvaW50ZXJmYWNlcy9hcGkuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyQkFBMkI7QUFDM0IsZ0JBQWdCO0FBQ2hCLEVBQUU7QUFDRixjQUFjO0FBQ2Qsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBJbnRlcmZhY2VzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzSW50ZXJmYWNlIHtcbiAgICBhZGRyZXNzPzogc3RyaW5nO1xuICAgIGNpdHk/OiBzdHJpbmc7XG4gICAgc3RhdGU/OiBzdHJpbmc7XG4gICAgY291bnRyeT86IHN0cmluZztcbiAgICBwb3N0YWxDb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc29jaWF0ZWRVc2VySW50ZXJmYWNlIHtcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmc7XG4gICAgbGFzdE5hbWU/OiBzdHJpbmc7XG4gICAgcGhvbmU/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1c2luZXNzRGF0YUludGVyZmFjZSB7XG4gICAgYWRkcmVzcz86IEFkZHJlc3NJbnRlcmZhY2U7XG4gICAgYnVzaW5lc3NDYXRlZ29yeT86IHN0cmluZztcbiAgICBwaG9uZU51bWJlcj86IHN0cmluZztcbiAgICB3ZWJzaXRlVXJsPzogc3RyaW5nO1xuICAgIGZhY2Vib29rVXJsPzogc3RyaW5nO1xuICAgIHR3aXR0ZXJVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkludGVyZmFjZSB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBjbGllbnRUYWdzPzogc3RyaW5nW107XG4gICAgaXNWZXJpZmllZD86IGJvb2xlYW47XG4gICAgcGFnZXM/OiBDb25uZWN0aW9uSW50ZXJmYWNlW107XG4gICAgc3NpZD86IHN0cmluZztcbiAgICB0b2tlbklzQnJva2VuPzogYm9vbGVhbjtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIGxvY2F0aW9uSWQ/OiBzdHJpbmc7XG4gICAgbWFwc1VyaT86IHN0cmluZztcbiAgICBkZWxldGVVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkluZm9JbnRlcmZhY2Uge1xuICAgIGZhY2Vib29rPzogYm9vbGVhbjtcbiAgICBpbnN0YWdyYW0/OiBib29sZWFuO1xuICAgIGxpbmtlZGluPzogYm9vbGVhbjtcbiAgICB0d2l0dGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDb25uZWN0aW9uc1Jlc3BvbnNlQ29ubmVjdGlvbnNFbnRyeUludGVyZmFjZSB7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogUmVwZWF0ZWRDb25uZWN0aW9uSW50ZXJmYWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RJbnRlcmZhY2Uge1xuICAgIGZpcnN0TmFtZT86IHN0cmluZztcbiAgICBsYXN0TmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBbmRBc3NvY2lhdGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICBwYXJ0bmVySWQ/OiBzdHJpbmc7XG4gICAgYWNjb3VudEdyb3VwSWQ/OiBzdHJpbmc7XG4gICAgZmlyc3ROYW1lPzogc3RyaW5nO1xuICAgIGxhc3ROYW1lPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICAgIGNvbmZpcm1QYXNzd29yZD86IHN0cmluZztcbiAgICBwaG9uZT86IHN0cmluZztcbiAgICBncmVldGluZ05hbWU/OiBzdHJpbmc7XG4gICAgc2VuZFdlbGNvbWVFbWFpbD86IGJvb2xlYW47XG4gICAgd2VsY29tZU1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgZmFpbE9uRXhpc3RpbmdVc2VyPzogYm9vbGVhbjtcbiAgICBub3RpZmljYXRpb25zRmxhZz86IGJvb2xlYW47XG4gICAgZmFpbE9uRXhpc3RpbmdBc3NvY2lhdGlvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQW5kQXNzb2NpYXRlUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICB1bmlmaWVkVXNlcklkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUJ1c2luZXNzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZD86IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGRlbGV0ZVVzZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUZpbGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBmaWxlSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29ubmVjdGlvbnNJbmZvUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDb25uZWN0aW9uc0luZm9SZXNwb25zZUludGVyZmFjZSB7XG4gICAgY29ubmVjdGlvbkluZm8/OiBDb25uZWN0aW9uSW5mb0ludGVyZmFjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDb25uZWN0aW9uc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29ubmVjdGlvbnNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgY29ubmVjdGlvbnM/OiB7W2tleTogc3RyaW5nXTogUmVwZWF0ZWRDb25uZWN0aW9uSW50ZXJmYWNlfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDcmVhdGVQYXNzd29yZFVybFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICBwYXJ0bmVySWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q3JlYXRlUGFzc3dvcmRVcmxSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEZhY2Vib29rQXBwQ2hlY2tlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHJlY29ubmVjdEdyb3VwPzogUmVjb25uZWN0R3JvdXBJbnRlcmZhY2VbXTtcbiAgICB0b3RhbENvbm5lY3Rpb25zPzogbnVtYmVyO1xuICAgIHJlY29ubmVjdE5lZWRlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VHJhY2tlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHBhcnRuZXJJZD86IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VHJhY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0cmFja2Vycz86IFRyYWNrZXJzSW50ZXJmYWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFR3aXR0ZXJBcHBDaGVja2VyUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUd2l0dGVyQXBwQ2hlY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0b3RhbENvbm5lY3Rpb25zPzogbnVtYmVyO1xuICAgIHJlY29ubmVjdEdyb3VwPzogUmVjb25uZWN0R3JvdXBJbnRlcmZhY2VbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHBhcnRuZXJJZD86IHN0cmluZztcbiAgICB1c2VyTmFtZT86IHN0cmluZztcbiAgICBsb2dpblVybD86IHN0cmluZztcbiAgICBtYXJrZXRJZD86IHN0cmluZztcbiAgICB3ZWxjb21lTWVzc2FnZT86IHN0cmluZztcbiAgICBsYW5ndWFnZUNvZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdGVtcGxhdGVIdG1sPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3ROYW1lc3BhY2VEZXRhaWxzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgb3RwQ29kZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TmFtZXNwYWNlRGV0YWlsc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2VzPzogTmFtZXNwYWNlRGV0YWlsc0ludGVyZmFjZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RVc2Vyc0ZvckJ1c2luZXNzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFVzZXJzRm9yQnVzaW5lc3NSZXNwb25zZUludGVyZmFjZSB7XG4gICAgYXNzb2NpYXRlZFVzZXJzPzogQXNzb2NpYXRlZFVzZXJJbnRlcmZhY2VbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0VXNlcnNGb3JCdXNpbmVzc2VzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWRzPzogc3RyaW5nW107XG4gICAgbXVsdGlMb2NhdGlvblBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBhc3NvY2lhdGVkVXNlcnM/OiBBc3NvY2lhdGVkVXNlckludGVyZmFjZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZURldGFpbHNJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZT86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGxvZ29Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb25uZWN0R3JvdXBJbnRlcmZhY2Uge1xuICAgIHNzaWQ/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0b2tlbkJyb2tlbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBidXNpbmVzc0RhdGE/OiBCdXNpbmVzc0RhdGFJbnRlcmZhY2U7XG4gICAgY29udGFjdD86IENvbnRhY3RJbnRlcmZhY2U7XG4gICAgYnVzaW5lc3NOYW1lPzogc3RyaW5nO1xuICAgIHBhcnRuZXJJZD86IHN0cmluZztcbiAgICBtYXJrZXRJZD86IHN0cmluZztcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICBwbGFjZUlkPzogc3RyaW5nO1xuICAgIHNhbGVzUGVyc29uSWQ/OiBzdHJpbmc7XG4gICAgcmVjYXB0Y2hhPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZVVzZXJGcm9tQnVzaW5lc3NSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZD86IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwZWF0ZWRDb25uZWN0aW9uSW50ZXJmYWNlIHtcbiAgICBjb25uZWN0aW9uPzogQ29ubmVjdGlvbkludGVyZmFjZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RTaG9ydE9UUENvZGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBlbWFpbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0U2hvcnRPVFBDb2RlUmVzcG9uc2VJbnRlcmZhY2Uge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnNJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZmlsdGVycz86IFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnNJbnRlcmZhY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRXZWxjb21lRW1haWxSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIGxvZ2luVXJsPzogc3RyaW5nO1xuICAgIHVzZVBsYXRmb3JtRGVmYXVsdERvbWFpbj86IGJvb2xlYW47XG4gICAgbWFya2V0SWQ/OiBzdHJpbmc7XG4gICAgd2VsY29tZU1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2VDb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldFRyYWNrZXJSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIHRyYWNrZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0VHJhY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBzdWNjZXNzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja2Vyc0ludGVyZmFjZSB7XG4gICAgd2VsY29tZVZpZGVvPzogYm9vbGVhbjtcbiAgICBhY2FkZW15PzogYm9vbGVhbjtcbiAgICBza2lwcGVkR2JwQ29ubmVjdGlvbj86IGJvb2xlYW47XG4gICAgc2tpcHBlZEludGVncmF0aW9uQ29ubmVjdGlvbj86IGJvb2xlYW47XG4gICAgc2tpcHBlZFdlYmNoYXRTZXR1cD86IGJvb2xlYW47XG4gICAgc2tpcHBlZFNtc1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG4gICAgc2tpcHBlZE1vYmlsZU5vdGlmaWNhdGlvbj86IGJvb2xlYW47XG4gICAgc2tpcHBlZEFpV29ya2ZvcmNlPzogYm9vbGVhbjtcbn1cblxuIl19
@@ -921,6 +921,9 @@ export class RegisterRequest {
921
921
  if (typeof this.recaptcha !== 'undefined') {
922
922
  toReturn['recaptcha'] = this.recaptcha;
923
923
  }
924
+ if (typeof this.password !== 'undefined') {
925
+ toReturn['password'] = this.password;
926
+ }
924
927
  return toReturn;
925
928
  }
926
929
  }
@@ -1209,7 +1212,10 @@ export class Trackers {
1209
1212
  if (typeof this.skippedMobileNotification !== 'undefined') {
1210
1213
  toReturn['skippedMobileNotification'] = this.skippedMobileNotification;
1211
1214
  }
1215
+ if (typeof this.skippedAiWorkforce !== 'undefined') {
1216
+ toReturn['skippedAiWorkforce'] = this.skippedAiWorkforce;
1217
+ }
1212
1218
  return toReturn;
1213
1219
  }
1214
1220
  }
1215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYnVzaW5lc3NfY2VudGVyX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQU8sT0FBTztJQU9oQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0QixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUEyQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQzlFLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUM7UUFDckUsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUN4RSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FB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LElBQUksQ0FBQyxzQkFBc0IsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7U0FBQztRQUMzSCxJQUFJLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztTQUFDO1FBQ3BJLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuXG5leHBvcnQgY2xhc3MgQWRkcmVzcyBpbXBsZW1lbnRzIGkuQWRkcmVzc0ludGVyZmFjZSB7XG4gICAgYWRkcmVzczogc3RyaW5nO1xuICAgIGNpdHk6IHN0cmluZztcbiAgICBzdGF0ZTogc3RyaW5nO1xuICAgIGNvdW50cnk6IHN0cmluZztcbiAgICBwb3N0YWxDb2RlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBZGRyZXNzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQWRkcmVzcygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQWRkcmVzc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFkZHJlc3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FkZHJlc3MnXSA9IHRoaXMuYWRkcmVzczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jaXR5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjaXR5J10gPSB0aGlzLmNpdHk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N0YXRlJ10gPSB0aGlzLnN0YXRlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvdW50cnkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvdW50cnknXSA9IHRoaXMuY291bnRyeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0YWxDb2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3N0YWxDb2RlJ10gPSB0aGlzLnBvc3RhbENvZGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzb2NpYXRlZFVzZXIgaW1wbGVtZW50cyBpLkFzc29jaWF0ZWRVc2VySW50ZXJmYWNlIHtcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xuICAgIGxhc3ROYW1lOiBzdHJpbmc7XG4gICAgcGhvbmU6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEFzc29jaWF0ZWRVc2VyIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQXNzb2NpYXRlZFVzZXIoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkFzc29jaWF0ZWRVc2VySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VtYWlsJ10gPSB0aGlzLmVtYWlsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpcnN0TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZmlyc3ROYW1lJ10gPSB0aGlzLmZpcnN0TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGFzdE5hbWUnXSA9IHRoaXMubGFzdE5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGhvbmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bob25lJ10gPSB0aGlzLnBob25lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcklkJ10gPSB0aGlzLnVzZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdXNpbmVzc0RhdGEgaW1wbGVtZW50cyBpLkJ1c2luZXNzRGF0YUludGVyZmFjZSB7XG4gICAgYWRkcmVzczogQWRkcmVzcztcbiAgICBidXNpbmVzc0NhdGVnb3J5OiBzdHJpbmc7XG4gICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICB3ZWJzaXRlVXJsOiBzdHJpbmc7XG4gICAgZmFjZWJvb2tVcmw6IHN0cmluZztcbiAgICB0d2l0dGVyVXJsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCdXNpbmVzc0RhdGEge1xuICAgICAgICBsZXQgbSA9IG5ldyBCdXNpbmVzc0RhdGEoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWRkcmVzcykge20uYWRkcmVzcyA9IEFkZHJlc3MuZnJvbVByb3RvKHByb3RvLmFkZHJlc3MpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CdXNpbmVzc0RhdGFJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hZGRyZXNzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFkZHJlc3MgIT09IG51bGwpIHt0b1JldHVyblsnYWRkcmVzcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hZGRyZXNzID8gKHRoaXMuYWRkcmVzcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hZGRyZXNzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzQ2F0ZWdvcnkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1c2luZXNzQ2F0ZWdvcnknXSA9IHRoaXMuYnVzaW5lc3NDYXRlZ29yeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5waG9uZU51bWJlciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGhvbmVOdW1iZXInXSA9IHRoaXMucGhvbmVOdW1iZXI7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMud2Vic2l0ZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnd2Vic2l0ZVVybCddID0gdGhpcy53ZWJzaXRlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZhY2Vib29rVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmYWNlYm9va1VybCddID0gdGhpcy5mYWNlYm9va1VybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50d2l0dGVyVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0d2l0dGVyVXJsJ10gPSB0aGlzLnR3aXR0ZXJVcmw7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvbiBpbXBsZW1lbnRzIGkuQ29ubmVjdGlvbkludGVyZmFjZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNsaWVudFRhZ3M6IHN0cmluZ1tdO1xuICAgIGlzVmVyaWZpZWQ6IGJvb2xlYW47XG4gICAgcGFnZXM6IENvbm5lY3Rpb25bXTtcbiAgICBzc2lkOiBzdHJpbmc7XG4gICAgdG9rZW5Jc0Jyb2tlbjogYm9vbGVhbjtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgbG9jYXRpb25JZDogc3RyaW5nO1xuICAgIG1hcHNVcmk6IHN0cmluZztcbiAgICBkZWxldGVVcmw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENvbm5lY3Rpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBDb25uZWN0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnBhZ2VzKSB7bS5wYWdlcyA9IHByb3RvLnBhZ2VzLm1hcChDb25uZWN0aW9uLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNvbm5lY3Rpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2xpZW50VGFncyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2xpZW50VGFncyddID0gdGhpcy5jbGllbnRUYWdzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlzVmVyaWZpZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzVmVyaWZpZWQnXSA9IHRoaXMuaXNWZXJpZmllZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdlcyA/ICh0aGlzLnBhZ2VzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2VzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNzaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NzaWQnXSA9IHRoaXMuc3NpZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50b2tlbklzQnJva2VuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0b2tlbklzQnJva2VuJ10gPSB0aGlzLnRva2VuSXNCcm9rZW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHlwZSddID0gdGhpcy50eXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9uSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2F0aW9uSWQnXSA9IHRoaXMubG9jYXRpb25JZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXBzVXJpICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtYXBzVXJpJ10gPSB0aGlzLm1hcHNVcmk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVsZXRlVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZWxldGVVcmwnXSA9IHRoaXMuZGVsZXRlVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25JbmZvIGltcGxlbWVudHMgaS5Db25uZWN0aW9uSW5mb0ludGVyZmFjZSB7XG4gICAgZmFjZWJvb2s6IGJvb2xlYW47XG4gICAgaW5zdGFncmFtOiBib29sZWFuO1xuICAgIGxpbmtlZGluOiBib29sZWFuO1xuICAgIHR3aXR0ZXI6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDb25uZWN0aW9uSW5mbyB7XG4gICAgICAgIGxldCBtID0gbmV3IENvbm5lY3Rpb25JbmZvKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Db25uZWN0aW9uSW5mb0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZhY2Vib29rICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmYWNlYm9vayddID0gdGhpcy5mYWNlYm9vazt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbnN0YWdyYW0gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2luc3RhZ3JhbSddID0gdGhpcy5pbnN0YWdyYW07fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlua2VkaW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpbmtlZGluJ10gPSB0aGlzLmxpbmtlZGluO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnR3aXR0ZXIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3R3aXR0ZXInXSA9IHRoaXMudHdpdHRlcjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRDb25uZWN0aW9uc1Jlc3BvbnNlQ29ubmVjdGlvbnNFbnRyeSBpbXBsZW1lbnRzIGkuR2V0Q29ubmVjdGlvbnNSZXNwb25zZUNvbm5lY3Rpb25zRW50cnlJbnRlcmZhY2Uge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBSZXBlYXRlZENvbm5lY3Rpb247XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRDb25uZWN0aW9uc1Jlc3BvbnNlQ29ubmVjdGlvbnNFbnRyeSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENvbm5lY3Rpb25zUmVzcG9uc2VDb25uZWN0aW9uc0VudHJ5KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnZhbHVlKSB7bS52YWx1ZSA9IFJlcGVhdGVkQ29ubmVjdGlvbi5mcm9tUHJvdG8ocHJvdG8udmFsdWUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRDb25uZWN0aW9uc1Jlc3BvbnNlQ29ubmVjdGlvbnNFbnRyeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2V5J10gPSB0aGlzLmtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd2YWx1ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy52YWx1ZSA/ICh0aGlzLnZhbHVlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnZhbHVlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbnRhY3QgaW1wbGVtZW50cyBpLkNvbnRhY3RJbnRlcmZhY2Uge1xuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xuICAgIGxhc3ROYW1lOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDb250YWN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ29udGFjdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ29udGFjdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpcnN0TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZmlyc3ROYW1lJ10gPSB0aGlzLmZpcnN0TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGFzdE5hbWUnXSA9IHRoaXMubGFzdE5hbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlQW5kQXNzb2NpYXRlUmVxdWVzdCBpbXBsZW1lbnRzIGkuQ3JlYXRlQW5kQXNzb2NpYXRlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xuICAgIGxhc3ROYW1lOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICBjb25maXJtUGFzc3dvcmQ6IHN0cmluZztcbiAgICBwaG9uZTogc3RyaW5nO1xuICAgIGdyZWV0aW5nTmFtZTogc3RyaW5nO1xuICAgIHNlbmRXZWxjb21lRW1haWw6IGJvb2xlYW47XG4gICAgd2VsY29tZU1lc3NhZ2U6IHN0cmluZztcbiAgICBmYWlsT25FeGlzdGluZ1VzZXI6IGJvb2xlYW47XG4gICAgbm90aWZpY2F0aW9uc0ZsYWc6IGJvb2xlYW47XG4gICAgZmFpbE9uRXhpc3RpbmdBc3NvY2lhdGlvbjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENyZWF0ZUFuZEFzc29jaWF0ZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBDcmVhdGVBbmRBc3NvY2lhdGVSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVBbmRBc3NvY2lhdGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VtYWlsJ10gPSB0aGlzLmVtYWlsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRuZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydG5lcklkJ10gPSB0aGlzLnBhcnRuZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmlyc3ROYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmaXJzdE5hbWUnXSA9IHRoaXMuZmlyc3ROYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhc3ROYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsYXN0TmFtZSddID0gdGhpcy5sYXN0TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXNzd29yZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFzc3dvcmQnXSA9IHRoaXMucGFzc3dvcmQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlybVBhc3N3b3JkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb25maXJtUGFzc3dvcmQnXSA9IHRoaXMuY29uZmlybVBhc3N3b3JkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBob25lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwaG9uZSddID0gdGhpcy5waG9uZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ncmVldGluZ05hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2dyZWV0aW5nTmFtZSddID0gdGhpcy5ncmVldGluZ05hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VuZFdlbGNvbWVFbWFpbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VuZFdlbGNvbWVFbWFpbCddID0gdGhpcy5zZW5kV2VsY29tZUVtYWlsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndlbGNvbWVNZXNzYWdlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd3ZWxjb21lTWVzc2FnZSddID0gdGhpcy53ZWxjb21lTWVzc2FnZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYWlsT25FeGlzdGluZ1VzZXIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZhaWxPbkV4aXN0aW5nVXNlciddID0gdGhpcy5mYWlsT25FeGlzdGluZ1VzZXI7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubm90aWZpY2F0aW9uc0ZsYWcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25vdGlmaWNhdGlvbnNGbGFnJ10gPSB0aGlzLm5vdGlmaWNhdGlvbnNGbGFnO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZhaWxPbkV4aXN0aW5nQXNzb2NpYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZhaWxPbkV4aXN0aW5nQXNzb2NpYXRpb24nXSA9IHRoaXMuZmFpbE9uRXhpc3RpbmdBc3NvY2lhdGlvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVBbmRBc3NvY2lhdGVSZXNwb25zZSBpbXBsZW1lbnRzIGkuQ3JlYXRlQW5kQXNzb2NpYXRlUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIHVuaWZpZWRVc2VySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENyZWF0ZUFuZEFzc29jaWF0ZVJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ3JlYXRlQW5kQXNzb2NpYXRlUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNyZWF0ZUFuZEFzc29jaWF0ZVJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVuaWZpZWRVc2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VuaWZpZWRVc2VySWQnXSA9IHRoaXMudW5pZmllZFVzZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVCdXNpbmVzc1JlcXVlc3QgaW1wbGVtZW50cyBpLkRlbGV0ZUJ1c2luZXNzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBkZWxldGVVc2VyOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRGVsZXRlQnVzaW5lc3NSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRGVsZXRlQnVzaW5lc3NSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5EZWxldGVCdXNpbmVzc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0lkJ10gPSB0aGlzLmJ1c2luZXNzSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVzc2FnZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVzc2FnZSddID0gdGhpcy5tZXNzYWdlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlbGV0ZVVzZXIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RlbGV0ZVVzZXInXSA9IHRoaXMuZGVsZXRlVXNlcjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVGaWxlUmVxdWVzdCBpbXBsZW1lbnRzIGkuRGVsZXRlRmlsZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGZpbGVJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRGVsZXRlRmlsZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBEZWxldGVGaWxlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRGVsZXRlRmlsZVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5maWxlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZpbGVJZCddID0gdGhpcy5maWxlSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q29ubmVjdGlvbnNJbmZvUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0Q29ubmVjdGlvbnNJbmZvUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q29ubmVjdGlvbnNJbmZvUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENvbm5lY3Rpb25zSW5mb1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldENvbm5lY3Rpb25zSW5mb1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0lkJ10gPSB0aGlzLmJ1c2luZXNzSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q29ubmVjdGlvbnNJbmZvUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldENvbm5lY3Rpb25zSW5mb1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBjb25uZWN0aW9uSW5mbzogQ29ubmVjdGlvbkluZm87XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRDb25uZWN0aW9uc0luZm9SZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENvbm5lY3Rpb25zSW5mb1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNvbm5lY3Rpb25JbmZvKSB7bS5jb25uZWN0aW9uSW5mbyA9IENvbm5lY3Rpb25JbmZvLmZyb21Qcm90byhwcm90by5jb25uZWN0aW9uSW5mbyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldENvbm5lY3Rpb25zSW5mb1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdGlvbkluZm8gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY29ubmVjdGlvbkluZm8gIT09IG51bGwpIHt0b1JldHVyblsnY29ubmVjdGlvbkluZm8nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29ubmVjdGlvbkluZm8gPyAodGhpcy5jb25uZWN0aW9uSW5mbyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25uZWN0aW9uSW5mbzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRDb25uZWN0aW9uc1JlcXVlc3QgaW1wbGVtZW50cyBpLkdldENvbm5lY3Rpb25zUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q29ubmVjdGlvbnNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0Q29ubmVjdGlvbnNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRDb25uZWN0aW9uc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0lkJ10gPSB0aGlzLmJ1c2luZXNzSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q29ubmVjdGlvbnNSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0Q29ubmVjdGlvbnNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgY29ubmVjdGlvbnM6IHtba2V5OiBzdHJpbmddOiBSZXBlYXRlZENvbm5lY3Rpb259O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q29ubmVjdGlvbnNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENvbm5lY3Rpb25zUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY29ubmVjdGlvbnMpIHttLmNvbm5lY3Rpb25zID0gT2JqZWN0LmtleXMocHJvdG8uY29ubmVjdGlvbnMpLnJlZHVjZTxhbnk+KChvYmosIGspID0+IHsgb2JqW2tdID0gUmVwZWF0ZWRDb25uZWN0aW9uLmZyb21Qcm90byhwcm90by5jb25uZWN0aW9uc1trXSk7IHJldHVybiBvYmo7IH0sIHt9KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0Q29ubmVjdGlvbnNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbm5lY3Rpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNvbm5lY3Rpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Nvbm5lY3Rpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbm5lY3Rpb25zID8gKHRoaXMuY29ubmVjdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY29ubmVjdGlvbnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q3JlYXRlUGFzc3dvcmRVcmxSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRDcmVhdGVQYXNzd29yZFVybFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIHBhcnRuZXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q3JlYXRlUGFzc3dvcmRVcmxSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0Q3JlYXRlUGFzc3dvcmRVcmxSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRDcmVhdGVQYXNzd29yZFVybFJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0bmVySWQnXSA9IHRoaXMucGFydG5lcklkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldENyZWF0ZVBhc3N3b3JkVXJsUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldENyZWF0ZVBhc3N3b3JkVXJsUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHVybDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q3JlYXRlUGFzc3dvcmRVcmxSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENyZWF0ZVBhc3N3b3JkVXJsUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldENyZWF0ZVBhc3N3b3JkVXJsUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VybCddID0gdGhpcy51cmw7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldEZhY2Vib29rQXBwQ2hlY2tlclJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldEZhY2Vib29rQXBwQ2hlY2tlclJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0lkJ10gPSB0aGlzLmJ1c2luZXNzSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldEZhY2Vib29rQXBwQ2hlY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICByZWNvbm5lY3RHcm91cDogUmVjb25uZWN0R3JvdXBbXTtcbiAgICB0b3RhbENvbm5lY3Rpb25zOiBudW1iZXI7XG4gICAgcmVjb25uZWN0TmVlZGVkOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRGYWNlYm9va0FwcENoZWNrZXJSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5yZWNvbm5lY3RHcm91cCkge20ucmVjb25uZWN0R3JvdXAgPSBwcm90by5yZWNvbm5lY3RHcm91cC5tYXAoUmVjb25uZWN0R3JvdXAuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by50b3RhbENvbm5lY3Rpb25zKSB7bS50b3RhbENvbm5lY3Rpb25zID0gcGFyc2VJbnQocHJvdG8udG90YWxDb25uZWN0aW9ucywgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRGYWNlYm9va0FwcENoZWNrZXJSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlY29ubmVjdEdyb3VwICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnJlY29ubmVjdEdyb3VwICE9PSBudWxsKSB7dG9SZXR1cm5bJ3JlY29ubmVjdEdyb3VwJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnJlY29ubmVjdEdyb3VwID8gKHRoaXMucmVjb25uZWN0R3JvdXAgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucmVjb25uZWN0R3JvdXA7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG90YWxDb25uZWN0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndG90YWxDb25uZWN0aW9ucyddID0gdGhpcy50b3RhbENvbm5lY3Rpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlY29ubmVjdE5lZWRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVjb25uZWN0TmVlZGVkJ10gPSB0aGlzLnJlY29ubmVjdE5lZWRlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRUcmFja2VyUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0VHJhY2tlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHBhcnRuZXJJZDogc3RyaW5nO1xuICAgIHVzZXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0VHJhY2tlclJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRUcmFja2VyUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0VHJhY2tlclJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFRyYWNrZXJSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0VHJhY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0cmFja2VyczogVHJhY2tlcnM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRUcmFja2VyUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRUcmFja2VyUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8udHJhY2tlcnMpIHttLnRyYWNrZXJzID0gVHJhY2tlcnMuZnJvbVByb3RvKHByb3RvLnRyYWNrZXJzKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0VHJhY2tlclJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHJhY2tlcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudHJhY2tlcnMgIT09IG51bGwpIHt0b1JldHVyblsndHJhY2tlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudHJhY2tlcnMgPyAodGhpcy50cmFja2VycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50cmFja2Vyczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRUd2l0dGVyQXBwQ2hlY2tlclJlcXVlc3QgaW1wbGVtZW50cyBpLkdldFR3aXR0ZXJBcHBDaGVja2VyUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0VHdpdHRlckFwcENoZWNrZXJSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0VHdpdHRlckFwcENoZWNrZXJSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRUd2l0dGVyQXBwQ2hlY2tlclJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0lkJ10gPSB0aGlzLmJ1c2luZXNzSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0VHdpdHRlckFwcENoZWNrZXJSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0VHdpdHRlckFwcENoZWNrZXJSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdG90YWxDb25uZWN0aW9uczogbnVtYmVyO1xuICAgIHJlY29ubmVjdEdyb3VwOiBSZWNvbm5lY3RHcm91cFtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0VHdpdHRlckFwcENoZWNrZXJSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldFR3aXR0ZXJBcHBDaGVja2VyUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8udG90YWxDb25uZWN0aW9ucykge20udG90YWxDb25uZWN0aW9ucyA9IHBhcnNlSW50KHByb3RvLnRvdGFsQ29ubmVjdGlvbnMsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5yZWNvbm5lY3RHcm91cCkge20ucmVjb25uZWN0R3JvdXAgPSBwcm90by5yZWNvbm5lY3RHcm91cC5tYXAoUmVjb25uZWN0R3JvdXAuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0VHdpdHRlckFwcENoZWNrZXJSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRvdGFsQ29ubmVjdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RvdGFsQ29ubmVjdGlvbnMnXSA9IHRoaXMudG90YWxDb25uZWN0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWNvbm5lY3RHcm91cCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZWNvbm5lY3RHcm91cCAhPT0gbnVsbCkge3RvUmV0dXJuWydyZWNvbm5lY3RHcm91cCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5yZWNvbm5lY3RHcm91cCA/ICh0aGlzLnJlY29ubmVjdEdyb3VwIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnJlY29ubmVjdEdyb3VwO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFdlbGNvbWVFbWFpbFRlbXBsYXRlUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICB1c2VyTmFtZTogc3RyaW5nO1xuICAgIGxvZ2luVXJsOiBzdHJpbmc7XG4gICAgbWFya2V0SWQ6IHN0cmluZztcbiAgICB3ZWxjb21lTWVzc2FnZTogc3RyaW5nO1xuICAgIGxhbmd1YWdlQ29kZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlck5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJOYW1lJ10gPSB0aGlzLnVzZXJOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvZ2luVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2dpblVybCddID0gdGhpcy5sb2dpblVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXJrZXRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWFya2V0SWQnXSA9IHRoaXMubWFya2V0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMud2VsY29tZU1lc3NhZ2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3dlbGNvbWVNZXNzYWdlJ10gPSB0aGlzLndlbGNvbWVNZXNzYWdlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhbmd1YWdlQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGFuZ3VhZ2VDb2RlJ10gPSB0aGlzLmxhbmd1YWdlQ29kZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0ZW1wbGF0ZUh0bWw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFdlbGNvbWVFbWFpbFRlbXBsYXRlUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVtcGxhdGVIdG1sICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0ZW1wbGF0ZUh0bWwnXSA9IHRoaXMudGVtcGxhdGVIdG1sO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3ROYW1lc3BhY2VEZXRhaWxzUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdE5hbWVzcGFjZURldGFpbHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIG90cENvZGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3ROYW1lc3BhY2VEZXRhaWxzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3ROYW1lc3BhY2VEZXRhaWxzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdE5hbWVzcGFjZURldGFpbHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VtYWlsJ10gPSB0aGlzLmVtYWlsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm90cENvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ290cENvZGUnXSA9IHRoaXMub3RwQ29kZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0TmFtZXNwYWNlRGV0YWlsc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0TmFtZXNwYWNlRGV0YWlsc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2VzOiBOYW1lc3BhY2VEZXRhaWxzW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0TmFtZXNwYWNlRGV0YWlsc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdE5hbWVzcGFjZURldGFpbHNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5uYW1lc3BhY2VzKSB7bS5uYW1lc3BhY2VzID0gcHJvdG8ubmFtZXNwYWNlcy5tYXAoTmFtZXNwYWNlRGV0YWlscy5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0TmFtZXNwYWNlRGV0YWlsc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5uYW1lc3BhY2VzICE9PSBudWxsKSB7dG9SZXR1cm5bJ25hbWVzcGFjZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubmFtZXNwYWNlcyA/ICh0aGlzLm5hbWVzcGFjZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubmFtZXNwYWNlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VXNlcnNGb3JCdXNpbmVzc1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RVc2Vyc0ZvckJ1c2luZXNzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RVc2Vyc0ZvckJ1c2luZXNzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RVc2Vyc0ZvckJ1c2luZXNzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFVzZXJzRm9yQnVzaW5lc3NSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cElkJ10gPSB0aGlzLmFjY291bnRHcm91cElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RVc2Vyc0ZvckJ1c2luZXNzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkxpc3RVc2Vyc0ZvckJ1c2luZXNzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGFzc29jaWF0ZWRVc2VyczogQXNzb2NpYXRlZFVzZXJbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RVc2Vyc0ZvckJ1c2luZXNzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0VXNlcnNGb3JCdXNpbmVzc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFzc29jaWF0ZWRVc2Vycykge20uYXNzb2NpYXRlZFVzZXJzID0gcHJvdG8uYXNzb2NpYXRlZFVzZXJzLm1hcChBc3NvY2lhdGVkVXNlci5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VXNlcnNGb3JCdXNpbmVzc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXNzb2NpYXRlZFVzZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFzc29jaWF0ZWRVc2VycyAhPT0gbnVsbCkge3RvUmV0dXJuWydhc3NvY2lhdGVkVXNlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXNzb2NpYXRlZFVzZXJzID8gKHRoaXMuYXNzb2NpYXRlZFVzZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFzc29jaWF0ZWRVc2Vyczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VXNlcnNGb3JCdXNpbmVzc2VzUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGFjY291bnRHcm91cElkczogc3RyaW5nW107XG4gICAgbXVsdGlMb2NhdGlvblBhdGg6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RVc2Vyc0ZvckJ1c2luZXNzZXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RVc2Vyc0ZvckJ1c2luZXNzZXNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZHMnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm11bHRpTG9jYXRpb25QYXRoICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtdWx0aUxvY2F0aW9uUGF0aCddID0gdGhpcy5tdWx0aUxvY2F0aW9uUGF0aDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VXNlcnNGb3JCdXNpbmVzc2VzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkxpc3RVc2Vyc0ZvckJ1c2luZXNzZXNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgYXNzb2NpYXRlZFVzZXJzOiBBc3NvY2lhdGVkVXNlcltdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFzc29jaWF0ZWRVc2Vycykge20uYXNzb2NpYXRlZFVzZXJzID0gcHJvdG8uYXNzb2NpYXRlZFVzZXJzLm1hcChBc3NvY2lhdGVkVXNlci5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VXNlcnNGb3JCdXNpbmVzc2VzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hc3NvY2lhdGVkVXNlcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXNzb2NpYXRlZFVzZXJzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Fzc29jaWF0ZWRVc2VycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hc3NvY2lhdGVkVXNlcnMgPyAodGhpcy5hc3NvY2lhdGVkVXNlcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXNzb2NpYXRlZFVzZXJzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZURldGFpbHMgaW1wbGVtZW50cyBpLk5hbWVzcGFjZURldGFpbHNJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBsb2dvVXJsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBOYW1lc3BhY2VEZXRhaWxzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTmFtZXNwYWNlRGV0YWlscygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTmFtZXNwYWNlRGV0YWlsc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9nb1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9nb1VybCddID0gdGhpcy5sb2dvVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlY29ubmVjdEdyb3VwIGltcGxlbWVudHMgaS5SZWNvbm5lY3RHcm91cEludGVyZmFjZSB7XG4gICAgc3NpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0b2tlbkJyb2tlbjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlY29ubmVjdEdyb3VwIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUmVjb25uZWN0R3JvdXAoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJlY29ubmVjdEdyb3VwSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3NpZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3NpZCddID0gdGhpcy5zc2lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50b2tlbkJyb2tlbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndG9rZW5Ccm9rZW4nXSA9IHRoaXMudG9rZW5Ccm9rZW47fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJSZXF1ZXN0IGltcGxlbWVudHMgaS5SZWdpc3RlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzRGF0YTogQnVzaW5lc3NEYXRhO1xuICAgIGNvbnRhY3Q6IENvbnRhY3Q7XG4gICAgYnVzaW5lc3NOYW1lOiBzdHJpbmc7XG4gICAgcGFydG5lcklkOiBzdHJpbmc7XG4gICAgbWFya2V0SWQ6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIHBsYWNlSWQ6IHN0cmluZztcbiAgICBzYWxlc1BlcnNvbklkOiBzdHJpbmc7XG4gICAgcmVjYXB0Y2hhOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZWdpc3RlclJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZWdpc3RlclJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYnVzaW5lc3NEYXRhKSB7bS5idXNpbmVzc0RhdGEgPSBCdXNpbmVzc0RhdGEuZnJvbVByb3RvKHByb3RvLmJ1c2luZXNzRGF0YSk7fVxuICAgICAgICBpZiAocHJvdG8uY29udGFjdCkge20uY29udGFjdCA9IENvbnRhY3QuZnJvbVByb3RvKHByb3RvLmNvbnRhY3QpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZWdpc3RlclJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0RhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYnVzaW5lc3NEYXRhICE9PSBudWxsKSB7dG9SZXR1cm5bJ2J1c2luZXNzRGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5idXNpbmVzc0RhdGEgPyAodGhpcy5idXNpbmVzc0RhdGEgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYnVzaW5lc3NEYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbnRhY3QgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY29udGFjdCAhPT0gbnVsbCkge3RvUmV0dXJuWydjb250YWN0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbnRhY3QgPyAodGhpcy5jb250YWN0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvbnRhY3Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc05hbWUnXSA9IHRoaXMuYnVzaW5lc3NOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRuZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydG5lcklkJ10gPSB0aGlzLnBhcnRuZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXJrZXRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWFya2V0SWQnXSA9IHRoaXMubWFya2V0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VtYWlsJ10gPSB0aGlzLmVtYWlsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBsYWNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BsYWNlSWQnXSA9IHRoaXMucGxhY2VJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zYWxlc1BlcnNvbklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzYWxlc1BlcnNvbklkJ10gPSB0aGlzLnNhbGVzUGVyc29uSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVjYXB0Y2hhICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWNhcHRjaGEnXSA9IHRoaXMucmVjYXB0Y2hhO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyUmVzcG9uc2UgaW1wbGVtZW50cyBpLlJlZ2lzdGVyUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlZ2lzdGVyUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZWdpc3RlclJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZWdpc3RlclJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcklkJ10gPSB0aGlzLnVzZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZW1vdmVVc2VyRnJvbUJ1c2luZXNzUmVxdWVzdCBpbXBsZW1lbnRzIGkuUmVtb3ZlVXNlckZyb21CdXNpbmVzc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZW1vdmVVc2VyRnJvbUJ1c2luZXNzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlbW92ZVVzZXJGcm9tQnVzaW5lc3NSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZW1vdmVVc2VyRnJvbUJ1c2luZXNzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVwZWF0ZWRDb25uZWN0aW9uIGltcGxlbWVudHMgaS5SZXBlYXRlZENvbm5lY3Rpb25JbnRlcmZhY2Uge1xuICAgIGNvbm5lY3Rpb246IENvbm5lY3Rpb25bXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlcGVhdGVkQ29ubmVjdGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlcGVhdGVkQ29ubmVjdGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jb25uZWN0aW9uKSB7bS5jb25uZWN0aW9uID0gcHJvdG8uY29ubmVjdGlvbi5tYXAoQ29ubmVjdGlvbi5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZXBlYXRlZENvbm5lY3Rpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNvbm5lY3Rpb24gIT09IG51bGwpIHt0b1JldHVyblsnY29ubmVjdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb25uZWN0aW9uID8gKHRoaXMuY29ubmVjdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25uZWN0aW9uO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcXVlc3RTaG9ydE9UUENvZGVSZXF1ZXN0IGltcGxlbWVudHMgaS5SZXF1ZXN0U2hvcnRPVFBDb2RlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZW1haWw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlcXVlc3RTaG9ydE9UUENvZGVSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUmVxdWVzdFNob3J0T1RQQ29kZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJlcXVlc3RTaG9ydE9UUENvZGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VtYWlsJ10gPSB0aGlzLmVtYWlsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcXVlc3RTaG9ydE9UUENvZGVSZXNwb25zZSBpbXBsZW1lbnRzIGkuUmVxdWVzdFNob3J0T1RQQ29kZVJlc3BvbnNlSW50ZXJmYWNlIHtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlcXVlc3RTaG9ydE9UUENvZGVSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlcXVlc3RTaG9ydE9UUENvZGVSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUmVxdWVzdFNob3J0T1RQQ29kZVJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzRmlsdGVycyBpbXBsZW1lbnRzIGkuU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzRmlsdGVyc0ludGVyZmFjZSB7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzRmlsdGVycyB7XG4gICAgICAgIGxldCBtID0gbmV3IFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0lkJ10gPSB0aGlzLmJ1c2luZXNzSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVxdWVzdCBpbXBsZW1lbnRzIGkuU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZmlsdGVyczogU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzRmlsdGVycztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZW5kUmV2aWV3UmVxdWVzdFRvQ29udGFjdHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmZpbHRlcnMpIHttLmZpbHRlcnMgPSBTZW5kUmV2aWV3UmVxdWVzdFRvQ29udGFjdHNGaWx0ZXJzLmZyb21Qcm90byhwcm90by5maWx0ZXJzKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpbHRlcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZmlsdGVycyAhPT0gbnVsbCkge3RvUmV0dXJuWydmaWx0ZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmZpbHRlcnMgPyAodGhpcy5maWx0ZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmZpbHRlcnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVzcG9uc2UgaW1wbGVtZW50cyBpLlNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1Jlc3BvbnNlSW50ZXJmYWNlIHtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VuZFdlbGNvbWVFbWFpbFJlcXVlc3QgaW1wbGVtZW50cyBpLlNlbmRXZWxjb21lRW1haWxSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBsb2dpblVybDogc3RyaW5nO1xuICAgIHVzZVBsYXRmb3JtRGVmYXVsdERvbWFpbjogYm9vbGVhbjtcbiAgICBtYXJrZXRJZDogc3RyaW5nO1xuICAgIHdlbGNvbWVNZXNzYWdlOiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2VDb2RlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTZW5kV2VsY29tZUVtYWlsUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFNlbmRXZWxjb21lRW1haWxSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TZW5kV2VsY29tZUVtYWlsUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRuZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydG5lcklkJ10gPSB0aGlzLnBhcnRuZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9naW5VcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvZ2luVXJsJ10gPSB0aGlzLmxvZ2luVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZVBsYXRmb3JtRGVmYXVsdERvbWFpbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlUGxhdGZvcm1EZWZhdWx0RG9tYWluJ10gPSB0aGlzLnVzZVBsYXRmb3JtRGVmYXVsdERvbWFpbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXJrZXRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWFya2V0SWQnXSA9IHRoaXMubWFya2V0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMud2VsY29tZU1lc3NhZ2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3dlbGNvbWVNZXNzYWdlJ10gPSB0aGlzLndlbGNvbWVNZXNzYWdlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhbmd1YWdlQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGFuZ3VhZ2VDb2RlJ10gPSB0aGlzLmxhbmd1YWdlQ29kZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXRUcmFja2VyUmVxdWVzdCBpbXBsZW1lbnRzIGkuU2V0VHJhY2tlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHBhcnRuZXJJZDogc3RyaW5nO1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIHRyYWNrZXI6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNldFRyYWNrZXJSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2V0VHJhY2tlclJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNldFRyYWNrZXJSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0bmVySWQnXSA9IHRoaXMucGFydG5lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcklkJ10gPSB0aGlzLnVzZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50cmFja2VyICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0cmFja2VyJ10gPSB0aGlzLnRyYWNrZXI7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0VHJhY2tlclJlc3BvbnNlIGltcGxlbWVudHMgaS5TZXRUcmFja2VyUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTZXRUcmFja2VyUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZXRUcmFja2VyUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNldFRyYWNrZXJSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1Y2Nlc3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1Y2Nlc3MnXSA9IHRoaXMuc3VjY2Vzczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFja2VycyBpbXBsZW1lbnRzIGkuVHJhY2tlcnNJbnRlcmZhY2Uge1xuICAgIHdlbGNvbWVWaWRlbzogYm9vbGVhbjtcbiAgICBhY2FkZW15OiBib29sZWFuO1xuICAgIHNraXBwZWRHYnBDb25uZWN0aW9uOiBib29sZWFuO1xuICAgIHNraXBwZWRJbnRlZ3JhdGlvbkNvbm5lY3Rpb246IGJvb2xlYW47XG4gICAgc2tpcHBlZFdlYmNoYXRTZXR1cDogYm9vbGVhbjtcbiAgICBza2lwcGVkU21zUmVnaXN0cmF0aW9uOiBib29sZWFuO1xuICAgIHNraXBwZWRNb2JpbGVOb3RpZmljYXRpb246IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBUcmFja2VycyB7XG4gICAgICAgIGxldCBtID0gbmV3IFRyYWNrZXJzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5UcmFja2Vyc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndlbGNvbWVWaWRlbyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnd2VsY29tZVZpZGVvJ10gPSB0aGlzLndlbGNvbWVWaWRlbzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2FkZW15ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2FkZW15J10gPSB0aGlzLmFjYWRlbXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2tpcHBlZEdicENvbm5lY3Rpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NraXBwZWRHYnBDb25uZWN0aW9uJ10gPSB0aGlzLnNraXBwZWRHYnBDb25uZWN0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNraXBwZWRJbnRlZ3JhdGlvbkNvbm5lY3Rpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NraXBwZWRJbnRlZ3JhdGlvbkNvbm5lY3Rpb24nXSA9IHRoaXMuc2tpcHBlZEludGVncmF0aW9uQ29ubmVjdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za2lwcGVkV2ViY2hhdFNldHVwICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydza2lwcGVkV2ViY2hhdFNldHVwJ10gPSB0aGlzLnNraXBwZWRXZWJjaGF0U2V0dXA7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2tpcHBlZFNtc1JlZ2lzdHJhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2tpcHBlZFNtc1JlZ2lzdHJhdGlvbiddID0gdGhpcy5za2lwcGVkU21zUmVnaXN0cmF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNraXBwZWRNb2JpbGVOb3RpZmljYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NraXBwZWRNb2JpbGVOb3RpZmljYXRpb24nXSA9IHRoaXMuc2tpcHBlZE1vYmlsZU5vdGlmaWNhdGlvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
1221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYnVzaW5lc3NfY2VudGVyX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQU8sT0FBTztJQU9oQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0QixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUEyQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQzlFLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUM7UUFDckUsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUN4RSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FB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Q0FBQyxtQkFBbUIsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7U0FBQztRQUNsSCxJQUFJLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztTQUFDO1FBQzNILElBQUksT0FBTyxJQUFJLENBQUMseUJBQXlCLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1NBQUM7UUFDcEksSUFBSSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7U0FBQztRQUMvRyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3MgaW1wbGVtZW50cyBpLkFkZHJlc3NJbnRlcmZhY2Uge1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICBjaXR5OiBzdHJpbmc7XG4gICAgc3RhdGU6IHN0cmluZztcbiAgICBjb3VudHJ5OiBzdHJpbmc7XG4gICAgcG9zdGFsQ29kZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQWRkcmVzcyB7XG4gICAgICAgIGxldCBtID0gbmV3IEFkZHJlc3MoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkFkZHJlc3NJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hZGRyZXNzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhZGRyZXNzJ10gPSB0aGlzLmFkZHJlc3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2l0eSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2l0eSddID0gdGhpcy5jaXR5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXRlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0ZSddID0gdGhpcy5zdGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb3VudHJ5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb3VudHJ5J10gPSB0aGlzLmNvdW50cnk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdGFsQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncG9zdGFsQ29kZSddID0gdGhpcy5wb3N0YWxDb2RlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFzc29jaWF0ZWRVc2VyIGltcGxlbWVudHMgaS5Bc3NvY2lhdGVkVXNlckludGVyZmFjZSB7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xuICAgIHBob25lOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBc3NvY2lhdGVkVXNlciB7XG4gICAgICAgIGxldCBtID0gbmV3IEFzc29jaWF0ZWRVc2VyKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Bc3NvY2lhdGVkVXNlckludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5maXJzdE5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZpcnN0TmFtZSddID0gdGhpcy5maXJzdE5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFzdE5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhc3ROYW1lJ10gPSB0aGlzLmxhc3ROYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBob25lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwaG9uZSddID0gdGhpcy5waG9uZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnVzaW5lc3NEYXRhIGltcGxlbWVudHMgaS5CdXNpbmVzc0RhdGFJbnRlcmZhY2Uge1xuICAgIGFkZHJlc3M6IEFkZHJlc3M7XG4gICAgYnVzaW5lc3NDYXRlZ29yeTogc3RyaW5nO1xuICAgIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gICAgd2Vic2l0ZVVybDogc3RyaW5nO1xuICAgIGZhY2Vib29rVXJsOiBzdHJpbmc7XG4gICAgdHdpdHRlclVybDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVzaW5lc3NEYXRhIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQnVzaW5lc3NEYXRhKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFkZHJlc3MpIHttLmFkZHJlc3MgPSBBZGRyZXNzLmZyb21Qcm90byhwcm90by5hZGRyZXNzKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQnVzaW5lc3NEYXRhSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWRkcmVzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hZGRyZXNzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2FkZHJlc3MnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYWRkcmVzcyA/ICh0aGlzLmFkZHJlc3MgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYWRkcmVzczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0NhdGVnb3J5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0NhdGVnb3J5J10gPSB0aGlzLmJ1c2luZXNzQ2F0ZWdvcnk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGhvbmVOdW1iZXIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bob25lTnVtYmVyJ10gPSB0aGlzLnBob25lTnVtYmVyO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndlYnNpdGVVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3dlYnNpdGVVcmwnXSA9IHRoaXMud2Vic2l0ZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYWNlYm9va1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZmFjZWJvb2tVcmwnXSA9IHRoaXMuZmFjZWJvb2tVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHdpdHRlclVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHdpdHRlclVybCddID0gdGhpcy50d2l0dGVyVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb24gaW1wbGVtZW50cyBpLkNvbm5lY3Rpb25JbnRlcmZhY2Uge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjbGllbnRUYWdzOiBzdHJpbmdbXTtcbiAgICBpc1ZlcmlmaWVkOiBib29sZWFuO1xuICAgIHBhZ2VzOiBDb25uZWN0aW9uW107XG4gICAgc3NpZDogc3RyaW5nO1xuICAgIHRva2VuSXNCcm9rZW46IGJvb2xlYW47XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGxvY2F0aW9uSWQ6IHN0cmluZztcbiAgICBtYXBzVXJpOiBzdHJpbmc7XG4gICAgZGVsZXRlVXJsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDb25uZWN0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ29ubmVjdGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wYWdlcykge20ucGFnZXMgPSBwcm90by5wYWdlcy5tYXAoQ29ubmVjdGlvbi5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Db25uZWN0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNsaWVudFRhZ3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NsaWVudFRhZ3MnXSA9IHRoaXMuY2xpZW50VGFnczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc1ZlcmlmaWVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpc1ZlcmlmaWVkJ10gPSB0aGlzLmlzVmVyaWZpZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnZXMgIT09IG51bGwpIHt0b1JldHVyblsncGFnZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnZXMgPyAodGhpcy5wYWdlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zc2lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzc2lkJ10gPSB0aGlzLnNzaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG9rZW5Jc0Jyb2tlbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndG9rZW5Jc0Jyb2tlbiddID0gdGhpcy50b2tlbklzQnJva2VuO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3R5cGUnXSA9IHRoaXMudHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhdGlvbklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2NhdGlvbklkJ10gPSB0aGlzLmxvY2F0aW9uSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWFwc1VyaSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWFwc1VyaSddID0gdGhpcy5tYXBzVXJpO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlbGV0ZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVsZXRlVXJsJ10gPSB0aGlzLmRlbGV0ZVVybDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uSW5mbyBpbXBsZW1lbnRzIGkuQ29ubmVjdGlvbkluZm9JbnRlcmZhY2Uge1xuICAgIGZhY2Vib29rOiBib29sZWFuO1xuICAgIGluc3RhZ3JhbTogYm9vbGVhbjtcbiAgICBsaW5rZWRpbjogYm9vbGVhbjtcbiAgICB0d2l0dGVyOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ29ubmVjdGlvbkluZm8ge1xuICAgICAgICBsZXQgbSA9IG5ldyBDb25uZWN0aW9uSW5mbygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ29ubmVjdGlvbkluZm9JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYWNlYm9vayAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZmFjZWJvb2snXSA9IHRoaXMuZmFjZWJvb2s7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW5zdGFncmFtICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbnN0YWdyYW0nXSA9IHRoaXMuaW5zdGFncmFtO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpbmtlZGluICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsaW5rZWRpbiddID0gdGhpcy5saW5rZWRpbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50d2l0dGVyICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0d2l0dGVyJ10gPSB0aGlzLnR3aXR0ZXI7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q29ubmVjdGlvbnNSZXNwb25zZUNvbm5lY3Rpb25zRW50cnkgaW1wbGVtZW50cyBpLkdldENvbm5lY3Rpb25zUmVzcG9uc2VDb25uZWN0aW9uc0VudHJ5SW50ZXJmYWNlIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogUmVwZWF0ZWRDb25uZWN0aW9uO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q29ubmVjdGlvbnNSZXNwb25zZUNvbm5lY3Rpb25zRW50cnkge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRDb25uZWN0aW9uc1Jlc3BvbnNlQ29ubmVjdGlvbnNFbnRyeSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by52YWx1ZSkge20udmFsdWUgPSBSZXBlYXRlZENvbm5lY3Rpb24uZnJvbVByb3RvKHByb3RvLnZhbHVlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0Q29ubmVjdGlvbnNSZXNwb25zZUNvbm5lY3Rpb25zRW50cnlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5rZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2tleSddID0gdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHt0b1JldHVyblsndmFsdWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudmFsdWUgPyAodGhpcy52YWx1ZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy52YWx1ZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb250YWN0IGltcGxlbWVudHMgaS5Db250YWN0SW50ZXJmYWNlIHtcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ29udGFjdCB7XG4gICAgICAgIGxldCBtID0gbmV3IENvbnRhY3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNvbnRhY3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5maXJzdE5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZpcnN0TmFtZSddID0gdGhpcy5maXJzdE5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFzdE5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhc3ROYW1lJ10gPSB0aGlzLmxhc3ROYW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUFuZEFzc29jaWF0ZVJlcXVlc3QgaW1wbGVtZW50cyBpLkNyZWF0ZUFuZEFzc29jaWF0ZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgcGFydG5lcklkOiBzdHJpbmc7XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgY29uZmlybVBhc3N3b3JkOiBzdHJpbmc7XG4gICAgcGhvbmU6IHN0cmluZztcbiAgICBncmVldGluZ05hbWU6IHN0cmluZztcbiAgICBzZW5kV2VsY29tZUVtYWlsOiBib29sZWFuO1xuICAgIHdlbGNvbWVNZXNzYWdlOiBzdHJpbmc7XG4gICAgZmFpbE9uRXhpc3RpbmdVc2VyOiBib29sZWFuO1xuICAgIG5vdGlmaWNhdGlvbnNGbGFnOiBib29sZWFuO1xuICAgIGZhaWxPbkV4aXN0aW5nQXNzb2NpYXRpb246IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDcmVhdGVBbmRBc3NvY2lhdGVSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ3JlYXRlQW5kQXNzb2NpYXRlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ3JlYXRlQW5kQXNzb2NpYXRlUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cElkJ10gPSB0aGlzLmFjY291bnRHcm91cElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpcnN0TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZmlyc3ROYW1lJ10gPSB0aGlzLmZpcnN0TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGFzdE5hbWUnXSA9IHRoaXMubGFzdE5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFzc3dvcmQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bhc3N3b3JkJ10gPSB0aGlzLnBhc3N3b3JkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpcm1QYXNzd29yZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY29uZmlybVBhc3N3b3JkJ10gPSB0aGlzLmNvbmZpcm1QYXNzd29yZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5waG9uZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGhvbmUnXSA9IHRoaXMucGhvbmU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ3JlZXRpbmdOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydncmVldGluZ05hbWUnXSA9IHRoaXMuZ3JlZXRpbmdOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbmRXZWxjb21lRW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlbmRXZWxjb21lRW1haWwnXSA9IHRoaXMuc2VuZFdlbGNvbWVFbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy53ZWxjb21lTWVzc2FnZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnd2VsY29tZU1lc3NhZ2UnXSA9IHRoaXMud2VsY29tZU1lc3NhZ2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmFpbE9uRXhpc3RpbmdVc2VyICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmYWlsT25FeGlzdGluZ1VzZXInXSA9IHRoaXMuZmFpbE9uRXhpc3RpbmdVc2VyO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5vdGlmaWNhdGlvbnNGbGFnICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydub3RpZmljYXRpb25zRmxhZyddID0gdGhpcy5ub3RpZmljYXRpb25zRmxhZzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYWlsT25FeGlzdGluZ0Fzc29jaWF0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmYWlsT25FeGlzdGluZ0Fzc29jaWF0aW9uJ10gPSB0aGlzLmZhaWxPbkV4aXN0aW5nQXNzb2NpYXRpb247fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlQW5kQXNzb2NpYXRlUmVzcG9uc2UgaW1wbGVtZW50cyBpLkNyZWF0ZUFuZEFzc29jaWF0ZVJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICB1bmlmaWVkVXNlcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDcmVhdGVBbmRBc3NvY2lhdGVSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IENyZWF0ZUFuZEFzc29jaWF0ZVJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVBbmRBc3NvY2lhdGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcklkJ10gPSB0aGlzLnVzZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51bmlmaWVkVXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1bmlmaWVkVXNlcklkJ10gPSB0aGlzLnVuaWZpZWRVc2VySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVsZXRlQnVzaW5lc3NSZXF1ZXN0IGltcGxlbWVudHMgaS5EZWxldGVCdXNpbmVzc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgZGVsZXRlVXNlcjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IERlbGV0ZUJ1c2luZXNzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IERlbGV0ZUJ1c2luZXNzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRGVsZXRlQnVzaW5lc3NSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lc3NhZ2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lc3NhZ2UnXSA9IHRoaXMubWVzc2FnZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWxldGVVc2VyICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZWxldGVVc2VyJ10gPSB0aGlzLmRlbGV0ZVVzZXI7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVsZXRlRmlsZVJlcXVlc3QgaW1wbGVtZW50cyBpLkRlbGV0ZUZpbGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBmaWxlSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IERlbGV0ZUZpbGVSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRGVsZXRlRmlsZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkRlbGV0ZUZpbGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmlsZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmaWxlSWQnXSA9IHRoaXMuZmlsZUlkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldENvbm5lY3Rpb25zSW5mb1JlcXVlc3QgaW1wbGVtZW50cyBpLkdldENvbm5lY3Rpb25zSW5mb1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldENvbm5lY3Rpb25zSW5mb1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRDb25uZWN0aW9uc0luZm9SZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRDb25uZWN0aW9uc0luZm9SZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldENvbm5lY3Rpb25zSW5mb1Jlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRDb25uZWN0aW9uc0luZm9SZXNwb25zZUludGVyZmFjZSB7XG4gICAgY29ubmVjdGlvbkluZm86IENvbm5lY3Rpb25JbmZvO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q29ubmVjdGlvbnNJbmZvUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRDb25uZWN0aW9uc0luZm9SZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jb25uZWN0aW9uSW5mbykge20uY29ubmVjdGlvbkluZm8gPSBDb25uZWN0aW9uSW5mby5mcm9tUHJvdG8ocHJvdG8uY29ubmVjdGlvbkluZm8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRDb25uZWN0aW9uc0luZm9SZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbm5lY3Rpb25JbmZvICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNvbm5lY3Rpb25JbmZvICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Nvbm5lY3Rpb25JbmZvJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbm5lY3Rpb25JbmZvID8gKHRoaXMuY29ubmVjdGlvbkluZm8gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY29ubmVjdGlvbkluZm87fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q29ubmVjdGlvbnNSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRDb25uZWN0aW9uc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldENvbm5lY3Rpb25zUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENvbm5lY3Rpb25zUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0Q29ubmVjdGlvbnNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldENvbm5lY3Rpb25zUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldENvbm5lY3Rpb25zUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbm5lY3Rpb25zOiB7W2tleTogc3RyaW5nXTogUmVwZWF0ZWRDb25uZWN0aW9ufTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldENvbm5lY3Rpb25zUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRDb25uZWN0aW9uc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNvbm5lY3Rpb25zKSB7bS5jb25uZWN0aW9ucyA9IE9iamVjdC5rZXlzKHByb3RvLmNvbm5lY3Rpb25zKS5yZWR1Y2U8YW55Pigob2JqLCBrKSA9PiB7IG9ialtrXSA9IFJlcGVhdGVkQ29ubmVjdGlvbi5mcm9tUHJvdG8ocHJvdG8uY29ubmVjdGlvbnNba10pOyByZXR1cm4gb2JqOyB9LCB7fSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldENvbm5lY3Rpb25zUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25uZWN0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydjb25uZWN0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb25uZWN0aW9ucyA/ICh0aGlzLmNvbm5lY3Rpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvbm5lY3Rpb25zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldENyZWF0ZVBhc3N3b3JkVXJsUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0Q3JlYXRlUGFzc3dvcmRVcmxSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldENyZWF0ZVBhc3N3b3JkVXJsUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENyZWF0ZVBhc3N3b3JkVXJsUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0Q3JlYXRlUGFzc3dvcmRVcmxSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRuZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydG5lcklkJ10gPSB0aGlzLnBhcnRuZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRDcmVhdGVQYXNzd29yZFVybFJlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRDcmVhdGVQYXNzd29yZFVybFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB1cmw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldENyZWF0ZVBhc3N3b3JkVXJsUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRDcmVhdGVQYXNzd29yZFVybFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRDcmVhdGVQYXNzd29yZFVybFJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cmwnXSA9IHRoaXMudXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEZhY2Vib29rQXBwQ2hlY2tlclJlcXVlc3QgaW1wbGVtZW50cyBpLkdldEZhY2Vib29rQXBwQ2hlY2tlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldEZhY2Vib29rQXBwQ2hlY2tlclJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRGYWNlYm9va0FwcENoZWNrZXJSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRGYWNlYm9va0FwcENoZWNrZXJSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEZhY2Vib29rQXBwQ2hlY2tlclJlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRGYWNlYm9va0FwcENoZWNrZXJSZXNwb25zZUludGVyZmFjZSB7XG4gICAgcmVjb25uZWN0R3JvdXA6IFJlY29ubmVjdEdyb3VwW107XG4gICAgdG90YWxDb25uZWN0aW9uczogbnVtYmVyO1xuICAgIHJlY29ubmVjdE5lZWRlZDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldEZhY2Vib29rQXBwQ2hlY2tlclJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucmVjb25uZWN0R3JvdXApIHttLnJlY29ubmVjdEdyb3VwID0gcHJvdG8ucmVjb25uZWN0R3JvdXAubWFwKFJlY29ubmVjdEdyb3VwLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8udG90YWxDb25uZWN0aW9ucykge20udG90YWxDb25uZWN0aW9ucyA9IHBhcnNlSW50KHByb3RvLnRvdGFsQ29ubmVjdGlvbnMsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0RmFjZWJvb2tBcHBDaGVja2VyUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWNvbm5lY3RHcm91cCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZWNvbm5lY3RHcm91cCAhPT0gbnVsbCkge3RvUmV0dXJuWydyZWNvbm5lY3RHcm91cCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5yZWNvbm5lY3RHcm91cCA/ICh0aGlzLnJlY29ubmVjdEdyb3VwIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnJlY29ubmVjdEdyb3VwO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRvdGFsQ29ubmVjdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RvdGFsQ29ubmVjdGlvbnMnXSA9IHRoaXMudG90YWxDb25uZWN0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWNvbm5lY3ROZWVkZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlY29ubmVjdE5lZWRlZCddID0gdGhpcy5yZWNvbm5lY3ROZWVkZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0VHJhY2tlclJlcXVlc3QgaW1wbGVtZW50cyBpLkdldFRyYWNrZXJSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFRyYWNrZXJSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0VHJhY2tlclJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFRyYWNrZXJSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0bmVySWQnXSA9IHRoaXMucGFydG5lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcklkJ10gPSB0aGlzLnVzZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRUcmFja2VyUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldFRyYWNrZXJSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdHJhY2tlcnM6IFRyYWNrZXJzO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0VHJhY2tlclJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0VHJhY2tlclJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRyYWNrZXJzKSB7bS50cmFja2VycyA9IFRyYWNrZXJzLmZyb21Qcm90byhwcm90by50cmFja2Vycyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFRyYWNrZXJSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRyYWNrZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRyYWNrZXJzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3RyYWNrZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRyYWNrZXJzID8gKHRoaXMudHJhY2tlcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudHJhY2tlcnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0VHdpdHRlckFwcENoZWNrZXJSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRUd2l0dGVyQXBwQ2hlY2tlclJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFR3aXR0ZXJBcHBDaGVja2VyUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldFR3aXR0ZXJBcHBDaGVja2VyUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0VHdpdHRlckFwcENoZWNrZXJSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFR3aXR0ZXJBcHBDaGVja2VyUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldFR3aXR0ZXJBcHBDaGVja2VyUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHRvdGFsQ29ubmVjdGlvbnM6IG51bWJlcjtcbiAgICByZWNvbm5lY3RHcm91cDogUmVjb25uZWN0R3JvdXBbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFR3aXR0ZXJBcHBDaGVja2VyUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRUd2l0dGVyQXBwQ2hlY2tlclJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRvdGFsQ29ubmVjdGlvbnMpIHttLnRvdGFsQ29ubmVjdGlvbnMgPSBwYXJzZUludChwcm90by50b3RhbENvbm5lY3Rpb25zLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8ucmVjb25uZWN0R3JvdXApIHttLnJlY29ubmVjdEdyb3VwID0gcHJvdG8ucmVjb25uZWN0R3JvdXAubWFwKFJlY29ubmVjdEdyb3VwLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFR3aXR0ZXJBcHBDaGVja2VyUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50b3RhbENvbm5lY3Rpb25zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0b3RhbENvbm5lY3Rpb25zJ10gPSB0aGlzLnRvdGFsQ29ubmVjdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVjb25uZWN0R3JvdXAgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucmVjb25uZWN0R3JvdXAgIT09IG51bGwpIHt0b1JldHVyblsncmVjb25uZWN0R3JvdXAnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucmVjb25uZWN0R3JvdXAgPyAodGhpcy5yZWNvbm5lY3RHcm91cCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5yZWNvbm5lY3RHcm91cDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlcXVlc3QgaW1wbGVtZW50cyBpLkdldFdlbGNvbWVFbWFpbFRlbXBsYXRlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgcGFydG5lcklkOiBzdHJpbmc7XG4gICAgdXNlck5hbWU6IHN0cmluZztcbiAgICBsb2dpblVybDogc3RyaW5nO1xuICAgIG1hcmtldElkOiBzdHJpbmc7XG4gICAgd2VsY29tZU1lc3NhZ2U6IHN0cmluZztcbiAgICBsYW5ndWFnZUNvZGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFdlbGNvbWVFbWFpbFRlbXBsYXRlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldFdlbGNvbWVFbWFpbFRlbXBsYXRlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0bmVySWQnXSA9IHRoaXMucGFydG5lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VyTmFtZSddID0gdGhpcy51c2VyTmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2dpblVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9naW5VcmwnXSA9IHRoaXMubG9naW5Vcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWFya2V0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21hcmtldElkJ10gPSB0aGlzLm1hcmtldElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndlbGNvbWVNZXNzYWdlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd3ZWxjb21lTWVzc2FnZSddID0gdGhpcy53ZWxjb21lTWVzc2FnZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYW5ndWFnZUNvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhbmd1YWdlQ29kZSddID0gdGhpcy5sYW5ndWFnZUNvZGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdGVtcGxhdGVIdG1sOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRXZWxjb21lRW1haWxUZW1wbGF0ZVJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0V2VsY29tZUVtYWlsVGVtcGxhdGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlbXBsYXRlSHRtbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGVtcGxhdGVIdG1sJ10gPSB0aGlzLnRlbXBsYXRlSHRtbDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0TmFtZXNwYWNlRGV0YWlsc1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3ROYW1lc3BhY2VEZXRhaWxzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBvdHBDb2RlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0TmFtZXNwYWNlRGV0YWlsc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0TmFtZXNwYWNlRGV0YWlsc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3ROYW1lc3BhY2VEZXRhaWxzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vdHBDb2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvdHBDb2RlJ10gPSB0aGlzLm90cENvZGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdE5hbWVzcGFjZURldGFpbHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdE5hbWVzcGFjZURldGFpbHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgbmFtZXNwYWNlczogTmFtZXNwYWNlRGV0YWlsc1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdE5hbWVzcGFjZURldGFpbHNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3ROYW1lc3BhY2VEZXRhaWxzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubmFtZXNwYWNlcykge20ubmFtZXNwYWNlcyA9IHByb3RvLm5hbWVzcGFjZXMubWFwKE5hbWVzcGFjZURldGFpbHMuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdE5hbWVzcGFjZURldGFpbHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubmFtZXNwYWNlcyAhPT0gbnVsbCkge3RvUmV0dXJuWyduYW1lc3BhY2VzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm5hbWVzcGFjZXMgPyAodGhpcy5uYW1lc3BhY2VzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm5hbWVzcGFjZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFVzZXJzRm9yQnVzaW5lc3NSZXF1ZXN0IGltcGxlbWVudHMgaS5MaXN0VXNlcnNGb3JCdXNpbmVzc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VXNlcnNGb3JCdXNpbmVzc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0VXNlcnNGb3JCdXNpbmVzc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RVc2Vyc0ZvckJ1c2luZXNzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VXNlcnNGb3JCdXNpbmVzc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0VXNlcnNGb3JCdXNpbmVzc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBhc3NvY2lhdGVkVXNlcnM6IEFzc29jaWF0ZWRVc2VyW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VXNlcnNGb3JCdXNpbmVzc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFVzZXJzRm9yQnVzaW5lc3NSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hc3NvY2lhdGVkVXNlcnMpIHttLmFzc29jaWF0ZWRVc2VycyA9IHByb3RvLmFzc29jaWF0ZWRVc2Vycy5tYXAoQXNzb2NpYXRlZFVzZXIuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFVzZXJzRm9yQnVzaW5lc3NSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc29jaWF0ZWRVc2VycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3NvY2lhdGVkVXNlcnMgIT09IG51bGwpIHt0b1JldHVyblsnYXNzb2NpYXRlZFVzZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc29jaWF0ZWRVc2VycyA/ICh0aGlzLmFzc29jaWF0ZWRVc2VycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3NvY2lhdGVkVXNlcnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RVc2Vyc0ZvckJ1c2luZXNzZXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZHM6IHN0cmluZ1tdO1xuICAgIG11bHRpTG9jYXRpb25QYXRoOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VXNlcnNGb3JCdXNpbmVzc2VzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RVc2Vyc0ZvckJ1c2luZXNzZXNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VXNlcnNGb3JCdXNpbmVzc2VzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWRzJ10gPSB0aGlzLmFjY291bnRHcm91cElkczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aUxvY2F0aW9uUGF0aCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbXVsdGlMb2NhdGlvblBhdGgnXSA9IHRoaXMubXVsdGlMb2NhdGlvblBhdGg7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0VXNlcnNGb3JCdXNpbmVzc2VzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGFzc29jaWF0ZWRVc2VyczogQXNzb2NpYXRlZFVzZXJbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RVc2Vyc0ZvckJ1c2luZXNzZXNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RVc2Vyc0ZvckJ1c2luZXNzZXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hc3NvY2lhdGVkVXNlcnMpIHttLmFzc29jaWF0ZWRVc2VycyA9IHByb3RvLmFzc29jaWF0ZWRVc2Vycy5tYXAoQXNzb2NpYXRlZFVzZXIuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFVzZXJzRm9yQnVzaW5lc3Nlc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXNzb2NpYXRlZFVzZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFzc29jaWF0ZWRVc2VycyAhPT0gbnVsbCkge3RvUmV0dXJuWydhc3NvY2lhdGVkVXNlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXNzb2NpYXRlZFVzZXJzID8gKHRoaXMuYXNzb2NpYXRlZFVzZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFzc29jaWF0ZWRVc2Vyczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VEZXRhaWxzIGltcGxlbWVudHMgaS5OYW1lc3BhY2VEZXRhaWxzSW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbG9nb1VybDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTmFtZXNwYWNlRGV0YWlscyB7XG4gICAgICAgIGxldCBtID0gbmV3IE5hbWVzcGFjZURldGFpbHMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk5hbWVzcGFjZURldGFpbHNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvZ29VcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvZ29VcmwnXSA9IHRoaXMubG9nb1VybDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWNvbm5lY3RHcm91cCBpbXBsZW1lbnRzIGkuUmVjb25uZWN0R3JvdXBJbnRlcmZhY2Uge1xuICAgIHNzaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdG9rZW5Ccm9rZW46IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZWNvbm5lY3RHcm91cCB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlY29ubmVjdEdyb3VwKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZWNvbm5lY3RHcm91cEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNzaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NzaWQnXSA9IHRoaXMuc3NpZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG9rZW5Ccm9rZW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Rva2VuQnJva2VuJ10gPSB0aGlzLnRva2VuQnJva2VuO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyUmVxdWVzdCBpbXBsZW1lbnRzIGkuUmVnaXN0ZXJSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBidXNpbmVzc0RhdGE6IEJ1c2luZXNzRGF0YTtcbiAgICBjb250YWN0OiBDb250YWN0O1xuICAgIGJ1c2luZXNzTmFtZTogc3RyaW5nO1xuICAgIHBhcnRuZXJJZDogc3RyaW5nO1xuICAgIG1hcmtldElkOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBwbGFjZUlkOiBzdHJpbmc7XG4gICAgc2FsZXNQZXJzb25JZDogc3RyaW5nO1xuICAgIHJlY2FwdGNoYTogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZWdpc3RlclJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZWdpc3RlclJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYnVzaW5lc3NEYXRhKSB7bS5idXNpbmVzc0RhdGEgPSBCdXNpbmVzc0RhdGEuZnJvbVByb3RvKHByb3RvLmJ1c2luZXNzRGF0YSk7fVxuICAgICAgICBpZiAocHJvdG8uY29udGFjdCkge20uY29udGFjdCA9IENvbnRhY3QuZnJvbVByb3RvKHByb3RvLmNvbnRhY3QpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZWdpc3RlclJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0RhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYnVzaW5lc3NEYXRhICE9PSBudWxsKSB7dG9SZXR1cm5bJ2J1c2luZXNzRGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5idXNpbmVzc0RhdGEgPyAodGhpcy5idXNpbmVzc0RhdGEgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYnVzaW5lc3NEYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbnRhY3QgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY29udGFjdCAhPT0gbnVsbCkge3RvUmV0dXJuWydjb250YWN0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbnRhY3QgPyAodGhpcy5jb250YWN0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvbnRhY3Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc05hbWUnXSA9IHRoaXMuYnVzaW5lc3NOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRuZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydG5lcklkJ10gPSB0aGlzLnBhcnRuZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXJrZXRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWFya2V0SWQnXSA9IHRoaXMubWFya2V0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VtYWlsJ10gPSB0aGlzLmVtYWlsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBsYWNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BsYWNlSWQnXSA9IHRoaXMucGxhY2VJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zYWxlc1BlcnNvbklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzYWxlc1BlcnNvbklkJ10gPSB0aGlzLnNhbGVzUGVyc29uSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVjYXB0Y2hhICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWNhcHRjaGEnXSA9IHRoaXMucmVjYXB0Y2hhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhc3N3b3JkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXNzd29yZCddID0gdGhpcy5wYXNzd29yZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RlclJlc3BvbnNlIGltcGxlbWVudHMgaS5SZWdpc3RlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBidXNpbmVzc0lkOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZWdpc3RlclJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUmVnaXN0ZXJSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUmVnaXN0ZXJSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1c2luZXNzSWQnXSA9IHRoaXMuYnVzaW5lc3NJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVtb3ZlVXNlckZyb21CdXNpbmVzc1JlcXVlc3QgaW1wbGVtZW50cyBpLlJlbW92ZVVzZXJGcm9tQnVzaW5lc3NSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuICAgIHVzZXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUmVtb3ZlVXNlckZyb21CdXNpbmVzc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZW1vdmVVc2VyRnJvbUJ1c2luZXNzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUmVtb3ZlVXNlckZyb21CdXNpbmVzc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcGVhdGVkQ29ubmVjdGlvbiBpbXBsZW1lbnRzIGkuUmVwZWF0ZWRDb25uZWN0aW9uSW50ZXJmYWNlIHtcbiAgICBjb25uZWN0aW9uOiBDb25uZWN0aW9uW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZXBlYXRlZENvbm5lY3Rpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZXBlYXRlZENvbm5lY3Rpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY29ubmVjdGlvbikge20uY29ubmVjdGlvbiA9IHByb3RvLmNvbm5lY3Rpb24ubWFwKENvbm5lY3Rpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUmVwZWF0ZWRDb25uZWN0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25uZWN0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Nvbm5lY3Rpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29ubmVjdGlvbiA/ICh0aGlzLmNvbm5lY3Rpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY29ubmVjdGlvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0U2hvcnRPVFBDb2RlUmVxdWVzdCBpbXBsZW1lbnRzIGkuUmVxdWVzdFNob3J0T1RQQ29kZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGVtYWlsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZXF1ZXN0U2hvcnRPVFBDb2RlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlcXVlc3RTaG9ydE9UUENvZGVSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZXF1ZXN0U2hvcnRPVFBDb2RlUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0U2hvcnRPVFBDb2RlUmVzcG9uc2UgaW1wbGVtZW50cyBpLlJlcXVlc3RTaG9ydE9UUENvZGVSZXNwb25zZUludGVyZmFjZSB7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZXF1ZXN0U2hvcnRPVFBDb2RlUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZXF1ZXN0U2hvcnRPVFBDb2RlUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJlcXVlc3RTaG9ydE9UUENvZGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnMgaW1wbGVtZW50cyBpLlNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnNJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnMge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZW5kUmV2aWV3UmVxdWVzdFRvQ29udGFjdHNGaWx0ZXJzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TZW5kUmV2aWV3UmVxdWVzdFRvQ29udGFjdHNGaWx0ZXJzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVzaW5lc3NJZCddID0gdGhpcy5idXNpbmVzc0lkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1JlcXVlc3QgaW1wbGVtZW50cyBpLlNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGZpbHRlcnM6IFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c0ZpbHRlcnM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTZW5kUmV2aWV3UmVxdWVzdFRvQ29udGFjdHNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5maWx0ZXJzKSB7bS5maWx0ZXJzID0gU2VuZFJldmlld1JlcXVlc3RUb0NvbnRhY3RzRmlsdGVycy5mcm9tUHJvdG8ocHJvdG8uZmlsdGVycyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5maWx0ZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmZpbHRlcnMgIT09IG51bGwpIHt0b1JldHVyblsnZmlsdGVycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5maWx0ZXJzID8gKHRoaXMuZmlsdGVycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5maWx0ZXJzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1Jlc3BvbnNlIGltcGxlbWVudHMgaS5TZW5kUmV2aWV3UmVxdWVzdFRvQ29udGFjdHNSZXNwb25zZUludGVyZmFjZSB7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTZW5kUmV2aWV3UmVxdWVzdFRvQ29udGFjdHNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFNlbmRSZXZpZXdSZXF1ZXN0VG9Db250YWN0c1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TZW5kUmV2aWV3UmVxdWVzdFRvQ29udGFjdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbmRXZWxjb21lRW1haWxSZXF1ZXN0IGltcGxlbWVudHMgaS5TZW5kV2VsY29tZUVtYWlsUmVxdWVzdEludGVyZmFjZSB7XG4gICAgcGFydG5lcklkOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgbG9naW5Vcmw6IHN0cmluZztcbiAgICB1c2VQbGF0Zm9ybURlZmF1bHREb21haW46IGJvb2xlYW47XG4gICAgbWFya2V0SWQ6IHN0cmluZztcbiAgICB3ZWxjb21lTWVzc2FnZTogc3RyaW5nO1xuICAgIGxhbmd1YWdlQ29kZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2VuZFdlbGNvbWVFbWFpbFJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZW5kV2VsY29tZUVtYWlsUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2VuZFdlbGNvbWVFbWFpbFJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvZ2luVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2dpblVybCddID0gdGhpcy5sb2dpblVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VQbGF0Zm9ybURlZmF1bHREb21haW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZVBsYXRmb3JtRGVmYXVsdERvbWFpbiddID0gdGhpcy51c2VQbGF0Zm9ybURlZmF1bHREb21haW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWFya2V0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21hcmtldElkJ10gPSB0aGlzLm1hcmtldElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndlbGNvbWVNZXNzYWdlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd3ZWxjb21lTWVzc2FnZSddID0gdGhpcy53ZWxjb21lTWVzc2FnZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYW5ndWFnZUNvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhbmd1YWdlQ29kZSddID0gdGhpcy5sYW5ndWFnZUNvZGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0VHJhY2tlclJlcXVlc3QgaW1wbGVtZW50cyBpLlNldFRyYWNrZXJSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICB0cmFja2VyOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTZXRUcmFja2VyUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFNldFRyYWNrZXJSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TZXRUcmFja2VyUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRuZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydG5lcklkJ10gPSB0aGlzLnBhcnRuZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHJhY2tlciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHJhY2tlciddID0gdGhpcy50cmFja2VyO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldFRyYWNrZXJSZXNwb25zZSBpbXBsZW1lbnRzIGkuU2V0VHJhY2tlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2V0VHJhY2tlclJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2V0VHJhY2tlclJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TZXRUcmFja2VyUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWNjZXNzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdWNjZXNzJ10gPSB0aGlzLnN1Y2Nlc3M7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJhY2tlcnMgaW1wbGVtZW50cyBpLlRyYWNrZXJzSW50ZXJmYWNlIHtcbiAgICB3ZWxjb21lVmlkZW86IGJvb2xlYW47XG4gICAgYWNhZGVteTogYm9vbGVhbjtcbiAgICBza2lwcGVkR2JwQ29ubmVjdGlvbjogYm9vbGVhbjtcbiAgICBza2lwcGVkSW50ZWdyYXRpb25Db25uZWN0aW9uOiBib29sZWFuO1xuICAgIHNraXBwZWRXZWJjaGF0U2V0dXA6IGJvb2xlYW47XG4gICAgc2tpcHBlZFNtc1JlZ2lzdHJhdGlvbjogYm9vbGVhbjtcbiAgICBza2lwcGVkTW9iaWxlTm90aWZpY2F0aW9uOiBib29sZWFuO1xuICAgIHNraXBwZWRBaVdvcmtmb3JjZTogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFRyYWNrZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVHJhY2tlcnMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlRyYWNrZXJzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMud2VsY29tZVZpZGVvICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd3ZWxjb21lVmlkZW8nXSA9IHRoaXMud2VsY29tZVZpZGVvO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjYWRlbXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjYWRlbXknXSA9IHRoaXMuYWNhZGVteTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za2lwcGVkR2JwQ29ubmVjdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2tpcHBlZEdicENvbm5lY3Rpb24nXSA9IHRoaXMuc2tpcHBlZEdicENvbm5lY3Rpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2tpcHBlZEludGVncmF0aW9uQ29ubmVjdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2tpcHBlZEludGVncmF0aW9uQ29ubmVjdGlvbiddID0gdGhpcy5za2lwcGVkSW50ZWdyYXRpb25Db25uZWN0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNraXBwZWRXZWJjaGF0U2V0dXAgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NraXBwZWRXZWJjaGF0U2V0dXAnXSA9IHRoaXMuc2tpcHBlZFdlYmNoYXRTZXR1cDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za2lwcGVkU21zUmVnaXN0cmF0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydza2lwcGVkU21zUmVnaXN0cmF0aW9uJ10gPSB0aGlzLnNraXBwZWRTbXNSZWdpc3RyYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2tpcHBlZE1vYmlsZU5vdGlmaWNhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2tpcHBlZE1vYmlsZU5vdGlmaWNhdGlvbiddID0gdGhpcy5za2lwcGVkTW9iaWxlTm90aWZpY2F0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNraXBwZWRBaVdvcmtmb3JjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2tpcHBlZEFpV29ya2ZvcmNlJ10gPSB0aGlzLnNraXBwZWRBaVdvcmtmb3JjZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
@@ -972,6 +972,9 @@ class RegisterRequest {
972
972
  if (typeof this.recaptcha !== 'undefined') {
973
973
  toReturn['recaptcha'] = this.recaptcha;
974
974
  }
975
+ if (typeof this.password !== 'undefined') {
976
+ toReturn['password'] = this.password;
977
+ }
975
978
  return toReturn;
976
979
  }
977
980
  }
@@ -1260,6 +1263,9 @@ class Trackers {
1260
1263
  if (typeof this.skippedMobileNotification !== 'undefined') {
1261
1264
  toReturn['skippedMobileNotification'] = this.skippedMobileNotification;
1262
1265
  }
1266
+ if (typeof this.skippedAiWorkforce !== 'undefined') {
1267
+ toReturn['skippedAiWorkforce'] = this.skippedAiWorkforce;
1268
+ }
1263
1269
  return toReturn;
1264
1270
  }
1265
1271
  }