@bitgo-beta/statics 15.1.1-beta.2147 → 15.1.1-beta.2149

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.
@@ -26,6 +26,15 @@ function getErc20TokenConfig(coin) {
26
26
  case networks_1.Networks.test.sepolia.name:
27
27
  baseCoin = 'sepeth';
28
28
  break;
29
+ case networks_1.Networks.test.basechain.name:
30
+ baseCoin = 'tbaseeth';
31
+ break;
32
+ case networks_1.Networks.test.flow.name:
33
+ baseCoin = 'tflow';
34
+ break;
35
+ case networks_1.Networks.main.okbxlayer.name:
36
+ baseCoin = 'okbxlayer';
37
+ break;
29
38
  default:
30
39
  throw new Error(`Erc20 token ${coin.name} has an unsupported network`);
31
40
  }
@@ -1273,4 +1282,4 @@ function getFormattedTokenConfigForCoin(coin) {
1273
1282
  }
1274
1283
  return undefined;
1275
1284
  }
1276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5Db25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW5Db25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeWtEQSx3RUFvRkM7QUE3cERELHVDQTJDbUI7QUFDbkIsaUNBQXFFO0FBQ3JFLG1DQUFnQztBQUNoQyx5Q0FBMkY7QUFDM0YsK0JBQWdDO0FBdVJoQyxTQUFTLG1CQUFtQixDQUFDLElBQWU7SUFDMUMsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTTtRQUNSLEtBQUssbUJBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUNsQixNQUFNO1FBQ1IsS0FBSyxtQkFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUM1QixRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ25CLE1BQU07UUFDUixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDaEMsS0FBSyxtQkFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUMzQixRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ25CLE1BQU07UUFDUixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQzdCLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDcEIsTUFBTTtRQUNSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLDZCQUE2QixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixJQUFJLEVBQUUsUUFB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QkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO1NBQU0sSUFBSSxJQUFJLFlBQVksb0JBQVUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbGdvQ29pbixcbiAgQXB0Q29pbixcbiAgQXB0TkZUQ29sbGVjdGlvbixcbiAgQXJiZXRoRVJDMjBUb2tlbixcbiAgQXZheEVSQzIwVG9rZW4sXG4gIEJlcmFFUkMyMFRva2VuLFxuICBCc2NDb2luLFxuICBDZWxvQ29pbixcbiAgQ29yZWRhb0VSQzIwVG9rZW4sXG4gIENvc21vc0NoYWluVG9rZW4sXG4gIEVvc0NvaW4sXG4gIEVyYzExNTVDb2luLFxuICBFcmMyMENvaW4sXG4gIEVyYzcyMUNvaW4sXG4gIEVyYzc5ODRDb2luLFxuICBFdGhMaWtlRVJDMjBUb2tlbixcbiAgRXRoTGlrZUVSQzcyMVRva2VuLFxuICBGbHJFUkMyMFRva2VuLFxuICBNb25FUkMyMFRva2VuLFxuICBYZGNFUkMyMFRva2VuLFxuICBIZWRlcmFUb2tlbixcbiAgTmVwMTQxVG9rZW4sXG4gIE9wZXRoRVJDMjBUb2tlbixcbiAgUG9seWdvbkVSQzIwVG9rZW4sXG4gIFNpcDEwVG9rZW4sXG4gIFNvbENvaW4sXG4gIFN0ZWxsYXJDb2luLFxuICBTdWlDb2luLFxuICBUYW9Db2luLFxuICBQb2x5eENvaW4sXG4gIFRyb25FcmMyMENvaW4sXG4gIFZldFRva2VuLFxuICBXb3JsZEVSQzIwVG9rZW4sXG4gIFhycENvaW4sXG4gIFhycE1wdENvaW4sXG4gIFprZXRoRVJDMjBUb2tlbixcbiAgVmV0TkZUQ29sbGVjdGlvbixcbiAgQWRhVG9rZW4sXG4gIEpldHRvblRva2VuLFxuICBBY2NvdW50Q29pbixcbiAgQ2FudG9uVG9rZW4sXG4gIFRpcDIwVG9rZW4sXG59IGZyb20gJy4vYWNjb3VudCc7XG5pbXBvcnQgeyBDb2luRmFtaWx5LCBDb2luS2luZCwgQmFzZUNvaW4sIENvaW5GZWF0dXJlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnLi9jb2lucyc7XG5pbXBvcnQgeyBEeW5hbWljTmV0d29ya09wdGlvbnMsIEV0aGVyZXVtTmV0d29yaywgTmV0d29ya3MsIE5ldHdvcmtUeXBlIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBPZmNDb2luIH0gZnJvbSAnLi9vZmMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VUb2tlbkNvbmZpZyB7XG4gIGNvaW46IHN0cmluZztcbiAgZGVjaW1hbFBsYWNlczogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlTmV0d29ya0NvbmZpZyBleHRlbmRzIEJhc2VUb2tlbkNvbmZpZyB7XG4gIG5ldHdvcms6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnIGV4dGVuZHMgQmFzZU5ldHdvcmtDb25maWcge1xuICB0b2tlbkNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBdmF4Y1Rva2VuQ29uZmlnID0gQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZztcbmV4cG9ydCB0eXBlIENlbG9Ub2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBFdGhMaWtlVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnO1xuZXhwb3J0IHR5cGUgRW9zVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnICYge1xuICBjb250cmFjdE5hbWU6IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXJjMjBUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBFcmM3OTg0VG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnICYge1xuICAvKiogUHJlc2VudCBmb3IgSG9vZGkgdGVzdCBwYWlyczsgb21pdHRlZCBvbiBtYWlubmV0IHVudGlsIHNoaWVsZC91bnNoaWVsZCBzaGlwcyB0aGVyZS4gKi9cbiAgdW5kZXJseWluZ0VyYzIwQWRkcmVzcz86IHN0cmluZztcbiAgcmF0ZT86IHN0cmluZztcbiAgcmVxdWlyZXNBcHByb3ZhbFJlc2V0PzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBUcnhUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBTdGVsbGFyVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZztcblxuZXhwb3J0IHR5cGUgU29sVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBwcm9ncmFtSWQ/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBZGFUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBwb2xpY3lJZDogc3RyaW5nO1xuICBhc3NldE5hbWU6IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBbGdvVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYWxpYXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBPZmNUb2tlbkNvbmZpZyA9IEJhc2VUb2tlbkNvbmZpZyAmIHtcbiAgYmFja2luZ0NvaW46IHN0cmluZztcbiAgaXNGaWF0OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgSGJhclRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIG5vZGVBY2NvdW50SWQ6IHN0cmluZztcbiAgdG9rZW5JZDogc3RyaW5nO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFhycFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGlzc3VlckFkZHJlc3M6IHN0cmluZztcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gIGRvbWFpbj86IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBYcnBNcHRUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZzsgLy8gTVBUb2tlbklzc3VhbmNlSUQgKDQ4LWNoYXIgaGV4KVxuICBjYW5UcmFuc2ZlcjogYm9vbGVhbjsgLy8gaW1tdXRhYmxlIGxzZk1QVENhblRyYW5zZmVyIGZsYWdcbn07XG5cbmV4cG9ydCB0eXBlIFN1aVRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIHBhY2thZ2VJZDogc3RyaW5nO1xuICBtb2R1bGU6IHN0cmluZztcbiAgc3ltYm9sOiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXB0VG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYXNzZXRJZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXB0TkZUQ29sbGVjdGlvbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBuZnRDb2xsZWN0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNpcDEwVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYXNzZXRJZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVGFvVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgc3VibmV0SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFBvbHl4VG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgdGlja2VyOiBzdHJpbmc7XG4gIGFzc2V0SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5lcDE0MVRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBzdG9yYWdlRGVwb3NpdEFtb3VudDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ2FudG9uVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYmFzZVVybDogc3RyaW5nO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZldFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmV0TkZUQ29sbGVjdGlvbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBuZnRDb2xsZWN0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvc21vc1Rva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGRlbm9tOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBKZXR0b25Ub2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEV0aExpa2VFUkM3MjFUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWcgJiB7XG4gIG5ldHdvcms6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFRpcDIwVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnO1xuXG5leHBvcnQgdHlwZSBUb2tlbkNvbmZpZyA9XG4gIHwgRXJjMjBUb2tlbkNvbmZpZ1xuICB8IFN0ZWxsYXJUb2tlbkNvbmZpZ1xuICB8IE9mY1Rva2VuQ29uZmlnXG4gIHwgQ2Vsb1Rva2VuQ29uZmlnXG4gIHwgRXRoTGlrZVRva2VuQ29uZmlnXG4gIHwgRW9zVG9rZW5Db25maWdcbiAgfCBBdmF4Y1Rva2VuQ29uZmlnXG4gIHwgU29sVG9rZW5Db25maWdcbiAgfCBIYmFyVG9rZW5Db25maWdcbiAgfCBBZGFUb2tlbkNvbmZpZ1xuICB8IEFsZ29Ub2tlbkNvbmZpZ1xuICB8IFRyeFRva2VuQ29uZmlnXG4gIHwgWHJwVG9rZW5Db25maWdcbiAgfCBYcnBNcHRUb2tlbkNvbmZpZ1xuICB8IFN1aVRva2VuQ29uZmlnXG4gIHwgQXB0VG9rZW5Db25maWdcbiAgfCBBcHRORlRDb2xsZWN0aW9uQ29uZmlnXG4gIHwgU2lwMTBUb2tlbkNvbmZpZ1xuICB8IE5lcDE0MVRva2VuQ29uZmlnXG4gIHwgQ2FudG9uVG9rZW5Db25maWdcbiAgfCBDb3Ntb3NUb2tlbkNvbmZpZ1xuICB8IFZldFRva2VuQ29uZmlnXG4gIHwgVmV0TkZUQ29sbGVjdGlvbkNvbmZpZ1xuICB8IFRhb1Rva2VuQ29uZmlnXG4gIHwgUG9seXhUb2tlbkNvbmZpZ1xuICB8IEpldHRvblRva2VuQ29uZmlnXG4gIHwgRXRoTGlrZUVSQzcyMVRva2VuQ29uZmlnXG4gIHwgVGlwMjBUb2tlbkNvbmZpZ1xuICB8IEVyYzc5ODRUb2tlbkNvbmZpZztcblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbk5ldHdvcmsge1xuICBldGg6IHtcbiAgICB0b2tlbnM6IEVyYzIwVG9rZW5Db25maWdbXTtcbiAgICBuZnRzOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICBjb25maWRlbnRpYWxUb2tlbnM6IEVyYzc5ODRUb2tlbkNvbmZpZ1tdO1xuICB9O1xuICB4bG06IHsgdG9rZW5zOiBTdGVsbGFyVG9rZW5Db25maWdbXSB9O1xuICBhbGdvOiB7IHRva2VuczogQWxnb1Rva2VuQ29uZmlnW10gfTtcbiAgb2ZjOiB7IHRva2VuczogT2ZjVG9rZW5Db25maWdbXSB9O1xuICBjZWxvOiB7IHRva2VuczogQ2Vsb1Rva2VuQ29uZmlnW10gfTtcbiAgZW9zOiB7IHRva2VuczogRW9zVG9rZW5Db25maWdbXSB9O1xuICBhdmF4YzogeyB0b2tlbnM6IEF2YXhjVG9rZW5Db25maWdbXSB9O1xuICBwb2x5Z29uOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgc29uZWl1bTogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIGJzYzogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIGFyYmV0aDogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIG9wZXRoOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgYmFzZWV0aDogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIG9nOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgZmxvdzogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIGxpbmVhZXRoOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgc2VpZXZtOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgY29yZWRhbzogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIHdvcmxkOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgZmxyOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgc29sOiB7IHRva2VuczogU29sVG9rZW5Db25maWdbXSB9O1xuICBoYmFyOiB7IHRva2VuczogSGJhclRva2VuQ29uZmlnW10gfTtcbiAgYWRhOiB7IHRva2VuczogQWRhVG9rZW5Db25maWdbXSB9O1xuICB0cng6IHsgdG9rZW5zOiBUcnhUb2tlbkNvbmZpZ1tdIH07XG4gIHhycDogeyB0b2tlbnM6IFhycFRva2VuQ29uZmlnW107IG1wdFRva2VuczogWHJwTXB0VG9rZW5Db25maWdbXSB9O1xuICB6a2V0aDogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIHprc3luY2VyYTogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIHN1aTogeyB0b2tlbnM6IFN1aVRva2VuQ29uZmlnW10gfTtcbiAgdGFvOiB7IHRva2VuczogVGFvVG9rZW5Db25maWdbXSB9O1xuICBwb2x5eDogeyB0b2tlbnM6IFBvbHl4VG9rZW5Db25maWdbXSB9O1xuICBiZXJhOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgbW9uOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgeGRjOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgaHlwZWV2bTogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIGlwOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgYXB0OiB7XG4gICAgdG9rZW5zOiBBcHRUb2tlbkNvbmZpZ1tdO1xuICAgIG5mdENvbGxlY3Rpb25zOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnW107XG4gIH07XG4gIHN0eDogeyB0b2tlbnM6IFNpcDEwVG9rZW5Db25maWdbXSB9O1xuICBuZWFyOiB7IHRva2VuczogTmVwMTQxVG9rZW5Db25maWdbXSB9O1xuICB2ZXQ6IHtcbiAgICB0b2tlbnM6IFZldFRva2VuQ29uZmlnW107XG4gICAgbmZ0Q29sbGVjdGlvbnM6IFZldE5GVENvbGxlY3Rpb25Db25maWdbXTtcbiAgfTtcbiAgY29zbW9zOiB7IHRva2VuczogQ29zbW9zVG9rZW5Db25maWdbXSB9O1xuICB0b246IHsgdG9rZW5zOiBKZXR0b25Ub2tlbkNvbmZpZ1tdIH07XG4gIHRlbXBvOiB7IHRva2VuczogVGlwMjBUb2tlbkNvbmZpZ1tdIH07XG4gIGNhbnRvbjogeyB0b2tlbnM6IENhbnRvblRva2VuQ29uZmlnW10gfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbnMge1xuICBiaXRjb2luOiBUb2tlbk5ldHdvcms7XG4gIHRlc3RuZXQ6IFRva2VuTmV0d29yaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbXNUb2tlbkNvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZnVsbE5hbWU6IHN0cmluZztcbiAgZmFtaWx5OiBzdHJpbmc7XG4gIGRlY2ltYWxQbGFjZXM6IG51bWJlcjtcbiAgYXNzZXQ6IHN0cmluZztcbiAgZmVhdHVyZXM/OiBzdHJpbmdbXTtcbiAgcHJlZml4Pzogc3RyaW5nO1xuICBzdWZmaXg/OiBzdHJpbmc7XG4gIG5ldHdvcms/OiB1bmtub3duO1xuICBwcmltYXJ5S2V5Q3VydmU/OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzcz86IHN0cmluZztcbiAgdG9rZW5BZGRyZXNzPzogc3RyaW5nO1xuICBuZnRDb2xsZWN0aW9uSWQ/OiBzdHJpbmc7XG4gIGFsaWFzPzogc3RyaW5nO1xuICBjb250cmFjdE5hbWU/OiBzdHJpbmc7XG4gIHRva2VuSWQ/OiBzdHJpbmc7XG4gIHBhY2thZ2VJZD86IHN0cmluZztcbiAgbW9kdWxlPzogc3RyaW5nO1xuICBzeW1ib2w/OiBzdHJpbmc7XG4gIGlzc3VlckFkZHJlc3M/OiBzdHJpbmc7XG4gIGN1cnJlY255Y29kZT86IHN0cmluZztcbiAgZG9tYWluPzogc3RyaW5nO1xuICBhc3NldElkPzogc3RyaW5nO1xuICBkZW5vbT86IHN0cmluZztcbiAgaXNUb2tlbjogYm9vbGVhbjtcbiAgYmFzZVVuaXQ/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIHN1Ym5ldElkPzogc3RyaW5nO1xuICB0aWNrZXI/OiBzdHJpbmc7XG4gIHByb2dyYW1JZD86IHN0cmluZztcbiAgYWRkcmVzc0NvaW4/OiBzdHJpbmc7XG4gIGFzc2V0TmFtZT86IHN0cmluZztcbiAgcG9saWN5SWQ/OiBzdHJpbmc7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGRldGVjdGVkX2V4dGVuc2lvbl90eXBlX25hbWVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW1zTmV0d29ya0NvbmZpZyBleHRlbmRzIER5bmFtaWNOZXR3b3JrT3B0aW9ucyB7XG4gIGZlYXR1cmVzOiBDb2luRmVhdHVyZVtdO1xufVxuXG5leHBvcnQgdHlwZSBBbXNOZXR3b3JrQ29uZmlnTWFwID0gUmVjb3JkPHN0cmluZywgQW1zTmV0d29ya0NvbmZpZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJpbW1lZEFtc05ldHdvcmtDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRyaW1tZWRBbXNUb2tlbkNvbmZpZyBleHRlbmRzIE9taXQ8QW1zVG9rZW5Db25maWcsICdmZWF0dXJlcycgfCAnbmV0d29yayc+IHtcbiAgbmV0d29yazogVHJpbW1lZEFtc05ldHdvcmtDb25maWc7XG4gIGV4Y2x1ZGVkRmVhdHVyZXM/OiBzdHJpbmdbXTtcbiAgYWRkaXRpb25hbEZlYXR1cmVzPzogc3RyaW5nW107XG59XG5cbmZ1bmN0aW9uIGdldEVyYzIwVG9rZW5Db25maWcoY29pbjogRXJjMjBDb2luKTogRXJjMjBUb2tlbkNvbmZpZyB7XG4gIGxldCBiYXNlQ29pbjogc3RyaW5nO1xuICBzd2l0Y2ggKGNvaW4ubmV0d29yay5uYW1lKSB7XG4gICAgY2FzZSBOZXR3b3Jrcy5tYWluLmV0aGVyZXVtLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdldGgnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0LmtvdmFuLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICd0ZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5nb2VybGkubmFtZTpcbiAgICAgIGJhc2VDb2luID0gJ2d0ZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5ob2xlc2t5Lm5hbWU6XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0Lmhvb2RpLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdodGV0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3Quc2Vwb2xpYS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnc2VwZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVyYzIwIHRva2VuICR7Y29pbi5uYW1lfSBoYXMgYW4gdW5zdXBwb3J0ZWQgbmV0d29ya2ApO1xuICB9XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGJhc2VDb2luLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5cbi8vIEdldCB0aGUgbGlzdCBvZiBFUkMtMjAgdG9rZW5zIGZyb20gc3RhdGljcyBhbmQgZm9ybWF0IGl0IHByb3Blcmx5XG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRXJjMjBUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFcmMyMFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEVyYzIwQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0RXJjMjBUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0RXJjNzk4NFRva2VuQ29uZmlnKGNvaW46IEVyYzc5ODRDb2luKTogRXJjNzk4NFRva2VuQ29uZmlnIHtcbiAgbGV0IGJhc2VDb2luOiBzdHJpbmc7XG4gIHN3aXRjaCAoY29pbi5uZXR3b3JrLm5hbWUpIHtcbiAgICBjYXNlIE5ldHdvcmtzLm1haW4uZXRoZXJldW0ubmFtZTpcbiAgICAgIGJhc2VDb2luID0gJ2V0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3Qua292YW4ubmFtZTpcbiAgICAgIGJhc2VDb2luID0gJ3RldGgnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0LmdvZXJsaS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnZ3RldGgnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0LmhvbGVza3kubmFtZTpcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3QuaG9vZGkubmFtZTpcbiAgICAgIGJhc2VDb2luID0gJ2h0ZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5zZXBvbGlhLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdzZXBldGgnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRVJDLTc5ODQgdG9rZW4gJHtjb2luLm5hbWV9IGhhcyBhbiB1bnN1cHBvcnRlZCBuZXR3b3JrYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogYmFzZUNvaW4sXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICAuLi4oY29pbi51bmRlcmx5aW5nRXJjMjBBZGRyZXNzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgdW5kZXJseWluZ0VyYzIwQWRkcmVzczogY29pbi51bmRlcmx5aW5nRXJjMjBBZGRyZXNzLnRvTG93ZXJDYXNlKCksXG4gICAgfSksXG4gICAgLi4uKGNvaW4ucmF0ZSAhPT0gdW5kZWZpbmVkICYmIHsgcmF0ZTogY29pbi5yYXRlIH0pLFxuICAgIC4uLihjb2luLnJlcXVpcmVzQXBwcm92YWxSZXNldCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgIHJlcXVpcmVzQXBwcm92YWxSZXNldDogY29pbi5yZXF1aXJlc0FwcHJvdmFsUmVzZXQsXG4gICAgfSksXG4gIH07XG59XG5cbi8vIEdldCB0aGUgbGlzdCBvZiBFUkMtNzk4NCBjb25maWRlbnRpYWwgdG9rZW5zIGZyb20gc3RhdGljcyBhbmQgZm9ybWF0IGl0IHByb3Blcmx5XG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRXJjNzk4NFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEVyYzc5ODRUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBFcmM3OTg0Q29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0RXJjNzk4NFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5leHBvcnQgY29uc3QgZXRoR2FzQ29uZmlncyA9IHtcbiAgbWluaW11bUdhc1ByaWNlOiAxMDAwMDAwMDAwLCAvLyBtaW5pbXVtIGdhcyBwcmljZSBhIHVzZXIgY2FuIHByb3ZpZGUgKDEgR3dlaSlcbiAgZGVmYXVsdEdhc1ByaWNlOiAyMDAwMDAwMDAwMCwgLy8gZGVmYXVsdCBnYXMgcHJpY2UgaWYgZXN0aW1hdGlvbiBmYWlscyAoMjAgR3dlaSlcbiAgbWF4aW11bUdhc1ByaWNlOiAyNTAwMDAwMDAwMDAwLCAvLyBtaW5pbXVtIGdhcyBwcmljZSBhIHVzZXIgY2FuIHByb3ZpZGUgKDI1MDAgR3dlaSlcbiAgZGVmYXVsdEdhc0xpbWl0OiA1MDAwMDAsIC8vIERlZmF1bHQgZ2FzIGxpbWl0IHdlIHNldCBmb3IgY29udHJhY3Qgc2VuZFxuICBkZWZhdWx0R2FzTGltaXRUb2tlblNlbmQ6IDEwMDAwMDAsIC8vIERlZmF1bHQgZ2FzIGxpbWl0IHdlIHNldCBmb3IgdG9rZW4gc2VuZFxuICBtaW5pbXVtR2FzTGltaXQ6IDMwMDAwLCAvLyBtaW5pbXVtIGdhcyBsaW1pdCBhIHVzZXIgY2FuIHNldCBmb3IgYSBzZW5kXG4gIG1heGltdW1HYXNMaW1pdDogMjAwMDAwMDAsIC8vIEN1c3RvbWVycyBjYW5ub3Qgc2V0IGdhcyBsaW1pdHMgYmV5b25kIHRoaXMgYW1vdW50XG4gIG5ld0V0aExpa2VDb2luc01pbkdhc0xpbWl0OiA0MDAwMDAsIC8vIG1pbmltdW0gZ2FzIGxpbWl0IGEgdXNlciBjYW4gc2V0IGZvciBhIHNlbmQgZm9yIGV0aCBsaWtlIGNvaW5zIGxpa2UgYXJiaXRydW0sIG9wdGltaXNtLCBldGNcbiAgbDFHYXNGZWVCdWZmZXI6IDEwMDAwMDAwMDAwMDAwMDAsIC8vIEJ1ZmZlciBmb3IgTDEgZGF0YSBmZWVzXG59O1xuXG5mdW5jdGlvbiBnZXRTdGVsbGFyVG9rZW5Db25maWcoY29pbjogU3RlbGxhckNvaW4pOiBTdGVsbGFyVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd4bG0nIDogJ3R4bG0nLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuLy8gR2V0IHRoZSBsaXN0IG9mIFN0ZWxsYXIgdG9rZW5zIGZyb20gc3RhdGljcyBhbmQgZm9ybWF0IGl0IHByb3Blcmx5XG5jb25zdCBnZXRGb3JtYXR0ZWRTdGVsbGFyVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogU3RlbGxhclRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFN0ZWxsYXJDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRTdGVsbGFyVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldE9mY1Rva2VuQ29uZmlnKGNvaW46IE9mY0NvaW4pOiBPZmNUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46ICdvZmMnLFxuICAgIGJhY2tpbmdDb2luOiBjb2luLmFzc2V0LFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIGlzRmlhdDogY29pbi5raW5kID09PSBDb2luS2luZC5GSUFULFxuICB9O1xufVxuLy8gR2V0IHRoZSBsaXN0IG9mIE9GQyB0b2tlbnMgZnJvbSBzdGF0aWNzIGFuZCBmb3JtYXQgaXQgcHJvcGVybHlcbmNvbnN0IGdldEZvcm1hdHRlZE9mY0NvaW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogT2ZjVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgT2ZjQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0T2ZjVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldENlbG9Ub2tlbkNvbmZpZyhjb2luOiBDZWxvQ29pbik6IENlbG9Ub2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2NlbG8nIDogJ3RjZWxvJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQ2Vsb1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IENlbG9Ub2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBDZWxvQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0Q2Vsb1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRCc2NUb2tlbkNvbmZpZyhjb2luOiBCc2NDb2luKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYnNjJyA6ICd0YnNjJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQnNjVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEJzY0NvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEJzY1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRFb3NUb2tlbkNvbmZpZyhjb2luOiBFb3NDb2luKTogRW9zVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdlb3MnIDogJ3Rlb3MnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3ROYW1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgY29udHJhY3ROYW1lOiBjb2luLmNvbnRyYWN0TmFtZSxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkRW9zVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRW9zVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgRW9zQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0RW9zVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEF2YXhDVG9rZW5Db25maWcoY29pbjogQXZheEVSQzIwVG9rZW4pOiBBdmF4Y1Rva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYXZheGMnIDogJ3RhdmF4YycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEF2YXhDVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogQXZheGNUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBdmF4RVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0QXZheENUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0UG9seWdvblRva2VuQ29uZmlnKGNvaW46IFBvbHlnb25FUkMyMFRva2VuIHwgRXJjNzIxQ29pbiB8IEVyYzExNTVDb2luKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAncG9seWdvbicgOiAndHBvbHlnb24nLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRQb2x5Z29uVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoXG4gICAgICBjb2luIGluc3RhbmNlb2YgUG9seWdvbkVSQzIwVG9rZW4gfHxcbiAgICAgICgoY29pbiBpbnN0YW5jZW9mIEVyYzcyMUNvaW4gfHwgY29pbiBpbnN0YW5jZW9mIEVyYzExNTVDb2luKSAmJiBjb2luLmZhbWlseSA9PT0gQ29pbkZhbWlseS5QT0xZR09OKVxuICAgICkge1xuICAgICAgYWNjLnB1c2goZ2V0UG9seWdvblRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRTb25laXVtVG9rZW5Db25maWcoY29pbjogRXJjNzIxQ29pbiB8IEVyYzExNTVDb2luKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnc29uZWl1bScgOiAndHNvbmVpdW0nLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRTb25laXVtVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoKGNvaW4gaW5zdGFuY2VvZiBFcmM3MjFDb2luIHx8IGNvaW4gaW5zdGFuY2VvZiBFcmMxMTU1Q29pbikgJiYgY29pbi5mYW1pbHkgPT09IENvaW5GYW1pbHkuU09ORUlVTSkge1xuICAgICAgYWNjLnB1c2goZ2V0U29uZWl1bVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRFcmM3MjFUb2tlbkNvbmZpZyhjb2luOiBFcmM3MjFDb2luKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnZXRoJyA6ICdodGV0aCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEVyYzcyMVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBFcmM3MjFDb2luICYmIGNvaW4uZmFtaWx5ID09PSBDb2luRmFtaWx5LkVUSCkge1xuICAgICAgYWNjLnB1c2goZ2V0RXJjNzIxVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEFyYmV0aFRva2VuQ29uZmlnKGNvaW46IEFyYmV0aEVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhcmJldGgnIDogJ3RhcmJldGgnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRBcmJldGhUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQXJiZXRoRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0QXJiZXRoVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldE9wZXRoVG9rZW5Db25maWcoY29pbjogT3BldGhFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnb3BldGgnIDogJ3RvcGV0aCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZE9wZXRoVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIE9wZXRoRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0T3BldGhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QmFzZWV0aFRva2VuQ29uZmlnKGNvaW46IEV0aExpa2VFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYmFzZWV0aCcgOiAndGJhc2VldGgnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRCYXNlZXRoVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEV0aExpa2VFUkMyMFRva2VuICYmIChjb2luLm5hbWUuaW5jbHVkZXMoJ2Jhc2VldGg6JykgfHwgY29pbi5uYW1lLmluY2x1ZGVzKCd0YmFzZWV0aDonKSkpIHtcbiAgICAgIGFjYy5wdXNoKGdldEJhc2VldGhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0T2dUb2tlbkNvbmZpZyhjb2luOiBFdGhMaWtlRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ29nJyA6ICd0b2cnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRPZ1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBFdGhMaWtlRVJDMjBUb2tlbiAmJiAoY29pbi5uYW1lLmluY2x1ZGVzKCdvZzonKSB8fCBjb2luLm5hbWUuaW5jbHVkZXMoJ3RvZzonKSkpIHtcbiAgICAgIGFjYy5wdXNoKGdldE9nVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFNlaWV2bVRva2VuQ29uZmlnKGNvaW46IEV0aExpa2VFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnc2VpZXZtJyA6ICd0c2VpZXZtJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkU2VpZXZtVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEV0aExpa2VFUkMyMFRva2VuICYmIChjb2luLm5hbWUuaW5jbHVkZXMoJ3NlaWV2bTonKSB8fCBjb2luLm5hbWUuaW5jbHVkZXMoJ3RzZWlldm06JykpKSB7XG4gICAgICBhY2MucHVzaChnZXRTZWlldm1Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0TW9uVG9rZW5Db25maWcoY29pbjogTW9uRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ21vbicgOiAndG1vbicsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZE1vblRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBNb25FUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRNb25Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0Rmxvd1Rva2VuQ29uZmlnKGNvaW46IEV0aExpa2VFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnZmxvdycgOiAndGZsb3cnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRGbG93VG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEV0aExpa2VFUkMyMFRva2VuICYmIChjb2luLm5hbWUuaW5jbHVkZXMoJ2Zsb3c6JykgfHwgY29pbi5uYW1lLmluY2x1ZGVzKCd0ZmxvdzonKSkpIHtcbiAgICAgIGFjYy5wdXNoKGdldEZsb3dUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0TGluZWFldGhUb2tlbkNvbmZpZyhjb2luOiBFdGhMaWtlRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2xpbmVhZXRoJyA6ICd0bGluZWFldGgnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRMaW5lYWV0aFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBFdGhMaWtlRVJDMjBUb2tlbiAmJiAoY29pbi5uYW1lLmluY2x1ZGVzKCdsaW5lYWV0aDonKSB8fCBjb2luLm5hbWUuaW5jbHVkZXMoJ3RsaW5lYWV0aDonKSkpIHtcbiAgICAgIGFjYy5wdXNoKGdldExpbmVhZXRoVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFprZXRoVG9rZW5Db25maWcoY29pbjogWmtldGhFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgLy8gVG9rZW5zIGxpdmUgb24gdGhlIHprc3luY2VyYSBuZXR3b3JrL2ZhbWlseSAoQ0VDSE8tMjIxNSkuIE5hbWVzIHN0YXkgemtldGg6KiBmb3IgY29tcGF0aWJpbGl0eS5cbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd6a3N5bmNlcmEnIDogJ3R6a3N5bmNlcmEnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRaa2V0aFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBaa2V0aEVSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFprZXRoVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEJlcmFUb2tlbkNvbmZpZyhjb2luOiBCZXJhRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2JlcmEnIDogJ3RiZXJhJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQmVyYVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBCZXJhRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0QmVyYVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRDb3JlZGFvVG9rZW5Db25maWcoY29pbjogQ29yZWRhb0VSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdjb3JlZGFvJyA6ICd0Y29yZWRhbycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZENvcmVkYW9Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ29yZWRhb0VSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldENvcmVkYW9Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0V29ybGRUb2tlbkNvbmZpZyhjb2luOiBXb3JsZEVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd3b3JsZCcgOiAndHdvcmxkJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkV29ybGRUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgV29ybGRFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRXb3JsZFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRGbHJUb2tlbkNvbmZpZyhjb2luOiBGbHJFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnZmxyJyA6ICd0ZmxyJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkRmxyVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEZsckVSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEZsclRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRYZGNUb2tlbkNvbmZpZyhjb2luOiBYZGNFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAneGRjJyA6ICd0eGRjJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkWGRjVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFhkY0VSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFhkY1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRTb2xUb2tlbkNvbmZpZyhjb2luOiBTb2xDb2luKTogU29sVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdzb2wnIDogJ3Rzb2wnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5BZGRyZXNzOiBjb2luLnRva2VuQWRkcmVzcyxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgICBwcm9ncmFtSWQ6IGNvaW4ucHJvZ3JhbUlkLFxuICB9O1xufVxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFNvbFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFNvbFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFNvbENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFNvbFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBbGdvVG9rZW5Db25maWcoY29pbjogQWxnb0NvaW4pOiBBbGdvVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhbGdvJyA6ICd0YWxnbycsXG4gICAgYWxpYXM6IGNvaW4uYWxpYXMsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkQWxnb1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpOiBBbGdvVG9rZW5Db25maWdbXSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBbGdvVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQWxnb0NvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEFsZ29Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0SGJhclRva2VuQ29uZmlnKGNvaW46IEhlZGVyYVRva2VuKTogSGJhclRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnaGJhcicgOiAndGhiYXInLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIG5vZGVBY2NvdW50SWQ6IGNvaW4ubm9kZUFjY291bnRJZCxcbiAgICB0b2tlbklkOiBjb2luLnRva2VuSWQsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEhiYXJUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBIYmFyVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgSGVkZXJhVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEhiYXJUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QWRhVG9rZW5Db25maWcoY29pbjogQWRhVG9rZW4pOiBBZGFUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2FkYScgOiAndGFkYScsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBwb2xpY3lJZDogY29pbi5wb2xpY3lJZCxcbiAgICBhc3NldE5hbWU6IGNvaW4uYXNzZXROYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQWRhVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogQWRhVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQWRhVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEFkYVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRUcnhUb2tlbkNvbmZpZyhjb2luOiBUcm9uRXJjMjBDb2luKTogVHJ4VG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd0cngnIDogJ3R0cngnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRUcnhUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBUcnhUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBUcm9uRXJjMjBDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRUcnhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0WHJwVG9rZW5Db25maWcoY29pbjogWHJwQ29pbik6IFhycFRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAneHJwJyA6ICd0eHJwJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICBpc3N1ZXJBZGRyZXNzOiBjb2luLmlzc3VlckFkZHJlc3MsXG4gICAgY3VycmVuY3lDb2RlOiBjb2luLmN1cnJlbmN5Q29kZSxcbiAgICBkb21haW46IGNvaW4uZG9tYWluLFxuICAgIGNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRYcnBUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBYcnBUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBYcnBDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRYcnBUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0WHJwTXB0VG9rZW5Db25maWcoY29pbjogWHJwTXB0Q29pbik6IFhycE1wdFRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAneHJwJyA6ICd0eHJwJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcywgLy8gc2V0IGZyb20gYXNzZXRTY2FsZSBpbiBmYWN0b3J5IChzYW1lIGNvbmNlcHQpXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgICBjYW5UcmFuc2ZlcjogY29pbi5jYW5UcmFuc2ZlcixcbiAgfTtcbn1cblxuY29uc3QgZ2V0Rm9ybWF0dGVkWHJwTXB0VG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogWHJwTXB0VG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgWHJwTXB0Q29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0WHJwTXB0VG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFN1aVRva2VuQ29uZmlnKGNvaW46IFN1aUNvaW4pOiBTdWlUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3N1aScgOiAndHN1aScsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgcGFja2FnZUlkOiBjb2luLnBhY2thZ2VJZCxcbiAgICBtb2R1bGU6IGNvaW4ubW9kdWxlLFxuICAgIHN5bWJvbDogY29pbi5zeW1ib2wsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFN1aVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFN1aVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFN1aUNvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFN1aVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRUYW9Ub2tlbkNvbmZpZyhjb2luOiBUYW9Db2luKTogVGFvVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd0YW8nIDogJ3R0YW8nLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIHN1Ym5ldElkOiBjb2luLnN1Ym5ldElkLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkVGFvVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogVGFvVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgVGFvQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0VGFvVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFBvbHl4VG9rZW5Db25maWcoY29pbjogUG9seXhDb2luKTogUG9seXhUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3BvbHl4JyA6ICd0cG9seXgnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIHRpY2tlcjogY29pbi50aWNrZXIsXG4gICAgYXNzZXRJZDogY29pbi5hc3NldElkLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkUG9seXhUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBQb2x5eFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFBvbHl4Q29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0UG9seXhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QXB0VG9rZW5Db25maWcoY29pbjogQXB0Q29pbik6IEFwdFRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYXB0JyA6ICd0YXB0JyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGFzc2V0SWQ6IGNvaW4uYXNzZXRJZCxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRBcHRUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBcHRUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBcHRDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRBcHRUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QXB0TkZUQ29sbGVjdGlvbkNvbmZpZyhjb2luOiBBcHRORlRDb2xsZWN0aW9uKTogQXB0TkZUQ29sbGVjdGlvbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2FwdCcgOiAndGFwdCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBuZnRDb2xsZWN0aW9uSWQ6IGNvaW4ubmZ0Q29sbGVjdGlvbklkLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VmV0TkZUQ29sbGVjdGlvbkNvbmZpZyhjb2luOiBWZXRORlRDb2xsZWN0aW9uKTogVmV0TkZUQ29sbGVjdGlvbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3ZldCcgOiAndHZldCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBuZnRDb2xsZWN0aW9uSWQ6IGNvaW4ubmZ0Q29sbGVjdGlvbklkLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEFwdE5GVENvbGxlY3Rpb25zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogQXB0TkZUQ29sbGVjdGlvbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBcHRORlRDb2xsZWN0aW9uKSB7XG4gICAgICBhY2MucHVzaChnZXRBcHRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5jb25zdCBnZXRGb3JtYXR0ZWRWZXRORlRDb2xsZWN0aW9ucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFZldE5GVENvbGxlY3Rpb25Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgVmV0TkZUQ29sbGVjdGlvbikge1xuICAgICAgYWNjLnB1c2goZ2V0VmV0TkZUQ29sbGVjdGlvbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0U2lwMTBUb2tlbkNvbmZpZyhjb2luOiBTaXAxMFRva2VuKTogU2lwMTBUb2tlbkNvbmZpZyB7XG4gIGxldCBiYXNlQ29pbjogc3RyaW5nO1xuICBzd2l0Y2ggKGNvaW4ubmV0d29yay5uYW1lKSB7XG4gICAgY2FzZSBOZXR3b3Jrcy5tYWluLnN0eC5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnc3R4JztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5zdHgubmFtZTpcbiAgICAgIGJhc2VDb2luID0gJ3RzdHgnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0LnN0eFNpZ25ldC5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAndHN0eHNpZ25ldCc7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTSVAtMTAgdG9rZW4gJHtjb2luLm5hbWV9IGhhcyBhbiB1bnN1cHBvcnRlZCBuZXR3b3JrYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogYmFzZUNvaW4sXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBhc3NldElkOiBjb2luLmFzc2V0SWQsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkU2lwMTBUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBTaXAxMFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFNpcDEwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFNpcDEwVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldE5lcDE0MVRva2VuQ29uZmlnKGNvaW46IE5lcDE0MVRva2VuKTogTmVwMTQxVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICduZWFyJyA6ICd0bmVhcicsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICAgIHN0b3JhZ2VEZXBvc2l0QW1vdW50OiBjb2luLnN0b3JhZ2VEZXBvc2l0QW1vdW50LFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZE5lcDE0MVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IE5lcDE0MVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIE5lcDE0MVRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXROZXAxNDFUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0Q2FudG9uVG9rZW5Db25maWcoY29pbjogQ2FudG9uVG9rZW4pOiBDYW50b25Ub2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2NhbnRvbicgOiAndGNhbnRvbicsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgYmFzZVVybDogY29pbi5iYXNlVXJsLFxuICAgIGNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MsXG4gIH07XG59XG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkQ2FudG9uVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogQ2FudG9uVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ2FudG9uVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldENhbnRvblRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRWZXRUb2tlbkNvbmZpZyhjb2luOiBWZXRUb2tlbik6IFZldFRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAndmV0JyA6ICd0dmV0JyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuXG5jb25zdCBnZXRGb3JtYXR0ZWRWZXRUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBWZXRUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBWZXRUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0VmV0VG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmNvbnN0IGdldEZvcm1hdHRlZENvc21vc0NoYWluVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogQ29zbW9zVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ29zbW9zQ2hhaW5Ub2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0Q29zbW9zVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldENvc21vc1Rva2VuQ29uZmlnKGNvaW46IENvc21vc0NoYWluVG9rZW4pOiBDb3Ntb3NUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmFtZS5zcGxpdCgnOicpWzBdLnRvTG93ZXJDYXNlKCksXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZW5vbTogY29pbi5kZW5vbSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEpldHRvblRva2VuQ29uZmlnKGNvaW46IEpldHRvblRva2VuKTogSmV0dG9uVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd0b24nIDogJ3R0b24nLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5cbmNvbnN0IGdldEZvcm1hdHRlZEpldHRvblRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEpldHRvblRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEpldHRvblRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRKZXR0b25Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuLyoqXG4gKiBHZXQgdG9rZW4gY29uZmlnIGZvciBUSVAtMjAgdG9rZW5zIG9uIHRoZSBUZW1wbyBuZXR3b3JrLlxuICogVElQLTIwIGlzIHRoZSBuYXRpdmUgdG9rZW4gc3RhbmRhcmQgZm9yIFRlbXBvLCBzaW1pbGFyIHRvIEVSQy0yMCBvbiBFdGhlcmV1bS5cbiAqIElmIG90aGVyIGNoYWlucyBuZWVkIHRvIHN1cHBvcnQgdGhpcyB0b2tlbiBzdGFuZGFyZCwgdGhlIGJhc2UgY29pbiBjYW4gYmUgZGV0ZXJtaW5lZFxuICogZHluYW1pY2FsbHlcbiAqL1xuZnVuY3Rpb24gZ2V0VGlwMjBUb2tlbkNvbmZpZyhjb2luOiBUaXAyMFRva2VuKTogVGlwMjBUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3RlbXBvJyA6ICd0dGVtcG8nLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuXG4vKipcbiAqIEdldCBhbGwgZm9ybWF0dGVkIFRJUDIwIHRva2Vuc1xuICogQHBhcmFtIGN1c3RvbUNvaW5NYXAgLSBDb2luIG1hcCB0byBzZWFyY2hcbiAqL1xuY29uc3QgZ2V0Rm9ybWF0dGVkVGlwMjBUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKTogVGlwMjBUb2tlbkNvbmZpZ1tdID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFRpcDIwVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgVGlwMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0VGlwMjBUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxudHlwZSBFdGhMaWtlVG9rZW5NYXAgPSB7XG4gIFtLIGluIENvaW5GYW1pbHldOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbn07XG5cbmV4cG9ydCBlbnVtIFRva2VuVHlwZUVudW0ge1xuICBFUkMyMCA9ICdlcmMyMCcsXG4gIEVSQzcyMSA9ICdlcmM3MjEnLFxuICBFUkM3OTg0ID0gJ2VyYzc5ODQnLFxufVxuXG5mdW5jdGlvbiBnZXRFdGhMaWtlVG9rZW5Db25maWcoY29pbjogRXRoTGlrZUVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICBjb25zdCBuZXR3b3JrID0gY29pbi5uZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yaztcbiAgY29uc3QgYmFzZUNvaW4gPSBjb2lucy5jb2luTmFtZUZyb21DaGFpbklkKG5ldHdvcmsuY2hhaW5JZCkgPz8gY29pbi5uYW1lLnNwbGl0KCc6JylbMF0udG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogYmFzZUNvaW4sXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RXRoTGlrZUVSQzcyMVRva2VuQ29uZmlnKGNvaW46IEV0aExpa2VFUkM3MjFUb2tlbik6IEV0aExpa2VFUkM3MjFUb2tlbkNvbmZpZyB7XG4gIGNvbnN0IG5ldHdvcmsgPSBjb2luLm5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrO1xuICBjb25zdCBiYXNlQ29pbiA9IGNvaW5zLmNvaW5OYW1lRnJvbUNoYWluSWQobmV0d29yay5jaGFpbklkKSA/PyBjb2luLm5hbWUuc3BsaXQoJzonKVswXS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBiYXNlQ29pbixcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRXRoTGlrZVRva2VuQ29uZmlnID0gKFxuICBjdXN0b21Db2luTWFwID0gY29pbnMsXG4gIHRva2VuVHlwZTogVG9rZW5UeXBlRW51bVxuKTogRXRoTGlrZVRva2VuQ29uZmlnW10gPT4ge1xuICBsZXQgY2xhc3NOYW1lOiB0eXBlb2YgRXRoTGlrZUVSQzIwVG9rZW4gfCB0eXBlb2YgRXRoTGlrZUVSQzcyMVRva2VuO1xuICBpZiAodG9rZW5UeXBlID09PSBUb2tlblR5cGVFbnVtLkVSQzIwKSB7XG4gICAgY2xhc3NOYW1lID0gRXRoTGlrZUVSQzIwVG9rZW47XG4gIH0gZWxzZSBpZiAodG9rZW5UeXBlID09PSBUb2tlblR5cGVFbnVtLkVSQzcyMSkge1xuICAgIGNsYXNzTmFtZSA9IEV0aExpa2VFUkM3MjFUb2tlbjtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHRva2VuIHR5cGU6ICR7dG9rZW5UeXBlfWApO1xuICB9XG5cbiAgcmV0dXJuIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBjbGFzc05hbWUpIHtcbiAgICAgIGlmICh0b2tlblR5cGUgPT09IFRva2VuVHlwZUVudW0uRVJDMjApIHtcbiAgICAgICAgYWNjLnB1c2goZ2V0RXRoTGlrZVRva2VuQ29uZmlnKGNvaW4gYXMgRXRoTGlrZUVSQzIwVG9rZW4pKTtcbiAgICAgIH0gZWxzZSBpZiAodG9rZW5UeXBlID09PSBUb2tlblR5cGVFbnVtLkVSQzcyMSkge1xuICAgICAgICBhY2MucHVzaChnZXRFdGhMaWtlRVJDNzIxVG9rZW5Db25maWcoY29pbiBhcyBFdGhMaWtlRVJDNzIxVG9rZW4pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xufTtcblxuLyogR2V0IGFsbCB0b2tlbnMgb2YgYSBnaXZlbiBldGggbGlrZSBjb2luIGZvciBhIGdpdmVuIG5ldHdvcmsgKi9cbmV4cG9ydCBjb25zdCBnZXRFdGhMaWtlVG9rZW5zID0gKFxuICBuZXR3b3JrOiAnTWFpbm5ldCcgfCAnVGVzdG5ldCcsXG4gIHRva2VuVHlwZTogVG9rZW5UeXBlRW51bSxcbiAgY29pbk1hcDogdHlwZW9mIGNvaW5zID0gY29pbnNcbik6IEV0aExpa2VUb2tlbk1hcCA9PiB7XG4gIGxldCBmZWF0dXJlOiBDb2luRmVhdHVyZTtcbiAgY29uc3QgbmV0d29ya1Rva2VucyA9IGdldEZvcm1hdHRlZEV0aExpa2VUb2tlbkNvbmZpZyhjb2luTWFwLCB0b2tlblR5cGUpLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspO1xuXG4gIGlmICh0b2tlblR5cGUgPT09IFRva2VuVHlwZUVudW0uRVJDMjApIHtcbiAgICBmZWF0dXJlID0gQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjA7XG4gIH0gZWxzZSBpZiAodG9rZW5UeXBlID09PSBUb2tlblR5cGVFbnVtLkVSQzcyMSkge1xuICAgIGZlYXR1cmUgPSBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkM3MjE7XG4gIH1cblxuICBjb25zdCBldGhMaWtlVG9rZW5NYXAgPSB7fSBhcyBFdGhMaWtlVG9rZW5NYXA7XG5cbiAgY29pbk1hcC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBY2NvdW50Q29pbiAmJiBjb2luLmZlYXR1cmVzLmluY2x1ZGVzKGZlYXR1cmUpKSB7XG4gICAgICBjb25zdCBjb2luTmFtZSA9IGNvaW4uZmFtaWx5O1xuICAgICAgY29uc3QgY29pbk5hbWVGb3JOZXR3b3JrID0gbmV0d29yayA9PT0gJ1Rlc3RuZXQnID8gYHQke2NvaW5OYW1lfWAgOiBjb2luTmFtZTtcblxuICAgICAgZXRoTGlrZVRva2VuTWFwW2NvaW4uZmFtaWx5XSA9IHtcbiAgICAgICAgdG9rZW5zOiBuZXR3b3JrVG9rZW5zLmZpbHRlcigodG9rZW4pID0+IHRva2VuLmNvaW4gPT09IGNvaW5OYW1lRm9yTmV0d29yayksXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGV0aExpa2VUb2tlbk1hcDtcbn07XG5cbi8qKlxuICogRW51bWVyYXRlIEVWTSB0b2tlbiBjb25maWdzIHBlciBmYW1pbHkgZnJvbSBhIGNvaW4gbWFwIChkZWZhdWx0cyB0byB0aGUgYnVuZGxlZCBzdGF0aWNzIG1hcCkuXG4gKiBVbmxpa2UgZ2V0RXRoTGlrZVRva2VucywgZmFtaWxpZXMgYXJlIHJlc29sdmVkIGZyb20gZWFjaCB0b2tlbidzIG93biBlbnRyeSBpbiB0aGUgcGFzc2VkIG1hcCxcbiAqIHNvIEFNUy1vbmx5IHRva2VucyBvbiBmYW1pbGllcyB3aG9zZSBiYXNlIGNvaW4gbGFja3MgQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjAgKGUuZy4gYnNjLFxuICogcG9seWdvbikgYXJlIGluY2x1ZGVkLiBSZWFkcyB0aGUgcGFzc2VkIG1hcCBvbmx5LCBuZXZlciB0aGUgc3RhdGljIGNvaW5zIGltcG9ydC5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV2bVRva2Vuc0J5RmFtaWx5ID0gKFxuICBjb2luTWFwOiB0eXBlb2YgY29pbnMgPSBjb2lucyxcbiAgdG9rZW5UeXBlOiBUb2tlblR5cGVFbnVtID0gVG9rZW5UeXBlRW51bS5FUkMyMFxuKTogeyBbZmFtaWx5OiBzdHJpbmddOiBFdGhMaWtlVG9rZW5Db25maWdbXSB9ID0+IHtcbiAgY29uc3QgdG9rZW5zQnlGYW1pbHk6IHsgW2ZhbWlseTogc3RyaW5nXTogRXRoTGlrZVRva2VuQ29uZmlnW10gfSA9IHt9O1xuICBmb3IgKGNvbnN0IHRva2VuQ29uZmlnIG9mIGdldEZvcm1hdHRlZEV0aExpa2VUb2tlbkNvbmZpZyhjb2luTWFwLCB0b2tlblR5cGUpKSB7XG4gICAgY29uc3QgZmFtaWx5ID0gY29pbk1hcC5nZXRPclVuZGVmaW5lZCh0b2tlbkNvbmZpZy50eXBlKT8uZmFtaWx5O1xuICAgIGlmICghZmFtaWx5KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdG9rZW5zQnlGYW1pbHlbZmFtaWx5XSA9IFsuLi4odG9rZW5zQnlGYW1pbHlbZmFtaWx5XSA/PyBbXSksIHRva2VuQ29uZmlnXTtcbiAgfVxuICByZXR1cm4gdG9rZW5zQnlGYW1pbHk7XG59O1xuXG5jb25zdCBtZXJnZUV0aExpa2VUb2tlbk1hcCA9ICguLi5tYXBzOiBFdGhMaWtlVG9rZW5NYXBbXSk6IEV0aExpa2VUb2tlbk1hcCA9PiB7XG4gIGNvbnN0IG1lcmdlZE1hcDogRXRoTGlrZVRva2VuTWFwID0ge30gYXMgRXRoTGlrZVRva2VuTWFwO1xuXG4gIG1hcHMuZm9yRWFjaCgobWFwKSA9PiB7XG4gICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghbWVyZ2VkTWFwW2tleSBhcyBDb2luRmFtaWx5XSkge1xuICAgICAgICBtZXJnZWRNYXBba2V5IGFzIENvaW5GYW1pbHldID0geyB0b2tlbnM6IFtdIH07XG4gICAgICB9XG4gICAgICBtZXJnZWRNYXBba2V5IGFzIENvaW5GYW1pbHldLnRva2Vucy5wdXNoKC4uLm1hcFtrZXkgYXMgQ29pbkZhbWlseV0udG9rZW5zKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBtZXJnZWRNYXA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkVG9rZW5zQnlOZXR3b3JrID0gKG5ldHdvcms6ICdNYWlubmV0JyB8ICdUZXN0bmV0JywgY29pbk1hcDogdHlwZW9mIGNvaW5zKSA9PiB7XG4gIGNvbnN0IG5ldHdvcmtUeXBlID0gbmV0d29yayA9PT0gJ01haW5uZXQnID8gTmV0d29ya1R5cGUuTUFJTk5FVCA6IE5ldHdvcmtUeXBlLlRFU1RORVQ7XG5cbiAgY29uc3QgZXRoTGlrZVRva2VuTWFwID0gZ2V0RXRoTGlrZVRva2VucyhuZXR3b3JrLCBUb2tlblR5cGVFbnVtLkVSQzIwLCBjb2luTWFwKTtcbiAgY29uc3QgZXRoTGlrZUVyYzcyMVRva2VuTWFwID0gZ2V0RXRoTGlrZVRva2VucyhuZXR3b3JrLCBUb2tlblR5cGVFbnVtLkVSQzcyMSwgY29pbk1hcCk7XG4gIGNvbnN0IHprZXRoVG9rZW5zID0gZ2V0Rm9ybWF0dGVkWmtldGhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tZXJnZUV0aExpa2VUb2tlbk1hcChldGhMaWtlVG9rZW5NYXAsIGV0aExpa2VFcmM3MjFUb2tlbk1hcCksXG4gICAgZXRoOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEVyYzIwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgICAgbmZ0czogZ2V0Rm9ybWF0dGVkRXJjNzIxVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgICAgY29uZmlkZW50aWFsVG9rZW5zOiBnZXRGb3JtYXR0ZWRFcmM3OTg0VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgeGxtOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFN0ZWxsYXJUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBhbGdvOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFsZ29Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBvZmM6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT2ZjQ29pbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gY29pbk1hcC5nZXQodG9rZW4udHlwZSkubmV0d29yay50eXBlID09PSBuZXR3b3JrVHlwZSksXG4gICAgfSxcbiAgICBjZWxvOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZENlbG9Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBic2M6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQnNjVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgZW9zOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEVvc1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGF2YXhjOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEF2YXhDVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgcG9seWdvbjoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRQb2x5Z29uVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgc29uZWl1bToge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRTb25laXVtVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgYXJiZXRoOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFyYmV0aFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIG9wZXRoOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZE9wZXRoVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgYmFzZWV0aDoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRCYXNlZXRoVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgb2c6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT2dUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBmbG93OiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEZsb3dUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBtb246IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkTW9uVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgeGRjOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFhkY1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGxpbmVhZXRoOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZExpbmVhZXRoVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgc2VpZXZtOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFNlaWV2bVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIHprZXRoOiB7XG4gICAgICB0b2tlbnM6IHprZXRoVG9rZW5zLFxuICAgIH0sXG4gICAgemtzeW5jZXJhOiB7XG4gICAgICB0b2tlbnM6IHprZXRoVG9rZW5zLFxuICAgIH0sXG4gICAgc29sOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFNvbFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGhiYXI6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkSGJhclRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGFkYToge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRBZGFUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICB0cng6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkVHJ4VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgeHJwOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFhycFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICAgIG1wdFRva2VuczogZ2V0Rm9ybWF0dGVkWHJwTXB0VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgc3VpOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFN1aVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIHRhbzoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRUYW9Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBwb2x5eDoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRQb2x5eFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGJlcmE6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQmVyYVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGNvcmVkYW86IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQ29yZWRhb1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIHdvcmxkOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFdvcmxkVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgZmxyOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEZsclRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuXG4gICAgc3R4OiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFNpcDEwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgbmVhcjoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWROZXAxNDFUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBjb3Ntb3M6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQ29zbW9zQ2hhaW5Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICB0b246IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkSmV0dG9uVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgdGVtcG86IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkVGlwMjBUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBjYW50b246IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQ2FudG9uVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkVG9rZW5zID0gKGNvaW5NYXAgPSBjb2lucyk6IFRva2VucyA9PiB7XG4gIGNvbnN0IGZvcm1hdHRlZEFwdE5GVENvbGxlY3Rpb25zID0gZ2V0Rm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMoY29pbk1hcCk7XG4gIGNvbnN0IGZvcm1hdHRlZFZldE5GVENvbGxlY3Rpb25zID0gZ2V0Rm9ybWF0dGVkVmV0TkZUQ29sbGVjdGlvbnMoY29pbk1hcCk7XG5cbiAgcmV0dXJuIHtcbiAgICBiaXRjb2luOiB7XG4gICAgICAuLi5nZXRGb3JtYXR0ZWRUb2tlbnNCeU5ldHdvcmsoJ01haW5uZXQnLCBjb2luTWFwKSxcbiAgICAgIGFwdDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFwdFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgICBuZnRDb2xsZWN0aW9uczogZm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIChuZnRDb2xsZWN0aW9uOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnKSA9PiBuZnRDb2xsZWN0aW9uLm5ldHdvcmsgPT09ICdNYWlubmV0J1xuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHZldDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFZldFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgICBuZnRDb2xsZWN0aW9uczogZm9ybWF0dGVkVmV0TkZUQ29sbGVjdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIChuZnRDb2xsZWN0aW9uOiBWZXRORlRDb2xsZWN0aW9uQ29uZmlnKSA9PiBuZnRDb2xsZWN0aW9uLm5ldHdvcmsgPT09ICdNYWlubmV0J1xuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHRlc3RuZXQ6IHtcbiAgICAgIC4uLmdldEZvcm1hdHRlZFRva2Vuc0J5TmV0d29yaygnVGVzdG5ldCcsIGNvaW5NYXApLFxuICAgICAgYXB0OiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQXB0VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICAgIG5mdENvbGxlY3Rpb25zOiBmb3JtYXR0ZWRBcHRORlRDb2xsZWN0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKG5mdENvbGxlY3Rpb246IEFwdE5GVENvbGxlY3Rpb25Db25maWcpID0+IG5mdENvbGxlY3Rpb24ubmV0d29yayA9PT0gJ1Rlc3RuZXQnXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgdmV0OiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkVmV0VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICAgIG5mdENvbGxlY3Rpb25zOiBmb3JtYXR0ZWRWZXRORlRDb2xsZWN0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKG5mdENvbGxlY3Rpb246IFZldE5GVENvbGxlY3Rpb25Db25maWcpID0+IG5mdENvbGxlY3Rpb24ubmV0d29yayA9PT0gJ1Rlc3RuZXQnXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59O1xuXG4vKipcbiAqIFZlcmlmeSBtYWlubmV0IG9yIHRlc3RuZXQgdG9rZW5zXG4gKiBAcGFyYW0gdG9rZW5zXG4gKi9cbmV4cG9ydCBjb25zdCB2ZXJpZnlUb2tlbnMgPSBmdW5jdGlvbiAodG9rZW5zOiBCYXNlVG9rZW5Db25maWdbXSkge1xuICBjb25zdCB2ZXJpZmllZFRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcbiAgdG9rZW5zLmZvckVhY2goKHRva2VuKSA9PiB7XG4gICAgaWYgKHZlcmlmaWVkVG9rZW5zW3Rva2VuLnR5cGVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rva2VuIDogJyArIHRva2VuLnR5cGUgKyAnIGR1cGxpY2F0ZWQuJyk7XG4gICAgfVxuICAgIHZlcmlmaWVkVG9rZW5zW3Rva2VuLnR5cGVdID0gdHJ1ZTtcblxuICAgIGlmIChcbiAgICAgICh0b2tlbiBhcyBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnKS50b2tlbkNvbnRyYWN0QWRkcmVzcyAmJlxuICAgICAgKHRva2VuIGFzIEJhc2VDb250cmFjdEFkZHJlc3NDb25maWcpLnRva2VuQ29udHJhY3RBZGRyZXNzICE9PVxuICAgICAgICAodG9rZW4gYXMgQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZykudG9rZW5Db250cmFjdEFkZHJlc3MudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAndG9rZW4gY29udHJhY3Q6ICcgKyB0b2tlbi50eXBlICsgJyBpcyBub3QgYWxsIGxvd2VyIGNhc2U6ICcgKyAodG9rZW4gYXMgQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZylcbiAgICAgICk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdmVyaWZpZWRUb2tlbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdG9rZW5zID0gZ2V0Rm9ybWF0dGVkVG9rZW5zKCk7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXR0ZWRBbGdvVG9rZW5zID0gZ2V0Rm9ybWF0dGVkQWxnb1Rva2VucygpO1xuXG5jb25zdCBtYWlubmV0RXJjMjBUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLmJpdGNvaW4uZXRoLnRva2Vucyk7XG5jb25zdCBtYWlubmV0RXJjNzIxVG9rZW5zID0gdmVyaWZ5VG9rZW5zKHRva2Vucy5iaXRjb2luLmV0aC5uZnRzKTtcbmNvbnN0IG1haW5uZXRFcmM3OTg0VG9rZW5zID0gdmVyaWZ5VG9rZW5zKHRva2Vucy5iaXRjb2luLmV0aC5jb25maWRlbnRpYWxUb2tlbnMpO1xuY29uc3QgbWFpbm5ldFN0ZWxsYXJUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLmJpdGNvaW4ueGxtLnRva2Vucyk7XG5leHBvcnQgY29uc3QgbWFpbm5ldFRva2VucyA9IHtcbiAgLi4ubWFpbm5ldEVyYzIwVG9rZW5zLFxuICAuLi5tYWlubmV0RXJjNzIxVG9rZW5zLFxuICAuLi5tYWlubmV0RXJjNzk4NFRva2VucyxcbiAgLi4ubWFpbm5ldFN0ZWxsYXJUb2tlbnMsXG59O1xuXG5jb25zdCB0ZXN0bmV0RXJjMjBUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLnRlc3RuZXQuZXRoLnRva2Vucyk7XG5jb25zdCB0ZXN0bmV0RXJjNzIxVG9rZW5zID0gdmVyaWZ5VG9rZW5zKHRva2Vucy50ZXN0bmV0LmV0aC5uZnRzKTtcbmNvbnN0IHRlc3RuZXRFcmM3OTg0VG9rZW5zID0gdmVyaWZ5VG9rZW5zKHRva2Vucy50ZXN0bmV0LmV0aC5jb25maWRlbnRpYWxUb2tlbnMpO1xuY29uc3QgdGVzdG5ldFN0ZWxsYXJUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLnRlc3RuZXQueGxtLnRva2Vucyk7XG5leHBvcnQgY29uc3QgdGVzdG5ldFRva2VucyA9IHtcbiAgLi4udGVzdG5ldEVyYzIwVG9rZW5zLFxuICAuLi50ZXN0bmV0RXJjNzIxVG9rZW5zLFxuICAuLi50ZXN0bmV0RXJjNzk4NFRva2VucyxcbiAgLi4udGVzdG5ldFN0ZWxsYXJUb2tlbnMsXG59O1xuXG4vKipcbiAqIEdldCBmb3JtYXR0ZWQgdG9rZW4gY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgY29pblxuICogQHBhcmFtIGNvaW4gLSBTdGF0aWMgQmFzZSBjb2luIGluc3RhbmNlXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHRva2VuIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb2luLCBvciB1bmRlZmluZWQgaWYgbm90IHN1cHBvcnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkVG9rZW5Db25maWdGb3JDb2luKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPik6IFRva2VuQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNvaW4gaW5zdGFuY2VvZiBFcmMyMENvaW4pIHtcbiAgICByZXR1cm4gZ2V0RXJjMjBUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgRXJjNzk4NENvaW4pIHtcbiAgICByZXR1cm4gZ2V0RXJjNzk4NFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBTdGVsbGFyQ29pbikge1xuICAgIHJldHVybiBnZXRTdGVsbGFyVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIE9mY0NvaW4pIHtcbiAgICByZXR1cm4gZ2V0T2ZjVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIENlbG9Db2luKSB7XG4gICAgcmV0dXJuIGdldENlbG9Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQnNjQ29pbikge1xuICAgIHJldHVybiBnZXRCc2NUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgRW9zQ29pbikge1xuICAgIHJldHVybiBnZXRFb3NUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQXZheEVSQzIwVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0QXZheENUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChcbiAgICBjb2luIGluc3RhbmNlb2YgUG9seWdvbkVSQzIwVG9rZW4gfHxcbiAgICAoKGNvaW4gaW5zdGFuY2VvZiBFcmM3MjFDb2luIHx8IGNvaW4gaW5zdGFuY2VvZiBFcmMxMTU1Q29pbikgJiYgY29pbi5mYW1pbHkgPT09IENvaW5GYW1pbHkuUE9MWUdPTilcbiAgKSB7XG4gICAgcmV0dXJuIGdldFBvbHlnb25Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmICgoY29pbiBpbnN0YW5jZW9mIEVyYzcyMUNvaW4gfHwgY29pbiBpbnN0YW5jZW9mIEVyYzExNTVDb2luKSAmJiBjb2luLmZhbWlseSA9PT0gQ29pbkZhbWlseS5TT05FSVVNKSB7XG4gICAgcmV0dXJuIGdldFNvbmVpdW1Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgRXJjNzIxQ29pbiAmJiBjb2luLmZhbWlseSA9PT0gQ29pbkZhbWlseS5FVEgpIHtcbiAgICByZXR1cm4gZ2V0RXJjNzIxVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEFyYmV0aEVSQzIwVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0QXJiZXRoVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIE9wZXRoRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRPcGV0aFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBaa2V0aEVSQzIwVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0WmtldGhUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgU29sQ29pbikge1xuICAgIHJldHVybiBnZXRTb2xUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgSGVkZXJhVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0SGJhclRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBBZGFUb2tlbikge1xuICAgIHJldHVybiBnZXRBZGFUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgVHJvbkVyYzIwQ29pbikge1xuICAgIHJldHVybiBnZXRUcnhUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgWHJwTXB0Q29pbikge1xuICAgIHJldHVybiBnZXRYcnBNcHRUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgWHJwQ29pbikge1xuICAgIHJldHVybiBnZXRYcnBUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgU3VpQ29pbikge1xuICAgIHJldHVybiBnZXRTdWlUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgVGFvQ29pbikge1xuICAgIHJldHVybiBnZXRUYW9Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgUG9seXhDb2luKSB7XG4gICAgcmV0dXJuIGdldFBvbHl4VG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdENvaW4pIHtcbiAgICByZXR1cm4gZ2V0QXB0VG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdE5GVENvbGxlY3Rpb24pIHtcbiAgICByZXR1cm4gZ2V0QXB0TkZUQ29sbGVjdGlvbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgU2lwMTBUb2tlbikge1xuICAgIHJldHVybiBnZXRTaXAxMFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBOZXAxNDFUb2tlbikge1xuICAgIHJldHVybiBnZXROZXAxNDFUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQ29zbW9zQ2hhaW5Ub2tlbikge1xuICAgIHJldHVybiBnZXRDb3Ntb3NUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgVmV0VG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0VmV0VG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFZldE5GVENvbGxlY3Rpb24pIHtcbiAgICByZXR1cm4gZ2V0VmV0TkZUQ29sbGVjdGlvbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQ29yZWRhb0VSQzIwVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0Q29yZWRhb1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBKZXR0b25Ub2tlbikge1xuICAgIHJldHVybiBnZXRKZXR0b25Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgRmxyRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRGbHJUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgTW9uRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRNb25Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgWGRjRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRYZGNUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgRXRoTGlrZUVSQzIwVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0RXRoTGlrZVRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBFdGhMaWtlRVJDNzIxVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0RXRoTGlrZUVSQzcyMVRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBDYW50b25Ub2tlbikge1xuICAgIHJldHVybiBnZXRDYW50b25Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgVGlwMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRUaXAyMFRva2VuQ29uZmlnKGNvaW4pO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
1285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5Db25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW5Db25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa2xEQSx3RUFvRkM7QUF0cURELHVDQTJDbUI7QUFDbkIsaUNBQXFFO0FBQ3JFLG1DQUFnQztBQUNoQyx5Q0FBMkY7QUFDM0YsK0JBQWdDO0FBdVJoQyxTQUFTLG1CQUFtQixDQUFDLElBQWU7SUFDMUMsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTTtRQUNSLEtBQUssbUJBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUNsQixNQUFNO1FBQ1IsS0FBSyxtQkFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUM1QixRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ25CLE1BQU07UUFDUixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDaEMsS0FBSyxtQkFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUMzQixRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ25CLE1BQU07UUFDUixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQzdCLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDcEIsTUFBTTtRQUNSLEtBQUssbUJBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7WUFDL0IsUUFBUSxHQUFHLFVBQVUsQ0FBQztZQUN0QixNQUFNO1FBQ1IsS0FBSyxtQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUMxQixR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QUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztTQUFNLElBQUksSUFBSSxZQUFZLDJCQUFpQixFQUFFLENBQUM7UUFDN0MsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO1NBQU0sSUFBSSxJQUFJLFlBQVksNEJBQWtCLEVBQUUsQ0FBQztRQUM5QyxPQUFPLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7U0FBTSxJQUFJLElBQUksWUFBWSxxQkFBVyxFQUFFLENBQUM7UUFDdkMsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO1NBQU0sSUFBSSxJQUFJLFlBQVksb0JBQVUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbGdvQ29pbixcbiAgQXB0Q29pbixcbiAgQXB0TkZUQ29sbGVjdGlvbixcbiAgQXJiZXRoRVJDMjBUb2tlbixcbiAgQXZheEVSQzIwVG9rZW4sXG4gIEJlcmFFUkMyMFRva2VuLFxuICBCc2NDb2luLFxuICBDZWxvQ29pbixcbiAgQ29yZWRhb0VSQzIwVG9rZW4sXG4gIENvc21vc0NoYWluVG9rZW4sXG4gIEVvc0NvaW4sXG4gIEVyYzExNTVDb2luLFxuICBFcmMyMENvaW4sXG4gIEVyYzcyMUNvaW4sXG4gIEVyYzc5ODRDb2luLFxuICBFdGhMaWtlRVJDMjBUb2tlbixcbiAgRXRoTGlrZUVSQzcyMVRva2VuLFxuICBGbHJFUkMyMFRva2VuLFxuICBNb25FUkMyMFRva2VuLFxuICBYZGNFUkMyMFRva2VuLFxuICBIZWRlcmFUb2tlbixcbiAgTmVwMTQxVG9rZW4sXG4gIE9wZXRoRVJDMjBUb2tlbixcbiAgUG9seWdvbkVSQzIwVG9rZW4sXG4gIFNpcDEwVG9rZW4sXG4gIFNvbENvaW4sXG4gIFN0ZWxsYXJDb2luLFxuICBTdWlDb2luLFxuICBUYW9Db2luLFxuICBQb2x5eENvaW4sXG4gIFRyb25FcmMyMENvaW4sXG4gIFZldFRva2VuLFxuICBXb3JsZEVSQzIwVG9rZW4sXG4gIFhycENvaW4sXG4gIFhycE1wdENvaW4sXG4gIFprZXRoRVJDMjBUb2tlbixcbiAgVmV0TkZUQ29sbGVjdGlvbixcbiAgQWRhVG9rZW4sXG4gIEpldHRvblRva2VuLFxuICBBY2NvdW50Q29pbixcbiAgQ2FudG9uVG9rZW4sXG4gIFRpcDIwVG9rZW4sXG59IGZyb20gJy4vYWNjb3VudCc7XG5pbXBvcnQgeyBDb2luRmFtaWx5LCBDb2luS2luZCwgQmFzZUNvaW4sIENvaW5GZWF0dXJlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnLi9jb2lucyc7XG5pbXBvcnQgeyBEeW5hbWljTmV0d29ya09wdGlvbnMsIEV0aGVyZXVtTmV0d29yaywgTmV0d29ya3MsIE5ldHdvcmtUeXBlIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBPZmNDb2luIH0gZnJvbSAnLi9vZmMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VUb2tlbkNvbmZpZyB7XG4gIGNvaW46IHN0cmluZztcbiAgZGVjaW1hbFBsYWNlczogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlTmV0d29ya0NvbmZpZyBleHRlbmRzIEJhc2VUb2tlbkNvbmZpZyB7XG4gIG5ldHdvcms6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnIGV4dGVuZHMgQmFzZU5ldHdvcmtDb25maWcge1xuICB0b2tlbkNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBdmF4Y1Rva2VuQ29uZmlnID0gQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZztcbmV4cG9ydCB0eXBlIENlbG9Ub2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBFdGhMaWtlVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnO1xuZXhwb3J0IHR5cGUgRW9zVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnICYge1xuICBjb250cmFjdE5hbWU6IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXJjMjBUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBFcmM3OTg0VG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnICYge1xuICAvKiogUHJlc2VudCBmb3IgSG9vZGkgdGVzdCBwYWlyczsgb21pdHRlZCBvbiBtYWlubmV0IHVudGlsIHNoaWVsZC91bnNoaWVsZCBzaGlwcyB0aGVyZS4gKi9cbiAgdW5kZXJseWluZ0VyYzIwQWRkcmVzcz86IHN0cmluZztcbiAgcmF0ZT86IHN0cmluZztcbiAgcmVxdWlyZXNBcHByb3ZhbFJlc2V0PzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBUcnhUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBTdGVsbGFyVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZztcblxuZXhwb3J0IHR5cGUgU29sVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBwcm9ncmFtSWQ/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBZGFUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBwb2xpY3lJZDogc3RyaW5nO1xuICBhc3NldE5hbWU6IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBbGdvVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYWxpYXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBPZmNUb2tlbkNvbmZpZyA9IEJhc2VUb2tlbkNvbmZpZyAmIHtcbiAgYmFja2luZ0NvaW46IHN0cmluZztcbiAgaXNGaWF0OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgSGJhclRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIG5vZGVBY2NvdW50SWQ6IHN0cmluZztcbiAgdG9rZW5JZDogc3RyaW5nO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFhycFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGlzc3VlckFkZHJlc3M6IHN0cmluZztcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gIGRvbWFpbj86IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBYcnBNcHRUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZzsgLy8gTVBUb2tlbklzc3VhbmNlSUQgKDQ4LWNoYXIgaGV4KVxuICBjYW5UcmFuc2ZlcjogYm9vbGVhbjsgLy8gaW1tdXRhYmxlIGxzZk1QVENhblRyYW5zZmVyIGZsYWdcbn07XG5cbmV4cG9ydCB0eXBlIFN1aVRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIHBhY2thZ2VJZDogc3RyaW5nO1xuICBtb2R1bGU6IHN0cmluZztcbiAgc3ltYm9sOiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXB0VG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYXNzZXRJZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXB0TkZUQ29sbGVjdGlvbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBuZnRDb2xsZWN0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNpcDEwVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYXNzZXRJZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVGFvVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgc3VibmV0SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFBvbHl4VG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgdGlja2VyOiBzdHJpbmc7XG4gIGFzc2V0SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5lcDE0MVRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBzdG9yYWdlRGVwb3NpdEFtb3VudDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ2FudG9uVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYmFzZVVybDogc3RyaW5nO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZldFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmV0TkZUQ29sbGVjdGlvbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBuZnRDb2xsZWN0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvc21vc1Rva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGRlbm9tOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBKZXR0b25Ub2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEV0aExpa2VFUkM3MjFUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWcgJiB7XG4gIG5ldHdvcms6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFRpcDIwVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnO1xuXG5leHBvcnQgdHlwZSBUb2tlbkNvbmZpZyA9XG4gIHwgRXJjMjBUb2tlbkNvbmZpZ1xuICB8IFN0ZWxsYXJUb2tlbkNvbmZpZ1xuICB8IE9mY1Rva2VuQ29uZmlnXG4gIHwgQ2Vsb1Rva2VuQ29uZmlnXG4gIHwgRXRoTGlrZVRva2VuQ29uZmlnXG4gIHwgRW9zVG9rZW5Db25maWdcbiAgfCBBdmF4Y1Rva2VuQ29uZmlnXG4gIHwgU29sVG9rZW5Db25maWdcbiAgfCBIYmFyVG9rZW5Db25maWdcbiAgfCBBZGFUb2tlbkNvbmZpZ1xuICB8IEFsZ29Ub2tlbkNvbmZpZ1xuICB8IFRyeFRva2VuQ29uZmlnXG4gIHwgWHJwVG9rZW5Db25maWdcbiAgfCBYcnBNcHRUb2tlbkNvbmZpZ1xuICB8IFN1aVRva2VuQ29uZmlnXG4gIHwgQXB0VG9rZW5Db25maWdcbiAgfCBBcHRORlRDb2xsZWN0aW9uQ29uZmlnXG4gIHwgU2lwMTBUb2tlbkNvbmZpZ1xuICB8IE5lcDE0MVRva2VuQ29uZmlnXG4gIHwgQ2FudG9uVG9rZW5Db25maWdcbiAgfCBDb3Ntb3NUb2tlbkNvbmZpZ1xuICB8IFZldFRva2VuQ29uZmlnXG4gIHwgVmV0TkZUQ29sbGVjdGlvbkNvbmZpZ1xuICB8IFRhb1Rva2VuQ29uZmlnXG4gIHwgUG9seXhUb2tlbkNvbmZpZ1xuICB8IEpldHRvblRva2VuQ29uZmlnXG4gIHwgRXRoTGlrZUVSQzcyMVRva2VuQ29uZmlnXG4gIHwgVGlwMjBUb2tlbkNvbmZpZ1xuICB8IEVyYzc5ODRUb2tlbkNvbmZpZztcblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbk5ldHdvcmsge1xuICBldGg6IHtcbiAgICB0b2tlbnM6IEVyYzIwVG9rZW5Db25maWdbXTtcbiAgICBuZnRzOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICBjb25maWRlbnRpYWxUb2tlbnM6IEVyYzc5ODRUb2tlbkNvbmZpZ1tdO1xuICB9O1xuICB4bG06IHsgdG9rZW5zOiBTdGVsbGFyVG9rZW5Db25maWdbXSB9O1xuICBhbGdvOiB7IHRva2VuczogQWxnb1Rva2VuQ29uZmlnW10gfTtcbiAgb2ZjOiB7IHRva2VuczogT2ZjVG9rZW5Db25maWdbXSB9O1xuICBjZWxvOiB7IHRva2VuczogQ2Vsb1Rva2VuQ29uZmlnW10gfTtcbiAgZW9zOiB7IHRva2VuczogRW9zVG9rZW5Db25maWdbXSB9O1xuICBhdmF4YzogeyB0b2tlbnM6IEF2YXhjVG9rZW5Db25maWdbXSB9O1xuICBwb2x5Z29uOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgc29uZWl1bTogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIGJzYzogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIGFyYmV0aDogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIG9wZXRoOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgYmFzZWV0aDogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIG9nOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgZmxvdzogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIGxpbmVhZXRoOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgc2VpZXZtOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgY29yZWRhbzogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIHdvcmxkOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgZmxyOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgc29sOiB7IHRva2VuczogU29sVG9rZW5Db25maWdbXSB9O1xuICBoYmFyOiB7IHRva2VuczogSGJhclRva2VuQ29uZmlnW10gfTtcbiAgYWRhOiB7IHRva2VuczogQWRhVG9rZW5Db25maWdbXSB9O1xuICB0cng6IHsgdG9rZW5zOiBUcnhUb2tlbkNvbmZpZ1tdIH07XG4gIHhycDogeyB0b2tlbnM6IFhycFRva2VuQ29uZmlnW107IG1wdFRva2VuczogWHJwTXB0VG9rZW5Db25maWdbXSB9O1xuICB6a2V0aDogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIHprc3luY2VyYTogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIHN1aTogeyB0b2tlbnM6IFN1aVRva2VuQ29uZmlnW10gfTtcbiAgdGFvOiB7IHRva2VuczogVGFvVG9rZW5Db25maWdbXSB9O1xuICBwb2x5eDogeyB0b2tlbnM6IFBvbHl4VG9rZW5Db25maWdbXSB9O1xuICBiZXJhOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgbW9uOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgeGRjOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgaHlwZWV2bTogeyB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH07XG4gIGlwOiB7IHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW10gfTtcbiAgYXB0OiB7XG4gICAgdG9rZW5zOiBBcHRUb2tlbkNvbmZpZ1tdO1xuICAgIG5mdENvbGxlY3Rpb25zOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnW107XG4gIH07XG4gIHN0eDogeyB0b2tlbnM6IFNpcDEwVG9rZW5Db25maWdbXSB9O1xuICBuZWFyOiB7IHRva2VuczogTmVwMTQxVG9rZW5Db25maWdbXSB9O1xuICB2ZXQ6IHtcbiAgICB0b2tlbnM6IFZldFRva2VuQ29uZmlnW107XG4gICAgbmZ0Q29sbGVjdGlvbnM6IFZldE5GVENvbGxlY3Rpb25Db25maWdbXTtcbiAgfTtcbiAgY29zbW9zOiB7IHRva2VuczogQ29zbW9zVG9rZW5Db25maWdbXSB9O1xuICB0b246IHsgdG9rZW5zOiBKZXR0b25Ub2tlbkNvbmZpZ1tdIH07XG4gIHRlbXBvOiB7IHRva2VuczogVGlwMjBUb2tlbkNvbmZpZ1tdIH07XG4gIGNhbnRvbjogeyB0b2tlbnM6IENhbnRvblRva2VuQ29uZmlnW10gfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbnMge1xuICBiaXRjb2luOiBUb2tlbk5ldHdvcms7XG4gIHRlc3RuZXQ6IFRva2VuTmV0d29yaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbXNUb2tlbkNvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZnVsbE5hbWU6IHN0cmluZztcbiAgZmFtaWx5OiBzdHJpbmc7XG4gIGRlY2ltYWxQbGFjZXM6IG51bWJlcjtcbiAgYXNzZXQ6IHN0cmluZztcbiAgZmVhdHVyZXM/OiBzdHJpbmdbXTtcbiAgcHJlZml4Pzogc3RyaW5nO1xuICBzdWZmaXg/OiBzdHJpbmc7XG4gIG5ldHdvcms/OiB1bmtub3duO1xuICBwcmltYXJ5S2V5Q3VydmU/OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzcz86IHN0cmluZztcbiAgdG9rZW5BZGRyZXNzPzogc3RyaW5nO1xuICBuZnRDb2xsZWN0aW9uSWQ/OiBzdHJpbmc7XG4gIGFsaWFzPzogc3RyaW5nO1xuICBjb250cmFjdE5hbWU/OiBzdHJpbmc7XG4gIHRva2VuSWQ/OiBzdHJpbmc7XG4gIHBhY2thZ2VJZD86IHN0cmluZztcbiAgbW9kdWxlPzogc3RyaW5nO1xuICBzeW1ib2w/OiBzdHJpbmc7XG4gIGlzc3VlckFkZHJlc3M/OiBzdHJpbmc7XG4gIGN1cnJlY255Y29kZT86IHN0cmluZztcbiAgZG9tYWluPzogc3RyaW5nO1xuICBhc3NldElkPzogc3RyaW5nO1xuICBkZW5vbT86IHN0cmluZztcbiAgaXNUb2tlbjogYm9vbGVhbjtcbiAgYmFzZVVuaXQ/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIHN1Ym5ldElkPzogc3RyaW5nO1xuICB0aWNrZXI/OiBzdHJpbmc7XG4gIHByb2dyYW1JZD86IHN0cmluZztcbiAgYWRkcmVzc0NvaW4/OiBzdHJpbmc7XG4gIGFzc2V0TmFtZT86IHN0cmluZztcbiAgcG9saWN5SWQ/OiBzdHJpbmc7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGRldGVjdGVkX2V4dGVuc2lvbl90eXBlX25hbWVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW1zTmV0d29ya0NvbmZpZyBleHRlbmRzIER5bmFtaWNOZXR3b3JrT3B0aW9ucyB7XG4gIGZlYXR1cmVzOiBDb2luRmVhdHVyZVtdO1xufVxuXG5leHBvcnQgdHlwZSBBbXNOZXR3b3JrQ29uZmlnTWFwID0gUmVjb3JkPHN0cmluZywgQW1zTmV0d29ya0NvbmZpZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJpbW1lZEFtc05ldHdvcmtDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRyaW1tZWRBbXNUb2tlbkNvbmZpZyBleHRlbmRzIE9taXQ8QW1zVG9rZW5Db25maWcsICdmZWF0dXJlcycgfCAnbmV0d29yayc+IHtcbiAgbmV0d29yazogVHJpbW1lZEFtc05ldHdvcmtDb25maWc7XG4gIGV4Y2x1ZGVkRmVhdHVyZXM/OiBzdHJpbmdbXTtcbiAgYWRkaXRpb25hbEZlYXR1cmVzPzogc3RyaW5nW107XG59XG5cbmZ1bmN0aW9uIGdldEVyYzIwVG9rZW5Db25maWcoY29pbjogRXJjMjBDb2luKTogRXJjMjBUb2tlbkNvbmZpZyB7XG4gIGxldCBiYXNlQ29pbjogc3RyaW5nO1xuICBzd2l0Y2ggKGNvaW4ubmV0d29yay5uYW1lKSB7XG4gICAgY2FzZSBOZXR3b3Jrcy5tYWluLmV0aGVyZXVtLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdldGgnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0LmtvdmFuLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICd0ZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5nb2VybGkubmFtZTpcbiAgICAgIGJhc2VDb2luID0gJ2d0ZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5ob2xlc2t5Lm5hbWU6XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0Lmhvb2RpLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdodGV0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3Quc2Vwb2xpYS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnc2VwZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5iYXNlY2hhaW4ubmFtZTpcbiAgICAgIGJhc2VDb2luID0gJ3RiYXNlZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5mbG93Lm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICd0Zmxvdyc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLm1haW4ub2tieGxheWVyLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdva2J4bGF5ZXInO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJjMjAgdG9rZW4gJHtjb2luLm5hbWV9IGhhcyBhbiB1bnN1cHBvcnRlZCBuZXR3b3JrYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogYmFzZUNvaW4sXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cblxuLy8gR2V0IHRoZSBsaXN0IG9mIEVSQy0yMCB0b2tlbnMgZnJvbSBzdGF0aWNzIGFuZCBmb3JtYXQgaXQgcHJvcGVybHlcbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWRFcmMyMFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEVyYzIwVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgRXJjMjBDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRFcmMyMFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRFcmM3OTg0VG9rZW5Db25maWcoY29pbjogRXJjNzk4NENvaW4pOiBFcmM3OTg0VG9rZW5Db25maWcge1xuICBsZXQgYmFzZUNvaW46IHN0cmluZztcbiAgc3dpdGNoIChjb2luLm5ldHdvcmsubmFtZSkge1xuICAgIGNhc2UgTmV0d29ya3MubWFpbi5ldGhlcmV1bS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5rb3Zhbi5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAndGV0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3QuZ29lcmxpLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdndGV0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3QuaG9sZXNreS5uYW1lOlxuICAgIGNhc2UgTmV0d29ya3MudGVzdC5ob29kaS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnaHRldGgnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0LnNlcG9saWEubmFtZTpcbiAgICAgIGJhc2VDb2luID0gJ3NlcGV0aCc7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFUkMtNzk4NCB0b2tlbiAke2NvaW4ubmFtZX0gaGFzIGFuIHVuc3VwcG9ydGVkIG5ldHdvcmtgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBiYXNlQ29pbixcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIC4uLihjb2luLnVuZGVybHlpbmdFcmMyMEFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICB1bmRlcmx5aW5nRXJjMjBBZGRyZXNzOiBjb2luLnVuZGVybHlpbmdFcmMyMEFkZHJlc3MudG9Mb3dlckNhc2UoKSxcbiAgICB9KSxcbiAgICAuLi4oY29pbi5yYXRlICE9PSB1bmRlZmluZWQgJiYgeyByYXRlOiBjb2luLnJhdGUgfSksXG4gICAgLi4uKGNvaW4ucmVxdWlyZXNBcHByb3ZhbFJlc2V0ICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgcmVxdWlyZXNBcHByb3ZhbFJlc2V0OiBjb2luLnJlcXVpcmVzQXBwcm92YWxSZXNldCxcbiAgICB9KSxcbiAgfTtcbn1cblxuLy8gR2V0IHRoZSBsaXN0IG9mIEVSQy03OTg0IGNvbmZpZGVudGlhbCB0b2tlbnMgZnJvbSBzdGF0aWNzIGFuZCBmb3JtYXQgaXQgcHJvcGVybHlcbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWRFcmM3OTg0VG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXJjNzk4NFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEVyYzc5ODRDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRFcmM3OTg0VG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmV4cG9ydCBjb25zdCBldGhHYXNDb25maWdzID0ge1xuICBtaW5pbXVtR2FzUHJpY2U6IDEwMDAwMDAwMDAsIC8vIG1pbmltdW0gZ2FzIHByaWNlIGEgdXNlciBjYW4gcHJvdmlkZSAoMSBHd2VpKVxuICBkZWZhdWx0R2FzUHJpY2U6IDIwMDAwMDAwMDAwLCAvLyBkZWZhdWx0IGdhcyBwcmljZSBpZiBlc3RpbWF0aW9uIGZhaWxzICgyMCBHd2VpKVxuICBtYXhpbXVtR2FzUHJpY2U6IDI1MDAwMDAwMDAwMDAsIC8vIG1pbmltdW0gZ2FzIHByaWNlIGEgdXNlciBjYW4gcHJvdmlkZSAoMjUwMCBHd2VpKVxuICBkZWZhdWx0R2FzTGltaXQ6IDUwMDAwMCwgLy8gRGVmYXVsdCBnYXMgbGltaXQgd2Ugc2V0IGZvciBjb250cmFjdCBzZW5kXG4gIGRlZmF1bHRHYXNMaW1pdFRva2VuU2VuZDogMTAwMDAwMCwgLy8gRGVmYXVsdCBnYXMgbGltaXQgd2Ugc2V0IGZvciB0b2tlbiBzZW5kXG4gIG1pbmltdW1HYXNMaW1pdDogMzAwMDAsIC8vIG1pbmltdW0gZ2FzIGxpbWl0IGEgdXNlciBjYW4gc2V0IGZvciBhIHNlbmRcbiAgbWF4aW11bUdhc0xpbWl0OiAyMDAwMDAwMCwgLy8gQ3VzdG9tZXJzIGNhbm5vdCBzZXQgZ2FzIGxpbWl0cyBiZXlvbmQgdGhpcyBhbW91bnRcbiAgbmV3RXRoTGlrZUNvaW5zTWluR2FzTGltaXQ6IDQwMDAwMCwgLy8gbWluaW11bSBnYXMgbGltaXQgYSB1c2VyIGNhbiBzZXQgZm9yIGEgc2VuZCBmb3IgZXRoIGxpa2UgY29pbnMgbGlrZSBhcmJpdHJ1bSwgb3B0aW1pc20sIGV0Y1xuICBsMUdhc0ZlZUJ1ZmZlcjogMTAwMDAwMDAwMDAwMDAwMCwgLy8gQnVmZmVyIGZvciBMMSBkYXRhIGZlZXNcbn07XG5cbmZ1bmN0aW9uIGdldFN0ZWxsYXJUb2tlbkNvbmZpZyhjb2luOiBTdGVsbGFyQ29pbik6IFN0ZWxsYXJUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3hsbScgOiAndHhsbScsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG4vLyBHZXQgdGhlIGxpc3Qgb2YgU3RlbGxhciB0b2tlbnMgZnJvbSBzdGF0aWNzIGFuZCBmb3JtYXQgaXQgcHJvcGVybHlcbmNvbnN0IGdldEZvcm1hdHRlZFN0ZWxsYXJUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBTdGVsbGFyVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgU3RlbGxhckNvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFN0ZWxsYXJUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0T2ZjVG9rZW5Db25maWcoY29pbjogT2ZjQ29pbik6IE9mY1Rva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogJ29mYycsXG4gICAgYmFja2luZ0NvaW46IGNvaW4uYXNzZXQsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgaXNGaWF0OiBjb2luLmtpbmQgPT09IENvaW5LaW5kLkZJQVQsXG4gIH07XG59XG4vLyBHZXQgdGhlIGxpc3Qgb2YgT0ZDIHRva2VucyBmcm9tIHN0YXRpY3MgYW5kIGZvcm1hdCBpdCBwcm9wZXJseVxuY29uc3QgZ2V0Rm9ybWF0dGVkT2ZjQ29pbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBPZmNUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBPZmNDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRPZmNUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0Q2Vsb1Rva2VuQ29uZmlnKGNvaW46IENlbG9Db2luKTogQ2Vsb1Rva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnY2VsbycgOiAndGNlbG8nLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRDZWxvVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogQ2Vsb1Rva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIENlbG9Db2luKSB7XG4gICAgICBhY2MucHVzaChnZXRDZWxvVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEJzY1Rva2VuQ29uZmlnKGNvaW46IEJzY0NvaW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdic2MnIDogJ3Ric2MnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRCc2NUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQnNjQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0QnNjVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEVvc1Rva2VuQ29uZmlnKGNvaW46IEVvc0NvaW4pOiBFb3NUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2VvcycgOiAndGVvcycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdE5hbWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICBjb250cmFjdE5hbWU6IGNvaW4uY29udHJhY3ROYW1lLFxuICAgIGNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRFb3NUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFb3NUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBFb3NDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRFb3NUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QXZheENUb2tlbkNvbmZpZyhjb2luOiBBdmF4RVJDMjBUb2tlbik6IEF2YXhjVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhdmF4YycgOiAndGF2YXhjJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQXZheENUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBdmF4Y1Rva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEF2YXhFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRBdmF4Q1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRQb2x5Z29uVG9rZW5Db25maWcoY29pbjogUG9seWdvbkVSQzIwVG9rZW4gfCBFcmM3MjFDb2luIHwgRXJjMTE1NUNvaW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdwb2x5Z29uJyA6ICd0cG9seWdvbicsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFBvbHlnb25Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChcbiAgICAgIGNvaW4gaW5zdGFuY2VvZiBQb2x5Z29uRVJDMjBUb2tlbiB8fFxuICAgICAgKChjb2luIGluc3RhbmNlb2YgRXJjNzIxQ29pbiB8fCBjb2luIGluc3RhbmNlb2YgRXJjMTE1NUNvaW4pICYmIGNvaW4uZmFtaWx5ID09PSBDb2luRmFtaWx5LlBPTFlHT04pXG4gICAgKSB7XG4gICAgICBhY2MucHVzaChnZXRQb2x5Z29uVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFNvbmVpdW1Ub2tlbkNvbmZpZyhjb2luOiBFcmM3MjFDb2luIHwgRXJjMTE1NUNvaW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdzb25laXVtJyA6ICd0c29uZWl1bScsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFNvbmVpdW1Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmICgoY29pbiBpbnN0YW5jZW9mIEVyYzcyMUNvaW4gfHwgY29pbiBpbnN0YW5jZW9mIEVyYzExNTVDb2luKSAmJiBjb2luLmZhbWlseSA9PT0gQ29pbkZhbWlseS5TT05FSVVNKSB7XG4gICAgICBhY2MucHVzaChnZXRTb25laXVtVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEVyYzcyMVRva2VuQ29uZmlnKGNvaW46IEVyYzcyMUNvaW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdldGgnIDogJ2h0ZXRoJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkRXJjNzIxVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEVyYzcyMUNvaW4gJiYgY29pbi5mYW1pbHkgPT09IENvaW5GYW1pbHkuRVRIKSB7XG4gICAgICBhY2MucHVzaChnZXRFcmM3MjFUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QXJiZXRoVG9rZW5Db25maWcoY29pbjogQXJiZXRoRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2FyYmV0aCcgOiAndGFyYmV0aCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEFyYmV0aFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBcmJldGhFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRBcmJldGhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0T3BldGhUb2tlbkNvbmZpZyhjb2luOiBPcGV0aEVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdvcGV0aCcgOiAndG9wZXRoJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkT3BldGhUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgT3BldGhFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRPcGV0aFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRCYXNlZXRoVG9rZW5Db25maWcoY29pbjogRXRoTGlrZUVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdiYXNlZXRoJyA6ICd0YmFzZWV0aCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEJhc2VldGhUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgRXRoTGlrZUVSQzIwVG9rZW4gJiYgKGNvaW4ubmFtZS5pbmNsdWRlcygnYmFzZWV0aDonKSB8fCBjb2luLm5hbWUuaW5jbHVkZXMoJ3RiYXNlZXRoOicpKSkge1xuICAgICAgYWNjLnB1c2goZ2V0QmFzZWV0aFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRPZ1Rva2VuQ29uZmlnKGNvaW46IEV0aExpa2VFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnb2cnIDogJ3RvZycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZE9nVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEV0aExpa2VFUkMyMFRva2VuICYmIChjb2luLm5hbWUuaW5jbHVkZXMoJ29nOicpIHx8IGNvaW4ubmFtZS5pbmNsdWRlcygndG9nOicpKSkge1xuICAgICAgYWNjLnB1c2goZ2V0T2dUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0U2VpZXZtVG9rZW5Db25maWcoY29pbjogRXRoTGlrZUVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdzZWlldm0nIDogJ3RzZWlldm0nLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRTZWlldm1Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgRXRoTGlrZUVSQzIwVG9rZW4gJiYgKGNvaW4ubmFtZS5pbmNsdWRlcygnc2VpZXZtOicpIHx8IGNvaW4ubmFtZS5pbmNsdWRlcygndHNlaWV2bTonKSkpIHtcbiAgICAgIGFjYy5wdXNoKGdldFNlaWV2bVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRNb25Ub2tlbkNvbmZpZyhjb2luOiBNb25FUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnbW9uJyA6ICd0bW9uJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkTW9uVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIE1vbkVSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldE1vblRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRGbG93VG9rZW5Db25maWcoY29pbjogRXRoTGlrZUVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdmbG93JyA6ICd0ZmxvdycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEZsb3dUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgRXRoTGlrZUVSQzIwVG9rZW4gJiYgKGNvaW4ubmFtZS5pbmNsdWRlcygnZmxvdzonKSB8fCBjb2luLm5hbWUuaW5jbHVkZXMoJ3RmbG93OicpKSkge1xuICAgICAgYWNjLnB1c2goZ2V0Rmxvd1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRMaW5lYWV0aFRva2VuQ29uZmlnKGNvaW46IEV0aExpa2VFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnbGluZWFldGgnIDogJ3RsaW5lYWV0aCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZExpbmVhZXRoVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEV0aExpa2VFUkMyMFRva2VuICYmIChjb2luLm5hbWUuaW5jbHVkZXMoJ2xpbmVhZXRoOicpIHx8IGNvaW4ubmFtZS5pbmNsdWRlcygndGxpbmVhZXRoOicpKSkge1xuICAgICAgYWNjLnB1c2goZ2V0TGluZWFldGhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0WmtldGhUb2tlbkNvbmZpZyhjb2luOiBaa2V0aEVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICAvLyBUb2tlbnMgbGl2ZSBvbiB0aGUgemtzeW5jZXJhIG5ldHdvcmsvZmFtaWx5IChDRUNITy0yMjE1KS4gTmFtZXMgc3RheSB6a2V0aDoqIGZvciBjb21wYXRpYmlsaXR5LlxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3prc3luY2VyYScgOiAndHprc3luY2VyYScsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFprZXRoVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFprZXRoRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0WmtldGhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QmVyYVRva2VuQ29uZmlnKGNvaW46IEJlcmFFUkMyMFRva2VuKTogRXRoTGlrZVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYmVyYScgOiAndGJlcmEnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRCZXJhVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEJlcmFFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRCZXJhVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldENvcmVkYW9Ub2tlbkNvbmZpZyhjb2luOiBDb3JlZGFvRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2NvcmVkYW8nIDogJ3Rjb3JlZGFvJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQ29yZWRhb1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBDb3JlZGFvRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0Q29yZWRhb1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRXb3JsZFRva2VuQ29uZmlnKGNvaW46IFdvcmxkRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3dvcmxkJyA6ICd0d29ybGQnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRXb3JsZFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBXb3JsZEVSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFdvcmxkVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEZsclRva2VuQ29uZmlnKGNvaW46IEZsckVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdmbHInIDogJ3RmbHInLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRGbHJUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgRmxyRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0RmxyVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFhkY1Rva2VuQ29uZmlnKGNvaW46IFhkY0VSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd4ZGMnIDogJ3R4ZGMnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRYZGNUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgWGRjRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0WGRjVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFNvbFRva2VuQ29uZmlnKGNvaW46IFNvbENvaW4pOiBTb2xUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3NvbCcgOiAndHNvbCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkFkZHJlc3M6IGNvaW4udG9rZW5BZGRyZXNzLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICAgIHByb2dyYW1JZDogY29pbi5wcm9ncmFtSWQsXG4gIH07XG59XG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkU29sVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogU29sVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgU29sQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0U29sVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEFsZ29Ub2tlbkNvbmZpZyhjb2luOiBBbGdvQ29pbik6IEFsZ29Ub2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2FsZ28nIDogJ3RhbGdvJyxcbiAgICBhbGlhczogY29pbi5hbGlhcyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWRBbGdvVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucyk6IEFsZ29Ub2tlbkNvbmZpZ1tdID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEFsZ29Ub2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBbGdvQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0QWxnb1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRIYmFyVG9rZW5Db25maWcoY29pbjogSGVkZXJhVG9rZW4pOiBIYmFyVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdoYmFyJyA6ICd0aGJhcicsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgbm9kZUFjY291bnRJZDogY29pbi5ub2RlQWNjb3VudElkLFxuICAgIHRva2VuSWQ6IGNvaW4udG9rZW5JZCxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkSGJhclRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEhiYXJUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBIZWRlcmFUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0SGJhclRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBZGFUb2tlbkNvbmZpZyhjb2luOiBBZGFUb2tlbik6IEFkYVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYWRhJyA6ICd0YWRhJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHBvbGljeUlkOiBjb2luLnBvbGljeUlkLFxuICAgIGFzc2V0TmFtZTogY29pbi5hc3NldE5hbWUsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIGNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRBZGFUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBZGFUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBZGFUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0QWRhVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFRyeFRva2VuQ29uZmlnKGNvaW46IFRyb25FcmMyMENvaW4pOiBUcnhUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3RyeCcgOiAndHRyeCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFRyeFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFRyeFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFRyb25FcmMyMENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFRyeFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRYcnBUb2tlbkNvbmZpZyhjb2luOiBYcnBDb2luKTogWHJwVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd4cnAnIDogJ3R4cnAnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIGlzc3VlckFkZHJlc3M6IGNvaW4uaXNzdWVyQWRkcmVzcyxcbiAgICBjdXJyZW5jeUNvZGU6IGNvaW4uY3VycmVuY3lDb2RlLFxuICAgIGRvbWFpbjogY29pbi5kb21haW4sXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFhycFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFhycFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFhycENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFhycFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRYcnBNcHRUb2tlbkNvbmZpZyhjb2luOiBYcnBNcHRDb2luKTogWHJwTXB0VG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd4cnAnIDogJ3R4cnAnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLCAvLyBzZXQgZnJvbSBhc3NldFNjYWxlIGluIGZhY3RvcnkgKHNhbWUgY29uY2VwdClcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICAgIGNhblRyYW5zZmVyOiBjb2luLmNhblRyYW5zZmVyLFxuICB9O1xufVxuXG5jb25zdCBnZXRGb3JtYXR0ZWRYcnBNcHRUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBYcnBNcHRUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBYcnBNcHRDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRYcnBNcHRUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0U3VpVG9rZW5Db25maWcoY29pbjogU3VpQ29pbik6IFN1aVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnc3VpJyA6ICd0c3VpJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICBwYWNrYWdlSWQ6IGNvaW4ucGFja2FnZUlkLFxuICAgIG1vZHVsZTogY29pbi5tb2R1bGUsXG4gICAgc3ltYm9sOiBjb2luLnN5bWJvbCxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkU3VpVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogU3VpVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgU3VpQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0U3VpVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFRhb1Rva2VuQ29uZmlnKGNvaW46IFRhb0NvaW4pOiBUYW9Ub2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3RhbycgOiAndHRhbycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgc3VibmV0SWQ6IGNvaW4uc3VibmV0SWQsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRUYW9Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBUYW9Ub2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBUYW9Db2luKSB7XG4gICAgICBhY2MucHVzaChnZXRUYW9Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0UG9seXhUb2tlbkNvbmZpZyhjb2luOiBQb2x5eENvaW4pOiBQb2x5eFRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAncG9seXgnIDogJ3Rwb2x5eCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgdGlja2VyOiBjb2luLnRpY2tlcixcbiAgICBhc3NldElkOiBjb2luLmFzc2V0SWQsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRQb2x5eFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFBvbHl4VG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgUG9seXhDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRQb2x5eFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBcHRUb2tlbkNvbmZpZyhjb2luOiBBcHRDb2luKTogQXB0VG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhcHQnIDogJ3RhcHQnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgYXNzZXRJZDogY29pbi5hc3NldElkLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEFwdFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEFwdFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEFwdFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBcHRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW46IEFwdE5GVENvbGxlY3Rpb24pOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYXB0JyA6ICd0YXB0JyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIG5mdENvbGxlY3Rpb25JZDogY29pbi5uZnRDb2xsZWN0aW9uSWQsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWZXRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW46IFZldE5GVENvbGxlY3Rpb24pOiBWZXRORlRDb2xsZWN0aW9uQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAndmV0JyA6ICd0dmV0JyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIG5mdENvbGxlY3Rpb25JZDogY29pbi5uZnRDb2xsZWN0aW9uSWQsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdE5GVENvbGxlY3Rpb24pIHtcbiAgICAgIGFjYy5wdXNoKGdldEFwdE5GVENvbGxlY3Rpb25Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmNvbnN0IGdldEZvcm1hdHRlZFZldE5GVENvbGxlY3Rpb25zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogVmV0TkZUQ29sbGVjdGlvbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBWZXRORlRDb2xsZWN0aW9uKSB7XG4gICAgICBhY2MucHVzaChnZXRWZXRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRTaXAxMFRva2VuQ29uZmlnKGNvaW46IFNpcDEwVG9rZW4pOiBTaXAxMFRva2VuQ29uZmlnIHtcbiAgbGV0IGJhc2VDb2luOiBzdHJpbmc7XG4gIHN3aXRjaCAoY29pbi5uZXR3b3JrLm5hbWUpIHtcbiAgICBjYXNlIE5ldHdvcmtzLm1haW4uc3R4Lm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdzdHgnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOZXR3b3Jrcy50ZXN0LnN0eC5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAndHN0eCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3Quc3R4U2lnbmV0Lm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICd0c3R4c2lnbmV0JztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNJUC0xMCB0b2tlbiAke2NvaW4ubmFtZX0gaGFzIGFuIHVuc3VwcG9ydGVkIG5ldHdvcmtgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBiYXNlQ29pbixcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGFzc2V0SWQ6IGNvaW4uYXNzZXRJZCxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRTaXAxMFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFNpcDEwVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgU2lwMTBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0U2lwMTBUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0TmVwMTQxVG9rZW5Db25maWcoY29pbjogTmVwMTQxVG9rZW4pOiBOZXAxNDFUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ25lYXInIDogJ3RuZWFyJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MsXG4gICAgc3RvcmFnZURlcG9zaXRBbW91bnQ6IGNvaW4uc3RvcmFnZURlcG9zaXRBbW91bnQsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkTmVwMTQxVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogTmVwMTQxVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgTmVwMTQxVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldE5lcDE0MVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRDYW50b25Ub2tlbkNvbmZpZyhjb2luOiBDYW50b25Ub2tlbik6IENhbnRvblRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnY2FudG9uJyA6ICd0Y2FudG9uJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICBiYXNlVXJsOiBjb2luLmJhc2VVcmwsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWRDYW50b25Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBDYW50b25Ub2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBDYW50b25Ub2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0Q2FudG9uVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFZldFRva2VuQ29uZmlnKGNvaW46IFZldFRva2VuKTogVmV0VG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd2ZXQnIDogJ3R2ZXQnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5cbmNvbnN0IGdldEZvcm1hdHRlZFZldFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFZldFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFZldFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRWZXRUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuY29uc3QgZ2V0Rm9ybWF0dGVkQ29zbW9zQ2hhaW5Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBDb3Ntb3NUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBDb3Ntb3NDaGFpblRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRDb3Ntb3NUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0Q29zbW9zVG9rZW5Db25maWcoY29pbjogQ29zbW9zQ2hhaW5Ub2tlbik6IENvc21vc1Rva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uYW1lLnNwbGl0KCc6JylbMF0udG9Mb3dlckNhc2UoKSxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlbm9tOiBjb2luLmRlbm9tLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0SmV0dG9uVG9rZW5Db25maWcoY29pbjogSmV0dG9uVG9rZW4pOiBKZXR0b25Ub2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3RvbicgOiAndHRvbicsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cblxuY29uc3QgZ2V0Rm9ybWF0dGVkSmV0dG9uVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogSmV0dG9uVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgSmV0dG9uVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEpldHRvblRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG4vKipcbiAqIEdldCB0b2tlbiBjb25maWcgZm9yIFRJUC0yMCB0b2tlbnMgb24gdGhlIFRlbXBvIG5ldHdvcmsuXG4gKiBUSVAtMjAgaXMgdGhlIG5hdGl2ZSB0b2tlbiBzdGFuZGFyZCBmb3IgVGVtcG8sIHNpbWlsYXIgdG8gRVJDLTIwIG9uIEV0aGVyZXVtLlxuICogSWYgb3RoZXIgY2hhaW5zIG5lZWQgdG8gc3VwcG9ydCB0aGlzIHRva2VuIHN0YW5kYXJkLCB0aGUgYmFzZSBjb2luIGNhbiBiZSBkZXRlcm1pbmVkXG4gKiBkeW5hbWljYWxseVxuICovXG5mdW5jdGlvbiBnZXRUaXAyMFRva2VuQ29uZmlnKGNvaW46IFRpcDIwVG9rZW4pOiBUaXAyMFRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAndGVtcG8nIDogJ3R0ZW1wbycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5cbi8qKlxuICogR2V0IGFsbCBmb3JtYXR0ZWQgVElQMjAgdG9rZW5zXG4gKiBAcGFyYW0gY3VzdG9tQ29pbk1hcCAtIENvaW4gbWFwIHRvIHNlYXJjaFxuICovXG5jb25zdCBnZXRGb3JtYXR0ZWRUaXAyMFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpOiBUaXAyMFRva2VuQ29uZmlnW10gPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogVGlwMjBUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBUaXAyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRUaXAyMFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG50eXBlIEV0aExpa2VUb2tlbk1hcCA9IHtcbiAgW0sgaW4gQ29pbkZhbWlseV06IHsgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXSB9O1xufTtcblxuZXhwb3J0IGVudW0gVG9rZW5UeXBlRW51bSB7XG4gIEVSQzIwID0gJ2VyYzIwJyxcbiAgRVJDNzIxID0gJ2VyYzcyMScsXG4gIEVSQzc5ODQgPSAnZXJjNzk4NCcsXG59XG5cbmZ1bmN0aW9uIGdldEV0aExpa2VUb2tlbkNvbmZpZyhjb2luOiBFdGhMaWtlRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIGNvbnN0IG5ldHdvcmsgPSBjb2luLm5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrO1xuICBjb25zdCBiYXNlQ29pbiA9IGNvaW5zLmNvaW5OYW1lRnJvbUNoYWluSWQobmV0d29yay5jaGFpbklkKSA/PyBjb2luLm5hbWUuc3BsaXQoJzonKVswXS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBiYXNlQ29pbixcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFdGhMaWtlRVJDNzIxVG9rZW5Db25maWcoY29pbjogRXRoTGlrZUVSQzcyMVRva2VuKTogRXRoTGlrZUVSQzcyMVRva2VuQ29uZmlnIHtcbiAgY29uc3QgbmV0d29yayA9IGNvaW4ubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcms7XG4gIGNvbnN0IGJhc2VDb2luID0gY29pbnMuY29pbk5hbWVGcm9tQ2hhaW5JZChuZXR3b3JrLmNoYWluSWQpID8/IGNvaW4ubmFtZS5zcGxpdCgnOicpWzBdLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGJhc2VDb2luLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWRFdGhMaWtlVG9rZW5Db25maWcgPSAoXG4gIGN1c3RvbUNvaW5NYXAgPSBjb2lucyxcbiAgdG9rZW5UeXBlOiBUb2tlblR5cGVFbnVtXG4pOiBFdGhMaWtlVG9rZW5Db25maWdbXSA9PiB7XG4gIGxldCBjbGFzc05hbWU6IHR5cGVvZiBFdGhMaWtlRVJDMjBUb2tlbiB8IHR5cGVvZiBFdGhMaWtlRVJDNzIxVG9rZW47XG4gIGlmICh0b2tlblR5cGUgPT09IFRva2VuVHlwZUVudW0uRVJDMjApIHtcbiAgICBjbGFzc05hbWUgPSBFdGhMaWtlRVJDMjBUb2tlbjtcbiAgfSBlbHNlIGlmICh0b2tlblR5cGUgPT09IFRva2VuVHlwZUVudW0uRVJDNzIxKSB7XG4gICAgY2xhc3NOYW1lID0gRXRoTGlrZUVSQzcyMVRva2VuO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdG9rZW4gdHlwZTogJHt0b2tlblR5cGV9YCk7XG4gIH1cblxuICByZXR1cm4gY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXRoTGlrZVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIGNsYXNzTmFtZSkge1xuICAgICAgaWYgKHRva2VuVHlwZSA9PT0gVG9rZW5UeXBlRW51bS5FUkMyMCkge1xuICAgICAgICBhY2MucHVzaChnZXRFdGhMaWtlVG9rZW5Db25maWcoY29pbiBhcyBFdGhMaWtlRVJDMjBUb2tlbikpO1xuICAgICAgfSBlbHNlIGlmICh0b2tlblR5cGUgPT09IFRva2VuVHlwZUVudW0uRVJDNzIxKSB7XG4gICAgICAgIGFjYy5wdXNoKGdldEV0aExpa2VFUkM3MjFUb2tlbkNvbmZpZyhjb2luIGFzIEV0aExpa2VFUkM3MjFUb2tlbikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG59O1xuXG4vKiBHZXQgYWxsIHRva2VucyBvZiBhIGdpdmVuIGV0aCBsaWtlIGNvaW4gZm9yIGEgZ2l2ZW4gbmV0d29yayAqL1xuZXhwb3J0IGNvbnN0IGdldEV0aExpa2VUb2tlbnMgPSAoXG4gIG5ldHdvcms6ICdNYWlubmV0JyB8ICdUZXN0bmV0JyxcbiAgdG9rZW5UeXBlOiBUb2tlblR5cGVFbnVtLFxuICBjb2luTWFwOiB0eXBlb2YgY29pbnMgPSBjb2luc1xuKTogRXRoTGlrZVRva2VuTWFwID0+IHtcbiAgbGV0IGZlYXR1cmU6IENvaW5GZWF0dXJlO1xuICBjb25zdCBuZXR3b3JrVG9rZW5zID0gZ2V0Rm9ybWF0dGVkRXRoTGlrZVRva2VuQ29uZmlnKGNvaW5NYXAsIHRva2VuVHlwZSkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayk7XG5cbiAgaWYgKHRva2VuVHlwZSA9PT0gVG9rZW5UeXBlRW51bS5FUkMyMCkge1xuICAgIGZlYXR1cmUgPSBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMDtcbiAgfSBlbHNlIGlmICh0b2tlblR5cGUgPT09IFRva2VuVHlwZUVudW0uRVJDNzIxKSB7XG4gICAgZmVhdHVyZSA9IENvaW5GZWF0dXJlLlNVUFBPUlRTX0VSQzcyMTtcbiAgfVxuXG4gIGNvbnN0IGV0aExpa2VUb2tlbk1hcCA9IHt9IGFzIEV0aExpa2VUb2tlbk1hcDtcblxuICBjb2luTWFwLmZvckVhY2goKGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEFjY291bnRDb2luICYmIGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoZmVhdHVyZSkpIHtcbiAgICAgIGNvbnN0IGNvaW5OYW1lID0gY29pbi5mYW1pbHk7XG4gICAgICBjb25zdCBjb2luTmFtZUZvck5ldHdvcmsgPSBuZXR3b3JrID09PSAnVGVzdG5ldCcgPyBgdCR7Y29pbk5hbWV9YCA6IGNvaW5OYW1lO1xuXG4gICAgICBldGhMaWtlVG9rZW5NYXBbY29pbi5mYW1pbHldID0ge1xuICAgICAgICB0b2tlbnM6IG5ldHdvcmtUb2tlbnMuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4uY29pbiA9PT0gY29pbk5hbWVGb3JOZXR3b3JrKSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZXRoTGlrZVRva2VuTWFwO1xufTtcblxuLyoqXG4gKiBFbnVtZXJhdGUgRVZNIHRva2VuIGNvbmZpZ3MgcGVyIGZhbWlseSBmcm9tIGEgY29pbiBtYXAgKGRlZmF1bHRzIHRvIHRoZSBidW5kbGVkIHN0YXRpY3MgbWFwKS5cbiAqIFVubGlrZSBnZXRFdGhMaWtlVG9rZW5zLCBmYW1pbGllcyBhcmUgcmVzb2x2ZWQgZnJvbSBlYWNoIHRva2VuJ3Mgb3duIGVudHJ5IGluIHRoZSBwYXNzZWQgbWFwLFxuICogc28gQU1TLW9ubHkgdG9rZW5zIG9uIGZhbWlsaWVzIHdob3NlIGJhc2UgY29pbiBsYWNrcyBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMCAoZS5nLiBic2MsXG4gKiBwb2x5Z29uKSBhcmUgaW5jbHVkZWQuIFJlYWRzIHRoZSBwYXNzZWQgbWFwIG9ubHksIG5ldmVyIHRoZSBzdGF0aWMgY29pbnMgaW1wb3J0LlxuICovXG5leHBvcnQgY29uc3QgZ2V0RXZtVG9rZW5zQnlGYW1pbHkgPSAoXG4gIGNvaW5NYXA6IHR5cGVvZiBjb2lucyA9IGNvaW5zLFxuICB0b2tlblR5cGU6IFRva2VuVHlwZUVudW0gPSBUb2tlblR5cGVFbnVtLkVSQzIwXG4pOiB7IFtmYW1pbHk6IHN0cmluZ106IEV0aExpa2VUb2tlbkNvbmZpZ1tdIH0gPT4ge1xuICBjb25zdCB0b2tlbnNCeUZhbWlseTogeyBbZmFtaWx5OiBzdHJpbmddOiBFdGhMaWtlVG9rZW5Db25maWdbXSB9ID0ge307XG4gIGZvciAoY29uc3QgdG9rZW5Db25maWcgb2YgZ2V0Rm9ybWF0dGVkRXRoTGlrZVRva2VuQ29uZmlnKGNvaW5NYXAsIHRva2VuVHlwZSkpIHtcbiAgICBjb25zdCBmYW1pbHkgPSBjb2luTWFwLmdldE9yVW5kZWZpbmVkKHRva2VuQ29uZmlnLnR5cGUpPy5mYW1pbHk7XG4gICAgaWYgKCFmYW1pbHkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB0b2tlbnNCeUZhbWlseVtmYW1pbHldID0gWy4uLih0b2tlbnNCeUZhbWlseVtmYW1pbHldID8/IFtdKSwgdG9rZW5Db25maWddO1xuICB9XG4gIHJldHVybiB0b2tlbnNCeUZhbWlseTtcbn07XG5cbmNvbnN0IG1lcmdlRXRoTGlrZVRva2VuTWFwID0gKC4uLm1hcHM6IEV0aExpa2VUb2tlbk1hcFtdKTogRXRoTGlrZVRva2VuTWFwID0+IHtcbiAgY29uc3QgbWVyZ2VkTWFwOiBFdGhMaWtlVG9rZW5NYXAgPSB7fSBhcyBFdGhMaWtlVG9rZW5NYXA7XG5cbiAgbWFwcy5mb3JFYWNoKChtYXApID0+IHtcbiAgICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKCFtZXJnZWRNYXBba2V5IGFzIENvaW5GYW1pbHldKSB7XG4gICAgICAgIG1lcmdlZE1hcFtrZXkgYXMgQ29pbkZhbWlseV0gPSB7IHRva2VuczogW10gfTtcbiAgICAgIH1cbiAgICAgIG1lcmdlZE1hcFtrZXkgYXMgQ29pbkZhbWlseV0udG9rZW5zLnB1c2goLi4ubWFwW2tleSBhcyBDb2luRmFtaWx5XS50b2tlbnMpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG1lcmdlZE1hcDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWRUb2tlbnNCeU5ldHdvcmsgPSAobmV0d29yazogJ01haW5uZXQnIHwgJ1Rlc3RuZXQnLCBjb2luTWFwOiB0eXBlb2YgY29pbnMpID0+IHtcbiAgY29uc3QgbmV0d29ya1R5cGUgPSBuZXR3b3JrID09PSAnTWFpbm5ldCcgPyBOZXR3b3JrVHlwZS5NQUlOTkVUIDogTmV0d29ya1R5cGUuVEVTVE5FVDtcblxuICBjb25zdCBldGhMaWtlVG9rZW5NYXAgPSBnZXRFdGhMaWtlVG9rZW5zKG5ldHdvcmssIFRva2VuVHlwZUVudW0uRVJDMjAsIGNvaW5NYXApO1xuICBjb25zdCBldGhMaWtlRXJjNzIxVG9rZW5NYXAgPSBnZXRFdGhMaWtlVG9rZW5zKG5ldHdvcmssIFRva2VuVHlwZUVudW0uRVJDNzIxLCBjb2luTWFwKTtcbiAgY29uc3QgemtldGhUb2tlbnMgPSBnZXRGb3JtYXR0ZWRaa2V0aFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1lcmdlRXRoTGlrZVRva2VuTWFwKGV0aExpa2VUb2tlbk1hcCwgZXRoTGlrZUVyYzcyMVRva2VuTWFwKSxcbiAgICBldGg6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkRXJjMjBUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgICBuZnRzOiBnZXRGb3JtYXR0ZWRFcmM3MjFUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgICBjb25maWRlbnRpYWxUb2tlbnM6IGdldEZvcm1hdHRlZEVyYzc5ODRUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICB4bG06IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU3RlbGxhclRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGFsZ286IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQWxnb1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIG9mYzoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRPZmNDb2lucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiBjb2luTWFwLmdldCh0b2tlbi50eXBlKS5uZXR3b3JrLnR5cGUgPT09IG5ldHdvcmtUeXBlKSxcbiAgICB9LFxuICAgIGNlbG86IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQ2Vsb1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGJzYzoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRCc2NUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBlb3M6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkRW9zVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgYXZheGM6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQXZheENUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBwb2x5Z29uOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFBvbHlnb25Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBzb25laXVtOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFNvbmVpdW1Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBhcmJldGg6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQXJiZXRoVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgb3BldGg6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT3BldGhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBiYXNlZXRoOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEJhc2VldGhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBvZzoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRPZ1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGZsb3c6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkRmxvd1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIG1vbjoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRNb25Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICB4ZGM6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkWGRjVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgbGluZWFldGg6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkTGluZWFldGhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBzZWlldm06IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU2VpZXZtVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgemtldGg6IHtcbiAgICAgIHRva2VuczogemtldGhUb2tlbnMsXG4gICAgfSxcbiAgICB6a3N5bmNlcmE6IHtcbiAgICAgIHRva2VuczogemtldGhUb2tlbnMsXG4gICAgfSxcbiAgICBzb2w6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU29sVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgaGJhcjoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRIYmFyVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgYWRhOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFkYVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIHRyeDoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRUcnhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICB4cnA6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkWHJwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgICAgbXB0VG9rZW5zOiBnZXRGb3JtYXR0ZWRYcnBNcHRUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBzdWk6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU3VpVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgdGFvOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFRhb1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIHBvbHl4OiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFBvbHl4VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgYmVyYToge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRCZXJhVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgY29yZWRhbzoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRDb3JlZGFvVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG4gICAgd29ybGQ6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkV29ybGRUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBmbHI6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkRmxyVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09IG5ldHdvcmspLFxuICAgIH0sXG5cbiAgICBzdHg6IHtcbiAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU2lwMTBUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICBuZWFyOiB7XG4gICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZE5lcDE0MVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGNvc21vczoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRDb3Ntb3NDaGFpblRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIHRvbjoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRKZXR0b25Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgICB0ZW1wbzoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRUaXAyMFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSBuZXR3b3JrKSxcbiAgICB9LFxuICAgIGNhbnRvbjoge1xuICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRDYW50b25Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gbmV0d29yayksXG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWRUb2tlbnMgPSAoY29pbk1hcCA9IGNvaW5zKTogVG9rZW5zID0+IHtcbiAgY29uc3QgZm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMgPSBnZXRGb3JtYXR0ZWRBcHRORlRDb2xsZWN0aW9ucyhjb2luTWFwKTtcbiAgY29uc3QgZm9ybWF0dGVkVmV0TkZUQ29sbGVjdGlvbnMgPSBnZXRGb3JtYXR0ZWRWZXRORlRDb2xsZWN0aW9ucyhjb2luTWFwKTtcblxuICByZXR1cm4ge1xuICAgIGJpdGNvaW46IHtcbiAgICAgIC4uLmdldEZvcm1hdHRlZFRva2Vuc0J5TmV0d29yaygnTWFpbm5ldCcsIGNvaW5NYXApLFxuICAgICAgYXB0OiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQXB0VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICAgIG5mdENvbGxlY3Rpb25zOiBmb3JtYXR0ZWRBcHRORlRDb2xsZWN0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKG5mdENvbGxlY3Rpb246IEFwdE5GVENvbGxlY3Rpb25Db25maWcpID0+IG5mdENvbGxlY3Rpb24ubmV0d29yayA9PT0gJ01haW5uZXQnXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgdmV0OiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkVmV0VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICAgIG5mdENvbGxlY3Rpb25zOiBmb3JtYXR0ZWRWZXRORlRDb2xsZWN0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKG5mdENvbGxlY3Rpb246IFZldE5GVENvbGxlY3Rpb25Db25maWcpID0+IG5mdENvbGxlY3Rpb24ubmV0d29yayA9PT0gJ01haW5uZXQnXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0sXG4gICAgdGVzdG5ldDoge1xuICAgICAgLi4uZ2V0Rm9ybWF0dGVkVG9rZW5zQnlOZXR3b3JrKCdUZXN0bmV0JywgY29pbk1hcCksXG4gICAgICBhcHQ6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRBcHRUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgICAgbmZ0Q29sbGVjdGlvbnM6IGZvcm1hdHRlZEFwdE5GVENvbGxlY3Rpb25zLmZpbHRlcihcbiAgICAgICAgICAobmZ0Q29sbGVjdGlvbjogQXB0TkZUQ29sbGVjdGlvbkNvbmZpZykgPT4gbmZ0Q29sbGVjdGlvbi5uZXR3b3JrID09PSAnVGVzdG5ldCdcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB2ZXQ6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRWZXRUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgICAgbmZ0Q29sbGVjdGlvbnM6IGZvcm1hdHRlZFZldE5GVENvbGxlY3Rpb25zLmZpbHRlcihcbiAgICAgICAgICAobmZ0Q29sbGVjdGlvbjogVmV0TkZUQ29sbGVjdGlvbkNvbmZpZykgPT4gbmZ0Q29sbGVjdGlvbi5uZXR3b3JrID09PSAnVGVzdG5ldCdcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbi8qKlxuICogVmVyaWZ5IG1haW5uZXQgb3IgdGVzdG5ldCB0b2tlbnNcbiAqIEBwYXJhbSB0b2tlbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHZlcmlmeVRva2VucyA9IGZ1bmN0aW9uICh0b2tlbnM6IEJhc2VUb2tlbkNvbmZpZ1tdKSB7XG4gIGNvbnN0IHZlcmlmaWVkVG9rZW5zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuICB0b2tlbnMuZm9yRWFjaCgodG9rZW4pID0+IHtcbiAgICBpZiAodmVyaWZpZWRUb2tlbnNbdG9rZW4udHlwZV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndG9rZW4gOiAnICsgdG9rZW4udHlwZSArICcgZHVwbGljYXRlZC4nKTtcbiAgICB9XG4gICAgdmVyaWZpZWRUb2tlbnNbdG9rZW4udHlwZV0gPSB0cnVlO1xuXG4gICAgaWYgKFxuICAgICAgKHRva2VuIGFzIEJhc2VDb250cmFjdEFkZHJlc3NDb25maWcpLnRva2VuQ29udHJhY3RBZGRyZXNzICYmXG4gICAgICAodG9rZW4gYXMgQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZykudG9rZW5Db250cmFjdEFkZHJlc3MgIT09XG4gICAgICAgICh0b2tlbiBhcyBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnKS50b2tlbkNvbnRyYWN0QWRkcmVzcy50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICd0b2tlbiBjb250cmFjdDogJyArIHRva2VuLnR5cGUgKyAnIGlzIG5vdCBhbGwgbG93ZXIgY2FzZTogJyArICh0b2tlbiBhcyBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnKVxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB2ZXJpZmllZFRva2Vucztcbn07XG5cbmV4cG9ydCBjb25zdCB0b2tlbnMgPSBnZXRGb3JtYXR0ZWRUb2tlbnMoKTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdHRlZEFsZ29Ub2tlbnMgPSBnZXRGb3JtYXR0ZWRBbGdvVG9rZW5zKCk7XG5cbmNvbnN0IG1haW5uZXRFcmMyMFRva2VucyA9IHZlcmlmeVRva2Vucyh0b2tlbnMuYml0Y29pbi5ldGgudG9rZW5zKTtcbmNvbnN0IG1haW5uZXRFcmM3MjFUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLmJpdGNvaW4uZXRoLm5mdHMpO1xuY29uc3QgbWFpbm5ldEVyYzc5ODRUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLmJpdGNvaW4uZXRoLmNvbmZpZGVudGlhbFRva2Vucyk7XG5jb25zdCBtYWlubmV0U3RlbGxhclRva2VucyA9IHZlcmlmeVRva2Vucyh0b2tlbnMuYml0Y29pbi54bG0udG9rZW5zKTtcbmV4cG9ydCBjb25zdCBtYWlubmV0VG9rZW5zID0ge1xuICAuLi5tYWlubmV0RXJjMjBUb2tlbnMsXG4gIC4uLm1haW5uZXRFcmM3MjFUb2tlbnMsXG4gIC4uLm1haW5uZXRFcmM3OTg0VG9rZW5zLFxuICAuLi5tYWlubmV0U3RlbGxhclRva2Vucyxcbn07XG5cbmNvbnN0IHRlc3RuZXRFcmMyMFRva2VucyA9IHZlcmlmeVRva2Vucyh0b2tlbnMudGVzdG5ldC5ldGgudG9rZW5zKTtcbmNvbnN0IHRlc3RuZXRFcmM3MjFUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLnRlc3RuZXQuZXRoLm5mdHMpO1xuY29uc3QgdGVzdG5ldEVyYzc5ODRUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLnRlc3RuZXQuZXRoLmNvbmZpZGVudGlhbFRva2Vucyk7XG5jb25zdCB0ZXN0bmV0U3RlbGxhclRva2VucyA9IHZlcmlmeVRva2Vucyh0b2tlbnMudGVzdG5ldC54bG0udG9rZW5zKTtcbmV4cG9ydCBjb25zdCB0ZXN0bmV0VG9rZW5zID0ge1xuICAuLi50ZXN0bmV0RXJjMjBUb2tlbnMsXG4gIC4uLnRlc3RuZXRFcmM3MjFUb2tlbnMsXG4gIC4uLnRlc3RuZXRFcmM3OTg0VG9rZW5zLFxuICAuLi50ZXN0bmV0U3RlbGxhclRva2Vucyxcbn07XG5cbi8qKlxuICogR2V0IGZvcm1hdHRlZCB0b2tlbiBjb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBjb2luXG4gKiBAcGFyYW0gY29pbiAtIFN0YXRpYyBCYXNlIGNvaW4gaW5zdGFuY2VcbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdG9rZW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvaW4sIG9yIHVuZGVmaW5lZCBpZiBub3Qgc3VwcG9ydGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRUb2tlbkNvbmZpZ0ZvckNvaW4oY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+KTogVG9rZW5Db25maWcgfCB1bmRlZmluZWQge1xuICBpZiAoY29pbiBpbnN0YW5jZW9mIEVyYzIwQ29pbikge1xuICAgIHJldHVybiBnZXRFcmMyMFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBFcmM3OTg0Q29pbikge1xuICAgIHJldHVybiBnZXRFcmM3OTg0VG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFN0ZWxsYXJDb2luKSB7XG4gICAgcmV0dXJuIGdldFN0ZWxsYXJUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgT2ZjQ29pbikge1xuICAgIHJldHVybiBnZXRPZmNUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQ2Vsb0NvaW4pIHtcbiAgICByZXR1cm4gZ2V0Q2Vsb1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBCc2NDb2luKSB7XG4gICAgcmV0dXJuIGdldEJzY1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBFb3NDb2luKSB7XG4gICAgcmV0dXJuIGdldEVvc1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBBdmF4RVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRBdmF4Q1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKFxuICAgIGNvaW4gaW5zdGFuY2VvZiBQb2x5Z29uRVJDMjBUb2tlbiB8fFxuICAgICgoY29pbiBpbnN0YW5jZW9mIEVyYzcyMUNvaW4gfHwgY29pbiBpbnN0YW5jZW9mIEVyYzExNTVDb2luKSAmJiBjb2luLmZhbWlseSA9PT0gQ29pbkZhbWlseS5QT0xZR09OKVxuICApIHtcbiAgICByZXR1cm4gZ2V0UG9seWdvblRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKChjb2luIGluc3RhbmNlb2YgRXJjNzIxQ29pbiB8fCBjb2luIGluc3RhbmNlb2YgRXJjMTE1NUNvaW4pICYmIGNvaW4uZmFtaWx5ID09PSBDb2luRmFtaWx5LlNPTkVJVU0pIHtcbiAgICByZXR1cm4gZ2V0U29uZWl1bVRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBFcmM3MjFDb2luICYmIGNvaW4uZmFtaWx5ID09PSBDb2luRmFtaWx5LkVUSCkge1xuICAgIHJldHVybiBnZXRFcmM3MjFUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQXJiZXRoRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRBcmJldGhUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgT3BldGhFUkMyMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldE9wZXRoVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFprZXRoRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRaa2V0aFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBTb2xDb2luKSB7XG4gICAgcmV0dXJuIGdldFNvbFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBIZWRlcmFUb2tlbikge1xuICAgIHJldHVybiBnZXRIYmFyVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEFkYVRva2VuKSB7XG4gICAgcmV0dXJuIGdldEFkYVRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBUcm9uRXJjMjBDb2luKSB7XG4gICAgcmV0dXJuIGdldFRyeFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBYcnBNcHRDb2luKSB7XG4gICAgcmV0dXJuIGdldFhycE1wdFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBYcnBDb2luKSB7XG4gICAgcmV0dXJuIGdldFhycFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBTdWlDb2luKSB7XG4gICAgcmV0dXJuIGdldFN1aVRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBUYW9Db2luKSB7XG4gICAgcmV0dXJuIGdldFRhb1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBQb2x5eENvaW4pIHtcbiAgICByZXR1cm4gZ2V0UG9seXhUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQXB0Q29pbikge1xuICAgIHJldHVybiBnZXRBcHRUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQXB0TkZUQ29sbGVjdGlvbikge1xuICAgIHJldHVybiBnZXRBcHRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBTaXAxMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldFNpcDEwVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIE5lcDE0MVRva2VuKSB7XG4gICAgcmV0dXJuIGdldE5lcDE0MVRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBDb3Ntb3NDaGFpblRva2VuKSB7XG4gICAgcmV0dXJuIGdldENvc21vc1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBWZXRUb2tlbikge1xuICAgIHJldHVybiBnZXRWZXRUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgVmV0TkZUQ29sbGVjdGlvbikge1xuICAgIHJldHVybiBnZXRWZXRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBDb3JlZGFvRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRDb3JlZGFvVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEpldHRvblRva2VuKSB7XG4gICAgcmV0dXJuIGdldEpldHRvblRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBGbHJFUkMyMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldEZsclRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBNb25FUkMyMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldE1vblRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBYZGNFUkMyMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldFhkY1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBFdGhMaWtlRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRFdGhMaWtlVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEV0aExpa2VFUkM3MjFUb2tlbikge1xuICAgIHJldHVybiBnZXRFdGhMaWtlRVJDNzIxVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIENhbnRvblRva2VuKSB7XG4gICAgcmV0dXJuIGdldENhbnRvblRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBUaXAyMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldFRpcDIwVG9rZW5Db25maWcoY29pbik7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==