tc-checking-tool-rcl 0.9.105 → 0.9.107

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.
@@ -1242,6 +1242,7 @@ var Checker = function Checker(_ref) {
1242
1242
  }
1243
1243
  var styleProps = styles || {};
1244
1244
  var _checkerStyles = _objectSpread(_objectSpread({}, localStyles.containerDiv), styleProps);
1245
+ console.log(bibles);
1245
1246
  return readyToDisplayChecker ? /*#__PURE__*/_react["default"].createElement("div", {
1246
1247
  id: "checker",
1247
1248
  style: _checkerStyles
@@ -1370,4 +1371,4 @@ Checker.propTypes = {
1370
1371
  translate: _propTypes["default"].func.isRequired
1371
1372
  };
1372
1373
  var _default = exports["default"] = Checker;
1373
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXNmbUhlbHBlcnMiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc2VsZWN0aW9uSGVscGVyIiwiX3Byb3BUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX0dyb3VwTWVudUNvbXBvbmVudCIsIl93b3JkQWxpZ25lckxpYiIsIl9kZWVwRXF1YWwiLCJfdHdBcnRpY2xlSGVscGVycyIsIl9DaGVja0luZm9DYXJkIiwiX3RuQXJ0aWNsZUhlbHBlcnMiLCJfU2NyaXB0dXJlUGFuZSIsIl9Qb3BvdmVyQ29udGFpbmVyIiwiX0Jvb2tzT2ZUaGVCaWJsZSIsIl9jb21wbGV4U2NyaXB0Rm9udHMiLCJfVHJhbnNsYXRpb25IZWxwcyIsInRIZWxwc0hlbHBlcnMiLCJfVmVyc2VDaGVjayIsIl9jaGVja0luZm9DYXJkSGVscGVycyIsImUiLCJfX2VzTW9kdWxlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJUeXBlRXJyb3IiLCJhIiwidSIsIm5leHQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiZnJvbSIsIl9hcnJheUxpa2VUb0FycmF5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibCIsImxvY2FsU3R5bGVzIiwiY29udGFpbmVyRGl2IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImhlaWdodCIsImNlbnRlckRpdiIsIm92ZXJmbG93WCIsIm1hcmdpbkxlZnQiLCJzY3JpcHR1cmVQYW5lRGl2IiwiZmxleFNocmluayIsInBhZGRpbmdCb3R0b20iLCJ0cmFuc2xhdGlvbldvcmRzIiwiZXhwb3J0cyIsInRyYW5zbGF0aW9uTm90ZXMiLCJtYXhpbXVtU2VsZWN0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJDaGVja2VyIiwiX3JlZiIsIl90YXJnZXRMYW5ndWFnZURldGFpbCIsIl90YXJnZXRMYW5ndWFnZURldGFpbDIiLCJfdGFyZ2V0X2xhbmd1YWdlJGJvb2siLCJhbGlnbmVkR2xCaWJsZSIsImJpYmxlc18iLCJiaWJsZXMiLCJjaGFuZ2VkQ3VycmVudENoZWNrIiwiY2hhbmdlVGFyZ2V0VmVyc2UiLCJjaGVja2luZ0RhdGEiLCJjaGVja1R5cGUiLCJjb250ZXh0SWQiLCJnZXRMZXhpY29uRGF0YSIsImdsV29yZHNEYXRhIiwiaW5pdGlhbFNldHRpbmdzIiwic2F2ZUNoZWNraW5nRGF0YSIsInNhdmVTZXR0aW5ncyIsInNob3dEb2N1bWVudCIsInN0eWxlcyIsInRhcmdldEJpYmxlXyIsInRhcmdldEJpYmxlIiwidGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzIiwidHJhbnNsYXRlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwYW5lU2V0dGluZ3MiLCJwYW5lS2V5U2V0dGluZ3MiLCJ0b29sc1NldHRpbmdzIiwibWFuaWZlc3QiLCJfdXNlU3RhdGUyIiwic2V0dGluZ3MiLCJfc2V0U2V0dGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNldEJpYmxlcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2V0VGFyZ2V0QmlibGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInRlbXBDaGVja2luZ0RhdGEiLCJzZXRUZW1wQ2hlY2tpbmdEYXRhIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJsb2NhbENoZWNraW5nRGF0YSIsInNldExvY2FsQ2hlY2tpbmdEYXRhIiwiX3VzZVN0YXRlMSIsImFsaWduZWRHTFRleHQiLCJhcnRpY2xlIiwiY3VycmVudENoZWNrIiwiY3VycmVudENoZWNraW5nRGF0YSIsImdyb3VwVGl0bGUiLCJncm91cFBocmFzZSIsImdyb3Vwc0RhdGEiLCJncm91cHNJbmRleCIsImlzQ29tbWVudENoYW5nZWQiLCJpc1ZlcnNlQ2hhbmdlZCIsIm1vZGUiLCJuZXdWZXJzZVRleHQiLCJwb3BvdmVyUHJvcHMiLCJwb3BvdmVyVmlzaWJpbGl0eSIsInNob3dIZWxwc01vZGFsIiwic2hvd0hlbHBzIiwibmV3VGFncyIsInZlcnNlVGV4dCIsIl91c2VTdGF0ZTEwIiwic3RhdGUiLCJfc2V0U3RhdGUiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiZ2V0Q3VycmVudFZhbHVlRm9yIiwia2V5IiwiZ2V0VGVtcFZhbHVlRm9yIiwiY3VycmVudFNlbGVjdGlvbnMiLCJ0ZW1wU2VsZWN0aW9ucyIsInRlbXBOb3RoaW5nVG9TZWxlY3QiLCJjdXJyZW50Tm90aGluZ1RvU2VsZWN0IiwiZ3JvdXBzRGF0YUxvYWRlZCIsInVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zIiwibmV3U2VsZWN0aW9ucyIsIm5vdGhpbmdUb1NlbGVjdCIsIm5vU2VsZWN0aW9ucyIsIm5ld01vZGUiLCJ1c2VFZmZlY3QiLCJoYXZlRGF0YSIsImdyb3Vwc0RhdGFJbml0aWFsaXplZCIsImZsYXR0ZW5lZEdyb3VwRGF0YSIsImdyb3VwRGF0YUhlbHBlcnMiLCJmbGF0dGVuR3JvdXBEYXRhIiwicGFyc2VUblRvSW5kZXgiLCJwYXJzZVR3VG9JbmRleCIsImNoZWNrIiwiZmluZENoZWNrIiwibW9kaWZpZWQiLCJ2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MiLCJpbnZhbGlkYXRlZCIsImNvbmNhdCIsIl9zYXZlQ2hlY2tpbmdEYXRhIiwidXBkYXRlQ29udGV4dCIsInNlbGVjdGlvbnMiLCJuZXdDaGVjayIsImdyb3Vwc0luZGV4XyIsInVuZGVmaW5lZCIsInJlZmVyZW5jZSIsInZlcnNlSGVscGVycyIsImdldFZlcnNlVGV4dEZyb21CaWJsZSIsImdldEFsaWduZWRHTFRleHQiLCJnZXRUaXRsZUZyb21JbmRleCIsImdyb3VwSWQiLCJvY2N1cnJlbmNlTm90ZSIsImdldFBocmFzZUZyb21UdyIsImdyb3VwRGF0YSIsImFydGljbGVzIiwiX2FydGljbGUiLCJhcnRpY2xlSWQiLCJncm91cHNJZHMiLCJfaSIsIl9ncm91cHNJZHMiLCJfZ3JvdXBJZCIsImdyb3VwIiwiY3VycmVudEFydGljbGVNYXJrZG93biIsImNvbnZlcnRNYXJrZG93bkxpbmtzIiwiZ2F0ZXdheUxhbmd1YWdlSWQiLCJjb21tZW50VGV4dCIsImJvb2tJZCIsImJvb2siLCJpZCIsImJvb2tOYW1lIiwiYm9va0RldGFpbHMiLCJ0YXJnZXRMYW5ndWFnZUZvbnQiLCJwcm9qZWN0Rm9udCIsImN1cnJlbnRDb250ZXh0SWQiLCJzZXRUb29sU2V0dGluZ3MiLCJOQU1FU1BBQ0UiLCJmaWVsZE5hbWUiLCJmaWVsZFZhbHVlIiwiX3Rvb2xzU2V0dGluZ3MiLCJjb21wb25lbnRTZXR0aW5ncyIsInNldFNldHRpbmdzIiwiX3NhdmVTZXR0aW5ncyIsIl9zZXR0aW5ncyIsIm5ld1NldHRpbmdzIiwiX3BhbmVTZXR0aW5ncyIsIl9wYW5lU2V0dGluZyIsIl9wYW5lS2V5U2V0dGluZ3MiLCJfaTIiLCJfa2V5cyIsImRvU2F2ZSIsInNldFRvb2xTZXR0aW5nc1NjcmlwdHVyZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGFuZ3VhZ2VJZCIsImJpYmxlSWQiLCJvd25lciIsImVyciIsImFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCIsIl9tYW5pZmVzdCIsImFwcFNldHRpbmdzIiwiX2FwcFNldHRpbmdzIiwib3BlbkFsZXJ0RGlhbG9nIiwiY2hlY2tJZlZlcnNlQ2hhbmdlZCIsIl9uZXdWZXJzZVRleHQiLCJ0YXJnZXQiLCJfaXNWZXJzZUNoYW5nZWQiLCJoYW5kbGVFZGl0VmVyc2UiLCJjYW5jZWxFZGl0VmVyc2UiLCJzYXZlRWRpdFZlcnNlIiwiX2N1cnJlbnRDb250ZXh0SWQkcmVmIiwiY2hhcHRlciIsInZlcnNlIiwidmVyc2VSZWYiLCJ2ZXJzZVNwYW4iLCJiZWZvcmUiLCJlZGl0VGFyZ2V0VmVyc2UiLCJoYW5kbGVHb1RvTmV4dCIsIm5leHRDaGVjayIsImZpbmROZXh0Q2hlY2siLCJjaGFuZ2VDdXJyZW50Q2hlY2tfIiwiaGFuZGxlR29Ub1ByZXZpb3VzIiwicHJldmlvdXNDaGVjayIsImZpbmRQcmV2aW91c0NoZWNrIiwiaGFuZGxlVGFnc0NoZWNrYm94IiwidGFnIiwiY3VycmVudFRhZ3MiLCJ0YWdJbmRleCIsImluZGV4T2YiLCJfbmV3VGFncyIsImNvcHkiLCJzcGxpY2UiLCJ2YWxpZGF0ZVNlbGVjdGlvbnMiLCJ2ZXJzZVRleHRfIiwic2VsZWN0aW9uc18iLCJzZWxlY3Rpb25zSGVscGVycyIsInZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zIiwidW5maWx0ZXJlZFZlcnNlVGV4dCIsInVzZU1lbW8iLCJ1bmZpbHRlcmVkVmVyc2VUZXh0XyIsIl90YXJnZXRCaWJsZSRjaGFwdGVyIiwidmVyc2VEYXRhIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJzZXRUZW1wQ2hlY2tpbmdJdGVtIiwibmV3Q2hlY2tpbmdEYXRhIiwiY2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZSIsInRvZ2dsZU5vdGhpbmdUb1NlbGVjdCIsInNlbGVjdCIsIm5ld0NvbnRleHQiLCJub0NoZWNrIiwibmV3Q29udGV4dElkIiwic2VsZWN0aW9uc1VuY2hhbmdlZCIsImlzRXF1YWwiLCJkaXJlY3Rpb24iLCJib29rbWFya0VuYWJsZWQiLCJpc1ZlcnNlRWRpdGVkIiwiaXNWZXJzZUludmFsaWRhdGVkIiwiX3NhdmVTZWxlY3Rpb24iLCJfY2xvbmVEYXRhRm9yU2F2aW5nIiwiY2xvbmVEYXRhRm9yU2F2aW5nIiwiY2hlY2tJbkdyb3Vwc0RhdGEiLCJfY3VycmVudENoZWNrIiwiX25ld0NoZWNraW5nRGF0YSIsImRlbGV0ZVRlbXBDaGVja2luZ0RhdGEiLCJ1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YSIsIl9ncm91cHNEYXRhIiwiXyIsImNsb25lRGVlcCIsImNhdGVnb3J5IiwibmV3Q2hlY2tEYXRhIiwiX2kzIiwiX09iamVjdCRrZXlzIiwibmV3Q2hlY2tpbmdWYWx1ZSIsIl9zYXZlRGF0YSIsIm5ld0RhdGEiLCJfY2xvbmVEYXRhRm9yU2F2aW5nMiIsIl9pNCIsIl9PYmplY3Qka2V5czIiLCJjaGFuZ2VkRGF0YSIsIl9pNSIsIl9PYmplY3Qka2V5czMiLCJfdGVtcENoZWNraW5nRGF0YSIsImNhbmNlbFNlbGVjdGlvbiIsImNsZWFyU2VsZWN0aW9uIiwidG9nZ2xlQm9va21hcmsiLCJyZW1pbmRlcnMiLCJjaGFuZ2VNb2RlIiwiY2hlY2tJZkNvbW1lbnRDaGFuZ2VkIiwibmV3Y29tbWVudCIsIm9sZGNvbW1lbnQiLCJjYW5jZWxDb21tZW50Iiwic2F2ZUNvbW1lbnQiLCJuZXdDb21tZW50IiwiY29tbWVudHMiLCJoYW5kbGVDb21tZW50IiwicHJldmVudERlZmF1bHQiLCJyZWFkeVRvRGlzcGxheUNoZWNrZXIiLCJnZXRMZXhpY29uRGF0YV8iLCJsZXhpY29uSWQiLCJlbnRyeUlkIiwibGV4aWNvbkRhdGEiLCJvbkNsb3NlUG9wb3ZlciIsInNob3dQb3BvdmVyIiwidGl0bGUiLCJib2R5VGV4dCIsInBvc2l0aW9uQ29vcmQiLCJ0b2dnbGVIZWxwc01vZGFsIiwiX3Nob3dIZWxwc01vZGFsIiwidG9nZ2xlSGVscHMiLCJfc2hvd0hlbHBzIiwic2F2ZUJpYmxlVG9LZXkiLCJrZXlHcm91cCIsIm9sZFZlcnNlVGV4dCIsIl9iaWJsZXMiLCJfdGFyZ2V0QmlibGUiLCJ0YXJnZXRCb29rIiwidGFyZ2V0Q2hhcHRlciIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJjdXJyZW50Q2hhcHRlckRhdGEiLCJjdXJyZW50VmVyc2VEYXRhIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwiQWxpZ25tZW50SGVscGVycyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzIiwidXBkYXRlU2V0dGluZ3MiLCJyZW1vdmVVc2ZtTWFya2VycyIsInZlcnNlRWRpdHMiLCJ2YWxpZGF0ZUFsbFNlbGVjdGlvbnNGb3JWZXJzZSIsIl9jdXJyZW50Q2hlY2skY29udGV4dCIsIl9jaGVjayRjb250ZXh0SWQiLCJjdXJyZW50Q2hlY2tJZCIsImNoZWNrSWQiLCJuZXdCaWJsZXMiLCJfdGFyZ2V0QmlibGUkbWFuaWZlc3QiLCJfdGFyZ2V0QmlibGUkbWFuaWZlc3QyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImJpYmxlIiwiTlRfT1JJR19MQU5HIiwiT1RfT1JJR19MQU5HIiwiaW5pdGlhbFBhbmVTZXR0aW5ncyIsImxhbmdLZXkiLCJwYW5lIiwibGFuZ3VhZ2VfbmFtZSIsImR1Ymxpbl9jb3JlIiwibGFuZ3VhZ2UiLCJfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSIsImxhbmciLCJnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIiwidGFyZ2V0X2xhbmd1YWdlIiwicHJvamVjdCIsImV4cGFuZGVkU2NyaXB0dXJlUGFuZVRpdGxlIiwic3R5bGVQcm9wcyIsIl9jaGVja2VyU3R5bGVzIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwiY2hhbmdlQ3VycmVudENvbnRleHRJZCIsImNvbXBsZXhTY3JpcHRGb250cyIsImN1cnJlbnRQYW5lU2V0dGluZ3MiLCJlZGl0VmVyc2VSZWYiLCJnZXRBdmFpbGFibGVTY3JpcHR1cmVQYW5lU2VsZWN0aW9ucyIsIm1ha2VTdXJlQmlibGVzTG9hZGVkRm9yVG9vbCIsInByb2plY3REZXRhaWxzUmVkdWNlciIsIm9uRXhwYW5kZWRTY3JpcHR1cmVQYW5lU2hvdyIsIm9uTGlua0NsaWNrIiwib25TZWVNb3JlQ2xpY2siLCJwaHJhc2UiLCJzZWVNb3JlTGFiZWwiLCJzaG93U2VlTW9yZUJ1dHRvbiIsImRpYWxvZ01vZGFsVmlzaWJpbGl0eSIsImhhbmRsZU9wZW5EaWFsb2ciLCJoYW5kbGVDbG9zZURpYWxvZyIsImhhbmRsZVNraXAiLCJsb2NhbE5vdGhpbmdUb1NlbGVjdCIsInNhdmVTZWxlY3Rpb24iLCJ0YWdzIiwibW9kYWxBcnRpY2xlIiwiZXhwYW5kZWRIZWxwc0J1dHRvbkhvdmVyVGV4dCIsIm1vZGFsVGl0bGUiLCJpc1Nob3dIZWxwc0V4cGFuZGVkIiwib3BlbkV4cGFuZGVkSGVscHNNb2RhbCIsInNpZGViYXJUb2dnbGUiLCJpc1Nob3dIZWxwc1NpZGViYXIiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYm9vbCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvQ2hlY2tlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogQGZpbGUgQ2hlY2tlci5qc1xuICpcbiAqIEBzeW5vcHNpc1xuICogVGhpcyBpcyB0aGUgbWFpbiBjaGVja2luZyBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhbiBpbnRlZ3JhdGVkIGludGVyZmFjZSBmb3IgQmlibGUgdHJhbnNsYXRpb24gY2hlY2tpbmcuXG4gKiBJdCBzdXBwb3J0cyBib3RoIFRyYW5zbGF0aW9uIE5vdGVzIChUTikgYW5kIFRyYW5zbGF0aW9uIFdvcmRzIChUVykgY2hlY2tpbmcgd29ya2Zsb3dzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIENoZWNrZXIgY29tcG9uZW50IGlzIGEgY29tcHJlaGVuc2l2ZSB0b29sIGZvciBtYW5hZ2luZyBhbmQgcHJlc2VudGluZyBCaWJsZSBjaGVja2luZyBkYXRhIGFuZCB0cmFuc2xhdGlvbnMuXG4gKiBJdCBoYW5kbGVzOlxuICogLSBMb2FkaW5nIGFuZCBkaXNwbGF5aW5nIGNoZWNraW5nIGRhdGEgKHRyYW5zbGF0aW9uIG5vdGVzIG9yIHRyYW5zbGF0aW9uIHdvcmRzKVxuICogLSBNYW5hZ2luZyB1c2VyIHNlbGVjdGlvbnMgYW5kIGFubm90YXRpb25zIGluIHZlcnNlc1xuICogLSBQcm92aWRpbmcgbXVsdGktcGFuZSBTY3JpcHR1cmUgdmlld2luZyB3aXRoIHZhcmlvdXMgQmlibGUgcmVzb3VyY2VzXG4gKiAtIEhhbmRsaW5nIHZlcnNlIGVkaXRpbmcgYW5kIHZhbGlkYXRpb25cbiAqIC0gTWFuYWdpbmcgY29tbWVudHMsIGJvb2ttYXJrcywgYW5kIHRhZ3MgZm9yIGNoZWNrc1xuICogLSBOYXZpZ2F0aW5nIGJldHdlZW4gY2hlY2tzIChuZXh0L3ByZXZpb3VzKVxuICogLSBEaXNwbGF5aW5nIHRyYW5zbGF0aW9uIGhlbHBzIGluIGFuIGludGVncmF0ZWQgc2lkZWJhclxuICogLSBQZXJzaXN0aW5nIHVzZXIgc2V0dGluZ3MgYW5kIGNoZWNraW5nIHByb2dyZXNzXG4gKlxuICogVGhlIGNvbXBvbmVudCBtYWludGFpbnMgY29tcGxleCBzdGF0ZSBpbmNsdWRpbmc6XG4gKiAtIEN1cnJlbnQgY2hlY2sgZGF0YSBhbmQgY29udGV4dFxuICogLSBVc2VyIHNlbGVjdGlvbnMgYW5kIHRlbXBvcmFyeSBjaGFuZ2VzXG4gKiAtIFBhbmUgc2V0dGluZ3MgZm9yIFNjcmlwdHVyZSBkaXNwbGF5XG4gKiAtIFRvb2wtc3BlY2lmaWMgc2V0dGluZ3NcbiAqIC0gVUkgc3RhdGUgKG1vZGVzLCBtb2RhbHMsIHBvcG92ZXJzKVxuICpcbiAqIEByZXF1aXJlbWVudHNcbiAqIC0gUmVhY3QgMTguMy4xK1xuICogLSB3b3JkLWFsaWduZXItbGliIGZvciB2ZXJzZSBhbmQgYWxpZ25tZW50IGhlbHBlcnNcbiAqIC0gZGVlcC1lcXVhbCBmb3Igb2JqZWN0IGNvbXBhcmlzb25cbiAqIC0gbG9kYXNoIGZvciBkZWVwIGNsb25pbmdcbiAqIC0gTWF0ZXJpYWwtVUkgY29tcG9uZW50cyBmb3IgVUkgZWxlbWVudHNcbiAqXG4gKiBAZGVwZW5kZW5jaWVzXG4gKiAtIEdyb3VwTWVudUNvbXBvbmVudDogTmF2aWdhdGlvbiBtZW51IGZvciBjaGVja3NcbiAqIC0gQ2hlY2tJbmZvQ2FyZDogRGlzcGxheXMgY2hlY2sgdGl0bGUgYW5kIHBocmFzZVxuICogLSBTY3JpcHR1cmVQYW5lOiBNdWx0aS1wYW5lIFNjcmlwdHVyZSB2aWV3ZXJcbiAqIC0gVHJhbnNsYXRpb25IZWxwczogU2lkZWJhciBmb3IgdHJhbnNsYXRpb24gaGVscCBhcnRpY2xlc1xuICogLSBWZXJzZUNoZWNrOiBNYWluIGNoZWNraW5nIGludGVyZmFjZSBmb3IgdmVyc2VzXG4gKiAtIFBvcG92ZXJDb250YWluZXI6IERpc3BsYXlzIGNvbnRleHR1YWwgaW5mb3JtYXRpb25cbiAqL1xuaW1wb3J0IHsgcmVtb3ZlVXNmbU1hcmtlcnMgfSBmcm9tICcuLi91dGlscy91c2ZtSGVscGVycydcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MgfSBmcm9tICcuLi91dGlscy9zZWxlY3Rpb25IZWxwZXInXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgR3JvdXBNZW51Q29tcG9uZW50IGZyb20gJy4vR3JvdXBNZW51Q29tcG9uZW50J1xuaW1wb3J0IHtcbiAgZ3JvdXBEYXRhSGVscGVycyxcbiAgc2VsZWN0aW9uc0hlbHBlcnMsXG4gIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMsXG4gIHZlcnNlSGVscGVycyxcbiAgQWxpZ25tZW50SGVscGVycyxcbiAgXG59IGZyb20gJ3dvcmQtYWxpZ25lci1saWInXG5pbXBvcnQgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHtcbiAgZmluZENoZWNrLFxuICBmaW5kTmV4dENoZWNrLFxuICBmaW5kUHJldmlvdXNDaGVjayxcbiAgZ2V0QWxpZ25lZEdMVGV4dCxcbiAgZ2V0UGhyYXNlRnJvbVR3LFxuICBnZXRUaXRsZUZyb21JbmRleCxcbiAgXG4gIHBhcnNlVHdUb0luZGV4XG59IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNsYXRpb25IZWxwcy90d0FydGljbGVIZWxwZXJzJ1xuaW1wb3J0IENoZWNrSW5mb0NhcmQgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9DaGVja0luZm9DYXJkJ1xuaW1wb3J0IHsgcGFyc2VUblRvSW5kZXggfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zbGF0aW9uSGVscHMvdG5BcnRpY2xlSGVscGVycydcbmltcG9ydCBTY3JpcHR1cmVQYW5lIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvU2NyaXB0dXJlUGFuZSdcbmltcG9ydCBQb3BvdmVyQ29udGFpbmVyIGZyb20gJy4uL2NvbnRhaW5lcnMvUG9wb3ZlckNvbnRhaW5lcidcbmltcG9ydCB7IE5UX09SSUdfTEFORywgT1RfT1JJR19MQU5HIH0gZnJvbSAnLi4vY29tbW9uL0Jvb2tzT2ZUaGVCaWJsZSdcbmltcG9ydCBjb21wbGV4U2NyaXB0Rm9udHMgZnJvbSAnLi4vY29tbW9uL2NvbXBsZXhTY3JpcHRGb250cydcbmltcG9ydCBUcmFuc2xhdGlvbkhlbHBzIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvVHJhbnNsYXRpb25IZWxwcydcbmltcG9ydCAqIGFzIHRIZWxwc0hlbHBlcnMgZnJvbSAnLi4vaGVscGVycy90SGVscHNIZWxwZXJzJ1xuaW1wb3J0IFZlcnNlQ2hlY2sgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9WZXJzZUNoZWNrJ1xuaW1wb3J0IHsgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSB9IGZyb20gJy4uL2hlbHBlcnMvY2hlY2tJbmZvQ2FyZEhlbHBlcnMnXG5cbmNvbnN0IGxvY2FsU3R5bGVzID0ge1xuICBjb250YWluZXJEaXY6e1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICB3aWR0aDogJzk3dncnLFxuICAgIGhlaWdodDogJzY1dncnLFxuICB9LFxuICBjZW50ZXJEaXY6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgd2lkdGg6ICc4NSUnLFxuICAgIG92ZXJmbG93WDogJ2F1dG8nLFxuICAgIG1hcmdpbkxlZnQ6ICcxMHB4JyxcbiAgfSxcbiAgc2NyaXB0dXJlUGFuZURpdjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4U2hyaW5rOiAnMCcsXG4gICAgaGVpZ2h0OiAnMjUwcHgnLFxuICAgIHBhZGRpbmdCb3R0b206ICcyMHB4JyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2xhdGlvbldvcmRzID0gJ3RyYW5zbGF0aW9uV29yZHMnXG5leHBvcnQgY29uc3QgdHJhbnNsYXRpb25Ob3RlcyA9ICd0cmFuc2xhdGlvbk5vdGVzJ1xuY29uc3QgbWF4aW11bVNlbGVjdGlvbnMgPSAxMFxuXG5jb25zb2xlLmxvZygnQ2hlY2tlci5qcyAtIHN0YXJ0dXAnKVxuY29uc3QgbmFtZSA9ICdDaGVja2VyJ1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgQ2hlY2tlclxuICogVGhlIENoZWNrZXIgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhbmQgcHJlc2VudGluZyBCaWJsZSBjaGVja2luZyBkYXRhIGFuZCB0cmFuc2xhdGlvbnMuXG4gKiBJdCBoYW5kbGVzIHN0YXRlIHVwZGF0ZXMsIHNldHRpbmdzIG1hbmFnZW1lbnQsIGFuZCBlbnN1cmVzIHRoZSBuZWNlc3NhcnkgZGF0YSBpcyBsb2FkZWQgYW5kIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycyAtIEFuIG9iamVjdCB3aXRoIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBDaGVja2VyIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmFsaWduZWRHbEJpYmxlIC0gVGhlIGFsaWduZWQgR2F0ZXdheSBMYW5ndWFnZSBCaWJsZSBkYXRhIHVzZWQgZm9yIHRyYW5zbGF0aW9ucy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmJpYmxlcyAtIEJpYmxlIGRhdGEgZm9yIHZhcmlvdXMgbGFuZ3VhZ2VzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5jaGFuZ2VkQ3VycmVudENoZWNrIC0gY2FsbGJhY2sgdG8gbm90aWZ5IG9mIGNoYW5nZXMgaW4gY29udGV4dC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuY2hhbmdlVGFyZ2V0VmVyc2UgLSBBIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY3VycmVudCB2ZXJzZSBiZWluZyBjaGVja2VkLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuY2hlY2tpbmdEYXRhIC0gRGF0YSByZWxhdGVkIHRvIGNoZWNrcyAoZS5nLiwgdHJhbnNsYXRpb24gbm90ZXMgb3IgdHJhbnNsYXRpb24gd29yZHMpLlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtZXRlcnMuY2hlY2tUeXBlIC0gVGhlIHR5cGUgb2YgY2hlY2sgYmVpbmcgcGVyZm9ybWVkIChlLmcuLCB0cmFuc2xhdGlvbiBub3RlcywgdHJhbnNsYXRpb24gd29yZHMpLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuY29udGV4dElkIC0gT2JqZWN0IGNvbnRhaW5pbmcgbWV0YWRhdGEgYWJvdXQgdGhlIGN1cnJlbnQgZ3JvdXAvdmVyc2UgYmVpbmcgd29ya2VkIG9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5nZXRMZXhpY29uRGF0YSAtIEZ1bmN0aW9uIHRvIHJldHJpZXZlIGxleGljb24gZGF0YS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmdsV29yZHNEYXRhIC0gRGF0YSByZWxhdGVkIHRvIEdhdGV3YXkgTGFuZ3VhZ2Ugd29yZHMgYW5kIGFsaWdubWVudCBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmluaXRpYWxTZXR0aW5ncyAtIFRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciB0aGUgQ2hlY2tlciBjb21wb25lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnNhdmVDaGVja2luZ0RhdGEgLSBGdW5jdGlvbiB0byBzYXZlIHRoZSBtb2RpZmllZCBjaGVja2luZyBkYXRhLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zYXZlU2V0dGluZ3MgLSBGdW5jdGlvbiB0byBwZXJzaXN0IHVzZXIncyBjb21wb25lbnQgc2V0dGluZ3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnNob3dEb2N1bWVudCAtIEZ1bmN0aW9uIHRvIGRpc3BsYXkgYSBkb2N1bWVudCBpbiB0aGUgaW50ZXJmYWNlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuc3R5bGVzIC0gU3R5bGluZyBpbmZvcm1hdGlvbiB0byBjdXN0b21pemUgdGhlIGNvbXBvbmVudCdzIGFwcGVhcmFuY2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy50YXJnZXRCaWJsZSAtIFRoZSB0YXJnZXQgQmlibGUgZGF0YSBmb3IgdGhlIHdvcmtpbmcgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy50YXJnZXRMYW5ndWFnZURldGFpbHMgLSBNZXRhZGF0YSBhYm91dCB0aGUgdGFyZ2V0IGxhbmd1YWdlLCBpbmNsdWRpbmcgYm9vayBhbmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMudHJhbnNsYXRlIC0gQSBmdW5jdGlvbiB1c2VkIGZvciBzdHJpbmcgdHJhbnNsYXRpb25zIGluIHRoZSBVSS5cbiAqL1xuY29uc3QgQ2hlY2tlciA9ICh7XG4gIGFsaWduZWRHbEJpYmxlLFxuICBiaWJsZXM6IGJpYmxlc18sXG4gIGNoYW5nZWRDdXJyZW50Q2hlY2ssXG4gIGNoYW5nZVRhcmdldFZlcnNlLFxuICBjaGVja2luZ0RhdGEsXG4gIGNoZWNrVHlwZSxcbiAgY29udGV4dElkLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ2xXb3Jkc0RhdGEsXG4gIGluaXRpYWxTZXR0aW5ncyxcbiAgc2F2ZUNoZWNraW5nRGF0YSxcbiAgc2F2ZVNldHRpbmdzLFxuICBzaG93RG9jdW1lbnQsXG4gIHN0eWxlcyxcbiAgdGFyZ2V0QmlibGU6IHRhcmdldEJpYmxlXyxcbiAgdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzLFxuICB0cmFuc2xhdGUsXG59KSA9PiB7XG4gIC8vIE1haW4gc2V0dGluZ3Mgc3RhdGUgLSBpbmNsdWRlcyBwYW5lIGNvbmZpZ3VyYXRpb24sIHRvb2wgc2V0dGluZ3MsIGFuZCBtYW5pZmVzdCBkYXRhXG4gIGNvbnN0IFtzZXR0aW5ncywgX3NldFNldHRpbmdzXSA9IHVzZVN0YXRlKHtcbiAgICBwYW5lU2V0dGluZ3M6IFtdLFxuICAgIHBhbmVLZXlTZXR0aW5nczoge30sXG4gICAgdG9vbHNTZXR0aW5nczoge30sXG4gICAgbWFuaWZlc3Q6IHt9XG4gIH0pXG4gIGNvbnN0IHtcbiAgICBwYW5lU2V0dGluZ3MsXG4gICAgcGFuZUtleVNldHRpbmdzLFxuICAgIHRvb2xzU2V0dGluZ3MsXG4gICAgbWFuaWZlc3RcbiAgfSA9IHNldHRpbmdzXG5cbiAgLy8gQmlibGUgZGF0YSBvcmdhbml6ZWQgYnkgbGFuZ3VhZ2UgYW5kIElEXG4gIGNvbnN0IFtiaWJsZXMsIHNldEJpYmxlc10gPSB1c2VTdGF0ZSh7IH0pXG5cbiAgLy8gQ3VycmVudCB0YXJnZXQgQmlibGUgYmVpbmcgY2hlY2tlZFxuICBjb25zdCBbdGFyZ2V0QmlibGUsIHNldFRhcmdldEJpYmxlXSA9IHVzZVN0YXRlKHRhcmdldEJpYmxlXylcblxuICAvLyBUZW1wb3JhcnkgY2hlY2tpbmcgZGF0YSBmb3IgdW5zYXZlZCBjaGFuZ2VzXG4gIGNvbnN0IFt0ZW1wQ2hlY2tpbmdEYXRhLCBzZXRUZW1wQ2hlY2tpbmdEYXRhXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgLy8gTG9jYWwgY2hlY2tpbmcgZGF0YSBmb3IgY3VycmVudCBzZXNzaW9uXG4gIGNvbnN0IFtsb2NhbENoZWNraW5nRGF0YSwgc2V0TG9jYWxDaGVja2luZ0RhdGFdID0gdXNlU3RhdGUobnVsbClcblxuICAvLyBNYWluIGNvbXBvbmVudCBzdGF0ZVxuICBjb25zdCBbc3RhdGUsIF9zZXRTdGF0ZV0gPSB1c2VTdGF0ZSh7XG4gICAgYWxpZ25lZEdMVGV4dDogJycsIC8vIEdhdGV3YXkgTGFuZ3VhZ2UgdGV4dCBhbGlnbmVkIHRvIG9yaWdpbmFsXG4gICAgYXJ0aWNsZTogbnVsbCwgLy8gQ3VycmVudCB0cmFuc2xhdGlvbiBoZWxwIGFydGljbGVcbiAgICBjdXJyZW50Q2hlY2s6IG51bGwsIC8vIEN1cnJlbnQgY2hlY2sgYmVpbmcgd29ya2VkIG9uXG4gICAgY3VycmVudENoZWNraW5nRGF0YTogbnVsbCwgLy8gQWxsIGNoZWNraW5nIGRhdGEgZm9yIGN1cnJlbnQgYm9va1xuICAgIGdyb3VwVGl0bGU6ICcnLCAvLyBUaXRsZSBvZiBjdXJyZW50IGNoZWNrIGdyb3VwXG4gICAgZ3JvdXBQaHJhc2U6ICcnLCAvLyBQaHJhc2Ugb3Igb2NjdXJyZW5jZSBub3RlIGZvciBjdXJyZW50IGNoZWNrXG4gICAgZ3JvdXBzRGF0YTogbnVsbCwgLy8gRmxhdHRlbmVkIGdyb3VwIGRhdGEgZm9yIGFsbCBjaGVja3NcbiAgICBncm91cHNJbmRleDogbnVsbCwgLy8gSW5kZXggb2YgYWxsIGNoZWNrIGdyb3Vwc1xuICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLCAvLyBXaGV0aGVyIGNvbW1lbnQgaGFzIHVuc2F2ZWQgY2hhbmdlc1xuICAgIGlzVmVyc2VDaGFuZ2VkOiBmYWxzZSwgLy8gV2hldGhlciB2ZXJzZSBoYXMgdW5zYXZlZCBjaGFuZ2VzXG4gICAgbW9kZTogJ2RlZmF1bHQnLCAvLyBDdXJyZW50IFVJIG1vZGUgKGRlZmF1bHQsIHNlbGVjdCwgZWRpdCwgY29tbWVudClcbiAgICBuZXdWZXJzZVRleHQ6IG51bGwsIC8vIE5ldyB2ZXJzZSB0ZXh0IGR1cmluZyBlZGl0aW5nXG4gICAgcG9wb3ZlclByb3BzOiB7XG4gICAgICBwb3BvdmVyVmlzaWJpbGl0eTogZmFsc2VcbiAgICB9LFxuICAgIHNob3dIZWxwc01vZGFsOiBmYWxzZSwgLy8gV2hldGhlciBoZWxwcyBtb2RhbCBpcyBzaG93blxuICAgIHNob3dIZWxwczogdHJ1ZSwgLy8gV2hldGhlciBoZWxwcyBzaWRlYmFyIGlzIHNob3duXG4gICAgbmV3VGFnczogbnVsbCwgLy8gTmV3IHRhZ3MgYmVpbmcgYWRkZWRcbiAgICB2ZXJzZVRleHQ6ICcnLCAvLyBDdXJyZW50IHZlcnNlIHRleHRcbiAgfSlcblxuICBjb25zdCB7XG4gICAgYWxpZ25lZEdMVGV4dCxcbiAgICBhcnRpY2xlLFxuICAgIGN1cnJlbnRDaGVjayxcbiAgICBjdXJyZW50Q2hlY2tpbmdEYXRhLFxuICAgIGdyb3VwVGl0bGUsXG4gICAgZ3JvdXBQaHJhc2UsXG4gICAgZ3JvdXBzRGF0YSxcbiAgICBncm91cHNJbmRleCxcbiAgICBpc0NvbW1lbnRDaGFuZ2VkLFxuICAgIGlzVmVyc2VDaGFuZ2VkLFxuICAgIG1vZGUsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHBvcG92ZXJQcm9wcyxcbiAgICBzaG93SGVscHNNb2RhbCxcbiAgICBzaG93SGVscHMsXG4gICAgbmV3VGFncyxcbiAgICB2ZXJzZVRleHQsXG4gIH0gPSBzdGF0ZVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBzdGF0ZSBvYmplY3Qgd2l0aCBuZXcgdmFsdWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZSAtIE9iamVjdCBjb250YWluaW5nIHN0YXRlIHByb3BlcnRpZXMgdG8gdXBkYXRlXG4gICAqL1xuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIF9zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHNhdmVkIHZhbHVlIGZvciBhIGNoZWNrIHByb3BlcnR5XG4gICAqIEZhbGxzIGJhY2sgdG8gbG9jYWwgY2hlY2tpbmcgZGF0YSBpZiBhdmFpbGFibGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybnMgeyp9IEN1cnJlbnQgdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRWYWx1ZUZvcihrZXkpIHtcbiAgICBpZiAobG9jYWxDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiBsb2NhbENoZWNraW5nRGF0YVtrZXldXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50Q2hlY2s/LltrZXldXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcG9yYXJ5ICh1bnNhdmVkKSB2YWx1ZSBmb3IgYSBjaGVjayBwcm9wZXJ0eVxuICAgKiBGYWxscyBiYWNrIHRocm91Z2ggbG9jYWwgY2hlY2tpbmcgZGF0YSB0byBjdXJyZW50IGNoZWNrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEByZXR1cm5zIHsqfSBUZW1wb3JhcnkgdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFRlbXBWYWx1ZUZvcihrZXkpIHtcbiAgICBpZiAodGVtcENoZWNraW5nRGF0YT8uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgcmV0dXJuIHRlbXBDaGVja2luZ0RhdGFba2V5XVxuICAgIH1cbiAgICByZXR1cm4gZ2V0Q3VycmVudFZhbHVlRm9yKGtleSlcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb25zID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdzZWxlY3Rpb25zJykgfHwgW11cbiAgY29uc3QgdGVtcFNlbGVjdGlvbnMgPSBnZXRUZW1wVmFsdWVGb3IoJ3NlbGVjdGlvbnMnKSB8fCBbXVxuICBjb25zdCB0ZW1wTm90aGluZ1RvU2VsZWN0ID0gZ2V0VGVtcFZhbHVlRm9yKCdub3RoaW5nVG9TZWxlY3QnKVxuICBjb25zdCBjdXJyZW50Tm90aGluZ1RvU2VsZWN0ID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdub3RoaW5nVG9TZWxlY3QnKVxuICBjb25zdCBncm91cHNEYXRhTG9hZGVkID0gISFncm91cHNEYXRhXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFVJIG1vZGUgYmFzZWQgb24gc2VsZWN0aW9ucyBzdGF0ZVxuICAgKiBTd2l0Y2hlcyB0byAnc2VsZWN0JyBtb2RlIGlmIG5vIHNlbGVjdGlvbnMgYW5kIG5vdGhpbmcgaXMgbWFya2VkIGFzIHVuc2VsZWN0YWJsZVxuICAgKiBAcGFyYW0ge0FycmF5fSBuZXdTZWxlY3Rpb25zIC0gQ3VycmVudCBzZWxlY3Rpb25zIGFycmF5XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm90aGluZ1RvU2VsZWN0IC0gV2hldGhlciB2ZXJzZSBpcyBtYXJrZWQgYXMgaGF2aW5nIG5vdGhpbmcgdG8gc2VsZWN0XG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVNb2RlRm9yU2VsZWN0aW9ucyhuZXdTZWxlY3Rpb25zLCBub3RoaW5nVG9TZWxlY3QpIHtcbiAgICBjb25zdCBub1NlbGVjdGlvbnMgPSAoIW5ld1NlbGVjdGlvbnM/Lmxlbmd0aClcbiAgICBjb25zdCBuZXdNb2RlID0gbm9TZWxlY3Rpb25zICYmICFub3RoaW5nVG9TZWxlY3QgPyAnc2VsZWN0JyA6ICdkZWZhdWx0J1xuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6IG5ld01vZGVcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCBob29rIHRvIGluaXRpYWxpemUgY2hlY2tpbmcgZGF0YSB3aGVuIGNoZWNraW5nRGF0YSBvciBnbFdvcmRzRGF0YSBjaGFuZ2VzXG4gICAqIEZsYXR0ZW5zIGdyb3VwIGRhdGEsIGNyZWF0ZXMgaW5kZXgsIGZpbmRzIGluaXRpYWwgY2hlY2ssIGFuZCB2YWxpZGF0ZXMgYWxsIGNoZWNrc1xuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYXZlRGF0YSA9IGNoZWNraW5nRGF0YSAmJiBPYmplY3Qua2V5cyhjaGVja2luZ0RhdGEpLmxlbmd0aCAmJiBnbFdvcmRzRGF0YSAmJiBPYmplY3Qua2V5cyhnbFdvcmRzRGF0YSkubGVuZ3RoXG4gICAgY29uc3QgZ3JvdXBzRGF0YUluaXRpYWxpemVkID0gZ3JvdXBzRGF0YSAmJiBPYmplY3Qua2V5cyhncm91cHNEYXRhKS5sZW5ndGhcbiAgICBpZiAoaGF2ZURhdGEgJiYgIWdyb3Vwc0RhdGFJbml0aWFsaXplZCkge1xuICAgICAgbGV0IGZsYXR0ZW5lZEdyb3VwRGF0YSA9IG51bGxcbiAgICAgIGxldCBncm91cHNJbmRleCA9IG51bGxcbiAgICAgIGlmIChjaGVja2luZ0RhdGEpIHtcbiAgICAgICAgZmxhdHRlbmVkR3JvdXBEYXRhID0gZ3JvdXBEYXRhSGVscGVycy5mbGF0dGVuR3JvdXBEYXRhKGNoZWNraW5nRGF0YSlcbiAgICAgIH1cblxuICAgICAgaWYgKGdsV29yZHNEYXRhKSB7XG4gICAgICAgIGlmIChjaGVja1R5cGUgPT09IHRyYW5zbGF0aW9uTm90ZXMpIHtcbiAgICAgICAgICBncm91cHNJbmRleCA9IHBhcnNlVG5Ub0luZGV4KGdsV29yZHNEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3Vwc0luZGV4ID0gcGFyc2VUd1RvSW5kZXgoZ2xXb3Jkc0RhdGEpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hlY2sgPSBmaW5kQ2hlY2soZmxhdHRlbmVkR3JvdXBEYXRhLCBjb250ZXh0SWQsIHRydWUpXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgZ3JvdXBzRGF0YTogZmxhdHRlbmVkR3JvdXBEYXRhLFxuICAgICAgICBncm91cHNJbmRleCxcbiAgICAgICAgY3VycmVudENoZWNraW5nRGF0YTogY2hlY2tpbmdEYXRhLFxuICAgICAgICBjdXJyZW50Q2hlY2s6IGNoZWNrLFxuICAgICAgICBtb2RpZmllZDogZmFsc2UsXG4gICAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ2RlYnVnJyx0YXJnZXRCaWJsZSxmbGF0dGVuZWRHcm91cERhdGEpXG4gICAgICAvLyB2YWxpZGF0ZSBhbGwgY2hlY2tzXG4gICAgICB2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3ModGFyZ2V0QmlibGUsIGZsYXR0ZW5lZEdyb3VwRGF0YSwgKGNoZWNrLCBpbnZhbGlkYXRlZCkgPT4ge1xuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zYXZlRWRpdFZlcnNlIC0gY2hlY2sgdmFsaWRhdGlvbiBjaGFuZ2VkYCwgY2hlY2spXG4gICAgICAgICAgX3NhdmVDaGVja2luZ0RhdGEoY2hlY2ssIHsgaW52YWxpZGF0ZWQgfSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG5cbiAgICAgIGlmIChmbGF0dGVuZWRHcm91cERhdGEgJiYgY2hlY2s/LmNvbnRleHRJZCkge1xuICAgICAgICB1cGRhdGVDb250ZXh0KGNoZWNrLCBncm91cHNJbmRleClcbiAgICAgICAgdXBkYXRlTW9kZUZvclNlbGVjdGlvbnMoY2hlY2s/LnNlbGVjdGlvbnMsIGNoZWNrPy5ub3RoaW5nVG9TZWxlY3QpXG4gICAgICB9XG4gICAgfVxuICB9LCBbY29udGV4dElkLCBjaGVja2luZ0RhdGEsIGdsV29yZHNEYXRhXSk7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbnRleHQgYW5kIHJlbGF0ZWQgZGF0YSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY2hlY2sgYW5kIGdyb3VwIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gbmV3Q2hlY2sgLSBUaGUgbmV3IGNoZWNrIG9iamVjdCBjb250YWluaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbZ3JvdXBzSW5kZXhfPWdyb3Vwc0luZGV4XSAtIEFuIG9wdGlvbmFsIGdyb3VwIGluZGV4IG9iamVjdCwgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbCB2YXJpYWJsZSBgZ3JvdXBzSW5kZXhgLlxuICAgKiBAcmV0dXJuIHt2b2lkfSBEb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4gVXBkYXRlcyB0aGUgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIHdpdGggbmV3IGNvbnRleHQgZGF0YS5cbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZUNvbnRleHQobmV3Q2hlY2ssIGdyb3Vwc0luZGV4XyA9IGdyb3Vwc0luZGV4KSB7XG4gICAgY29uc3QgY29udGV4dElkID0gbmV3Q2hlY2s/LmNvbnRleHRJZFxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IGNvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgdmVyc2VUZXh0ID0gdmVyc2VIZWxwZXJzLmdldFZlcnNlVGV4dEZyb21CaWJsZSh0YXJnZXRCaWJsZSwgcmVmZXJlbmNlKVxuICAgIGNvbnN0IGFsaWduZWRHTFRleHQgPSBnZXRBbGlnbmVkR0xUZXh0KGFsaWduZWRHbEJpYmxlLCBjb250ZXh0SWQpO1xuICAgIGNvbnNvbGUubG9nKGFsaWduZWRHTFRleHQpXG4gICAgY29uc3QgZ3JvdXBUaXRsZSA9IGdldFRpdGxlRnJvbUluZGV4KGdyb3Vwc0luZGV4XywgY29udGV4dElkPy5ncm91cElkKVxuICAgIGNvbnN0IGdyb3VwUGhyYXNlID1cbiAgICAgIGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlc1xuICAgICAgICA/IGNvbnRleHRJZD8ub2NjdXJyZW5jZU5vdGVcbiAgICAgICAgOiBnZXRQaHJhc2VGcm9tVHcoZ2xXb3Jkc0RhdGEsIGNvbnRleHRJZD8uZ3JvdXBJZClcblxuICAgIGxldCBncm91cERhdGFcbiAgICBpZiAoZ2xXb3Jkc0RhdGEpIHtcbiAgICAgIGlmIChjaGVja1R5cGUgPT09IHRyYW5zbGF0aW9uTm90ZXMpIHtcbiAgICAgICAgZ3JvdXBEYXRhID0ge1xuICAgICAgICAgIHRyYW5zbGF0ZToge1xuICAgICAgICAgICAgYXJ0aWNsZXM6IGdsV29yZHNEYXRhPy50cmFuc2xhdGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtcbiAgICAgICAgICAuLi5nbFdvcmRzRGF0YSxcbiAgICAgICAgICBtYW5pZmVzdDoge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfYXJ0aWNsZVxuICAgIGNvbnN0IGFydGljbGVJZCA9IGNvbnRleHRJZD8uZ3JvdXBJZFxuICAgIGNvbnN0IGdyb3Vwc0lkcyA9IE9iamVjdC5rZXlzKGdyb3VwRGF0YSlcbiAgICBmb3IgKGNvbnN0IF9ncm91cElkIG9mIGdyb3Vwc0lkcykge1xuICAgICAgY29uc3QgZ3JvdXAgPSBncm91cERhdGFbX2dyb3VwSWRdXG4gICAgICBjb25zdCBhcnRpY2xlcyA9IGdyb3VwPy5hcnRpY2xlcyB8fCB7fVxuICAgICAgX2FydGljbGUgPSBhcnRpY2xlcz8uW2FydGljbGVJZF0gfHwgbnVsbFxuICAgICAgaWYgKF9hcnRpY2xlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcnRpY2xlTWFya2Rvd24gPSB0SGVscHNIZWxwZXJzLmNvbnZlcnRNYXJrZG93bkxpbmtzKF9hcnRpY2xlLCBnYXRld2F5TGFuZ3VhZ2VJZCk7XG4gICAgICAgIF9hcnRpY2xlID0gY3VycmVudEFydGljbGVNYXJrZG93blxuICAgICAgICAvLyBjb25zdCB0SGVscHNNb2RhbE1hcmtkb3duID0gdEhlbHBzSGVscGVycy5jb252ZXJ0TWFya2Rvd25MaW5rcyhtb2RhbEFydGljbGUsIGdhdGV3YXlMYW5ndWFnZUNvZGUsIGFydGljbGVDYXRlZ29yeSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0U3RhdGUoe1xuICAgICAgYWxpZ25lZEdMVGV4dCxcbiAgICAgIGN1cnJlbnRDaGVjazogbmV3Q2hlY2ssXG4gICAgICB2ZXJzZVRleHQsXG4gICAgICBncm91cFRpdGxlLFxuICAgICAgZ3JvdXBQaHJhc2UsXG4gICAgICBhcnRpY2xlOiBfYXJ0aWNsZVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb21tZW50VGV4dCA9IGdldEN1cnJlbnRWYWx1ZUZvcignY29tbWVudHMnKSB8fCAnJ1xuICBjb25zdCBib29rSWQgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmJvb2s/LmlkXG4gIGNvbnN0IGJvb2tOYW1lID0gdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzPy5ib29rPy5uYW1lXG4gIGNvbnN0IGJvb2tEZXRhaWxzID0ge1xuICAgIGlkOiBib29rSWQsXG4gICAgbmFtZTogYm9va05hbWVcbiAgfTtcbiAgY29uc3QgZ2F0ZXdheUxhbmd1YWdlSWQgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmdhdGV3YXlMYW5ndWFnZUlkXG4gIGNvbnN0IHRhcmdldExhbmd1YWdlRm9udCA9IG1hbmlmZXN0Py5wcm9qZWN0Rm9udCB8fCAnJ1xuICBjb25zdCBjdXJyZW50Q29udGV4dElkID0gY3VycmVudENoZWNrPy5jb250ZXh0SWRcblxuICAvKipcbiAgICogVXBkYXRlcyB0b29sLXNwZWNpZmljIHNldHRpbmdzIGFuZCBwZXJzaXN0cyB0aGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZSAoZS5nLiwgJ1NjcmlwdHVyZVBhbmUnKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmllbGRWYWx1ZSAtIFNldHRpbmcgdmFsdWVcbiAgICovXG4gIGNvbnN0IHNldFRvb2xTZXR0aW5ncyA9IChOQU1FU1BBQ0UsIGZpZWxkTmFtZSwgZmllbGRWYWx1ZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNldFRvb2xTZXR0aW5ncyAke2ZpZWxkTmFtZX09JHtmaWVsZFZhbHVlfWApXG4gICAgaWYgKHRvb2xzU2V0dGluZ3MpIHtcbiAgICAgIC8vIERlZXAgY2xvbmluZyBvYmplY3QgdG8gYXZvaWQgbW9kaWZ5aW5nIG9yaWdpbmFsIG9iamVjdFxuICAgICAgY29uc3QgX3Rvb2xzU2V0dGluZ3MgPSB7IC4uLnRvb2xzU2V0dGluZ3MgfTtcbiAgICAgIGxldCBjb21wb25lbnRTZXR0aW5ncyA9IF90b29sc1NldHRpbmdzPy5bTkFNRVNQQUNFXVxuICAgICAgaWYgKCFjb21wb25lbnRTZXR0aW5ncykge1xuICAgICAgICBjb21wb25lbnRTZXR0aW5ncyA9IHsgfVxuICAgICAgICBfdG9vbHNTZXR0aW5nc1tOQU1FU1BBQ0VdID0gY29tcG9uZW50U2V0dGluZ3NcbiAgICAgIH1cbiAgICAgIGNvbXBvbmVudFNldHRpbmdzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlXG4gICAgICBzZXRTZXR0aW5ncyh7IHRvb2xzU2V0dGluZ3M6IF90b29sc1NldHRpbmdzIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIHNldHRpbmdzIHRvIHN0b3JhZ2UgYWZ0ZXIgcmVtb3ZpbmcgQmlibGUgZGF0YSB0byByZWR1Y2Ugc2l6ZVxuICAgKiBDcmVhdGVzIHNoYWxsb3cgY29waWVzIHRvIGF2b2lkIG1vZGlmeWluZyBvcmlnaW5hbCBvYmplY3RzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfc2V0dGluZ3MgLSBTZXR0aW5ncyBvYmplY3QgdG8gc2F2ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gX3NhdmVTZXR0aW5ncyhfc2V0dGluZ3MpIHtcbiAgICBpZiAoc2F2ZVNldHRpbmdzICYmIF9zZXR0aW5ncykge1xuICAgICAgY29uc3QgbmV3U2V0dGluZ3MgPSB7IC4uLl9zZXR0aW5ncyB9XG4gICAgICBkZWxldGUgbmV3U2V0dGluZ3MubWFuaWZlc3RcbiAgICAgIGNvbnN0IF9wYW5lU2V0dGluZ3MgPSBbIC4uLm5ld1NldHRpbmdzLnBhbmVTZXR0aW5ncyBdXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF9wYW5lU2V0dGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgX3BhbmVTZXR0aW5nID0gey4uLl9wYW5lU2V0dGluZ3NbaV19IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5nc1tpXSA9IF9wYW5lU2V0dGluZ1xuICAgICAgfVxuICAgICAgbmV3U2V0dGluZ3MucGFuZVNldHRpbmdzID0gX3BhbmVTZXR0aW5nc1xuXG4gICAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0geyAuLi5uZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgfVxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKF9wYW5lS2V5U2V0dGluZ3MpXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGNvbnN0IF9wYW5lU2V0dGluZyA9IHsuLi5fcGFuZUtleVNldHRpbmdzW2tleV19IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVLZXlTZXR0aW5nc1trZXldID0gX3BhbmVTZXR0aW5nXG4gICAgICB9XG4gICAgICBuZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgPSBfcGFuZUtleVNldHRpbmdzXG5cbiAgICAgIHNhdmVTZXR0aW5ncyhuZXdTZXR0aW5ncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZXR0aW5ncyBzdGF0ZSBhbmQgb3B0aW9uYWxseSBwZXJzaXN0cyB0aGVtXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTZXR0aW5ncyAtIE5ldyBzZXR0aW5ncyB0byBtZXJnZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvU2F2ZSAtIFdoZXRoZXIgdG8gcGVyc2lzdCBzZXR0aW5nc1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0U2V0dGluZ3MobmV3U2V0dGluZ3MsIGRvU2F2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgX3NldHRpbmdzID0ge1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAuLi5uZXdTZXR0aW5nc1xuICAgIH1cblxuICAgIF9zZXRTZXR0aW5ncyhfc2V0dGluZ3MpXG4gICAgZG9TYXZlICYmIF9zYXZlU2V0dGluZ3MoX3NldHRpbmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgU2NyaXB0dXJlIHBhbmUgc2V0dGluZ3Mgd2l0aCBuZXcgcGFuZSBjb25maWd1cmF0aW9uc1xuICAgKiBNYWludGFpbnMgYSBrZXktYmFzZWQgbG9va3VwIGZvciBwYW5lIHNldHRpbmdzIGJ5IGxhbmd1YWdlL2JpYmxlL293bmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7QXJyYXl9IF9wYW5lU2V0dGluZ3MgLSBBcnJheSBvZiBwYW5lIHNldHRpbmcgb2JqZWN0c1xuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBfcGFuZVNldHRpbmdzKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlICR7ZmllbGROYW1lfWAsIF9wYW5lU2V0dGluZ3MpXG4gICAgY29uc3QgX3BhbmVLZXlTZXR0aW5ncyA9IHsuLi5wYW5lS2V5U2V0dGluZ3N9XG5cbiAgICBmb3IgKGNvbnN0IHBhbmVTZXR0aW5ncyBvZiBfcGFuZVNldHRpbmdzKSB7XG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gcGFuZVNldHRpbmdzPy5sYW5ndWFnZUlkXG4gICAgICBjb25zdCBrZXkgPSBgJHtsYW5ndWFnZUlkfS8ke3BhbmVTZXR0aW5ncz8uYmlibGVJZH0vJHtwYW5lU2V0dGluZ3M/Lm93bmVyfWBcbiAgICAgIF9wYW5lS2V5U2V0dGluZ3Nba2V5XSA9IHBhbmVTZXR0aW5nc1xuICAgIH1cblxuICAgIGNvbnN0IF9zZXR0aW5ncyA9IHtcbiAgICAgIHBhbmVTZXR0aW5nczogX3BhbmVTZXR0aW5ncyxcbiAgICAgIHBhbmVLZXlTZXR0aW5nczogX3BhbmVLZXlTZXR0aW5ncyxcbiAgICB9XG5cbiAgICBzZXRTZXR0aW5ncyhfc2V0dGluZ3MsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHByb3BlcnR5IHRvIHRoZSBtYW5pZmVzdCBhbmQgYXBwIHNldHRpbmdzXG4gICAqIFVzZWQgZm9yIHBlcnNpc3RpbmcgdXNlciBwcmVmZXJlbmNlcyBsaWtlIGZvbnRzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmllbGRWYWx1ZSAtIFByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBjb25zdCBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QgPSAoZmllbGROYW1lLCBmaWVsZFZhbHVlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tYWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0ICR7ZmllbGROYW1lfT0ke2ZpZWxkVmFsdWV9YClcbiAgICBpZiAobWFuaWZlc3QpIHtcbiAgICAgIGNvbnN0IF9tYW5pZmVzdCA9IHtcbiAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFZhbHVlXG4gICAgICB9XG5cbiAgICAgIC8vIGFsc28gc2F2ZSB0aGlzIGluIGFwcFNldHRpbmdzXG4gICAgICBjb25zdCBhcHBTZXR0aW5ncyA9IHNldHRpbmdzLmFwcFNldHRpbmdzIHx8IHt9XG4gICAgICBjb25zdCBfYXBwU2V0dGluZ3MgPSB7XG4gICAgICAgIC4uLmFwcFNldHRpbmdzLFxuICAgICAgICBbZmllbGROYW1lXTogZmllbGRWYWx1ZVxuICAgICAgfVxuXG4gICAgICBzZXRTZXR0aW5ncyh7XG4gICAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICAgIGFwcFNldHRpbmdzOiBfYXBwU2V0dGluZ3NcbiAgICAgIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLy8gRXZlbnQgaGFuZGxlcnMgZm9yIHZhcmlvdXMgdXNlciBhY3Rpb25zXG5cbiAgLyoqXG4gICAqIE9wZW5zIGFuIGFsZXJ0IGRpYWxvZyAocGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24pXG4gICAqL1xuICBjb25zdCBvcGVuQWxlcnREaWFsb2cgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tb3BlbkFsZXJ0RGlhbG9nYCkgLy8gVE9ETyAtIGZsZXNoIG91dFxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB2ZXJzZSBjb250ZW50IGhhcyBjaGFuZ2VkIGZyb20gb3JpZ2luYWxcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50XG4gICAqL1xuICBjb25zdCBjaGVja0lmVmVyc2VDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGVja0lmVmVyc2VDaGFuZ2VkYClcbiAgICBjb25zdCBfbmV3VmVyc2VUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBjb25zdCBfaXNWZXJzZUNoYW5nZWQgPSBfbmV3VmVyc2VUZXh0ICE9PSB2ZXJzZVRleHRcbiAgICBzZXRTdGF0ZSh7IGlzVmVyc2VDaGFuZ2VkOiBfaXNWZXJzZUNoYW5nZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB2ZXJzZSB0ZXh0IGVkaXRpbmdcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50IHdpdGggbmV3IHZlcnNlIHRleHRcbiAgICovXG4gIGNvbnN0IGhhbmRsZUVkaXRWZXJzZSA9IChlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlRWRpdFZlcnNlYClcbiAgICBjb25zdCBfbmV3VmVyc2VUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBzZXRTdGF0ZSh7IG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHZlcnNlIGVkaXRpbmcgYW5kIHJlc2V0cyBzdGF0ZVxuICAgKi9cbiAgY29uc3QgY2FuY2VsRWRpdFZlcnNlID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNhbmNlbEVkaXRWZXJzZWApXG4gICAgc2V0U3RhdGUoeyBuZXdWZXJzZVRleHQ6IG51bGwsIG5ld1RhZ3M6IFtdLCBtb2RlOiBcImRlZmF1bHRcIiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBlZGl0ZWQgdmVyc2UgdGV4dCBhbmQgdXBkYXRlcyBhbGlnbm1lbnRzXG4gICAqIE1hcmtzIGNoZWNrIGFzIGhhdmluZyB2ZXJzZSBlZGl0c1xuICAgKi9cbiAgY29uc3Qgc2F2ZUVkaXRWZXJzZSA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zYXZlRWRpdFZlcnNlYClcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBjdXJyZW50Q29udGV4dElkLnJlZmVyZW5jZTtcbiAgICBjb25zdCB2ZXJzZVJlZiA9IGN1cnJlbnRDb250ZXh0SWQudmVyc2VTcGFuIHx8IHZlcnNlOyAvLyBpZiBpbiB2ZXJzZSBzcGFuLCB1c2UgaXRcbiAgICBjb25zdCBiZWZvcmUgPSB0YXJnZXRCaWJsZVtjaGFwdGVyXVt2ZXJzZVJlZl07XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgICBuZXdUYWdzOiBbXSxcbiAgICAgIG1vZGU6IFwiZGVmYXVsdFwiLFxuICAgICAgaXNWZXJzZUNoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICAgIGVkaXRUYXJnZXRWZXJzZShjaGFwdGVyLCB2ZXJzZVJlZiwgYmVmb3JlLCBuZXdWZXJzZVRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBjaGVjayBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUdvVG9OZXh0KCkge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWhhbmRsZUdvVG9OZXh0YClcbiAgICBjb25zdCBuZXh0Q2hlY2sgPSBmaW5kTmV4dENoZWNrKGdyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgIGNoYW5nZUN1cnJlbnRDaGVja18obmV4dENoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgY2hlY2sgaW4gdGhlIHNlcXVlbmNlXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVHb1RvUHJldmlvdXMoKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlR29Ub1ByZXZpb3VzYClcbiAgICBjb25zdCBwcmV2aW91c0NoZWNrID0gZmluZFByZXZpb3VzQ2hlY2soZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgY2hhbmdlQ3VycmVudENoZWNrXyhwcmV2aW91c0NoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2hlY2tib3ggY2hhbmdlcyBmb3IgdGFnc1xuICAgKiBBZGRzIG9yIHJlbW92ZXMgdGFncyBmcm9tIHRoZSBjdXJyZW50IGxpc3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIFRhZyBpZGVudGlmaWVyXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWdzQ2hlY2tib3ggPSAodGFnKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlVGFnc0NoZWNrYm94YCwgdGFnKVxuICAgIGNvbnN0IGN1cnJlbnRUYWdzID0gbmV3VGFncyB8fCBbXVxuICAgIGNvbnN0IHRhZ0luZGV4ID0gY3VycmVudFRhZ3MuaW5kZXhPZih0YWcpO1xuICAgIGxldCBfbmV3VGFncztcblxuICAgIGlmICh0YWdJbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBjb3B5ID0gY3VycmVudFRhZ3Muc2xpY2UoMCk7XG4gICAgICBjb3B5LnNwbGljZSh0YWdJbmRleCwgMSk7XG4gICAgICBfbmV3VGFncyA9IGNvcHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9uZXdUYWdzID0gWy4uLmN1cnJlbnRUYWdzLCB0YWddO1xuICAgIH1cblxuICAgIHNldFN0YXRlKHsgbmV3VGFnczogX25ld1RhZ3MgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHNlbGVjdGlvbnMgYWdhaW5zdCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVRleHRfIC0gVmVyc2UgdGV4dCB0byB2YWxpZGF0ZSBhZ2FpbnN0XG4gICAqIEBwYXJhbSB7QXJyYXl9IHNlbGVjdGlvbnNfIC0gU2VsZWN0aW9ucyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBzZWxlY3Rpb25zIGFyZSB2YWxpZFxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVTZWxlY3Rpb25zID0gKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdmFsaWRhdGVTZWxlY3Rpb25zYCwgc2VsZWN0aW9uc18pXG4gICAgcmV0dXJuIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKVxuICB9XG5cbiAgLyoqXG4gICAqIE1lbW9pemVkIGNvbXB1dGF0aW9uIG9mIHVuZmlsdGVyZWQgdmVyc2UgdGV4dCBpbmNsdWRpbmcgVVNGTSBtYXJrZXJzXG4gICAqIFVzZWQgZm9yIGRpc3BsYXlpbmcgYW5kIGVkaXRpbmcgY29tcGxldGUgdmVyc2UgZGF0YVxuICAgKi9cbiAgY29uc3QgdW5maWx0ZXJlZFZlcnNlVGV4dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCB1bmZpbHRlcmVkVmVyc2VUZXh0XyA9ICcnXG4gICAgY29uc3QgcmVmZXJlbmNlID0gY3VycmVudENvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgY2hhcHRlciA9IHJlZmVyZW5jZT8uY2hhcHRlclxuICAgIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICAgIGlmIChjaGFwdGVyICYmIHZlcnNlKSB7XG4gICAgICBjb25zdCB2ZXJzZURhdGEgPSB0YXJnZXRCaWJsZT8uW2NoYXB0ZXJdPy5bdmVyc2VdXG4gICAgICBpZiAodmVyc2VEYXRhKSB7XG4gICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gdmVyc2VEYXRhXG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2VEYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHZlcnNlRGF0YSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmZpbHRlcmVkVmVyc2VUZXh0X1xuICB9LCBbdGFyZ2V0QmlibGUsIGN1cnJlbnRDb250ZXh0SWRdKVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgdGVtcG9yYXJ5IHZhbHVlIGZvciBhIGNoZWNraW5nIGRhdGEgcHJvcGVydHlcbiAgICogVXNlZCBmb3IgdHJhY2tpbmcgdW5zYXZlZCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBQcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgY29uc3Qgc2V0VGVtcENoZWNraW5nSXRlbSA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3Q2hlY2tpbmdEYXRhID0gdGVtcENoZWNraW5nRGF0YSA/IHsuLi50ZW1wQ2hlY2tpbmdEYXRhfSA6IHt9XG4gICAgbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSB2YWx1ZVxuICAgIHNldFRlbXBDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgc2VsZWN0aW9ucyBpbiB0ZW1wb3Jhcnkgc3RhdGUgd2l0aG91dCBzYXZpbmdcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0aW9ucyAtIE5ldyBzZWxlY3Rpb25zIGFycmF5XG4gICAqL1xuICBjb25zdCBjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlID0gKHNlbGVjdGlvbnMpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlYCwgc2VsZWN0aW9ucylcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdzZWxlY3Rpb25zJywgc2VsZWN0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBcIm5vdGhpbmcgdG8gc2VsZWN0XCIgZmxhZyBmb3IgY3VycmVudCBjaGVja1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNlbGVjdCAtIE5ldyBzdGF0ZSB2YWx1ZVxuICAgKi9cbiAgY29uc3QgdG9nZ2xlTm90aGluZ1RvU2VsZWN0ID0gKHNlbGVjdCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZU5vdGhpbmdUb1NlbGVjdGAsIHNlbGVjdClcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdub3RoaW5nVG9TZWxlY3QnLCBzZWxlY3QpXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgY3VycmVudCBjaGVjayBiZWluZyB3b3JrZWQgb25cbiAgICogVmFsaWRhdGVzIGZvciB1bnNhdmVkIGNoYW5nZXMgYmVmb3JlIHN3aXRjaGluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3Q29udGV4dCAtIE5ldyBjaGVjayBjb250ZXh0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9DaGVjayAtIFNraXAgdmFsaWRhdGlvbiBpZiB0cnVlXG4gICAqL1xuICBjb25zdCBjaGFuZ2VDdXJyZW50Q2hlY2tfID0gKG5ld0NvbnRleHQsIG5vQ2hlY2sgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IG5ld0NvbnRleHRJZCA9IG5ld0NvbnRleHQ/LmNvbnRleHRJZFxuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZUN1cnJlbnRDb250ZXh0SWRgLCBuZXdDb250ZXh0SWQpXG5cbiAgICBjb25zdCBzZWxlY3Rpb25zVW5jaGFuZ2VkID0gaXNFcXVhbChjdXJyZW50U2VsZWN0aW9ucywgdGVtcFNlbGVjdGlvbnMpXG4gICAgaWYgKG5vQ2hlY2sgfHwgc2VsZWN0aW9uc1VuY2hhbmdlZCkge1xuICAgICAgaWYgKG5ld0NvbnRleHRJZCkge1xuICAgICAgICBsZXQgY2hlY2sgPSBmaW5kQ2hlY2soZ3JvdXBzRGF0YSwgbmV3Q29udGV4dElkLCBmYWxzZSlcbiAgICAgICAgdXBkYXRlQ29udGV4dChuZXdDb250ZXh0KVxuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShudWxsKVxuICAgICAgICAgIHNldFRlbXBDaGVja2luZ0RhdGEobnVsbClcbiAgICAgICAgICB1cGRhdGVNb2RlRm9yU2VsZWN0aW9ucyhjaGVjay5zZWxlY3Rpb25zLCBjaGVjay5ub3RoaW5nVG9TZWxlY3QpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ0NoZWNrZXIuY2hhbmdlQ3VycmVudENvbnRleHRJZCAtIHVuc2F2ZWQgY2hhbmdlcycpXG4gICAgfVxuICAgIGNoYW5nZWRDdXJyZW50Q2hlY2sgJiYgY2hhbmdlZEN1cnJlbnRDaGVjayhuZXdDb250ZXh0KVxuICB9XG5cbiAgY29uc3QgZGlyZWN0aW9uID0gJ2x0cidcbiAgY29uc3QgYm9va21hcmtFbmFibGVkID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdyZW1pbmRlcnMnKVxuICBjb25zdCBpc1ZlcnNlRWRpdGVkID0gISFnZXRDdXJyZW50VmFsdWVGb3IoJ3ZlcnNlRWRpdHMnKVxuICBjb25zdCBpc1ZlcnNlSW52YWxpZGF0ZWQgPSAhIWdldEN1cnJlbnRWYWx1ZUZvcignaW52YWxpZGF0ZWQnKVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgKiBWYWxpZGF0ZXMgZm9yIHVuc2F2ZWQgY2hhbmdlcyBiZWZvcmUgc3dpdGNoaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdDb250ZXh0IC0gTmV3IGNoZWNrIGNvbnRleHRcbiAgICogQHBhcmFtIHtib29sZWFufSBub0NoZWNrIC0gU2tpcCB2YWxpZGF0aW9uIGlmIHRydWVcbiAgICovXG4gIGNvbnN0IF9zYXZlU2VsZWN0aW9uID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LV9zYXZlU2VsZWN0aW9uIHBlcnNpc3QgdG8gZmlsZWApXG4gICAgY29uc3QgeyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfSA9IGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgaWYgKHRlbXBOb3RoaW5nVG9TZWxlY3QpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSB0ZW1wTm90aGluZ1RvU2VsZWN0XG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuc2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuaW52YWxpZGF0ZWQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSBmYWxzZVxuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLnNlbGVjdGlvbnMgPSB0ZW1wU2VsZWN0aW9uc1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLmludmFsaWRhdGVkID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgc2V0TG9jYWxDaGVja2luZ0RhdGEoX25ld0NoZWNraW5nRGF0YSlcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ25vdGhpbmdUb1NlbGVjdCcpXG4gICAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ2ludmFsaWRhdGVkJylcblxuICAgICAgdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoX2N1cnJlbnRDaGVjaywgY2hlY2tJbkdyb3Vwc0RhdGEsIF9uZXdDaGVja2luZ0RhdGEpXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvbmVzIGN1cnJlbnQgZGF0YSBzdHJ1Y3R1cmVzIGZvciBzYXZpbmcgbW9kaWZpY2F0aW9uc1xuICAgKiBDcmVhdGVzIGRlZXAgY29waWVzIHRvIGF2b2lkIG11dGF0aW5nIG9yaWdpbmFsIHN0YXRlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIGNsb25lZCBkYXRhIHN0cnVjdHVyZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNsb25lRGF0YUZvclNhdmluZygpIHtcbiAgICBjb25zdCBfZ3JvdXBzRGF0YSA9IF8uY2xvbmVEZWVwKGdyb3Vwc0RhdGEpXG4gICAgY29uc3QgY2hlY2tJbkdyb3Vwc0RhdGEgPSBmaW5kQ2hlY2soX2dyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQpXG4gICAgbGV0IF9jdXJyZW50Q2hlY2tcbiAgICBsZXQgbmV3U3RhdGVcbiAgICBsZXQgX25ld0NoZWNraW5nRGF0YVxuICAgIGlmIChjaGVja0luR3JvdXBzRGF0YSkge1xuICAgICAgLy8gc2F2ZSB0aGUgc2VsZWN0aW9uIGNoYW5nZXNcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2hlY2tJbkdyb3Vwc0RhdGEuY2F0ZWdvcnlcbiAgICAgIGNvbnN0IG5ld0NoZWNrRGF0YSA9IF8uY2xvbmVEZWVwKGN1cnJlbnRDaGVja2luZ0RhdGEpXG4gICAgICBfY3VycmVudENoZWNrID0gZmluZENoZWNrKG5ld0NoZWNrRGF0YVtjYXRlZ29yeV0sIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgICAgbmV3U3RhdGUgPSB7XG4gICAgICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IG5ld0NoZWNrRGF0YSxcbiAgICAgICAgY3VycmVudENoZWNrOiBfY3VycmVudENoZWNrLFxuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YSxcbiAgICAgICAgbW9kZTogJ2RlZmF1bHQnLFxuICAgICAgICBtb2RpZmllZDogdHJ1ZVxuICAgICAgfVxuICAgICAgX25ld0NoZWNraW5nRGF0YSA9IGxvY2FsQ2hlY2tpbmdEYXRhID8gey4uLmxvY2FsQ2hlY2tpbmdEYXRhfSA6IHt9XG4gICAgfVxuICAgIHJldHVybiB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGluIGNoZWNrIGRhdGEgb2JqZWN0c1xuICAgKiBNb2RpZmllcyBib3RoIHRoZSBjdXJyZW50IGNoZWNrIGFuZCBncm91cHMgZGF0YVxuICAgKiBAcGFyYW0ge29iamVjdH0gX2N1cnJlbnRDaGVjayAtIEN1cnJlbnQgY2hlY2sgb2JqZWN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjaGVja0luR3JvdXBzRGF0YSAtIENoZWNrIGluIGdyb3VwcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBAcGFyYW0ge29iamVjdH0gX25ld0NoZWNraW5nRGF0YSAtIE5ldyBkYXRhIHRvIGFwcGx5XG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKF9uZXdDaGVja2luZ0RhdGEpKSB7XG4gICAgICBjb25zdCBuZXdDaGVja2luZ1ZhbHVlID0gX25ld0NoZWNraW5nRGF0YVtrZXldXG4gICAgICBfY3VycmVudENoZWNrW2tleV0gPSBuZXdDaGVja2luZ1ZhbHVlXG4gICAgICBjaGVja0luR3JvdXBzRGF0YVtrZXldID0gbmV3Q2hlY2tpbmdWYWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0cyBtdWx0aXBsZSBjaGVjayBwcm9wZXJ0eSBjaGFuZ2VzIHRvIGZpbGVcbiAgICogQ2xvbmVzIGRhdGEsIGFwcGxpZXMgY2hhbmdlcywgdXBkYXRlcyBzdGF0ZSwgYW5kIHNhdmVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdEYXRhIC0gT2JqZWN0IHdpdGggcHJvcGVydHkgbmFtZXMgYW5kIHZhbHVlcyB0byB1cGRhdGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0IF9zYXZlRGF0YSA9IChuZXdEYXRhKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVEYXRhIHBlcnNpc3QgdG8gZmlsZWApXG4gICAgY29uc3QgeyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfSA9IGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmV3RGF0YSkpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YVtrZXldID0gbmV3RGF0YVtrZXldXG4gICAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoa2V5KVxuICAgICAgfVxuICAgICAgc2V0TG9jYWxDaGVja2luZ0RhdGEoX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoX2N1cnJlbnRDaGVjaywgY2hlY2tJbkdyb3Vwc0RhdGEsIF9uZXdDaGVja2luZ0RhdGEpXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgY2hhbmdlcyB0byBhIHNwZWNpZmljIGNoZWNrIChtYXkgbm90IGJlIGN1cnJlbnQgY2hlY2spXG4gICAqIE9ubHkgc2F2ZXMgaWYgZGF0YSBhY3R1YWxseSBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjaGVjayAtIENoZWNrIG9iamVjdCB0byB1cGRhdGVcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0RhdGEgLSBOZXcgZGF0YSB0byBhcHBseVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBkYXRhIHdhcyBjaGFuZ2VkXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdCBfc2F2ZUNoZWNraW5nRGF0YSA9IChjaGVjaywgbmV3RGF0YSkgPT4ge1xuICAgIGxldCBjaGFuZ2VkRGF0YSA9IGZhbHNlXG4gICAgaWYgKGNoZWNrKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdEYXRhKSkge1xuICAgICAgICBpZiAoY2hlY2tba2V5XSAhPT0gbmV3RGF0YVtrZXldKSB7XG4gICAgICAgICAgY2hlY2tba2V5XSA9IG5ld0RhdGFba2V5XVxuICAgICAgICAgIGNoYW5nZWREYXRhID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VkRGF0YSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1fc2F2ZUNoZWNraW5nRGF0YSBwZXJzaXN0IGNoYW5nZXMgdG8gZmlsZWAsIGNoZWNrKVxuICAgICAgICBjb25zdCBuZXdDaGVja2luZ0RhdGEgPSB7XG4gICAgICAgICAgY3VycmVudENoZWNrOiBjaGVjayxcbiAgICAgICAgfVxuICAgICAgICBzYXZlQ2hlY2tpbmdEYXRhICYmIHNhdmVDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlZERhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcHJvcGVydHkgZnJvbSB0ZW1wb3JhcnkgY2hlY2tpbmcgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZSB0byByZW1vdmVcbiAgICovXG4gIGZ1bmN0aW9uIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoa2V5KSB7XG4gICAgaWYgKHRlbXBDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGNvbnN0IF90ZW1wQ2hlY2tpbmdEYXRhID0gey4uLnRlbXBDaGVja2luZ0RhdGF9XG4gICAgICBkZWxldGUgX3RlbXBDaGVja2luZ0RhdGFba2V5XVxuICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShfdGVtcENoZWNraW5nRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBzZWxlY3Rpb24gbW9kZSB3aXRob3V0IHNhdmluZyBjaGFuZ2VzXG4gICAqL1xuICBjb25zdCBjYW5jZWxTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsU2VsZWN0aW9uYClcbiAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCdcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGN1cnJlbnQgc2VsZWN0aW9uc1xuICAgKi9cbiAgY29uc3QgY2xlYXJTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2xlYXJTZWxlY3Rpb25gKVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ3NlbGVjdGlvbnMnLCBbXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGJvb2ttYXJrL3JlbWluZGVyIGZsYWcgZm9yIGN1cnJlbnQgY2hlY2tcbiAgICovXG4gIGNvbnN0IHRvZ2dsZUJvb2ttYXJrID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZUJvb2ttYXJrYClcbiAgICBfc2F2ZURhdGEoe1xuICAgICAgcmVtaW5kZXJzOiAhZ2V0VGVtcFZhbHVlRm9yKCdyZW1pbmRlcnMnKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgVUkgbW9kZSAoZGVmYXVsdCwgc2VsZWN0LCBlZGl0LCBjb21tZW50KVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSAtIE5ldyBtb2RlIGlkZW50aWZpZXJcbiAgICovXG4gIGNvbnN0IGNoYW5nZU1vZGUgPSAobW9kZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZU1vZGVgLCBtb2RlKVxuICAgIHNldFN0YXRlKHsgbW9kZSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjb21tZW50IHRleHQgaGFzIGNoYW5nZWQgZnJvbSBzYXZlZCB2YWx1ZVxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnRcbiAgICovXG4gIGZ1bmN0aW9uIGNoZWNrSWZDb21tZW50Q2hhbmdlZChlKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hlY2tJZkNvbW1lbnRDaGFuZ2VkYClcbiAgICBjb25zdCBuZXdjb21tZW50ID0gZS50YXJnZXQudmFsdWUgfHwgJyc7XG4gICAgY29uc3Qgb2xkY29tbWVudCA9IGNvbW1lbnRUZXh0IHx8ICcnO1xuICAgIGNvbnN0IGlzQ29tbWVudENoYW5nZWQgPSBuZXdjb21tZW50ICE9PSBvbGRjb21tZW50XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBjb21tZW50IGVkaXRpbmcgd2l0aG91dCBzYXZpbmdcbiAgICovXG4gIGNvbnN0IGNhbmNlbENvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsQ29tbWVudGApXG4gICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnY29tbWVudHMnKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGNvbW1lbnQgY2hhbmdlcyB0byBwZXJzaXN0ZW50IHN0b3JhZ2VcbiAgICovXG4gIGNvbnN0IHNhdmVDb21tZW50ID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNhdmVDb21tZW50YClcbiAgICBjb25zdCBuZXdDb21tZW50ID0gZ2V0VGVtcFZhbHVlRm9yKCdjb21tZW50cycpXG4gICAgX3NhdmVEYXRhKHsgY29tbWVudHM6IG5ld0NvbW1lbnQgfSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNvbW1lbnQgdGV4dCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudCB3aXRoIG5ldyBjb21tZW50XG4gICAqL1xuICBjb25zdCBoYW5kbGVDb21tZW50ID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlQ29tbWVudGApXG4gICAgY29uc3QgbmV3Q29tbWVudCA9IGUudGFyZ2V0LnZhbHVlXG4gICAgc2V0VGVtcENoZWNraW5nSXRlbSgnY29tbWVudHMnLCBuZXdDb21tZW50KVxuICAgIHNldFN0YXRlKHtcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZWFkeVRvRGlzcGxheUNoZWNrZXIgPSBncm91cHNEYXRhICYmIGdyb3Vwc0luZGV4ICYmIGN1cnJlbnRDb250ZXh0SWQgJiYgdmVyc2VUZXh0XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldExleGljb25EYXRhIGNhbGxiYWNrIHdpdGggbG9nZ2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbGV4aWNvbklkIC0gTGV4aWNvbiBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRyeUlkIC0gRW50cnkgaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBMZXhpY29uIGRhdGFcbiAgICovXG4gIGNvbnN0IGdldExleGljb25EYXRhXyA9IChsZXhpY29uSWQsIGVudHJ5SWQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1nZXRMZXhpY29uRGF0YV9gLCB7bGV4aWNvbklkLCBlbnRyeUlkfSlcbiAgICBjb25zdCBsZXhpY29uRGF0YSA9IGdldExleGljb25EYXRhICYmIGdldExleGljb25EYXRhKGxleGljb25JZCwgZW50cnlJZClcbiAgICByZXR1cm4gbGV4aWNvbkRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHBvcG92ZXIgZGlzcGxheVxuICAgKi9cbiAgY29uc3Qgb25DbG9zZVBvcG92ZXIgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tb25DbG9zZVBvcG92ZXJgKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgICBwb3BvdmVyVmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhIHBvcG92ZXIgd2l0aCB0aXRsZSBhbmQgY29udGVudCBhdCBzcGVjaWZpZWQgcG9zaXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gUG9wb3ZlciB0aXRsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm9keVRleHQgLSBQb3BvdmVyIGNvbnRlbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IHBvc2l0aW9uQ29vcmQgLSBQb3NpdGlvbiBjb29yZGluYXRlc1xuICAgKi9cbiAgY29uc3Qgc2hvd1BvcG92ZXIgPSAodGl0bGUsIGJvZHlUZXh0LCBwb3NpdGlvbkNvb3JkKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2hvd1BvcG92ZXJgLCB0aXRsZSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBwb3BvdmVyUHJvcHM6IHtcbiAgICAgICAgcG9wb3ZlclZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBib2R5VGV4dCxcbiAgICAgICAgcG9zaXRpb25Db29yZCxcbiAgICAgICAgb25DbG9zZVBvcG92ZXI6ICgpID0+IG9uQ2xvc2VQb3BvdmVyKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGV4cGFuZGVkIHRyYW5zbGF0aW9uIGhlbHBzIG1vZGFsXG4gICAqL1xuICBjb25zdCB0b2dnbGVIZWxwc01vZGFsID0gKCkgPT4ge1xuICAgIGNvbnN0IF9zaG93SGVscHNNb2RhbCA9ICFzaG93SGVscHNNb2RhbFxuICAgIHNldFN0YXRlKHtcbiAgICAgIHNob3dIZWxwc01vZGFsOiBfc2hvd0hlbHBzTW9kYWxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHRyYW5zbGF0aW9uIGhlbHBzIHNpZGViYXIgdmlzaWJpbGl0eVxuICAgKi9cbiAgY29uc3QgdG9nZ2xlSGVscHMgPSAoKSA9PiB7XG4gICAgY29uc3QgX3Nob3dIZWxwcyA9ICFzaG93SGVscHNcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBzaG93SGVscHM6IF9zaG93SGVscHNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBCaWJsZSBib29rIHRvIHRoZSBiaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQ3JlYXRlcyBsYW5ndWFnZSBncm91cCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBiaWJsZXMgLSBCaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIExhbmd1YWdlIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVJZCAtIEJpYmxlIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtvYmplY3R9IGJvb2sgLSBCb29rIGRhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVCaWJsZVRvS2V5KGJpYmxlcywga2V5LCBiaWJsZUlkLCBib29rKSB7XG4gICAgbGV0IGtleUdyb3VwID0gYmlibGVzW2tleV1cbiAgICBpZiAoIWtleUdyb3VwKSB7IC8vIGlmIGdyb3VwIGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgbmV3XG4gICAgICBrZXlHcm91cCA9IHt9XG4gICAgICBiaWJsZXNba2V5XSA9IGtleUdyb3VwXG4gICAgfVxuICAgIGtleUdyb3VwW2JpYmxlSWRdID0gYm9va1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdmVyc2UgY29udGVudCBpbiB0YXJnZXQgQmlibGVcbiAgICogSGFuZGxlcyBVU0ZNIGNvbnZlcnNpb24sIGFsaWdubWVudCB1cGRhdGVzLCBhbmQgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhcHRlciAtIENoYXB0ZXIgbnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZSAtIFZlcnNlIG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkVmVyc2VUZXh0IC0gT3JpZ2luYWwgdmVyc2UgdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gTmV3IHZlcnNlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIGVkaXRUYXJnZXRWZXJzZShjaGFwdGVyLCB2ZXJzZSwgb2xkVmVyc2VUZXh0LCBuZXdWZXJzZVRleHQpIHtcbiAgICBjb25zb2xlLmxvZyhgZWRpdFRhcmdldFZlcnNlICR7Y2hhcHRlcn06JHt2ZXJzZX0gLSBjaGFuZ2VkIHRvICR7bmV3VmVyc2VUZXh0fWApXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gZmlyc3QgdXBkYXRlIGNvbXBvbmVudCBzdGF0ZVxuXG4gICAgY29uc3QgX2JpYmxlcyA9IFsgLi4uYmlibGVzX11cbiAgICBjb25zdCBfdGFyZ2V0QmlibGUgPSB7Li4uX2JpYmxlc1swXX1cbiAgICBfYmlibGVzWzBdID0gX3RhcmdldEJpYmxlXG4gICAgY29uc3QgdGFyZ2V0Qm9vayA9IHsuLi5fdGFyZ2V0QmlibGU/LmJvb2t9XG4gICAgX3RhcmdldEJpYmxlLmJvb2sgPSB0YXJnZXRCb29rXG4gICAgY29uc3QgdGFyZ2V0Q2hhcHRlciA9IHsuLi50YXJnZXRCb29rW2NoYXB0ZXJdfVxuICAgIHRhcmdldEJvb2tbY2hhcHRlcl0gPSB0YXJnZXRDaGFwdGVyXG4gICAgdGFyZ2V0Q2hhcHRlclt2ZXJzZV0gPSBuZXdWZXJzZVRleHRcblxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIG5vdyBhcHBseSBuZXcgdmVyc2UgdGV4dCB0byBzZWxlY3RlZCBhbGlnbmVkIHZlcnNlIGFuZCBjYWxsIGJhY2sgdG8gZXh0ZW5zaW9uIHRvIHNhdmVcblxuICAgIGxldCBfbmV3VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0XG4gICAgaWYgKHR5cGVvZiBfbmV3VmVyc2VUZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgX25ld1ZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShfbmV3VmVyc2VUZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyRGF0YSA9IHRhcmdldEJpYmxlPy5bY2hhcHRlcl1cbiAgICBjb25zdCBjdXJyZW50VmVyc2VEYXRhID0gY3VycmVudENoYXB0ZXJEYXRhPy5bdmVyc2VdXG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlRGF0YSwgX25ld1ZlcnNlVGV4dClcbiAgICB0YXJnZXRDaGFwdGVyW3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHMgfTsgLy8gc2F2ZVxuXG4gICAgdXBkYXRlU2V0dGluZ3MoX2JpYmxlcywgdGFyZ2V0Qm9vaylcblxuICAgIGNvbnN0IHZlcnNlVGV4dCA9IHJlbW92ZVVzZm1NYXJrZXJzKF9uZXdWZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VUZXh0XG4gICAgfSlcblxuICAgIGNoYW5nZVRhcmdldFZlcnNlICYmIGNoYW5nZVRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlLCBuZXdWZXJzZVRleHQsIHRhcmdldFZlcnNlT2JqZWN0cylcbiAgICBfc2F2ZURhdGEoeyB2ZXJzZUVkaXRzOiB0cnVlIH0pXG5cbiAgICBjb25zdCBfZ3JvdXBzRGF0YSA9IF8uY2xvbmVEZWVwKGdyb3Vwc0RhdGEpXG4gICAgbGV0IGNoYW5nZWREYXRhID0gZmFsc2VcbiAgICBzZWxlY3Rpb25zSGVscGVycy52YWxpZGF0ZUFsbFNlbGVjdGlvbnNGb3JWZXJzZShuZXdWZXJzZVRleHQsIGJvb2tJZCwgY2hhcHRlciwgdmVyc2UsIF9ncm91cHNEYXRhLCAoY2hlY2ssIGludmFsaWRhdGVkKSA9PiB7XG4gICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgY29uc3QgY3VycmVudENoZWNrSWQgPSBjdXJyZW50Q2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuICAgICAgICBjb25zdCBjaGVja0lkID0gY2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuXG4gICAgICAgIGlmIChjaGVja0lkID09PSBjdXJyZW50Q2hlY2tJZCkge1xuICAgICAgICAgIC8vIG5lZWQgdG8gdXBkYXRlIGN1cnJlbnQgY2hlY2tcbiAgICAgICAgICBfc2F2ZURhdGEoe1xuICAgICAgICAgICAgaW52YWxpZGF0ZWQsXG4gICAgICAgICAgICB2ZXJzZUVkaXRzOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGVjayB2YWxpZGF0ZWQsIHN0YXRlIGNoYW5nZWQ6IGludmFsaWQ6ICR7aW52YWxpZGF0ZWR9YCwgY2hlY2spXG4gICAgICAgIGNoYW5nZWREYXRhID0gY2hhbmdlZERhdGEgfHwgX3NhdmVDaGVja2luZ0RhdGEoY2hlY2ssIHsgaW52YWxpZGF0ZWQsIHZlcnNlRWRpdHM6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGNoYW5nZWREYXRhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGFuZ2VzIGRldGVjdGVkIHVwZGF0aW5nIGdyb3Vwc0RhdGFgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZXR0aW5ncyB3aXRoIG5ldyBCaWJsZSBkYXRhIGFuZCBwYW5lIGNvbmZpZ3VyYXRpb25zXG4gICAqIE9yZ2FuaXplcyBCaWJsZXMgYnkgbGFuZ3VhZ2UgYW5kIGluaXRpYWxpemVzIHBhbmUgc2V0dGluZ3NcbiAgICogQHBhcmFtIHtBcnJheX0gbmV3QmlibGVzIC0gQXJyYXkgb2YgQmlibGUgb2JqZWN0c1xuICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0QmlibGUgLSBUYXJnZXQgQmlibGUgZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3MobmV3QmlibGVzLCB0YXJnZXRCaWJsZSkge1xuICAgIGNvbnN0IF9iaWJsZXMgPSB7fVxuICAgIGxldCBfcGFuZVNldHRpbmdzID0gW11cbiAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5wYW5lS2V5U2V0dGluZ3MgfHwge31cbiAgICBpZiAobmV3QmlibGVzPy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYmlibGUgb2YgbmV3QmlibGVzKSB7XG4gICAgICAgIGxldCBsYW5ndWFnZUlkID0gYmlibGU/Lmxhbmd1YWdlSWRcbiAgICAgICAgY29uc3Qgb3duZXIgPSBiaWJsZT8ub3duZXJcbiAgICAgICAgY29uc3QgYm9vayA9IGJpYmxlPy5ib29rXG4gICAgICAgIGNvbnN0IGJpYmxlSWQgPSBiaWJsZT8uYmlibGVJZFxuICAgICAgICBpZiAobGFuZ3VhZ2VJZCA9PT0gTlRfT1JJR19MQU5HIHx8IGxhbmd1YWdlSWQgPT09IE9UX09SSUdfTEFORykge1xuICAgICAgICAgIGxhbmd1YWdlSWQgPSAnb3JpZ2luYWxMYW5ndWFnZSdcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBgJHtsYW5ndWFnZUlkfS8ke2JpYmxlSWR9LyR7b3duZXJ9YFxuICAgICAgICBjb25zdCBpbml0aWFsUGFuZVNldHRpbmdzID0gX3BhbmVLZXlTZXR0aW5ncz8uW2tleV1cbiAgICAgICAgY29uc3QgbGFuZ0tleSA9IGAke2xhbmd1YWdlSWR9XyR7b3duZXJ9YFxuICAgICAgICBzYXZlQmlibGVUb0tleShfYmlibGVzLCBsYW5nS2V5LCBiaWJsZUlkLCBib29rKVxuICAgICAgICBzYXZlQmlibGVUb0tleShfYmlibGVzLCBsYW5ndWFnZUlkLCBiaWJsZUlkLCBib29rKSAvLyBhbHNvIHNhdmUgYXMgZGVmYXVsdCBmb3IgbGFuZ3VhZ2Ugd2l0aG91dCBvd25lclxuICAgICAgICBjb25zdCBwYW5lID0gaW5pdGlhbFBhbmVTZXR0aW5ncyB8fCB7XG4gICAgICAgICAgLi4uYmlibGUsXG4gICAgICAgICAgbGFuZ3VhZ2VJZFxuICAgICAgICB9XG4gICAgICAgIF9wYW5lU2V0dGluZ3MucHVzaChwYW5lKVxuICAgICAgICBpZiAoIWluaXRpYWxQYW5lU2V0dGluZ3MpIHtcbiAgICAgICAgICBfcGFuZUtleVNldHRpbmdzW2tleV0gPSBwYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3BhbmVTZXR0aW5ncyA9IFtdXG4gICAgfVxuXG4gICAgY29uc3QgX3Rvb2xzU2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LnRvb2xzU2V0dGluZ3MgfHxcbiAgICB7XG4gICAgICAnQ2hlY2tBcmVhJzoge1xuICAgICAgICAnZm9udFNpemUnOiAxMDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgX21hbmlmZXN0ID0gaW5pdGlhbFNldHRpbmdzPy5tYW5pZmVzdCB8fFxuICAgIHtcbiAgICAgIGxhbmd1YWdlX25hbWU6IHRhcmdldEJpYmxlPy5tYW5pZmVzdD8uZHVibGluX2NvcmU/Lmxhbmd1YWdlPy50aXRsZSB8fCAnQ3VycmVudCcsXG4gICAgICBwcm9qZWN0Rm9udDogdGFyZ2V0QmlibGU/Lm1hbmlmZXN0Py5wcm9qZWN0Rm9udCB8fCAnJ1xuICAgIH1cblxuICAgIGNvbnN0IGFwcFNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5hcHBTZXR0aW5ncyB8fCB7fVxuICAgIF9tYW5pZmVzdCA9IHtcbiAgICAgIC4uLl9tYW5pZmVzdCxcbiAgICAgIC4uLmFwcFNldHRpbmdzIC8vIG9sZGVyIGNvZGUgaXMgbG9va2luZyBmb3IgYXBwU2V0dGluZ3MgaW4gbWFuaWZlc3RcbiAgICB9XG5cbiAgICBzZXRCaWJsZXMoX2JpYmxlcylcbiAgICBzZXRUYXJnZXRCaWJsZSh0YXJnZXRCaWJsZSlcbiAgICBzZXRTZXR0aW5ncyh7XG4gICAgICBwYW5lU2V0dGluZ3M6IF9wYW5lU2V0dGluZ3MsXG4gICAgICBwYW5lS2V5U2V0dGluZ3M6IF9wYW5lS2V5U2V0dGluZ3MsXG4gICAgICB0b29sc1NldHRpbmdzOiBfdG9vbHNTZXR0aW5ncyxcbiAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICBuZXdDb21tZW50OiAnJyxcbiAgICAgIGFwcFNldHRpbmdzLFxuICAgIH0sIGZhbHNlKVxuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2Ugd2l0aCBjdXJyZW50IEJpYmxlcyBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5nIC0gTGFuZ3VhZ2UgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gQmlibGUgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJvb2sgLSBCb29rIElEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyIC0gQ2hhcHRlciBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlIC0gVmVyc2UgbnVtYmVyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFNjcmlwdHVyZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShsYW5nLCBpZCwgYm9vaywgY2hhcHRlciwgdmVyc2UpIHtcbiAgICByZXR1cm4gZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShiaWJsZXMsIGxhbmcsIGlkLCBib29rLCBjaGFwdGVyLCB2ZXJzZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgaG9vayB0byB1cGRhdGUgc2V0dGluZ3Mgd2hlbiBCaWJsZXMgb3IgdGFyZ2V0IEJpYmxlIGNoYW5nZXNcbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU2V0dGluZ3MoYmlibGVzXywgdGFyZ2V0QmlibGVfKVxuICB9LCBbYmlibGVzXywgdGFyZ2V0QmlibGVfXSlcblxuICAvLyBidWlsZCB0aGUgdGl0bGVcbiAgY29uc3QgeyB0YXJnZXRfbGFuZ3VhZ2UsIHByb2plY3QgfSA9IG1hbmlmZXN0O1xuICBsZXQgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUgPSBwcm9qZWN0Py50aXRsZSB8fCAnJztcblxuICBpZiAodGFyZ2V0X2xhbmd1YWdlPy5ib29rPy5uYW1lKSB7XG4gICAgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUgPSB0YXJnZXRfbGFuZ3VhZ2UuYm9vay5uYW1lO1xuICB9XG5cblxuICBjb25zdCBzdHlsZVByb3BzID0gc3R5bGVzIHx8IHt9XG4gIGNvbnN0IF9jaGVja2VyU3R5bGVzID0ge1xuICAgIC4uLmxvY2FsU3R5bGVzLmNvbnRhaW5lckRpdixcbiAgICAuLi5zdHlsZVByb3BzLFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICByZWFkeVRvRGlzcGxheUNoZWNrZXIgP1xuICAgICAgPGRpdiBpZD0nY2hlY2tlcicgc3R5bGU9e19jaGVja2VyU3R5bGVzfT5cbiAgICAgICAgPEdyb3VwTWVudUNvbXBvbmVudFxuICAgICAgICAgIGJvb2tOYW1lPXtib29rTmFtZX1cbiAgICAgICAgICBjaGFuZ2VDdXJyZW50Q29udGV4dElkPXtjaGFuZ2VDdXJyZW50Q2hlY2tffVxuICAgICAgICAgIGNvbnRleHRJZD17Y3VycmVudENvbnRleHRJZH1cbiAgICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgICBncm91cHNEYXRhPXtncm91cHNEYXRhfVxuICAgICAgICAgIGdyb3Vwc0luZGV4PXtncm91cHNJbmRleH1cbiAgICAgICAgICB0YXJnZXRMYW5ndWFnZUZvbnQ9e3RhcmdldExhbmd1YWdlRm9udH1cbiAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBzdHlsZT17bG9jYWxTdHlsZXMuY2VudGVyRGl2fT5cbiAgICAgICAgICB7IGJpYmxlcyAmJiBPYmplY3Qua2V5cyhiaWJsZXMpLmxlbmd0aCAmJlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bG9jYWxTdHlsZXMuc2NyaXB0dXJlUGFuZURpdn0+XG4gICAgICAgICAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgICAgICAgICAgYWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0PXthZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3R9XG4gICAgICAgICAgICAgICAgYmlibGVzPXtiaWJsZXN9XG4gICAgICAgICAgICAgICAgY29tcGxleFNjcmlwdEZvbnRzPXtjb21wbGV4U2NyaXB0Rm9udHN9XG4gICAgICAgICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYW5lU2V0dGluZ3M9e3BhbmVTZXR0aW5nc31cbiAgICAgICAgICAgICAgICBlZGl0VmVyc2VSZWY9e251bGx9XG4gICAgICAgICAgICAgICAgZWRpdFRhcmdldFZlcnNlPXtlZGl0VGFyZ2V0VmVyc2V9XG4gICAgICAgICAgICAgICAgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGU9e2V4cGFuZGVkU2NyaXB0dXJlUGFuZVRpdGxlfVxuICAgICAgICAgICAgICAgIGdldEF2YWlsYWJsZVNjcmlwdHVyZVBhbmVTZWxlY3Rpb25zPXtudWxsfVxuICAgICAgICAgICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YV99XG4gICAgICAgICAgICAgICAgbWFrZVN1cmVCaWJsZXNMb2FkZWRGb3JUb29sPXtudWxsfVxuICAgICAgICAgICAgICAgIHByb2plY3REZXRhaWxzUmVkdWNlcj17eyBtYW5pZmVzdCB9fVxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM9e2N1cnJlbnRTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICAgIHNldFRvb2xTZXR0aW5ncz17c2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlfVxuICAgICAgICAgICAgICAgIHNob3dQb3BvdmVyPXtzaG93UG9wb3Zlcn1cbiAgICAgICAgICAgICAgICBvbkV4cGFuZGVkU2NyaXB0dXJlUGFuZVNob3c9e251bGx9XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxDaGVja0luZm9DYXJkXG4gICAgICAgICAgICAgIGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2U9e19nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlfVxuICAgICAgICAgICAgICBvbkxpbmtDbGljaz17KCkgPT4gZmFsc2V9XG4gICAgICAgICAgICAgIG9uU2VlTW9yZUNsaWNrPXsoKSA9PiBmYWxzZX1cbiAgICAgICAgICAgICAgcGhyYXNlPXtncm91cFBocmFzZX1cbiAgICAgICAgICAgICAgc2VlTW9yZUxhYmVsPXt0cmFuc2xhdGUoJ3NlZV9tb3JlJyl9XG4gICAgICAgICAgICAgIHNob3dTZWVNb3JlQnV0dG9uPXtmYWxzZX1cbiAgICAgICAgICAgICAgdGl0bGU9e2dyb3VwVGl0bGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZlcnNlQ2hlY2tcbiAgICAgICAgICAgICAgYWxpZ25lZEdMVGV4dD17YWxpZ25lZEdMVGV4dH1cbiAgICAgICAgICAgICAgYm9va0RldGFpbHM9e2Jvb2tEZXRhaWxzfVxuICAgICAgICAgICAgICBib29rbWFya0VuYWJsZWQ9e2Jvb2ttYXJrRW5hYmxlZH1cbiAgICAgICAgICAgICAgY2FuY2VsRWRpdFZlcnNlPXtjYW5jZWxFZGl0VmVyc2V9XG4gICAgICAgICAgICAgIGNhbmNlbENvbW1lbnQ9e2NhbmNlbENvbW1lbnR9XG4gICAgICAgICAgICAgIGNhbmNlbFNlbGVjdGlvbj17Y2FuY2VsU2VsZWN0aW9ufVxuICAgICAgICAgICAgICBjaGFuZ2VNb2RlPXtjaGFuZ2VNb2RlfVxuICAgICAgICAgICAgICBjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlPXtjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlfVxuICAgICAgICAgICAgICBjaGVja0lmQ29tbWVudENoYW5nZWQ9e2NoZWNrSWZDb21tZW50Q2hhbmdlZH1cbiAgICAgICAgICAgICAgY2hlY2tJZlZlcnNlQ2hhbmdlZD17Y2hlY2tJZlZlcnNlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb249e2NsZWFyU2VsZWN0aW9ufVxuICAgICAgICAgICAgICBjb21tZW50VGV4dD17Y29tbWVudFRleHR9XG4gICAgICAgICAgICAgIGNvbnRleHRJZD17Y3VycmVudENvbnRleHRJZH1cbiAgICAgICAgICAgICAgZGlhbG9nTW9kYWxWaXNpYmlsaXR5ID0ge2ZhbHNlfVxuICAgICAgICAgICAgICBpc0NvbW1lbnRDaGFuZ2VkPXtpc0NvbW1lbnRDaGFuZ2VkfVxuICAgICAgICAgICAgICBpc1ZlcnNlQ2hhbmdlZD17aXNWZXJzZUNoYW5nZWR9XG4gICAgICAgICAgICAgIGlzVmVyc2VFZGl0ZWQ9e2lzVmVyc2VFZGl0ZWR9XG4gICAgICAgICAgICAgIGhhbmRsZUVkaXRWZXJzZT17aGFuZGxlRWRpdFZlcnNlfVxuICAgICAgICAgICAgICBoYW5kbGVHb1RvTmV4dD17aGFuZGxlR29Ub05leHR9XG4gICAgICAgICAgICAgIGhhbmRsZUdvVG9QcmV2aW91cz17aGFuZGxlR29Ub1ByZXZpb3VzfVxuICAgICAgICAgICAgICBoYW5kbGVPcGVuRGlhbG9nPXtudWxsfVxuICAgICAgICAgICAgICBpc1ZlcnNlSW52YWxpZGF0ZWQ9e2lzVmVyc2VJbnZhbGlkYXRlZH1cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEaWFsb2c9e251bGx9XG4gICAgICAgICAgICAgIGhhbmRsZUNvbW1lbnQ9e2hhbmRsZUNvbW1lbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNraXA9e251bGx9XG4gICAgICAgICAgICAgIGhhbmRsZVRhZ3NDaGVja2JveD17aGFuZGxlVGFnc0NoZWNrYm94fVxuICAgICAgICAgICAgICBsb2NhbE5vdGhpbmdUb1NlbGVjdD17dGVtcE5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgbWFuaWZlc3Q9e21hbmlmZXN0fVxuICAgICAgICAgICAgICBtYXhpbXVtU2VsZWN0aW9ucz17bWF4aW11bVNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgIG1vZGU9e21vZGV9XG4gICAgICAgICAgICAgIG5ld1NlbGVjdGlvbnM9e3RlbXBTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICBub3RoaW5nVG9TZWxlY3Q9e2N1cnJlbnROb3RoaW5nVG9TZWxlY3R9XG4gICAgICAgICAgICAgIG9wZW5BbGVydERpYWxvZz17b3BlbkFsZXJ0RGlhbG9nfVxuICAgICAgICAgICAgICBzYXZlQ29tbWVudD17c2F2ZUNvbW1lbnR9XG4gICAgICAgICAgICAgIHNhdmVFZGl0VmVyc2U9e3NhdmVFZGl0VmVyc2V9XG4gICAgICAgICAgICAgIHNhdmVTZWxlY3Rpb249e19zYXZlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICBzZWxlY3Rpb25zPXtjdXJyZW50U2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgc2V0VG9vbFNldHRpbmdzPXtzZXRUb29sU2V0dGluZ3N9XG4gICAgICAgICAgICAgIHRhZ3M9e25ld1RhZ3MgfHwgW119XG4gICAgICAgICAgICAgIHRhcmdldEJpYmxlPXt0YXJnZXRCaWJsZX1cbiAgICAgICAgICAgICAgdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzPXt0YXJnZXRMYW5ndWFnZURldGFpbHN9XG4gICAgICAgICAgICAgIHRvZ2dsZUJvb2ttYXJrPXt0b2dnbGVCb29rbWFya31cbiAgICAgICAgICAgICAgdG9nZ2xlTm90aGluZ1RvU2VsZWN0PXt0b2dnbGVOb3RoaW5nVG9TZWxlY3R9XG4gICAgICAgICAgICAgIHRvb2xzU2V0dGluZ3M9e3Rvb2xzU2V0dGluZ3N9XG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgICAgICB1bmZpbHRlcmVkVmVyc2VUZXh0PXt1bmZpbHRlcmVkVmVyc2VUZXh0fVxuICAgICAgICAgICAgICB2YWxpZGF0ZVNlbGVjdGlvbnM9e3ZhbGlkYXRlU2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgdmVyc2VUZXh0PXt2ZXJzZVRleHR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3Nob3dEb2N1bWVudCAmJiA8VHJhbnNsYXRpb25IZWxwc1xuICAgICAgICAgIG1vZGFsQXJ0aWNsZT17YXJ0aWNsZX1cbiAgICAgICAgICBhcnRpY2xlPXthcnRpY2xlfVxuICAgICAgICAgIGV4cGFuZGVkSGVscHNCdXR0b25Ib3ZlclRleHQ9eydDbGljayB0byBzaG93IGV4cGFuZGVkIGhlbHAgcGFuZSd9XG4gICAgICAgICAgbW9kYWxUaXRsZT17J3RyYW5zbGF0aW9uSGVscHMnfVxuICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgIGlzU2hvd0hlbHBzRXhwYW5kZWQ9e3Nob3dIZWxwc01vZGFsfVxuICAgICAgICAgIG9wZW5FeHBhbmRlZEhlbHBzTW9kYWw9e3RvZ2dsZUhlbHBzTW9kYWx9XG4gICAgICAgICAgc2lkZWJhclRvZ2dsZT17dG9nZ2xlSGVscHN9XG4gICAgICAgICAgaXNTaG93SGVscHNTaWRlYmFyPXtzaG93SGVscHN9XG4gICAgICAgIC8+fVxuICAgICAgICB7cG9wb3ZlclByb3BzPy5wb3BvdmVyVmlzaWJpbGl0eSAmJlxuICAgICAgICAgIDxQb3BvdmVyQ29udGFpbmVyIHsuLi5wb3BvdmVyUHJvcHN9IC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgOlxuICAgICAgJ1dhaXRpbmcgZm9yIERhdGEnXG4gICk7XG59O1xuXG5DaGVja2VyLnByb3BUeXBlcyA9IHtcbiAgc3R5bGVzOlByb3BUeXBlcy5vYmplY3QsXG4gIGFsaWduZWRHbEJpYmxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBiaWJsZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgY2hhbmdlVGFyZ2V0VmVyc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjaGVja2luZ0RhdGE6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2hlY2tUeXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb250ZXh0SWQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZ2xXb3Jkc0RhdGE6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICBpbml0aWFsU2V0dGluZ3M6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNhdmVDaGVja2luZ0RhdGE6IFByb3BUeXBlcy5mdW5jLFxuICBzYXZlU2V0dGluZ3M6IFByb3BUeXBlcy5mdW5jLFxuICBzaG93RG9jdW1lbnQ6IFByb3BUeXBlcy5ib29sLFxuICB0YXJnZXRCaWJsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0YXJnZXRMYW5ndWFnZURldGFpbHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcbmV4cG9ydCBkZWZhdWx0IENoZWNrZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUEwQ0EsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMs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
1374
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXNmbUhlbHBlcnMiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc2VsZWN0aW9uSGVscGVyIiwiX3Byb3BUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX0dyb3VwTWVudUNvbXBvbmVudCIsIl93b3JkQWxpZ25lckxpYiIsIl9kZWVwRXF1YWwiLCJfdHdBcnRpY2xlSGVscGVycyIsIl9DaGVja0luZm9DYXJkIiwiX3RuQXJ0aWNsZUhlbHBlcnMiLCJfU2NyaXB0dXJlUGFuZSIsIl9Qb3BvdmVyQ29udGFpbmVyIiwiX0Jvb2tzT2ZUaGVCaWJsZSIsIl9jb21wbGV4U2NyaXB0Rm9udHMiLCJfVHJhbnNsYXRpb25IZWxwcyIsInRIZWxwc0hlbHBlcnMiLCJfVmVyc2VDaGVjayIsIl9jaGVja0luZm9DYXJkSGVscGVycyIsImUiLCJfX2VzTW9kdWxlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJUeXBlRXJyb3IiLCJhIiwidSIsIm5leHQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiZnJvbSIsIl9hcnJheUxpa2VUb0FycmF5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibCIsImxvY2FsU3R5bGVzIiwiY29udGFpbmVyRGl2IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImhlaWdodCIsImNlbnRlckRpdiIsIm92ZXJmbG93WCIsIm1hcmdpbkxlZnQiLCJzY3JpcHR1cmVQYW5lRGl2IiwiZmxleFNocmluayIsInBhZGRpbmdCb3R0b20iLCJ0cmFuc2xhdGlvbldvcmRzIiwiZXhwb3J0cyIsInRyYW5zbGF0aW9uTm90ZXMiLCJtYXhpbXVtU2VsZWN0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJDaGVja2VyIiwiX3JlZiIsIl90YXJnZXRMYW5ndWFnZURldGFpbCIsIl90YXJnZXRMYW5ndWFnZURldGFpbDIiLCJfdGFyZ2V0X2xhbmd1YWdlJGJvb2siLCJhbGlnbmVkR2xCaWJsZSIsImJpYmxlc18iLCJiaWJsZXMiLCJjaGFuZ2VkQ3VycmVudENoZWNrIiwiY2hhbmdlVGFyZ2V0VmVyc2UiLCJjaGVja2luZ0RhdGEiLCJjaGVja1R5cGUiLCJjb250ZXh0SWQiLCJnZXRMZXhpY29uRGF0YSIsImdsV29yZHNEYXRhIiwiaW5pdGlhbFNldHRpbmdzIiwic2F2ZUNoZWNraW5nRGF0YSIsInNhdmVTZXR0aW5ncyIsInNob3dEb2N1bWVudCIsInN0eWxlcyIsInRhcmdldEJpYmxlXyIsInRhcmdldEJpYmxlIiwidGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzIiwidHJhbnNsYXRlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwYW5lU2V0dGluZ3MiLCJwYW5lS2V5U2V0dGluZ3MiLCJ0b29sc1NldHRpbmdzIiwibWFuaWZlc3QiLCJfdXNlU3RhdGUyIiwic2V0dGluZ3MiLCJfc2V0U2V0dGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNldEJpYmxlcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2V0VGFyZ2V0QmlibGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInRlbXBDaGVja2luZ0RhdGEiLCJzZXRUZW1wQ2hlY2tpbmdEYXRhIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJsb2NhbENoZWNraW5nRGF0YSIsInNldExvY2FsQ2hlY2tpbmdEYXRhIiwiX3VzZVN0YXRlMSIsImFsaWduZWRHTFRleHQiLCJhcnRpY2xlIiwiY3VycmVudENoZWNrIiwiY3VycmVudENoZWNraW5nRGF0YSIsImdyb3VwVGl0bGUiLCJncm91cFBocmFzZSIsImdyb3Vwc0RhdGEiLCJncm91cHNJbmRleCIsImlzQ29tbWVudENoYW5nZWQiLCJpc1ZlcnNlQ2hhbmdlZCIsIm1vZGUiLCJuZXdWZXJzZVRleHQiLCJwb3BvdmVyUHJvcHMiLCJwb3BvdmVyVmlzaWJpbGl0eSIsInNob3dIZWxwc01vZGFsIiwic2hvd0hlbHBzIiwibmV3VGFncyIsInZlcnNlVGV4dCIsIl91c2VTdGF0ZTEwIiwic3RhdGUiLCJfc2V0U3RhdGUiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiZ2V0Q3VycmVudFZhbHVlRm9yIiwia2V5IiwiZ2V0VGVtcFZhbHVlRm9yIiwiY3VycmVudFNlbGVjdGlvbnMiLCJ0ZW1wU2VsZWN0aW9ucyIsInRlbXBOb3RoaW5nVG9TZWxlY3QiLCJjdXJyZW50Tm90aGluZ1RvU2VsZWN0IiwiZ3JvdXBzRGF0YUxvYWRlZCIsInVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zIiwibmV3U2VsZWN0aW9ucyIsIm5vdGhpbmdUb1NlbGVjdCIsIm5vU2VsZWN0aW9ucyIsIm5ld01vZGUiLCJ1c2VFZmZlY3QiLCJoYXZlRGF0YSIsImdyb3Vwc0RhdGFJbml0aWFsaXplZCIsImZsYXR0ZW5lZEdyb3VwRGF0YSIsImdyb3VwRGF0YUhlbHBlcnMiLCJmbGF0dGVuR3JvdXBEYXRhIiwicGFyc2VUblRvSW5kZXgiLCJwYXJzZVR3VG9JbmRleCIsImNoZWNrIiwiZmluZENoZWNrIiwibW9kaWZpZWQiLCJ2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MiLCJpbnZhbGlkYXRlZCIsImNvbmNhdCIsIl9zYXZlQ2hlY2tpbmdEYXRhIiwidXBkYXRlQ29udGV4dCIsInNlbGVjdGlvbnMiLCJuZXdDaGVjayIsImdyb3Vwc0luZGV4XyIsInVuZGVmaW5lZCIsInJlZmVyZW5jZSIsInZlcnNlSGVscGVycyIsImdldFZlcnNlVGV4dEZyb21CaWJsZSIsImdldEFsaWduZWRHTFRleHQiLCJnZXRUaXRsZUZyb21JbmRleCIsImdyb3VwSWQiLCJvY2N1cnJlbmNlTm90ZSIsImdldFBocmFzZUZyb21UdyIsImdyb3VwRGF0YSIsImFydGljbGVzIiwiX2FydGljbGUiLCJhcnRpY2xlSWQiLCJncm91cHNJZHMiLCJfaSIsIl9ncm91cHNJZHMiLCJfZ3JvdXBJZCIsImdyb3VwIiwiY3VycmVudEFydGljbGVNYXJrZG93biIsImNvbnZlcnRNYXJrZG93bkxpbmtzIiwiZ2F0ZXdheUxhbmd1YWdlSWQiLCJjb21tZW50VGV4dCIsImJvb2tJZCIsImJvb2siLCJpZCIsImJvb2tOYW1lIiwiYm9va0RldGFpbHMiLCJ0YXJnZXRMYW5ndWFnZUZvbnQiLCJwcm9qZWN0Rm9udCIsImN1cnJlbnRDb250ZXh0SWQiLCJzZXRUb29sU2V0dGluZ3MiLCJOQU1FU1BBQ0UiLCJmaWVsZE5hbWUiLCJmaWVsZFZhbHVlIiwiX3Rvb2xzU2V0dGluZ3MiLCJjb21wb25lbnRTZXR0aW5ncyIsInNldFNldHRpbmdzIiwiX3NhdmVTZXR0aW5ncyIsIl9zZXR0aW5ncyIsIm5ld1NldHRpbmdzIiwiX3BhbmVTZXR0aW5ncyIsIl9wYW5lU2V0dGluZyIsIl9wYW5lS2V5U2V0dGluZ3MiLCJfaTIiLCJfa2V5cyIsImRvU2F2ZSIsInNldFRvb2xTZXR0aW5nc1NjcmlwdHVyZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGFuZ3VhZ2VJZCIsImJpYmxlSWQiLCJvd25lciIsImVyciIsImFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCIsIl9tYW5pZmVzdCIsImFwcFNldHRpbmdzIiwiX2FwcFNldHRpbmdzIiwib3BlbkFsZXJ0RGlhbG9nIiwiY2hlY2tJZlZlcnNlQ2hhbmdlZCIsIl9uZXdWZXJzZVRleHQiLCJ0YXJnZXQiLCJfaXNWZXJzZUNoYW5nZWQiLCJoYW5kbGVFZGl0VmVyc2UiLCJjYW5jZWxFZGl0VmVyc2UiLCJzYXZlRWRpdFZlcnNlIiwiX2N1cnJlbnRDb250ZXh0SWQkcmVmIiwiY2hhcHRlciIsInZlcnNlIiwidmVyc2VSZWYiLCJ2ZXJzZVNwYW4iLCJiZWZvcmUiLCJlZGl0VGFyZ2V0VmVyc2UiLCJoYW5kbGVHb1RvTmV4dCIsIm5leHRDaGVjayIsImZpbmROZXh0Q2hlY2siLCJjaGFuZ2VDdXJyZW50Q2hlY2tfIiwiaGFuZGxlR29Ub1ByZXZpb3VzIiwicHJldmlvdXNDaGVjayIsImZpbmRQcmV2aW91c0NoZWNrIiwiaGFuZGxlVGFnc0NoZWNrYm94IiwidGFnIiwiY3VycmVudFRhZ3MiLCJ0YWdJbmRleCIsImluZGV4T2YiLCJfbmV3VGFncyIsImNvcHkiLCJzcGxpY2UiLCJ2YWxpZGF0ZVNlbGVjdGlvbnMiLCJ2ZXJzZVRleHRfIiwic2VsZWN0aW9uc18iLCJzZWxlY3Rpb25zSGVscGVycyIsInZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zIiwidW5maWx0ZXJlZFZlcnNlVGV4dCIsInVzZU1lbW8iLCJ1bmZpbHRlcmVkVmVyc2VUZXh0XyIsIl90YXJnZXRCaWJsZSRjaGFwdGVyIiwidmVyc2VEYXRhIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJzZXRUZW1wQ2hlY2tpbmdJdGVtIiwibmV3Q2hlY2tpbmdEYXRhIiwiY2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZSIsInRvZ2dsZU5vdGhpbmdUb1NlbGVjdCIsInNlbGVjdCIsIm5ld0NvbnRleHQiLCJub0NoZWNrIiwibmV3Q29udGV4dElkIiwic2VsZWN0aW9uc1VuY2hhbmdlZCIsImlzRXF1YWwiLCJkaXJlY3Rpb24iLCJib29rbWFya0VuYWJsZWQiLCJpc1ZlcnNlRWRpdGVkIiwiaXNWZXJzZUludmFsaWRhdGVkIiwiX3NhdmVTZWxlY3Rpb24iLCJfY2xvbmVEYXRhRm9yU2F2aW5nIiwiY2xvbmVEYXRhRm9yU2F2aW5nIiwiY2hlY2tJbkdyb3Vwc0RhdGEiLCJfY3VycmVudENoZWNrIiwiX25ld0NoZWNraW5nRGF0YSIsImRlbGV0ZVRlbXBDaGVja2luZ0RhdGEiLCJ1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YSIsIl9ncm91cHNEYXRhIiwiXyIsImNsb25lRGVlcCIsImNhdGVnb3J5IiwibmV3Q2hlY2tEYXRhIiwiX2kzIiwiX09iamVjdCRrZXlzIiwibmV3Q2hlY2tpbmdWYWx1ZSIsIl9zYXZlRGF0YSIsIm5ld0RhdGEiLCJfY2xvbmVEYXRhRm9yU2F2aW5nMiIsIl9pNCIsIl9PYmplY3Qka2V5czIiLCJjaGFuZ2VkRGF0YSIsIl9pNSIsIl9PYmplY3Qka2V5czMiLCJfdGVtcENoZWNraW5nRGF0YSIsImNhbmNlbFNlbGVjdGlvbiIsImNsZWFyU2VsZWN0aW9uIiwidG9nZ2xlQm9va21hcmsiLCJyZW1pbmRlcnMiLCJjaGFuZ2VNb2RlIiwiY2hlY2tJZkNvbW1lbnRDaGFuZ2VkIiwibmV3Y29tbWVudCIsIm9sZGNvbW1lbnQiLCJjYW5jZWxDb21tZW50Iiwic2F2ZUNvbW1lbnQiLCJuZXdDb21tZW50IiwiY29tbWVudHMiLCJoYW5kbGVDb21tZW50IiwicHJldmVudERlZmF1bHQiLCJyZWFkeVRvRGlzcGxheUNoZWNrZXIiLCJnZXRMZXhpY29uRGF0YV8iLCJsZXhpY29uSWQiLCJlbnRyeUlkIiwibGV4aWNvbkRhdGEiLCJvbkNsb3NlUG9wb3ZlciIsInNob3dQb3BvdmVyIiwidGl0bGUiLCJib2R5VGV4dCIsInBvc2l0aW9uQ29vcmQiLCJ0b2dnbGVIZWxwc01vZGFsIiwiX3Nob3dIZWxwc01vZGFsIiwidG9nZ2xlSGVscHMiLCJfc2hvd0hlbHBzIiwic2F2ZUJpYmxlVG9LZXkiLCJrZXlHcm91cCIsIm9sZFZlcnNlVGV4dCIsIl9iaWJsZXMiLCJfdGFyZ2V0QmlibGUiLCJ0YXJnZXRCb29rIiwidGFyZ2V0Q2hhcHRlciIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJjdXJyZW50Q2hhcHRlckRhdGEiLCJjdXJyZW50VmVyc2VEYXRhIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwiQWxpZ25tZW50SGVscGVycyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzIiwidXBkYXRlU2V0dGluZ3MiLCJyZW1vdmVVc2ZtTWFya2VycyIsInZlcnNlRWRpdHMiLCJ2YWxpZGF0ZUFsbFNlbGVjdGlvbnNGb3JWZXJzZSIsIl9jdXJyZW50Q2hlY2skY29udGV4dCIsIl9jaGVjayRjb250ZXh0SWQiLCJjdXJyZW50Q2hlY2tJZCIsImNoZWNrSWQiLCJuZXdCaWJsZXMiLCJfdGFyZ2V0QmlibGUkbWFuaWZlc3QiLCJfdGFyZ2V0QmlibGUkbWFuaWZlc3QyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImJpYmxlIiwiTlRfT1JJR19MQU5HIiwiT1RfT1JJR19MQU5HIiwiaW5pdGlhbFBhbmVTZXR0aW5ncyIsImxhbmdLZXkiLCJwYW5lIiwibGFuZ3VhZ2VfbmFtZSIsImR1Ymxpbl9jb3JlIiwibGFuZ3VhZ2UiLCJfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSIsImxhbmciLCJnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIiwidGFyZ2V0X2xhbmd1YWdlIiwicHJvamVjdCIsImV4cGFuZGVkU2NyaXB0dXJlUGFuZVRpdGxlIiwic3R5bGVQcm9wcyIsIl9jaGVja2VyU3R5bGVzIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwiY2hhbmdlQ3VycmVudENvbnRleHRJZCIsImNvbXBsZXhTY3JpcHRGb250cyIsImN1cnJlbnRQYW5lU2V0dGluZ3MiLCJlZGl0VmVyc2VSZWYiLCJnZXRBdmFpbGFibGVTY3JpcHR1cmVQYW5lU2VsZWN0aW9ucyIsIm1ha2VTdXJlQmlibGVzTG9hZGVkRm9yVG9vbCIsInByb2plY3REZXRhaWxzUmVkdWNlciIsIm9uRXhwYW5kZWRTY3JpcHR1cmVQYW5lU2hvdyIsIm9uTGlua0NsaWNrIiwib25TZWVNb3JlQ2xpY2siLCJwaHJhc2UiLCJzZWVNb3JlTGFiZWwiLCJzaG93U2VlTW9yZUJ1dHRvbiIsImRpYWxvZ01vZGFsVmlzaWJpbGl0eSIsImhhbmRsZU9wZW5EaWFsb2ciLCJoYW5kbGVDbG9zZURpYWxvZyIsImhhbmRsZVNraXAiLCJsb2NhbE5vdGhpbmdUb1NlbGVjdCIsInNhdmVTZWxlY3Rpb24iLCJ0YWdzIiwibW9kYWxBcnRpY2xlIiwiZXhwYW5kZWRIZWxwc0J1dHRvbkhvdmVyVGV4dCIsIm1vZGFsVGl0bGUiLCJpc1Nob3dIZWxwc0V4cGFuZGVkIiwib3BlbkV4cGFuZGVkSGVscHNNb2RhbCIsInNpZGViYXJUb2dnbGUiLCJpc1Nob3dIZWxwc1NpZGViYXIiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYm9vbCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvQ2hlY2tlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogQGZpbGUgQ2hlY2tlci5qc1xuICpcbiAqIEBzeW5vcHNpc1xuICogVGhpcyBpcyB0aGUgbWFpbiBjaGVja2luZyBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhbiBpbnRlZ3JhdGVkIGludGVyZmFjZSBmb3IgQmlibGUgdHJhbnNsYXRpb24gY2hlY2tpbmcuXG4gKiBJdCBzdXBwb3J0cyBib3RoIFRyYW5zbGF0aW9uIE5vdGVzIChUTikgYW5kIFRyYW5zbGF0aW9uIFdvcmRzIChUVykgY2hlY2tpbmcgd29ya2Zsb3dzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIENoZWNrZXIgY29tcG9uZW50IGlzIGEgY29tcHJlaGVuc2l2ZSB0b29sIGZvciBtYW5hZ2luZyBhbmQgcHJlc2VudGluZyBCaWJsZSBjaGVja2luZyBkYXRhIGFuZCB0cmFuc2xhdGlvbnMuXG4gKiBJdCBoYW5kbGVzOlxuICogLSBMb2FkaW5nIGFuZCBkaXNwbGF5aW5nIGNoZWNraW5nIGRhdGEgKHRyYW5zbGF0aW9uIG5vdGVzIG9yIHRyYW5zbGF0aW9uIHdvcmRzKVxuICogLSBNYW5hZ2luZyB1c2VyIHNlbGVjdGlvbnMgYW5kIGFubm90YXRpb25zIGluIHZlcnNlc1xuICogLSBQcm92aWRpbmcgbXVsdGktcGFuZSBTY3JpcHR1cmUgdmlld2luZyB3aXRoIHZhcmlvdXMgQmlibGUgcmVzb3VyY2VzXG4gKiAtIEhhbmRsaW5nIHZlcnNlIGVkaXRpbmcgYW5kIHZhbGlkYXRpb25cbiAqIC0gTWFuYWdpbmcgY29tbWVudHMsIGJvb2ttYXJrcywgYW5kIHRhZ3MgZm9yIGNoZWNrc1xuICogLSBOYXZpZ2F0aW5nIGJldHdlZW4gY2hlY2tzIChuZXh0L3ByZXZpb3VzKVxuICogLSBEaXNwbGF5aW5nIHRyYW5zbGF0aW9uIGhlbHBzIGluIGFuIGludGVncmF0ZWQgc2lkZWJhclxuICogLSBQZXJzaXN0aW5nIHVzZXIgc2V0dGluZ3MgYW5kIGNoZWNraW5nIHByb2dyZXNzXG4gKlxuICogVGhlIGNvbXBvbmVudCBtYWludGFpbnMgY29tcGxleCBzdGF0ZSBpbmNsdWRpbmc6XG4gKiAtIEN1cnJlbnQgY2hlY2sgZGF0YSBhbmQgY29udGV4dFxuICogLSBVc2VyIHNlbGVjdGlvbnMgYW5kIHRlbXBvcmFyeSBjaGFuZ2VzXG4gKiAtIFBhbmUgc2V0dGluZ3MgZm9yIFNjcmlwdHVyZSBkaXNwbGF5XG4gKiAtIFRvb2wtc3BlY2lmaWMgc2V0dGluZ3NcbiAqIC0gVUkgc3RhdGUgKG1vZGVzLCBtb2RhbHMsIHBvcG92ZXJzKVxuICpcbiAqIEByZXF1aXJlbWVudHNcbiAqIC0gUmVhY3QgMTguMy4xK1xuICogLSB3b3JkLWFsaWduZXItbGliIGZvciB2ZXJzZSBhbmQgYWxpZ25tZW50IGhlbHBlcnNcbiAqIC0gZGVlcC1lcXVhbCBmb3Igb2JqZWN0IGNvbXBhcmlzb25cbiAqIC0gbG9kYXNoIGZvciBkZWVwIGNsb25pbmdcbiAqIC0gTWF0ZXJpYWwtVUkgY29tcG9uZW50cyBmb3IgVUkgZWxlbWVudHNcbiAqXG4gKiBAZGVwZW5kZW5jaWVzXG4gKiAtIEdyb3VwTWVudUNvbXBvbmVudDogTmF2aWdhdGlvbiBtZW51IGZvciBjaGVja3NcbiAqIC0gQ2hlY2tJbmZvQ2FyZDogRGlzcGxheXMgY2hlY2sgdGl0bGUgYW5kIHBocmFzZVxuICogLSBTY3JpcHR1cmVQYW5lOiBNdWx0aS1wYW5lIFNjcmlwdHVyZSB2aWV3ZXJcbiAqIC0gVHJhbnNsYXRpb25IZWxwczogU2lkZWJhciBmb3IgdHJhbnNsYXRpb24gaGVscCBhcnRpY2xlc1xuICogLSBWZXJzZUNoZWNrOiBNYWluIGNoZWNraW5nIGludGVyZmFjZSBmb3IgdmVyc2VzXG4gKiAtIFBvcG92ZXJDb250YWluZXI6IERpc3BsYXlzIGNvbnRleHR1YWwgaW5mb3JtYXRpb25cbiAqL1xuaW1wb3J0IHsgcmVtb3ZlVXNmbU1hcmtlcnMgfSBmcm9tICcuLi91dGlscy91c2ZtSGVscGVycydcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MgfSBmcm9tICcuLi91dGlscy9zZWxlY3Rpb25IZWxwZXInXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgR3JvdXBNZW51Q29tcG9uZW50IGZyb20gJy4vR3JvdXBNZW51Q29tcG9uZW50J1xuaW1wb3J0IHtcbiAgZ3JvdXBEYXRhSGVscGVycyxcbiAgc2VsZWN0aW9uc0hlbHBlcnMsXG4gIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMsXG4gIHZlcnNlSGVscGVycyxcbiAgQWxpZ25tZW50SGVscGVycyxcbiAgXG59IGZyb20gJ3dvcmQtYWxpZ25lci1saWInXG5pbXBvcnQgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHtcbiAgZmluZENoZWNrLFxuICBmaW5kTmV4dENoZWNrLFxuICBmaW5kUHJldmlvdXNDaGVjayxcbiAgZ2V0QWxpZ25lZEdMVGV4dCxcbiAgZ2V0UGhyYXNlRnJvbVR3LFxuICBnZXRUaXRsZUZyb21JbmRleCxcbiAgXG4gIHBhcnNlVHdUb0luZGV4XG59IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNsYXRpb25IZWxwcy90d0FydGljbGVIZWxwZXJzJ1xuaW1wb3J0IENoZWNrSW5mb0NhcmQgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9DaGVja0luZm9DYXJkJ1xuaW1wb3J0IHsgcGFyc2VUblRvSW5kZXggfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zbGF0aW9uSGVscHMvdG5BcnRpY2xlSGVscGVycydcbmltcG9ydCBTY3JpcHR1cmVQYW5lIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvU2NyaXB0dXJlUGFuZSdcbmltcG9ydCBQb3BvdmVyQ29udGFpbmVyIGZyb20gJy4uL2NvbnRhaW5lcnMvUG9wb3ZlckNvbnRhaW5lcidcbmltcG9ydCB7IE5UX09SSUdfTEFORywgT1RfT1JJR19MQU5HIH0gZnJvbSAnLi4vY29tbW9uL0Jvb2tzT2ZUaGVCaWJsZSdcbmltcG9ydCBjb21wbGV4U2NyaXB0Rm9udHMgZnJvbSAnLi4vY29tbW9uL2NvbXBsZXhTY3JpcHRGb250cydcbmltcG9ydCBUcmFuc2xhdGlvbkhlbHBzIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvVHJhbnNsYXRpb25IZWxwcydcbmltcG9ydCAqIGFzIHRIZWxwc0hlbHBlcnMgZnJvbSAnLi4vaGVscGVycy90SGVscHNIZWxwZXJzJ1xuaW1wb3J0IFZlcnNlQ2hlY2sgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9WZXJzZUNoZWNrJ1xuaW1wb3J0IHsgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSB9IGZyb20gJy4uL2hlbHBlcnMvY2hlY2tJbmZvQ2FyZEhlbHBlcnMnXG5cbmNvbnN0IGxvY2FsU3R5bGVzID0ge1xuICBjb250YWluZXJEaXY6e1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICB3aWR0aDogJzk3dncnLFxuICAgIGhlaWdodDogJzY1dncnLFxuICB9LFxuICBjZW50ZXJEaXY6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgd2lkdGg6ICc4NSUnLFxuICAgIG92ZXJmbG93WDogJ2F1dG8nLFxuICAgIG1hcmdpbkxlZnQ6ICcxMHB4JyxcbiAgfSxcbiAgc2NyaXB0dXJlUGFuZURpdjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4U2hyaW5rOiAnMCcsXG4gICAgaGVpZ2h0OiAnMjUwcHgnLFxuICAgIHBhZGRpbmdCb3R0b206ICcyMHB4JyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2xhdGlvbldvcmRzID0gJ3RyYW5zbGF0aW9uV29yZHMnXG5leHBvcnQgY29uc3QgdHJhbnNsYXRpb25Ob3RlcyA9ICd0cmFuc2xhdGlvbk5vdGVzJ1xuY29uc3QgbWF4aW11bVNlbGVjdGlvbnMgPSAxMFxuXG5jb25zb2xlLmxvZygnQ2hlY2tlci5qcyAtIHN0YXJ0dXAnKVxuY29uc3QgbmFtZSA9ICdDaGVja2VyJ1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgQ2hlY2tlclxuICogVGhlIENoZWNrZXIgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhbmQgcHJlc2VudGluZyBCaWJsZSBjaGVja2luZyBkYXRhIGFuZCB0cmFuc2xhdGlvbnMuXG4gKiBJdCBoYW5kbGVzIHN0YXRlIHVwZGF0ZXMsIHNldHRpbmdzIG1hbmFnZW1lbnQsIGFuZCBlbnN1cmVzIHRoZSBuZWNlc3NhcnkgZGF0YSBpcyBsb2FkZWQgYW5kIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycyAtIEFuIG9iamVjdCB3aXRoIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBDaGVja2VyIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmFsaWduZWRHbEJpYmxlIC0gVGhlIGFsaWduZWQgR2F0ZXdheSBMYW5ndWFnZSBCaWJsZSBkYXRhIHVzZWQgZm9yIHRyYW5zbGF0aW9ucy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmJpYmxlcyAtIEJpYmxlIGRhdGEgZm9yIHZhcmlvdXMgbGFuZ3VhZ2VzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5jaGFuZ2VkQ3VycmVudENoZWNrIC0gY2FsbGJhY2sgdG8gbm90aWZ5IG9mIGNoYW5nZXMgaW4gY29udGV4dC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuY2hhbmdlVGFyZ2V0VmVyc2UgLSBBIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY3VycmVudCB2ZXJzZSBiZWluZyBjaGVja2VkLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuY2hlY2tpbmdEYXRhIC0gRGF0YSByZWxhdGVkIHRvIGNoZWNrcyAoZS5nLiwgdHJhbnNsYXRpb24gbm90ZXMgb3IgdHJhbnNsYXRpb24gd29yZHMpLlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtZXRlcnMuY2hlY2tUeXBlIC0gVGhlIHR5cGUgb2YgY2hlY2sgYmVpbmcgcGVyZm9ybWVkIChlLmcuLCB0cmFuc2xhdGlvbiBub3RlcywgdHJhbnNsYXRpb24gd29yZHMpLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuY29udGV4dElkIC0gT2JqZWN0IGNvbnRhaW5pbmcgbWV0YWRhdGEgYWJvdXQgdGhlIGN1cnJlbnQgZ3JvdXAvdmVyc2UgYmVpbmcgd29ya2VkIG9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5nZXRMZXhpY29uRGF0YSAtIEZ1bmN0aW9uIHRvIHJldHJpZXZlIGxleGljb24gZGF0YS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmdsV29yZHNEYXRhIC0gRGF0YSByZWxhdGVkIHRvIEdhdGV3YXkgTGFuZ3VhZ2Ugd29yZHMgYW5kIGFsaWdubWVudCBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmluaXRpYWxTZXR0aW5ncyAtIFRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciB0aGUgQ2hlY2tlciBjb21wb25lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnNhdmVDaGVja2luZ0RhdGEgLSBGdW5jdGlvbiB0byBzYXZlIHRoZSBtb2RpZmllZCBjaGVja2luZyBkYXRhLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zYXZlU2V0dGluZ3MgLSBGdW5jdGlvbiB0byBwZXJzaXN0IHVzZXIncyBjb21wb25lbnQgc2V0dGluZ3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnNob3dEb2N1bWVudCAtIEZ1bmN0aW9uIHRvIGRpc3BsYXkgYSBkb2N1bWVudCBpbiB0aGUgaW50ZXJmYWNlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuc3R5bGVzIC0gU3R5bGluZyBpbmZvcm1hdGlvbiB0byBjdXN0b21pemUgdGhlIGNvbXBvbmVudCdzIGFwcGVhcmFuY2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy50YXJnZXRCaWJsZSAtIFRoZSB0YXJnZXQgQmlibGUgZGF0YSBmb3IgdGhlIHdvcmtpbmcgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy50YXJnZXRMYW5ndWFnZURldGFpbHMgLSBNZXRhZGF0YSBhYm91dCB0aGUgdGFyZ2V0IGxhbmd1YWdlLCBpbmNsdWRpbmcgYm9vayBhbmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMudHJhbnNsYXRlIC0gQSBmdW5jdGlvbiB1c2VkIGZvciBzdHJpbmcgdHJhbnNsYXRpb25zIGluIHRoZSBVSS5cbiAqL1xuY29uc3QgQ2hlY2tlciA9ICh7XG4gIGFsaWduZWRHbEJpYmxlLFxuICBiaWJsZXM6IGJpYmxlc18sXG4gIGNoYW5nZWRDdXJyZW50Q2hlY2ssXG4gIGNoYW5nZVRhcmdldFZlcnNlLFxuICBjaGVja2luZ0RhdGEsXG4gIGNoZWNrVHlwZSxcbiAgY29udGV4dElkLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ2xXb3Jkc0RhdGEsXG4gIGluaXRpYWxTZXR0aW5ncyxcbiAgc2F2ZUNoZWNraW5nRGF0YSxcbiAgc2F2ZVNldHRpbmdzLFxuICBzaG93RG9jdW1lbnQsXG4gIHN0eWxlcyxcbiAgdGFyZ2V0QmlibGU6IHRhcmdldEJpYmxlXyxcbiAgdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzLFxuICB0cmFuc2xhdGUsXG59KSA9PiB7XG4gIC8vIE1haW4gc2V0dGluZ3Mgc3RhdGUgLSBpbmNsdWRlcyBwYW5lIGNvbmZpZ3VyYXRpb24sIHRvb2wgc2V0dGluZ3MsIGFuZCBtYW5pZmVzdCBkYXRhXG4gIGNvbnN0IFtzZXR0aW5ncywgX3NldFNldHRpbmdzXSA9IHVzZVN0YXRlKHtcbiAgICBwYW5lU2V0dGluZ3M6IFtdLFxuICAgIHBhbmVLZXlTZXR0aW5nczoge30sXG4gICAgdG9vbHNTZXR0aW5nczoge30sXG4gICAgbWFuaWZlc3Q6IHt9XG4gIH0pXG4gIGNvbnN0IHtcbiAgICBwYW5lU2V0dGluZ3MsXG4gICAgcGFuZUtleVNldHRpbmdzLFxuICAgIHRvb2xzU2V0dGluZ3MsXG4gICAgbWFuaWZlc3RcbiAgfSA9IHNldHRpbmdzXG5cbiAgLy8gQmlibGUgZGF0YSBvcmdhbml6ZWQgYnkgbGFuZ3VhZ2UgYW5kIElEXG4gIGNvbnN0IFtiaWJsZXMsIHNldEJpYmxlc10gPSB1c2VTdGF0ZSh7IH0pXG5cbiAgLy8gQ3VycmVudCB0YXJnZXQgQmlibGUgYmVpbmcgY2hlY2tlZFxuICBjb25zdCBbdGFyZ2V0QmlibGUsIHNldFRhcmdldEJpYmxlXSA9IHVzZVN0YXRlKHRhcmdldEJpYmxlXylcblxuICAvLyBUZW1wb3JhcnkgY2hlY2tpbmcgZGF0YSBmb3IgdW5zYXZlZCBjaGFuZ2VzXG4gIGNvbnN0IFt0ZW1wQ2hlY2tpbmdEYXRhLCBzZXRUZW1wQ2hlY2tpbmdEYXRhXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgLy8gTG9jYWwgY2hlY2tpbmcgZGF0YSBmb3IgY3VycmVudCBzZXNzaW9uXG4gIGNvbnN0IFtsb2NhbENoZWNraW5nRGF0YSwgc2V0TG9jYWxDaGVja2luZ0RhdGFdID0gdXNlU3RhdGUobnVsbClcblxuICAvLyBNYWluIGNvbXBvbmVudCBzdGF0ZVxuICBjb25zdCBbc3RhdGUsIF9zZXRTdGF0ZV0gPSB1c2VTdGF0ZSh7XG4gICAgYWxpZ25lZEdMVGV4dDogJycsIC8vIEdhdGV3YXkgTGFuZ3VhZ2UgdGV4dCBhbGlnbmVkIHRvIG9yaWdpbmFsXG4gICAgYXJ0aWNsZTogbnVsbCwgLy8gQ3VycmVudCB0cmFuc2xhdGlvbiBoZWxwIGFydGljbGVcbiAgICBjdXJyZW50Q2hlY2s6IG51bGwsIC8vIEN1cnJlbnQgY2hlY2sgYmVpbmcgd29ya2VkIG9uXG4gICAgY3VycmVudENoZWNraW5nRGF0YTogbnVsbCwgLy8gQWxsIGNoZWNraW5nIGRhdGEgZm9yIGN1cnJlbnQgYm9va1xuICAgIGdyb3VwVGl0bGU6ICcnLCAvLyBUaXRsZSBvZiBjdXJyZW50IGNoZWNrIGdyb3VwXG4gICAgZ3JvdXBQaHJhc2U6ICcnLCAvLyBQaHJhc2Ugb3Igb2NjdXJyZW5jZSBub3RlIGZvciBjdXJyZW50IGNoZWNrXG4gICAgZ3JvdXBzRGF0YTogbnVsbCwgLy8gRmxhdHRlbmVkIGdyb3VwIGRhdGEgZm9yIGFsbCBjaGVja3NcbiAgICBncm91cHNJbmRleDogbnVsbCwgLy8gSW5kZXggb2YgYWxsIGNoZWNrIGdyb3Vwc1xuICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLCAvLyBXaGV0aGVyIGNvbW1lbnQgaGFzIHVuc2F2ZWQgY2hhbmdlc1xuICAgIGlzVmVyc2VDaGFuZ2VkOiBmYWxzZSwgLy8gV2hldGhlciB2ZXJzZSBoYXMgdW5zYXZlZCBjaGFuZ2VzXG4gICAgbW9kZTogJ2RlZmF1bHQnLCAvLyBDdXJyZW50IFVJIG1vZGUgKGRlZmF1bHQsIHNlbGVjdCwgZWRpdCwgY29tbWVudClcbiAgICBuZXdWZXJzZVRleHQ6IG51bGwsIC8vIE5ldyB2ZXJzZSB0ZXh0IGR1cmluZyBlZGl0aW5nXG4gICAgcG9wb3ZlclByb3BzOiB7XG4gICAgICBwb3BvdmVyVmlzaWJpbGl0eTogZmFsc2VcbiAgICB9LFxuICAgIHNob3dIZWxwc01vZGFsOiBmYWxzZSwgLy8gV2hldGhlciBoZWxwcyBtb2RhbCBpcyBzaG93blxuICAgIHNob3dIZWxwczogdHJ1ZSwgLy8gV2hldGhlciBoZWxwcyBzaWRlYmFyIGlzIHNob3duXG4gICAgbmV3VGFnczogbnVsbCwgLy8gTmV3IHRhZ3MgYmVpbmcgYWRkZWRcbiAgICB2ZXJzZVRleHQ6ICcnLCAvLyBDdXJyZW50IHZlcnNlIHRleHRcbiAgfSlcblxuICBjb25zdCB7XG4gICAgYWxpZ25lZEdMVGV4dCxcbiAgICBhcnRpY2xlLFxuICAgIGN1cnJlbnRDaGVjayxcbiAgICBjdXJyZW50Q2hlY2tpbmdEYXRhLFxuICAgIGdyb3VwVGl0bGUsXG4gICAgZ3JvdXBQaHJhc2UsXG4gICAgZ3JvdXBzRGF0YSxcbiAgICBncm91cHNJbmRleCxcbiAgICBpc0NvbW1lbnRDaGFuZ2VkLFxuICAgIGlzVmVyc2VDaGFuZ2VkLFxuICAgIG1vZGUsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHBvcG92ZXJQcm9wcyxcbiAgICBzaG93SGVscHNNb2RhbCxcbiAgICBzaG93SGVscHMsXG4gICAgbmV3VGFncyxcbiAgICB2ZXJzZVRleHQsXG4gIH0gPSBzdGF0ZVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBzdGF0ZSBvYmplY3Qgd2l0aCBuZXcgdmFsdWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZSAtIE9iamVjdCBjb250YWluaW5nIHN0YXRlIHByb3BlcnRpZXMgdG8gdXBkYXRlXG4gICAqL1xuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIF9zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHNhdmVkIHZhbHVlIGZvciBhIGNoZWNrIHByb3BlcnR5XG4gICAqIEZhbGxzIGJhY2sgdG8gbG9jYWwgY2hlY2tpbmcgZGF0YSBpZiBhdmFpbGFibGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybnMgeyp9IEN1cnJlbnQgdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRWYWx1ZUZvcihrZXkpIHtcbiAgICBpZiAobG9jYWxDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiBsb2NhbENoZWNraW5nRGF0YVtrZXldXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50Q2hlY2s/LltrZXldXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcG9yYXJ5ICh1bnNhdmVkKSB2YWx1ZSBmb3IgYSBjaGVjayBwcm9wZXJ0eVxuICAgKiBGYWxscyBiYWNrIHRocm91Z2ggbG9jYWwgY2hlY2tpbmcgZGF0YSB0byBjdXJyZW50IGNoZWNrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEByZXR1cm5zIHsqfSBUZW1wb3JhcnkgdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFRlbXBWYWx1ZUZvcihrZXkpIHtcbiAgICBpZiAodGVtcENoZWNraW5nRGF0YT8uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgcmV0dXJuIHRlbXBDaGVja2luZ0RhdGFba2V5XVxuICAgIH1cbiAgICByZXR1cm4gZ2V0Q3VycmVudFZhbHVlRm9yKGtleSlcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb25zID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdzZWxlY3Rpb25zJykgfHwgW11cbiAgY29uc3QgdGVtcFNlbGVjdGlvbnMgPSBnZXRUZW1wVmFsdWVGb3IoJ3NlbGVjdGlvbnMnKSB8fCBbXVxuICBjb25zdCB0ZW1wTm90aGluZ1RvU2VsZWN0ID0gZ2V0VGVtcFZhbHVlRm9yKCdub3RoaW5nVG9TZWxlY3QnKVxuICBjb25zdCBjdXJyZW50Tm90aGluZ1RvU2VsZWN0ID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdub3RoaW5nVG9TZWxlY3QnKVxuICBjb25zdCBncm91cHNEYXRhTG9hZGVkID0gISFncm91cHNEYXRhXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFVJIG1vZGUgYmFzZWQgb24gc2VsZWN0aW9ucyBzdGF0ZVxuICAgKiBTd2l0Y2hlcyB0byAnc2VsZWN0JyBtb2RlIGlmIG5vIHNlbGVjdGlvbnMgYW5kIG5vdGhpbmcgaXMgbWFya2VkIGFzIHVuc2VsZWN0YWJsZVxuICAgKiBAcGFyYW0ge0FycmF5fSBuZXdTZWxlY3Rpb25zIC0gQ3VycmVudCBzZWxlY3Rpb25zIGFycmF5XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm90aGluZ1RvU2VsZWN0IC0gV2hldGhlciB2ZXJzZSBpcyBtYXJrZWQgYXMgaGF2aW5nIG5vdGhpbmcgdG8gc2VsZWN0XG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVNb2RlRm9yU2VsZWN0aW9ucyhuZXdTZWxlY3Rpb25zLCBub3RoaW5nVG9TZWxlY3QpIHtcbiAgICBjb25zdCBub1NlbGVjdGlvbnMgPSAoIW5ld1NlbGVjdGlvbnM/Lmxlbmd0aClcbiAgICBjb25zdCBuZXdNb2RlID0gbm9TZWxlY3Rpb25zICYmICFub3RoaW5nVG9TZWxlY3QgPyAnc2VsZWN0JyA6ICdkZWZhdWx0J1xuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6IG5ld01vZGVcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCBob29rIHRvIGluaXRpYWxpemUgY2hlY2tpbmcgZGF0YSB3aGVuIGNoZWNraW5nRGF0YSBvciBnbFdvcmRzRGF0YSBjaGFuZ2VzXG4gICAqIEZsYXR0ZW5zIGdyb3VwIGRhdGEsIGNyZWF0ZXMgaW5kZXgsIGZpbmRzIGluaXRpYWwgY2hlY2ssIGFuZCB2YWxpZGF0ZXMgYWxsIGNoZWNrc1xuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYXZlRGF0YSA9IGNoZWNraW5nRGF0YSAmJiBPYmplY3Qua2V5cyhjaGVja2luZ0RhdGEpLmxlbmd0aCAmJiBnbFdvcmRzRGF0YSAmJiBPYmplY3Qua2V5cyhnbFdvcmRzRGF0YSkubGVuZ3RoXG4gICAgY29uc3QgZ3JvdXBzRGF0YUluaXRpYWxpemVkID0gZ3JvdXBzRGF0YSAmJiBPYmplY3Qua2V5cyhncm91cHNEYXRhKS5sZW5ndGhcbiAgICBpZiAoaGF2ZURhdGEgJiYgIWdyb3Vwc0RhdGFJbml0aWFsaXplZCkge1xuICAgICAgbGV0IGZsYXR0ZW5lZEdyb3VwRGF0YSA9IG51bGxcbiAgICAgIGxldCBncm91cHNJbmRleCA9IG51bGxcbiAgICAgIGlmIChjaGVja2luZ0RhdGEpIHtcbiAgICAgICAgZmxhdHRlbmVkR3JvdXBEYXRhID0gZ3JvdXBEYXRhSGVscGVycy5mbGF0dGVuR3JvdXBEYXRhKGNoZWNraW5nRGF0YSlcbiAgICAgIH1cblxuICAgICAgaWYgKGdsV29yZHNEYXRhKSB7XG4gICAgICAgIGlmIChjaGVja1R5cGUgPT09IHRyYW5zbGF0aW9uTm90ZXMpIHtcbiAgICAgICAgICBncm91cHNJbmRleCA9IHBhcnNlVG5Ub0luZGV4KGdsV29yZHNEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3Vwc0luZGV4ID0gcGFyc2VUd1RvSW5kZXgoZ2xXb3Jkc0RhdGEpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hlY2sgPSBmaW5kQ2hlY2soZmxhdHRlbmVkR3JvdXBEYXRhLCBjb250ZXh0SWQsIHRydWUpXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgZ3JvdXBzRGF0YTogZmxhdHRlbmVkR3JvdXBEYXRhLFxuICAgICAgICBncm91cHNJbmRleCxcbiAgICAgICAgY3VycmVudENoZWNraW5nRGF0YTogY2hlY2tpbmdEYXRhLFxuICAgICAgICBjdXJyZW50Q2hlY2s6IGNoZWNrLFxuICAgICAgICBtb2RpZmllZDogZmFsc2UsXG4gICAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ2RlYnVnJyx0YXJnZXRCaWJsZSxmbGF0dGVuZWRHcm91cERhdGEpXG4gICAgICAvLyB2YWxpZGF0ZSBhbGwgY2hlY2tzXG4gICAgICB2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3ModGFyZ2V0QmlibGUsIGZsYXR0ZW5lZEdyb3VwRGF0YSwgKGNoZWNrLCBpbnZhbGlkYXRlZCkgPT4ge1xuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zYXZlRWRpdFZlcnNlIC0gY2hlY2sgdmFsaWRhdGlvbiBjaGFuZ2VkYCwgY2hlY2spXG4gICAgICAgICAgX3NhdmVDaGVja2luZ0RhdGEoY2hlY2ssIHsgaW52YWxpZGF0ZWQgfSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG5cbiAgICAgIGlmIChmbGF0dGVuZWRHcm91cERhdGEgJiYgY2hlY2s/LmNvbnRleHRJZCkge1xuICAgICAgICB1cGRhdGVDb250ZXh0KGNoZWNrLCBncm91cHNJbmRleClcbiAgICAgICAgdXBkYXRlTW9kZUZvclNlbGVjdGlvbnMoY2hlY2s/LnNlbGVjdGlvbnMsIGNoZWNrPy5ub3RoaW5nVG9TZWxlY3QpXG4gICAgICB9XG4gICAgfVxuICB9LCBbY29udGV4dElkLCBjaGVja2luZ0RhdGEsIGdsV29yZHNEYXRhXSk7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbnRleHQgYW5kIHJlbGF0ZWQgZGF0YSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY2hlY2sgYW5kIGdyb3VwIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gbmV3Q2hlY2sgLSBUaGUgbmV3IGNoZWNrIG9iamVjdCBjb250YWluaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbZ3JvdXBzSW5kZXhfPWdyb3Vwc0luZGV4XSAtIEFuIG9wdGlvbmFsIGdyb3VwIGluZGV4IG9iamVjdCwgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbCB2YXJpYWJsZSBgZ3JvdXBzSW5kZXhgLlxuICAgKiBAcmV0dXJuIHt2b2lkfSBEb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4gVXBkYXRlcyB0aGUgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIHdpdGggbmV3IGNvbnRleHQgZGF0YS5cbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZUNvbnRleHQobmV3Q2hlY2ssIGdyb3Vwc0luZGV4XyA9IGdyb3Vwc0luZGV4KSB7XG4gICAgY29uc3QgY29udGV4dElkID0gbmV3Q2hlY2s/LmNvbnRleHRJZFxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IGNvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgdmVyc2VUZXh0ID0gdmVyc2VIZWxwZXJzLmdldFZlcnNlVGV4dEZyb21CaWJsZSh0YXJnZXRCaWJsZSwgcmVmZXJlbmNlKVxuICAgIGNvbnN0IGFsaWduZWRHTFRleHQgPSBnZXRBbGlnbmVkR0xUZXh0KGFsaWduZWRHbEJpYmxlLCBjb250ZXh0SWQpO1xuICAgIGNvbnNvbGUubG9nKGFsaWduZWRHTFRleHQpXG4gICAgY29uc3QgZ3JvdXBUaXRsZSA9IGdldFRpdGxlRnJvbUluZGV4KGdyb3Vwc0luZGV4XywgY29udGV4dElkPy5ncm91cElkKVxuICAgIGNvbnN0IGdyb3VwUGhyYXNlID1cbiAgICAgIGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlc1xuICAgICAgICA/IGNvbnRleHRJZD8ub2NjdXJyZW5jZU5vdGVcbiAgICAgICAgOiBnZXRQaHJhc2VGcm9tVHcoZ2xXb3Jkc0RhdGEsIGNvbnRleHRJZD8uZ3JvdXBJZClcblxuICAgIGxldCBncm91cERhdGFcbiAgICBpZiAoZ2xXb3Jkc0RhdGEpIHtcbiAgICAgIGlmIChjaGVja1R5cGUgPT09IHRyYW5zbGF0aW9uTm90ZXMpIHtcbiAgICAgICAgZ3JvdXBEYXRhID0ge1xuICAgICAgICAgIHRyYW5zbGF0ZToge1xuICAgICAgICAgICAgYXJ0aWNsZXM6IGdsV29yZHNEYXRhPy50cmFuc2xhdGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtcbiAgICAgICAgICAuLi5nbFdvcmRzRGF0YSxcbiAgICAgICAgICBtYW5pZmVzdDoge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfYXJ0aWNsZVxuICAgIGNvbnN0IGFydGljbGVJZCA9IGNvbnRleHRJZD8uZ3JvdXBJZFxuICAgIGNvbnN0IGdyb3Vwc0lkcyA9IE9iamVjdC5rZXlzKGdyb3VwRGF0YSlcbiAgICBmb3IgKGNvbnN0IF9ncm91cElkIG9mIGdyb3Vwc0lkcykge1xuICAgICAgY29uc3QgZ3JvdXAgPSBncm91cERhdGFbX2dyb3VwSWRdXG4gICAgICBjb25zdCBhcnRpY2xlcyA9IGdyb3VwPy5hcnRpY2xlcyB8fCB7fVxuICAgICAgX2FydGljbGUgPSBhcnRpY2xlcz8uW2FydGljbGVJZF0gfHwgbnVsbFxuICAgICAgaWYgKF9hcnRpY2xlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcnRpY2xlTWFya2Rvd24gPSB0SGVscHNIZWxwZXJzLmNvbnZlcnRNYXJrZG93bkxpbmtzKF9hcnRpY2xlLCBnYXRld2F5TGFuZ3VhZ2VJZCk7XG4gICAgICAgIF9hcnRpY2xlID0gY3VycmVudEFydGljbGVNYXJrZG93blxuICAgICAgICAvLyBjb25zdCB0SGVscHNNb2RhbE1hcmtkb3duID0gdEhlbHBzSGVscGVycy5jb252ZXJ0TWFya2Rvd25MaW5rcyhtb2RhbEFydGljbGUsIGdhdGV3YXlMYW5ndWFnZUNvZGUsIGFydGljbGVDYXRlZ29yeSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0U3RhdGUoe1xuICAgICAgYWxpZ25lZEdMVGV4dCxcbiAgICAgIGN1cnJlbnRDaGVjazogbmV3Q2hlY2ssXG4gICAgICB2ZXJzZVRleHQsXG4gICAgICBncm91cFRpdGxlLFxuICAgICAgZ3JvdXBQaHJhc2UsXG4gICAgICBhcnRpY2xlOiBfYXJ0aWNsZVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb21tZW50VGV4dCA9IGdldEN1cnJlbnRWYWx1ZUZvcignY29tbWVudHMnKSB8fCAnJ1xuICBjb25zdCBib29rSWQgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmJvb2s/LmlkXG4gIGNvbnN0IGJvb2tOYW1lID0gdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzPy5ib29rPy5uYW1lXG4gIGNvbnN0IGJvb2tEZXRhaWxzID0ge1xuICAgIGlkOiBib29rSWQsXG4gICAgbmFtZTogYm9va05hbWVcbiAgfTtcbiAgY29uc3QgZ2F0ZXdheUxhbmd1YWdlSWQgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmdhdGV3YXlMYW5ndWFnZUlkXG4gIGNvbnN0IHRhcmdldExhbmd1YWdlRm9udCA9IG1hbmlmZXN0Py5wcm9qZWN0Rm9udCB8fCAnJ1xuICBjb25zdCBjdXJyZW50Q29udGV4dElkID0gY3VycmVudENoZWNrPy5jb250ZXh0SWRcblxuICAvKipcbiAgICogVXBkYXRlcyB0b29sLXNwZWNpZmljIHNldHRpbmdzIGFuZCBwZXJzaXN0cyB0aGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZSAoZS5nLiwgJ1NjcmlwdHVyZVBhbmUnKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmllbGRWYWx1ZSAtIFNldHRpbmcgdmFsdWVcbiAgICovXG4gIGNvbnN0IHNldFRvb2xTZXR0aW5ncyA9IChOQU1FU1BBQ0UsIGZpZWxkTmFtZSwgZmllbGRWYWx1ZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNldFRvb2xTZXR0aW5ncyAke2ZpZWxkTmFtZX09JHtmaWVsZFZhbHVlfWApXG4gICAgaWYgKHRvb2xzU2V0dGluZ3MpIHtcbiAgICAgIC8vIERlZXAgY2xvbmluZyBvYmplY3QgdG8gYXZvaWQgbW9kaWZ5aW5nIG9yaWdpbmFsIG9iamVjdFxuICAgICAgY29uc3QgX3Rvb2xzU2V0dGluZ3MgPSB7IC4uLnRvb2xzU2V0dGluZ3MgfTtcbiAgICAgIGxldCBjb21wb25lbnRTZXR0aW5ncyA9IF90b29sc1NldHRpbmdzPy5bTkFNRVNQQUNFXVxuICAgICAgaWYgKCFjb21wb25lbnRTZXR0aW5ncykge1xuICAgICAgICBjb21wb25lbnRTZXR0aW5ncyA9IHsgfVxuICAgICAgICBfdG9vbHNTZXR0aW5nc1tOQU1FU1BBQ0VdID0gY29tcG9uZW50U2V0dGluZ3NcbiAgICAgIH1cbiAgICAgIGNvbXBvbmVudFNldHRpbmdzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlXG4gICAgICBzZXRTZXR0aW5ncyh7IHRvb2xzU2V0dGluZ3M6IF90b29sc1NldHRpbmdzIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIHNldHRpbmdzIHRvIHN0b3JhZ2UgYWZ0ZXIgcmVtb3ZpbmcgQmlibGUgZGF0YSB0byByZWR1Y2Ugc2l6ZVxuICAgKiBDcmVhdGVzIHNoYWxsb3cgY29waWVzIHRvIGF2b2lkIG1vZGlmeWluZyBvcmlnaW5hbCBvYmplY3RzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfc2V0dGluZ3MgLSBTZXR0aW5ncyBvYmplY3QgdG8gc2F2ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gX3NhdmVTZXR0aW5ncyhfc2V0dGluZ3MpIHtcbiAgICBpZiAoc2F2ZVNldHRpbmdzICYmIF9zZXR0aW5ncykge1xuICAgICAgY29uc3QgbmV3U2V0dGluZ3MgPSB7IC4uLl9zZXR0aW5ncyB9XG4gICAgICBkZWxldGUgbmV3U2V0dGluZ3MubWFuaWZlc3RcbiAgICAgIGNvbnN0IF9wYW5lU2V0dGluZ3MgPSBbIC4uLm5ld1NldHRpbmdzLnBhbmVTZXR0aW5ncyBdXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF9wYW5lU2V0dGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgX3BhbmVTZXR0aW5nID0gey4uLl9wYW5lU2V0dGluZ3NbaV19IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5nc1tpXSA9IF9wYW5lU2V0dGluZ1xuICAgICAgfVxuICAgICAgbmV3U2V0dGluZ3MucGFuZVNldHRpbmdzID0gX3BhbmVTZXR0aW5nc1xuXG4gICAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0geyAuLi5uZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgfVxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKF9wYW5lS2V5U2V0dGluZ3MpXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGNvbnN0IF9wYW5lU2V0dGluZyA9IHsuLi5fcGFuZUtleVNldHRpbmdzW2tleV19IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVLZXlTZXR0aW5nc1trZXldID0gX3BhbmVTZXR0aW5nXG4gICAgICB9XG4gICAgICBuZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgPSBfcGFuZUtleVNldHRpbmdzXG5cbiAgICAgIHNhdmVTZXR0aW5ncyhuZXdTZXR0aW5ncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZXR0aW5ncyBzdGF0ZSBhbmQgb3B0aW9uYWxseSBwZXJzaXN0cyB0aGVtXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTZXR0aW5ncyAtIE5ldyBzZXR0aW5ncyB0byBtZXJnZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvU2F2ZSAtIFdoZXRoZXIgdG8gcGVyc2lzdCBzZXR0aW5nc1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0U2V0dGluZ3MobmV3U2V0dGluZ3MsIGRvU2F2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgX3NldHRpbmdzID0ge1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAuLi5uZXdTZXR0aW5nc1xuICAgIH1cblxuICAgIF9zZXRTZXR0aW5ncyhfc2V0dGluZ3MpXG4gICAgZG9TYXZlICYmIF9zYXZlU2V0dGluZ3MoX3NldHRpbmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgU2NyaXB0dXJlIHBhbmUgc2V0dGluZ3Mgd2l0aCBuZXcgcGFuZSBjb25maWd1cmF0aW9uc1xuICAgKiBNYWludGFpbnMgYSBrZXktYmFzZWQgbG9va3VwIGZvciBwYW5lIHNldHRpbmdzIGJ5IGxhbmd1YWdlL2JpYmxlL293bmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7QXJyYXl9IF9wYW5lU2V0dGluZ3MgLSBBcnJheSBvZiBwYW5lIHNldHRpbmcgb2JqZWN0c1xuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBfcGFuZVNldHRpbmdzKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlICR7ZmllbGROYW1lfWAsIF9wYW5lU2V0dGluZ3MpXG4gICAgY29uc3QgX3BhbmVLZXlTZXR0aW5ncyA9IHsuLi5wYW5lS2V5U2V0dGluZ3N9XG5cbiAgICBmb3IgKGNvbnN0IHBhbmVTZXR0aW5ncyBvZiBfcGFuZVNldHRpbmdzKSB7XG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gcGFuZVNldHRpbmdzPy5sYW5ndWFnZUlkXG4gICAgICBjb25zdCBrZXkgPSBgJHtsYW5ndWFnZUlkfS8ke3BhbmVTZXR0aW5ncz8uYmlibGVJZH0vJHtwYW5lU2V0dGluZ3M/Lm93bmVyfWBcbiAgICAgIF9wYW5lS2V5U2V0dGluZ3Nba2V5XSA9IHBhbmVTZXR0aW5nc1xuICAgIH1cblxuICAgIGNvbnN0IF9zZXR0aW5ncyA9IHtcbiAgICAgIHBhbmVTZXR0aW5nczogX3BhbmVTZXR0aW5ncyxcbiAgICAgIHBhbmVLZXlTZXR0aW5nczogX3BhbmVLZXlTZXR0aW5ncyxcbiAgICB9XG5cbiAgICBzZXRTZXR0aW5ncyhfc2V0dGluZ3MsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHByb3BlcnR5IHRvIHRoZSBtYW5pZmVzdCBhbmQgYXBwIHNldHRpbmdzXG4gICAqIFVzZWQgZm9yIHBlcnNpc3RpbmcgdXNlciBwcmVmZXJlbmNlcyBsaWtlIGZvbnRzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmllbGRWYWx1ZSAtIFByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBjb25zdCBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QgPSAoZmllbGROYW1lLCBmaWVsZFZhbHVlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tYWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0ICR7ZmllbGROYW1lfT0ke2ZpZWxkVmFsdWV9YClcbiAgICBpZiAobWFuaWZlc3QpIHtcbiAgICAgIGNvbnN0IF9tYW5pZmVzdCA9IHtcbiAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFZhbHVlXG4gICAgICB9XG5cbiAgICAgIC8vIGFsc28gc2F2ZSB0aGlzIGluIGFwcFNldHRpbmdzXG4gICAgICBjb25zdCBhcHBTZXR0aW5ncyA9IHNldHRpbmdzLmFwcFNldHRpbmdzIHx8IHt9XG4gICAgICBjb25zdCBfYXBwU2V0dGluZ3MgPSB7XG4gICAgICAgIC4uLmFwcFNldHRpbmdzLFxuICAgICAgICBbZmllbGROYW1lXTogZmllbGRWYWx1ZVxuICAgICAgfVxuXG4gICAgICBzZXRTZXR0aW5ncyh7XG4gICAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICAgIGFwcFNldHRpbmdzOiBfYXBwU2V0dGluZ3NcbiAgICAgIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLy8gRXZlbnQgaGFuZGxlcnMgZm9yIHZhcmlvdXMgdXNlciBhY3Rpb25zXG5cbiAgLyoqXG4gICAqIE9wZW5zIGFuIGFsZXJ0IGRpYWxvZyAocGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24pXG4gICAqL1xuICBjb25zdCBvcGVuQWxlcnREaWFsb2cgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tb3BlbkFsZXJ0RGlhbG9nYCkgLy8gVE9ETyAtIGZsZXNoIG91dFxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB2ZXJzZSBjb250ZW50IGhhcyBjaGFuZ2VkIGZyb20gb3JpZ2luYWxcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50XG4gICAqL1xuICBjb25zdCBjaGVja0lmVmVyc2VDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGVja0lmVmVyc2VDaGFuZ2VkYClcbiAgICBjb25zdCBfbmV3VmVyc2VUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBjb25zdCBfaXNWZXJzZUNoYW5nZWQgPSBfbmV3VmVyc2VUZXh0ICE9PSB2ZXJzZVRleHRcbiAgICBzZXRTdGF0ZSh7IGlzVmVyc2VDaGFuZ2VkOiBfaXNWZXJzZUNoYW5nZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB2ZXJzZSB0ZXh0IGVkaXRpbmdcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50IHdpdGggbmV3IHZlcnNlIHRleHRcbiAgICovXG4gIGNvbnN0IGhhbmRsZUVkaXRWZXJzZSA9IChlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlRWRpdFZlcnNlYClcbiAgICBjb25zdCBfbmV3VmVyc2VUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBzZXRTdGF0ZSh7IG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHZlcnNlIGVkaXRpbmcgYW5kIHJlc2V0cyBzdGF0ZVxuICAgKi9cbiAgY29uc3QgY2FuY2VsRWRpdFZlcnNlID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNhbmNlbEVkaXRWZXJzZWApXG4gICAgc2V0U3RhdGUoeyBuZXdWZXJzZVRleHQ6IG51bGwsIG5ld1RhZ3M6IFtdLCBtb2RlOiBcImRlZmF1bHRcIiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBlZGl0ZWQgdmVyc2UgdGV4dCBhbmQgdXBkYXRlcyBhbGlnbm1lbnRzXG4gICAqIE1hcmtzIGNoZWNrIGFzIGhhdmluZyB2ZXJzZSBlZGl0c1xuICAgKi9cbiAgY29uc3Qgc2F2ZUVkaXRWZXJzZSA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zYXZlRWRpdFZlcnNlYClcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBjdXJyZW50Q29udGV4dElkLnJlZmVyZW5jZTtcbiAgICBjb25zdCB2ZXJzZVJlZiA9IGN1cnJlbnRDb250ZXh0SWQudmVyc2VTcGFuIHx8IHZlcnNlOyAvLyBpZiBpbiB2ZXJzZSBzcGFuLCB1c2UgaXRcbiAgICBjb25zdCBiZWZvcmUgPSB0YXJnZXRCaWJsZVtjaGFwdGVyXVt2ZXJzZVJlZl07XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgICBuZXdUYWdzOiBbXSxcbiAgICAgIG1vZGU6IFwiZGVmYXVsdFwiLFxuICAgICAgaXNWZXJzZUNoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICAgIGVkaXRUYXJnZXRWZXJzZShjaGFwdGVyLCB2ZXJzZVJlZiwgYmVmb3JlLCBuZXdWZXJzZVRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBjaGVjayBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUdvVG9OZXh0KCkge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWhhbmRsZUdvVG9OZXh0YClcbiAgICBjb25zdCBuZXh0Q2hlY2sgPSBmaW5kTmV4dENoZWNrKGdyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgIGNoYW5nZUN1cnJlbnRDaGVja18obmV4dENoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgY2hlY2sgaW4gdGhlIHNlcXVlbmNlXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVHb1RvUHJldmlvdXMoKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlR29Ub1ByZXZpb3VzYClcbiAgICBjb25zdCBwcmV2aW91c0NoZWNrID0gZmluZFByZXZpb3VzQ2hlY2soZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgY2hhbmdlQ3VycmVudENoZWNrXyhwcmV2aW91c0NoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2hlY2tib3ggY2hhbmdlcyBmb3IgdGFnc1xuICAgKiBBZGRzIG9yIHJlbW92ZXMgdGFncyBmcm9tIHRoZSBjdXJyZW50IGxpc3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIFRhZyBpZGVudGlmaWVyXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWdzQ2hlY2tib3ggPSAodGFnKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlVGFnc0NoZWNrYm94YCwgdGFnKVxuICAgIGNvbnN0IGN1cnJlbnRUYWdzID0gbmV3VGFncyB8fCBbXVxuICAgIGNvbnN0IHRhZ0luZGV4ID0gY3VycmVudFRhZ3MuaW5kZXhPZih0YWcpO1xuICAgIGxldCBfbmV3VGFncztcblxuICAgIGlmICh0YWdJbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBjb3B5ID0gY3VycmVudFRhZ3Muc2xpY2UoMCk7XG4gICAgICBjb3B5LnNwbGljZSh0YWdJbmRleCwgMSk7XG4gICAgICBfbmV3VGFncyA9IGNvcHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9uZXdUYWdzID0gWy4uLmN1cnJlbnRUYWdzLCB0YWddO1xuICAgIH1cblxuICAgIHNldFN0YXRlKHsgbmV3VGFnczogX25ld1RhZ3MgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHNlbGVjdGlvbnMgYWdhaW5zdCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVRleHRfIC0gVmVyc2UgdGV4dCB0byB2YWxpZGF0ZSBhZ2FpbnN0XG4gICAqIEBwYXJhbSB7QXJyYXl9IHNlbGVjdGlvbnNfIC0gU2VsZWN0aW9ucyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBzZWxlY3Rpb25zIGFyZSB2YWxpZFxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVTZWxlY3Rpb25zID0gKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdmFsaWRhdGVTZWxlY3Rpb25zYCwgc2VsZWN0aW9uc18pXG4gICAgcmV0dXJuIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKVxuICB9XG5cbiAgLyoqXG4gICAqIE1lbW9pemVkIGNvbXB1dGF0aW9uIG9mIHVuZmlsdGVyZWQgdmVyc2UgdGV4dCBpbmNsdWRpbmcgVVNGTSBtYXJrZXJzXG4gICAqIFVzZWQgZm9yIGRpc3BsYXlpbmcgYW5kIGVkaXRpbmcgY29tcGxldGUgdmVyc2UgZGF0YVxuICAgKi9cbiAgY29uc3QgdW5maWx0ZXJlZFZlcnNlVGV4dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCB1bmZpbHRlcmVkVmVyc2VUZXh0XyA9ICcnXG4gICAgY29uc3QgcmVmZXJlbmNlID0gY3VycmVudENvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgY2hhcHRlciA9IHJlZmVyZW5jZT8uY2hhcHRlclxuICAgIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICAgIGlmIChjaGFwdGVyICYmIHZlcnNlKSB7XG4gICAgICBjb25zdCB2ZXJzZURhdGEgPSB0YXJnZXRCaWJsZT8uW2NoYXB0ZXJdPy5bdmVyc2VdXG4gICAgICBpZiAodmVyc2VEYXRhKSB7XG4gICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gdmVyc2VEYXRhXG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2VEYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHZlcnNlRGF0YSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmZpbHRlcmVkVmVyc2VUZXh0X1xuICB9LCBbdGFyZ2V0QmlibGUsIGN1cnJlbnRDb250ZXh0SWRdKVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgdGVtcG9yYXJ5IHZhbHVlIGZvciBhIGNoZWNraW5nIGRhdGEgcHJvcGVydHlcbiAgICogVXNlZCBmb3IgdHJhY2tpbmcgdW5zYXZlZCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBQcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgY29uc3Qgc2V0VGVtcENoZWNraW5nSXRlbSA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3Q2hlY2tpbmdEYXRhID0gdGVtcENoZWNraW5nRGF0YSA/IHsuLi50ZW1wQ2hlY2tpbmdEYXRhfSA6IHt9XG4gICAgbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSB2YWx1ZVxuICAgIHNldFRlbXBDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgc2VsZWN0aW9ucyBpbiB0ZW1wb3Jhcnkgc3RhdGUgd2l0aG91dCBzYXZpbmdcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0aW9ucyAtIE5ldyBzZWxlY3Rpb25zIGFycmF5XG4gICAqL1xuICBjb25zdCBjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlID0gKHNlbGVjdGlvbnMpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlYCwgc2VsZWN0aW9ucylcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdzZWxlY3Rpb25zJywgc2VsZWN0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBcIm5vdGhpbmcgdG8gc2VsZWN0XCIgZmxhZyBmb3IgY3VycmVudCBjaGVja1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNlbGVjdCAtIE5ldyBzdGF0ZSB2YWx1ZVxuICAgKi9cbiAgY29uc3QgdG9nZ2xlTm90aGluZ1RvU2VsZWN0ID0gKHNlbGVjdCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZU5vdGhpbmdUb1NlbGVjdGAsIHNlbGVjdClcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdub3RoaW5nVG9TZWxlY3QnLCBzZWxlY3QpXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgY3VycmVudCBjaGVjayBiZWluZyB3b3JrZWQgb25cbiAgICogVmFsaWRhdGVzIGZvciB1bnNhdmVkIGNoYW5nZXMgYmVmb3JlIHN3aXRjaGluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3Q29udGV4dCAtIE5ldyBjaGVjayBjb250ZXh0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9DaGVjayAtIFNraXAgdmFsaWRhdGlvbiBpZiB0cnVlXG4gICAqL1xuICBjb25zdCBjaGFuZ2VDdXJyZW50Q2hlY2tfID0gKG5ld0NvbnRleHQsIG5vQ2hlY2sgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IG5ld0NvbnRleHRJZCA9IG5ld0NvbnRleHQ/LmNvbnRleHRJZFxuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZUN1cnJlbnRDb250ZXh0SWRgLCBuZXdDb250ZXh0SWQpXG5cbiAgICBjb25zdCBzZWxlY3Rpb25zVW5jaGFuZ2VkID0gaXNFcXVhbChjdXJyZW50U2VsZWN0aW9ucywgdGVtcFNlbGVjdGlvbnMpXG4gICAgaWYgKG5vQ2hlY2sgfHwgc2VsZWN0aW9uc1VuY2hhbmdlZCkge1xuICAgICAgaWYgKG5ld0NvbnRleHRJZCkge1xuICAgICAgICBsZXQgY2hlY2sgPSBmaW5kQ2hlY2soZ3JvdXBzRGF0YSwgbmV3Q29udGV4dElkLCBmYWxzZSlcbiAgICAgICAgdXBkYXRlQ29udGV4dChuZXdDb250ZXh0KVxuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShudWxsKVxuICAgICAgICAgIHNldFRlbXBDaGVja2luZ0RhdGEobnVsbClcbiAgICAgICAgICB1cGRhdGVNb2RlRm9yU2VsZWN0aW9ucyhjaGVjay5zZWxlY3Rpb25zLCBjaGVjay5ub3RoaW5nVG9TZWxlY3QpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ0NoZWNrZXIuY2hhbmdlQ3VycmVudENvbnRleHRJZCAtIHVuc2F2ZWQgY2hhbmdlcycpXG4gICAgfVxuICAgIGNoYW5nZWRDdXJyZW50Q2hlY2sgJiYgY2hhbmdlZEN1cnJlbnRDaGVjayhuZXdDb250ZXh0KVxuICB9XG5cbiAgY29uc3QgZGlyZWN0aW9uID0gJ2x0cidcbiAgY29uc3QgYm9va21hcmtFbmFibGVkID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdyZW1pbmRlcnMnKVxuICBjb25zdCBpc1ZlcnNlRWRpdGVkID0gISFnZXRDdXJyZW50VmFsdWVGb3IoJ3ZlcnNlRWRpdHMnKVxuICBjb25zdCBpc1ZlcnNlSW52YWxpZGF0ZWQgPSAhIWdldEN1cnJlbnRWYWx1ZUZvcignaW52YWxpZGF0ZWQnKVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgKiBWYWxpZGF0ZXMgZm9yIHVuc2F2ZWQgY2hhbmdlcyBiZWZvcmUgc3dpdGNoaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdDb250ZXh0IC0gTmV3IGNoZWNrIGNvbnRleHRcbiAgICogQHBhcmFtIHtib29sZWFufSBub0NoZWNrIC0gU2tpcCB2YWxpZGF0aW9uIGlmIHRydWVcbiAgICovXG4gIGNvbnN0IF9zYXZlU2VsZWN0aW9uID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LV9zYXZlU2VsZWN0aW9uIHBlcnNpc3QgdG8gZmlsZWApXG4gICAgY29uc3QgeyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfSA9IGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgaWYgKHRlbXBOb3RoaW5nVG9TZWxlY3QpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSB0ZW1wTm90aGluZ1RvU2VsZWN0XG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuc2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuaW52YWxpZGF0ZWQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSBmYWxzZVxuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLnNlbGVjdGlvbnMgPSB0ZW1wU2VsZWN0aW9uc1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLmludmFsaWRhdGVkID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgc2V0TG9jYWxDaGVja2luZ0RhdGEoX25ld0NoZWNraW5nRGF0YSlcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ25vdGhpbmdUb1NlbGVjdCcpXG4gICAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ2ludmFsaWRhdGVkJylcblxuICAgICAgdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoX2N1cnJlbnRDaGVjaywgY2hlY2tJbkdyb3Vwc0RhdGEsIF9uZXdDaGVja2luZ0RhdGEpXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvbmVzIGN1cnJlbnQgZGF0YSBzdHJ1Y3R1cmVzIGZvciBzYXZpbmcgbW9kaWZpY2F0aW9uc1xuICAgKiBDcmVhdGVzIGRlZXAgY29waWVzIHRvIGF2b2lkIG11dGF0aW5nIG9yaWdpbmFsIHN0YXRlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIGNsb25lZCBkYXRhIHN0cnVjdHVyZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNsb25lRGF0YUZvclNhdmluZygpIHtcbiAgICBjb25zdCBfZ3JvdXBzRGF0YSA9IF8uY2xvbmVEZWVwKGdyb3Vwc0RhdGEpXG4gICAgY29uc3QgY2hlY2tJbkdyb3Vwc0RhdGEgPSBmaW5kQ2hlY2soX2dyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQpXG4gICAgbGV0IF9jdXJyZW50Q2hlY2tcbiAgICBsZXQgbmV3U3RhdGVcbiAgICBsZXQgX25ld0NoZWNraW5nRGF0YVxuICAgIGlmIChjaGVja0luR3JvdXBzRGF0YSkge1xuICAgICAgLy8gc2F2ZSB0aGUgc2VsZWN0aW9uIGNoYW5nZXNcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2hlY2tJbkdyb3Vwc0RhdGEuY2F0ZWdvcnlcbiAgICAgIGNvbnN0IG5ld0NoZWNrRGF0YSA9IF8uY2xvbmVEZWVwKGN1cnJlbnRDaGVja2luZ0RhdGEpXG4gICAgICBfY3VycmVudENoZWNrID0gZmluZENoZWNrKG5ld0NoZWNrRGF0YVtjYXRlZ29yeV0sIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgICAgbmV3U3RhdGUgPSB7XG4gICAgICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IG5ld0NoZWNrRGF0YSxcbiAgICAgICAgY3VycmVudENoZWNrOiBfY3VycmVudENoZWNrLFxuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YSxcbiAgICAgICAgbW9kZTogJ2RlZmF1bHQnLFxuICAgICAgICBtb2RpZmllZDogdHJ1ZVxuICAgICAgfVxuICAgICAgX25ld0NoZWNraW5nRGF0YSA9IGxvY2FsQ2hlY2tpbmdEYXRhID8gey4uLmxvY2FsQ2hlY2tpbmdEYXRhfSA6IHt9XG4gICAgfVxuICAgIHJldHVybiB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGluIGNoZWNrIGRhdGEgb2JqZWN0c1xuICAgKiBNb2RpZmllcyBib3RoIHRoZSBjdXJyZW50IGNoZWNrIGFuZCBncm91cHMgZGF0YVxuICAgKiBAcGFyYW0ge29iamVjdH0gX2N1cnJlbnRDaGVjayAtIEN1cnJlbnQgY2hlY2sgb2JqZWN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjaGVja0luR3JvdXBzRGF0YSAtIENoZWNrIGluIGdyb3VwcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBAcGFyYW0ge29iamVjdH0gX25ld0NoZWNraW5nRGF0YSAtIE5ldyBkYXRhIHRvIGFwcGx5XG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKF9uZXdDaGVja2luZ0RhdGEpKSB7XG4gICAgICBjb25zdCBuZXdDaGVja2luZ1ZhbHVlID0gX25ld0NoZWNraW5nRGF0YVtrZXldXG4gICAgICBfY3VycmVudENoZWNrW2tleV0gPSBuZXdDaGVja2luZ1ZhbHVlXG4gICAgICBjaGVja0luR3JvdXBzRGF0YVtrZXldID0gbmV3Q2hlY2tpbmdWYWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0cyBtdWx0aXBsZSBjaGVjayBwcm9wZXJ0eSBjaGFuZ2VzIHRvIGZpbGVcbiAgICogQ2xvbmVzIGRhdGEsIGFwcGxpZXMgY2hhbmdlcywgdXBkYXRlcyBzdGF0ZSwgYW5kIHNhdmVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdEYXRhIC0gT2JqZWN0IHdpdGggcHJvcGVydHkgbmFtZXMgYW5kIHZhbHVlcyB0byB1cGRhdGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0IF9zYXZlRGF0YSA9IChuZXdEYXRhKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVEYXRhIHBlcnNpc3QgdG8gZmlsZWApXG4gICAgY29uc3QgeyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfSA9IGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmV3RGF0YSkpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YVtrZXldID0gbmV3RGF0YVtrZXldXG4gICAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoa2V5KVxuICAgICAgfVxuICAgICAgc2V0TG9jYWxDaGVja2luZ0RhdGEoX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoX2N1cnJlbnRDaGVjaywgY2hlY2tJbkdyb3Vwc0RhdGEsIF9uZXdDaGVja2luZ0RhdGEpXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgY2hhbmdlcyB0byBhIHNwZWNpZmljIGNoZWNrIChtYXkgbm90IGJlIGN1cnJlbnQgY2hlY2spXG4gICAqIE9ubHkgc2F2ZXMgaWYgZGF0YSBhY3R1YWxseSBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjaGVjayAtIENoZWNrIG9iamVjdCB0byB1cGRhdGVcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0RhdGEgLSBOZXcgZGF0YSB0byBhcHBseVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBkYXRhIHdhcyBjaGFuZ2VkXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdCBfc2F2ZUNoZWNraW5nRGF0YSA9IChjaGVjaywgbmV3RGF0YSkgPT4ge1xuICAgIGxldCBjaGFuZ2VkRGF0YSA9IGZhbHNlXG4gICAgaWYgKGNoZWNrKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdEYXRhKSkge1xuICAgICAgICBpZiAoY2hlY2tba2V5XSAhPT0gbmV3RGF0YVtrZXldKSB7XG4gICAgICAgICAgY2hlY2tba2V5XSA9IG5ld0RhdGFba2V5XVxuICAgICAgICAgIGNoYW5nZWREYXRhID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VkRGF0YSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1fc2F2ZUNoZWNraW5nRGF0YSBwZXJzaXN0IGNoYW5nZXMgdG8gZmlsZWAsIGNoZWNrKVxuICAgICAgICBjb25zdCBuZXdDaGVja2luZ0RhdGEgPSB7XG4gICAgICAgICAgY3VycmVudENoZWNrOiBjaGVjayxcbiAgICAgICAgfVxuICAgICAgICBzYXZlQ2hlY2tpbmdEYXRhICYmIHNhdmVDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlZERhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcHJvcGVydHkgZnJvbSB0ZW1wb3JhcnkgY2hlY2tpbmcgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZSB0byByZW1vdmVcbiAgICovXG4gIGZ1bmN0aW9uIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoa2V5KSB7XG4gICAgaWYgKHRlbXBDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGNvbnN0IF90ZW1wQ2hlY2tpbmdEYXRhID0gey4uLnRlbXBDaGVja2luZ0RhdGF9XG4gICAgICBkZWxldGUgX3RlbXBDaGVja2luZ0RhdGFba2V5XVxuICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShfdGVtcENoZWNraW5nRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBzZWxlY3Rpb24gbW9kZSB3aXRob3V0IHNhdmluZyBjaGFuZ2VzXG4gICAqL1xuICBjb25zdCBjYW5jZWxTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsU2VsZWN0aW9uYClcbiAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCdcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGN1cnJlbnQgc2VsZWN0aW9uc1xuICAgKi9cbiAgY29uc3QgY2xlYXJTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2xlYXJTZWxlY3Rpb25gKVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ3NlbGVjdGlvbnMnLCBbXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGJvb2ttYXJrL3JlbWluZGVyIGZsYWcgZm9yIGN1cnJlbnQgY2hlY2tcbiAgICovXG4gIGNvbnN0IHRvZ2dsZUJvb2ttYXJrID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZUJvb2ttYXJrYClcbiAgICBfc2F2ZURhdGEoe1xuICAgICAgcmVtaW5kZXJzOiAhZ2V0VGVtcFZhbHVlRm9yKCdyZW1pbmRlcnMnKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgVUkgbW9kZSAoZGVmYXVsdCwgc2VsZWN0LCBlZGl0LCBjb21tZW50KVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSAtIE5ldyBtb2RlIGlkZW50aWZpZXJcbiAgICovXG4gIGNvbnN0IGNoYW5nZU1vZGUgPSAobW9kZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZU1vZGVgLCBtb2RlKVxuICAgIHNldFN0YXRlKHsgbW9kZSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjb21tZW50IHRleHQgaGFzIGNoYW5nZWQgZnJvbSBzYXZlZCB2YWx1ZVxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnRcbiAgICovXG4gIGZ1bmN0aW9uIGNoZWNrSWZDb21tZW50Q2hhbmdlZChlKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hlY2tJZkNvbW1lbnRDaGFuZ2VkYClcbiAgICBjb25zdCBuZXdjb21tZW50ID0gZS50YXJnZXQudmFsdWUgfHwgJyc7XG4gICAgY29uc3Qgb2xkY29tbWVudCA9IGNvbW1lbnRUZXh0IHx8ICcnO1xuICAgIGNvbnN0IGlzQ29tbWVudENoYW5nZWQgPSBuZXdjb21tZW50ICE9PSBvbGRjb21tZW50XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBjb21tZW50IGVkaXRpbmcgd2l0aG91dCBzYXZpbmdcbiAgICovXG4gIGNvbnN0IGNhbmNlbENvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsQ29tbWVudGApXG4gICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnY29tbWVudHMnKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGNvbW1lbnQgY2hhbmdlcyB0byBwZXJzaXN0ZW50IHN0b3JhZ2VcbiAgICovXG4gIGNvbnN0IHNhdmVDb21tZW50ID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNhdmVDb21tZW50YClcbiAgICBjb25zdCBuZXdDb21tZW50ID0gZ2V0VGVtcFZhbHVlRm9yKCdjb21tZW50cycpXG4gICAgX3NhdmVEYXRhKHsgY29tbWVudHM6IG5ld0NvbW1lbnQgfSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNvbW1lbnQgdGV4dCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudCB3aXRoIG5ldyBjb21tZW50XG4gICAqL1xuICBjb25zdCBoYW5kbGVDb21tZW50ID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlQ29tbWVudGApXG4gICAgY29uc3QgbmV3Q29tbWVudCA9IGUudGFyZ2V0LnZhbHVlXG4gICAgc2V0VGVtcENoZWNraW5nSXRlbSgnY29tbWVudHMnLCBuZXdDb21tZW50KVxuICAgIHNldFN0YXRlKHtcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZWFkeVRvRGlzcGxheUNoZWNrZXIgPSBncm91cHNEYXRhICYmIGdyb3Vwc0luZGV4ICYmIGN1cnJlbnRDb250ZXh0SWQgJiYgdmVyc2VUZXh0XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldExleGljb25EYXRhIGNhbGxiYWNrIHdpdGggbG9nZ2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbGV4aWNvbklkIC0gTGV4aWNvbiBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRyeUlkIC0gRW50cnkgaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBMZXhpY29uIGRhdGFcbiAgICovXG4gIGNvbnN0IGdldExleGljb25EYXRhXyA9IChsZXhpY29uSWQsIGVudHJ5SWQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1nZXRMZXhpY29uRGF0YV9gLCB7bGV4aWNvbklkLCBlbnRyeUlkfSlcbiAgICBjb25zdCBsZXhpY29uRGF0YSA9IGdldExleGljb25EYXRhICYmIGdldExleGljb25EYXRhKGxleGljb25JZCwgZW50cnlJZClcbiAgICByZXR1cm4gbGV4aWNvbkRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHBvcG92ZXIgZGlzcGxheVxuICAgKi9cbiAgY29uc3Qgb25DbG9zZVBvcG92ZXIgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tb25DbG9zZVBvcG92ZXJgKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgICBwb3BvdmVyVmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhIHBvcG92ZXIgd2l0aCB0aXRsZSBhbmQgY29udGVudCBhdCBzcGVjaWZpZWQgcG9zaXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gUG9wb3ZlciB0aXRsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm9keVRleHQgLSBQb3BvdmVyIGNvbnRlbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IHBvc2l0aW9uQ29vcmQgLSBQb3NpdGlvbiBjb29yZGluYXRlc1xuICAgKi9cbiAgY29uc3Qgc2hvd1BvcG92ZXIgPSAodGl0bGUsIGJvZHlUZXh0LCBwb3NpdGlvbkNvb3JkKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2hvd1BvcG92ZXJgLCB0aXRsZSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBwb3BvdmVyUHJvcHM6IHtcbiAgICAgICAgcG9wb3ZlclZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBib2R5VGV4dCxcbiAgICAgICAgcG9zaXRpb25Db29yZCxcbiAgICAgICAgb25DbG9zZVBvcG92ZXI6ICgpID0+IG9uQ2xvc2VQb3BvdmVyKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGV4cGFuZGVkIHRyYW5zbGF0aW9uIGhlbHBzIG1vZGFsXG4gICAqL1xuICBjb25zdCB0b2dnbGVIZWxwc01vZGFsID0gKCkgPT4ge1xuICAgIGNvbnN0IF9zaG93SGVscHNNb2RhbCA9ICFzaG93SGVscHNNb2RhbFxuICAgIHNldFN0YXRlKHtcbiAgICAgIHNob3dIZWxwc01vZGFsOiBfc2hvd0hlbHBzTW9kYWxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHRyYW5zbGF0aW9uIGhlbHBzIHNpZGViYXIgdmlzaWJpbGl0eVxuICAgKi9cbiAgY29uc3QgdG9nZ2xlSGVscHMgPSAoKSA9PiB7XG4gICAgY29uc3QgX3Nob3dIZWxwcyA9ICFzaG93SGVscHNcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBzaG93SGVscHM6IF9zaG93SGVscHNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBCaWJsZSBib29rIHRvIHRoZSBiaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQ3JlYXRlcyBsYW5ndWFnZSBncm91cCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBiaWJsZXMgLSBCaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIExhbmd1YWdlIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVJZCAtIEJpYmxlIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtvYmplY3R9IGJvb2sgLSBCb29rIGRhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVCaWJsZVRvS2V5KGJpYmxlcywga2V5LCBiaWJsZUlkLCBib29rKSB7XG4gICAgbGV0IGtleUdyb3VwID0gYmlibGVzW2tleV1cbiAgICBpZiAoIWtleUdyb3VwKSB7IC8vIGlmIGdyb3VwIGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgbmV3XG4gICAgICBrZXlHcm91cCA9IHt9XG4gICAgICBiaWJsZXNba2V5XSA9IGtleUdyb3VwXG4gICAgfVxuICAgIGtleUdyb3VwW2JpYmxlSWRdID0gYm9va1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdmVyc2UgY29udGVudCBpbiB0YXJnZXQgQmlibGVcbiAgICogSGFuZGxlcyBVU0ZNIGNvbnZlcnNpb24sIGFsaWdubWVudCB1cGRhdGVzLCBhbmQgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhcHRlciAtIENoYXB0ZXIgbnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZSAtIFZlcnNlIG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkVmVyc2VUZXh0IC0gT3JpZ2luYWwgdmVyc2UgdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gTmV3IHZlcnNlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIGVkaXRUYXJnZXRWZXJzZShjaGFwdGVyLCB2ZXJzZSwgb2xkVmVyc2VUZXh0LCBuZXdWZXJzZVRleHQpIHtcbiAgICBjb25zb2xlLmxvZyhgZWRpdFRhcmdldFZlcnNlICR7Y2hhcHRlcn06JHt2ZXJzZX0gLSBjaGFuZ2VkIHRvICR7bmV3VmVyc2VUZXh0fWApXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gZmlyc3QgdXBkYXRlIGNvbXBvbmVudCBzdGF0ZVxuXG4gICAgY29uc3QgX2JpYmxlcyA9IFsgLi4uYmlibGVzX11cbiAgICBjb25zdCBfdGFyZ2V0QmlibGUgPSB7Li4uX2JpYmxlc1swXX1cbiAgICBfYmlibGVzWzBdID0gX3RhcmdldEJpYmxlXG4gICAgY29uc3QgdGFyZ2V0Qm9vayA9IHsuLi5fdGFyZ2V0QmlibGU/LmJvb2t9XG4gICAgX3RhcmdldEJpYmxlLmJvb2sgPSB0YXJnZXRCb29rXG4gICAgY29uc3QgdGFyZ2V0Q2hhcHRlciA9IHsuLi50YXJnZXRCb29rW2NoYXB0ZXJdfVxuICAgIHRhcmdldEJvb2tbY2hhcHRlcl0gPSB0YXJnZXRDaGFwdGVyXG4gICAgdGFyZ2V0Q2hhcHRlclt2ZXJzZV0gPSBuZXdWZXJzZVRleHRcblxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIG5vdyBhcHBseSBuZXcgdmVyc2UgdGV4dCB0byBzZWxlY3RlZCBhbGlnbmVkIHZlcnNlIGFuZCBjYWxsIGJhY2sgdG8gZXh0ZW5zaW9uIHRvIHNhdmVcblxuICAgIGxldCBfbmV3VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0XG4gICAgaWYgKHR5cGVvZiBfbmV3VmVyc2VUZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgX25ld1ZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShfbmV3VmVyc2VUZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyRGF0YSA9IHRhcmdldEJpYmxlPy5bY2hhcHRlcl1cbiAgICBjb25zdCBjdXJyZW50VmVyc2VEYXRhID0gY3VycmVudENoYXB0ZXJEYXRhPy5bdmVyc2VdXG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlRGF0YSwgX25ld1ZlcnNlVGV4dClcbiAgICB0YXJnZXRDaGFwdGVyW3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHMgfTsgLy8gc2F2ZVxuXG4gICAgdXBkYXRlU2V0dGluZ3MoX2JpYmxlcywgdGFyZ2V0Qm9vaylcblxuICAgIGNvbnN0IHZlcnNlVGV4dCA9IHJlbW92ZVVzZm1NYXJrZXJzKF9uZXdWZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VUZXh0XG4gICAgfSlcblxuICAgIGNoYW5nZVRhcmdldFZlcnNlICYmIGNoYW5nZVRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlLCBuZXdWZXJzZVRleHQsIHRhcmdldFZlcnNlT2JqZWN0cylcbiAgICBfc2F2ZURhdGEoeyB2ZXJzZUVkaXRzOiB0cnVlIH0pXG5cbiAgICBjb25zdCBfZ3JvdXBzRGF0YSA9IF8uY2xvbmVEZWVwKGdyb3Vwc0RhdGEpXG4gICAgbGV0IGNoYW5nZWREYXRhID0gZmFsc2VcbiAgICBzZWxlY3Rpb25zSGVscGVycy52YWxpZGF0ZUFsbFNlbGVjdGlvbnNGb3JWZXJzZShuZXdWZXJzZVRleHQsIGJvb2tJZCwgY2hhcHRlciwgdmVyc2UsIF9ncm91cHNEYXRhLCAoY2hlY2ssIGludmFsaWRhdGVkKSA9PiB7XG4gICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgY29uc3QgY3VycmVudENoZWNrSWQgPSBjdXJyZW50Q2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuICAgICAgICBjb25zdCBjaGVja0lkID0gY2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuXG4gICAgICAgIGlmIChjaGVja0lkID09PSBjdXJyZW50Q2hlY2tJZCkge1xuICAgICAgICAgIC8vIG5lZWQgdG8gdXBkYXRlIGN1cnJlbnQgY2hlY2tcbiAgICAgICAgICBfc2F2ZURhdGEoe1xuICAgICAgICAgICAgaW52YWxpZGF0ZWQsXG4gICAgICAgICAgICB2ZXJzZUVkaXRzOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGVjayB2YWxpZGF0ZWQsIHN0YXRlIGNoYW5nZWQ6IGludmFsaWQ6ICR7aW52YWxpZGF0ZWR9YCwgY2hlY2spXG4gICAgICAgIGNoYW5nZWREYXRhID0gY2hhbmdlZERhdGEgfHwgX3NhdmVDaGVja2luZ0RhdGEoY2hlY2ssIHsgaW52YWxpZGF0ZWQsIHZlcnNlRWRpdHM6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGNoYW5nZWREYXRhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGFuZ2VzIGRldGVjdGVkIHVwZGF0aW5nIGdyb3Vwc0RhdGFgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZXR0aW5ncyB3aXRoIG5ldyBCaWJsZSBkYXRhIGFuZCBwYW5lIGNvbmZpZ3VyYXRpb25zXG4gICAqIE9yZ2FuaXplcyBCaWJsZXMgYnkgbGFuZ3VhZ2UgYW5kIGluaXRpYWxpemVzIHBhbmUgc2V0dGluZ3NcbiAgICogQHBhcmFtIHtBcnJheX0gbmV3QmlibGVzIC0gQXJyYXkgb2YgQmlibGUgb2JqZWN0c1xuICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0QmlibGUgLSBUYXJnZXQgQmlibGUgZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3MobmV3QmlibGVzLCB0YXJnZXRCaWJsZSkge1xuICAgIGNvbnN0IF9iaWJsZXMgPSB7fVxuICAgIGxldCBfcGFuZVNldHRpbmdzID0gW11cbiAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5wYW5lS2V5U2V0dGluZ3MgfHwge31cbiAgICBpZiAobmV3QmlibGVzPy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYmlibGUgb2YgbmV3QmlibGVzKSB7XG4gICAgICAgIGxldCBsYW5ndWFnZUlkID0gYmlibGU/Lmxhbmd1YWdlSWRcbiAgICAgICAgY29uc3Qgb3duZXIgPSBiaWJsZT8ub3duZXJcbiAgICAgICAgY29uc3QgYm9vayA9IGJpYmxlPy5ib29rXG4gICAgICAgIGNvbnN0IGJpYmxlSWQgPSBiaWJsZT8uYmlibGVJZFxuICAgICAgICBpZiAobGFuZ3VhZ2VJZCA9PT0gTlRfT1JJR19MQU5HIHx8IGxhbmd1YWdlSWQgPT09IE9UX09SSUdfTEFORykge1xuICAgICAgICAgIGxhbmd1YWdlSWQgPSAnb3JpZ2luYWxMYW5ndWFnZSdcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBgJHtsYW5ndWFnZUlkfS8ke2JpYmxlSWR9LyR7b3duZXJ9YFxuICAgICAgICBjb25zdCBpbml0aWFsUGFuZVNldHRpbmdzID0gX3BhbmVLZXlTZXR0aW5ncz8uW2tleV1cbiAgICAgICAgY29uc3QgbGFuZ0tleSA9IGAke2xhbmd1YWdlSWR9XyR7b3duZXJ9YFxuICAgICAgICBzYXZlQmlibGVUb0tleShfYmlibGVzLCBsYW5nS2V5LCBiaWJsZUlkLCBib29rKVxuICAgICAgICBzYXZlQmlibGVUb0tleShfYmlibGVzLCBsYW5ndWFnZUlkLCBiaWJsZUlkLCBib29rKSAvLyBhbHNvIHNhdmUgYXMgZGVmYXVsdCBmb3IgbGFuZ3VhZ2Ugd2l0aG91dCBvd25lclxuICAgICAgICBjb25zdCBwYW5lID0gaW5pdGlhbFBhbmVTZXR0aW5ncyB8fCB7XG4gICAgICAgICAgLi4uYmlibGUsXG4gICAgICAgICAgbGFuZ3VhZ2VJZFxuICAgICAgICB9XG4gICAgICAgIF9wYW5lU2V0dGluZ3MucHVzaChwYW5lKVxuICAgICAgICBpZiAoIWluaXRpYWxQYW5lU2V0dGluZ3MpIHtcbiAgICAgICAgICBfcGFuZUtleVNldHRpbmdzW2tleV0gPSBwYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3BhbmVTZXR0aW5ncyA9IFtdXG4gICAgfVxuXG4gICAgY29uc3QgX3Rvb2xzU2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LnRvb2xzU2V0dGluZ3MgfHxcbiAgICB7XG4gICAgICAnQ2hlY2tBcmVhJzoge1xuICAgICAgICAnZm9udFNpemUnOiAxMDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgX21hbmlmZXN0ID0gaW5pdGlhbFNldHRpbmdzPy5tYW5pZmVzdCB8fFxuICAgIHtcbiAgICAgIGxhbmd1YWdlX25hbWU6IHRhcmdldEJpYmxlPy5tYW5pZmVzdD8uZHVibGluX2NvcmU/Lmxhbmd1YWdlPy50aXRsZSB8fCAnQ3VycmVudCcsXG4gICAgICBwcm9qZWN0Rm9udDogdGFyZ2V0QmlibGU/Lm1hbmlmZXN0Py5wcm9qZWN0Rm9udCB8fCAnJ1xuICAgIH1cblxuICAgIGNvbnN0IGFwcFNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5hcHBTZXR0aW5ncyB8fCB7fVxuICAgIF9tYW5pZmVzdCA9IHtcbiAgICAgIC4uLl9tYW5pZmVzdCxcbiAgICAgIC4uLmFwcFNldHRpbmdzIC8vIG9sZGVyIGNvZGUgaXMgbG9va2luZyBmb3IgYXBwU2V0dGluZ3MgaW4gbWFuaWZlc3RcbiAgICB9XG5cbiAgICBzZXRCaWJsZXMoX2JpYmxlcylcbiAgICBzZXRUYXJnZXRCaWJsZSh0YXJnZXRCaWJsZSlcbiAgICBzZXRTZXR0aW5ncyh7XG4gICAgICBwYW5lU2V0dGluZ3M6IF9wYW5lU2V0dGluZ3MsXG4gICAgICBwYW5lS2V5U2V0dGluZ3M6IF9wYW5lS2V5U2V0dGluZ3MsXG4gICAgICB0b29sc1NldHRpbmdzOiBfdG9vbHNTZXR0aW5ncyxcbiAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICBuZXdDb21tZW50OiAnJyxcbiAgICAgIGFwcFNldHRpbmdzLFxuICAgIH0sIGZhbHNlKVxuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2Ugd2l0aCBjdXJyZW50IEJpYmxlcyBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5nIC0gTGFuZ3VhZ2UgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gQmlibGUgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJvb2sgLSBCb29rIElEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyIC0gQ2hhcHRlciBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlIC0gVmVyc2UgbnVtYmVyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFNjcmlwdHVyZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShsYW5nLCBpZCwgYm9vaywgY2hhcHRlciwgdmVyc2UpIHtcbiAgICByZXR1cm4gZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShiaWJsZXMsIGxhbmcsIGlkLCBib29rLCBjaGFwdGVyLCB2ZXJzZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgaG9vayB0byB1cGRhdGUgc2V0dGluZ3Mgd2hlbiBCaWJsZXMgb3IgdGFyZ2V0IEJpYmxlIGNoYW5nZXNcbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU2V0dGluZ3MoYmlibGVzXywgdGFyZ2V0QmlibGVfKVxuICB9LCBbYmlibGVzXywgdGFyZ2V0QmlibGVfXSlcblxuICAvLyBidWlsZCB0aGUgdGl0bGVcbiAgY29uc3QgeyB0YXJnZXRfbGFuZ3VhZ2UsIHByb2plY3QgfSA9IG1hbmlmZXN0O1xuICBsZXQgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUgPSBwcm9qZWN0Py50aXRsZSB8fCAnJztcblxuICBpZiAodGFyZ2V0X2xhbmd1YWdlPy5ib29rPy5uYW1lKSB7XG4gICAgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUgPSB0YXJnZXRfbGFuZ3VhZ2UuYm9vay5uYW1lO1xuICB9XG5cblxuICBjb25zdCBzdHlsZVByb3BzID0gc3R5bGVzIHx8IHt9XG4gIGNvbnN0IF9jaGVja2VyU3R5bGVzID0ge1xuICAgIC4uLmxvY2FsU3R5bGVzLmNvbnRhaW5lckRpdixcbiAgICAuLi5zdHlsZVByb3BzLFxuICB9XG5jb25zb2xlLmxvZyhiaWJsZXMpXG4gIHJldHVybiAoXG4gICAgcmVhZHlUb0Rpc3BsYXlDaGVja2VyID9cbiAgICAgIDxkaXYgaWQ9J2NoZWNrZXInIHN0eWxlPXtfY2hlY2tlclN0eWxlc30+XG4gICAgICAgIDxHcm91cE1lbnVDb21wb25lbnRcbiAgICAgICAgICBib29rTmFtZT17Ym9va05hbWV9XG4gICAgICAgICAgY2hhbmdlQ3VycmVudENvbnRleHRJZD17Y2hhbmdlQ3VycmVudENoZWNrX31cbiAgICAgICAgICBjb250ZXh0SWQ9e2N1cnJlbnRDb250ZXh0SWR9XG4gICAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgICAgZ3JvdXBzRGF0YT17Z3JvdXBzRGF0YX1cbiAgICAgICAgICBncm91cHNJbmRleD17Z3JvdXBzSW5kZXh9XG4gICAgICAgICAgdGFyZ2V0TGFuZ3VhZ2VGb250PXt0YXJnZXRMYW5ndWFnZUZvbnR9XG4gICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgc3R5bGU9e2xvY2FsU3R5bGVzLmNlbnRlckRpdn0+XG4gICAgICAgICAgeyBiaWJsZXMgJiYgT2JqZWN0LmtleXMoYmlibGVzKS5sZW5ndGggJiZcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2xvY2FsU3R5bGVzLnNjcmlwdHVyZVBhbmVEaXZ9PlxuICAgICAgICAgICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICAgICAgICAgIGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdD17YWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0fVxuICAgICAgICAgICAgICAgIGJpYmxlcz17YmlibGVzfVxuICAgICAgICAgICAgICAgIGNvbXBsZXhTY3JpcHRGb250cz17Y29tcGxleFNjcmlwdEZvbnRzfVxuICAgICAgICAgICAgICAgIGNvbnRleHRJZD17Y3VycmVudENvbnRleHRJZH1cbiAgICAgICAgICAgICAgICBjdXJyZW50UGFuZVNldHRpbmdzPXtwYW5lU2V0dGluZ3N9XG4gICAgICAgICAgICAgICAgZWRpdFZlcnNlUmVmPXtudWxsfVxuICAgICAgICAgICAgICAgIGVkaXRUYXJnZXRWZXJzZT17ZWRpdFRhcmdldFZlcnNlfVxuICAgICAgICAgICAgICAgIGV4cGFuZGVkU2NyaXB0dXJlUGFuZVRpdGxlPXtleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZX1cbiAgICAgICAgICAgICAgICBnZXRBdmFpbGFibGVTY3JpcHR1cmVQYW5lU2VsZWN0aW9ucz17bnVsbH1cbiAgICAgICAgICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGFffVxuICAgICAgICAgICAgICAgIG1ha2VTdXJlQmlibGVzTG9hZGVkRm9yVG9vbD17bnVsbH1cbiAgICAgICAgICAgICAgICBwcm9qZWN0RGV0YWlsc1JlZHVjZXI9e3sgbWFuaWZlc3QgfX1cbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25zPXtjdXJyZW50U2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgICBzZXRUb29sU2V0dGluZ3M9e3NldFRvb2xTZXR0aW5nc1NjcmlwdHVyZX1cbiAgICAgICAgICAgICAgICBzaG93UG9wb3Zlcj17c2hvd1BvcG92ZXJ9XG4gICAgICAgICAgICAgICAgb25FeHBhbmRlZFNjcmlwdHVyZVBhbmVTaG93PXtudWxsfVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8Q2hlY2tJbmZvQ2FyZFxuICAgICAgICAgICAgICBnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlPXtfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZX1cbiAgICAgICAgICAgICAgb25MaW5rQ2xpY2s9eygpID0+IGZhbHNlfVxuICAgICAgICAgICAgICBvblNlZU1vcmVDbGljaz17KCkgPT4gZmFsc2V9XG4gICAgICAgICAgICAgIHBocmFzZT17Z3JvdXBQaHJhc2V9XG4gICAgICAgICAgICAgIHNlZU1vcmVMYWJlbD17dHJhbnNsYXRlKCdzZWVfbW9yZScpfVxuICAgICAgICAgICAgICBzaG93U2VlTW9yZUJ1dHRvbj17ZmFsc2V9XG4gICAgICAgICAgICAgIHRpdGxlPXtncm91cFRpdGxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWZXJzZUNoZWNrXG4gICAgICAgICAgICAgIGFsaWduZWRHTFRleHQ9e2FsaWduZWRHTFRleHR9XG4gICAgICAgICAgICAgIGJvb2tEZXRhaWxzPXtib29rRGV0YWlsc31cbiAgICAgICAgICAgICAgYm9va21hcmtFbmFibGVkPXtib29rbWFya0VuYWJsZWR9XG4gICAgICAgICAgICAgIGNhbmNlbEVkaXRWZXJzZT17Y2FuY2VsRWRpdFZlcnNlfVxuICAgICAgICAgICAgICBjYW5jZWxDb21tZW50PXtjYW5jZWxDb21tZW50fVxuICAgICAgICAgICAgICBjYW5jZWxTZWxlY3Rpb249e2NhbmNlbFNlbGVjdGlvbn1cbiAgICAgICAgICAgICAgY2hhbmdlTW9kZT17Y2hhbmdlTW9kZX1cbiAgICAgICAgICAgICAgY2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZT17Y2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZX1cbiAgICAgICAgICAgICAgY2hlY2tJZkNvbW1lbnRDaGFuZ2VkPXtjaGVja0lmQ29tbWVudENoYW5nZWR9XG4gICAgICAgICAgICAgIGNoZWNrSWZWZXJzZUNoYW5nZWQ9e2NoZWNrSWZWZXJzZUNoYW5nZWR9XG4gICAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uPXtjbGVhclNlbGVjdGlvbn1cbiAgICAgICAgICAgICAgY29tbWVudFRleHQ9e2NvbW1lbnRUZXh0fVxuICAgICAgICAgICAgICBjb250ZXh0SWQ9e2N1cnJlbnRDb250ZXh0SWR9XG4gICAgICAgICAgICAgIGRpYWxvZ01vZGFsVmlzaWJpbGl0eSA9IHtmYWxzZX1cbiAgICAgICAgICAgICAgaXNDb21tZW50Q2hhbmdlZD17aXNDb21tZW50Q2hhbmdlZH1cbiAgICAgICAgICAgICAgaXNWZXJzZUNoYW5nZWQ9e2lzVmVyc2VDaGFuZ2VkfVxuICAgICAgICAgICAgICBpc1ZlcnNlRWRpdGVkPXtpc1ZlcnNlRWRpdGVkfVxuICAgICAgICAgICAgICBoYW5kbGVFZGl0VmVyc2U9e2hhbmRsZUVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgaGFuZGxlR29Ub05leHQ9e2hhbmRsZUdvVG9OZXh0fVxuICAgICAgICAgICAgICBoYW5kbGVHb1RvUHJldmlvdXM9e2hhbmRsZUdvVG9QcmV2aW91c31cbiAgICAgICAgICAgICAgaGFuZGxlT3BlbkRpYWxvZz17bnVsbH1cbiAgICAgICAgICAgICAgaXNWZXJzZUludmFsaWRhdGVkPXtpc1ZlcnNlSW52YWxpZGF0ZWR9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRGlhbG9nPXtudWxsfVxuICAgICAgICAgICAgICBoYW5kbGVDb21tZW50PXtoYW5kbGVDb21tZW50fVxuICAgICAgICAgICAgICBoYW5kbGVTa2lwPXtudWxsfVxuICAgICAgICAgICAgICBoYW5kbGVUYWdzQ2hlY2tib3g9e2hhbmRsZVRhZ3NDaGVja2JveH1cbiAgICAgICAgICAgICAgbG9jYWxOb3RoaW5nVG9TZWxlY3Q9e3RlbXBOb3RoaW5nVG9TZWxlY3R9XG4gICAgICAgICAgICAgIG1hbmlmZXN0PXttYW5pZmVzdH1cbiAgICAgICAgICAgICAgbWF4aW11bVNlbGVjdGlvbnM9e21heGltdW1TZWxlY3Rpb25zfVxuICAgICAgICAgICAgICBtb2RlPXttb2RlfVxuICAgICAgICAgICAgICBuZXdTZWxlY3Rpb25zPXt0ZW1wU2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgbm90aGluZ1RvU2VsZWN0PXtjdXJyZW50Tm90aGluZ1RvU2VsZWN0fVxuICAgICAgICAgICAgICBvcGVuQWxlcnREaWFsb2c9e29wZW5BbGVydERpYWxvZ31cbiAgICAgICAgICAgICAgc2F2ZUNvbW1lbnQ9e3NhdmVDb21tZW50fVxuICAgICAgICAgICAgICBzYXZlRWRpdFZlcnNlPXtzYXZlRWRpdFZlcnNlfVxuICAgICAgICAgICAgICBzYXZlU2VsZWN0aW9uPXtfc2F2ZVNlbGVjdGlvbn1cbiAgICAgICAgICAgICAgc2VsZWN0aW9ucz17Y3VycmVudFNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgIHNldFRvb2xTZXR0aW5ncz17c2V0VG9vbFNldHRpbmdzfVxuICAgICAgICAgICAgICB0YWdzPXtuZXdUYWdzIHx8IFtdfVxuICAgICAgICAgICAgICB0YXJnZXRCaWJsZT17dGFyZ2V0QmlibGV9XG4gICAgICAgICAgICAgIHRhcmdldExhbmd1YWdlRGV0YWlscz17dGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzfVxuICAgICAgICAgICAgICB0b2dnbGVCb29rbWFyaz17dG9nZ2xlQm9va21hcmt9XG4gICAgICAgICAgICAgIHRvZ2dsZU5vdGhpbmdUb1NlbGVjdD17dG9nZ2xlTm90aGluZ1RvU2VsZWN0fVxuICAgICAgICAgICAgICB0b29sc1NldHRpbmdzPXt0b29sc1NldHRpbmdzfVxuICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgdW5maWx0ZXJlZFZlcnNlVGV4dD17dW5maWx0ZXJlZFZlcnNlVGV4dH1cbiAgICAgICAgICAgICAgdmFsaWRhdGVTZWxlY3Rpb25zPXt2YWxpZGF0ZVNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgIHZlcnNlVGV4dD17dmVyc2VUZXh0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtzaG93RG9jdW1lbnQgJiYgPFRyYW5zbGF0aW9uSGVscHNcbiAgICAgICAgICBtb2RhbEFydGljbGU9e2FydGljbGV9XG4gICAgICAgICAgYXJ0aWNsZT17YXJ0aWNsZX1cbiAgICAgICAgICBleHBhbmRlZEhlbHBzQnV0dG9uSG92ZXJUZXh0PXsnQ2xpY2sgdG8gc2hvdyBleHBhbmRlZCBoZWxwIHBhbmUnfVxuICAgICAgICAgIG1vZGFsVGl0bGU9eyd0cmFuc2xhdGlvbkhlbHBzJ31cbiAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICBpc1Nob3dIZWxwc0V4cGFuZGVkPXtzaG93SGVscHNNb2RhbH1cbiAgICAgICAgICBvcGVuRXhwYW5kZWRIZWxwc01vZGFsPXt0b2dnbGVIZWxwc01vZGFsfVxuICAgICAgICAgIHNpZGViYXJUb2dnbGU9e3RvZ2dsZUhlbHBzfVxuICAgICAgICAgIGlzU2hvd0hlbHBzU2lkZWJhcj17c2hvd0hlbHBzfVxuICAgICAgICAvPn1cbiAgICAgICAge3BvcG92ZXJQcm9wcz8ucG9wb3ZlclZpc2liaWxpdHkgJiZcbiAgICAgICAgICA8UG9wb3ZlckNvbnRhaW5lciB7Li4ucG9wb3ZlclByb3BzfSAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDpcbiAgICAgICdXYWl0aW5nIGZvciBEYXRhJ1xuICApO1xufTtcblxuQ2hlY2tlci5wcm9wVHlwZXMgPSB7XG4gIHN0eWxlczpQcm9wVHlwZXMub2JqZWN0LFxuICBhbGlnbmVkR2xCaWJsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgYmlibGVzOiBQcm9wVHlwZXMuYXJyYXksXG4gIGNoYW5nZVRhcmdldFZlcnNlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2hlY2tpbmdEYXRhOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNoZWNrVHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29udGV4dElkOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdsV29yZHNEYXRhOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgaW5pdGlhbFNldHRpbmdzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzYXZlQ2hlY2tpbmdEYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgc2F2ZVNldHRpbmdzOiBQcm9wVHlwZXMuZnVuYyxcbiAgc2hvd0RvY3VtZW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgdGFyZ2V0QmlibGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5leHBvcnQgZGVmYXVsdCBDaGVja2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBMENBLElBQUFBLFlBQUEsR0FB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
@@ -319,6 +319,8 @@ function findCheck(groupsData, contextId) {
319
319
  }
320
320
  function findNextCheck(groupsData, contextId) {
321
321
  var defaultToFirst = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
322
+ console.log(groupsData);
323
+ console.log(contextId);
322
324
  var check = null;
323
325
  var checkedBook = false;
324
326
  var matchFound = false;
@@ -842,4 +844,4 @@ function getPhraseFromTw(glTwData, articleId) {
842
844
  }
843
845
  return finalString;
844
846
  }
845
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJyZXNvdXJjZXNIZWxwZXJzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdG5BcnRpY2xlSGVscGVycyIsInRzdnBhcnNlciIsIl9iaWJsZVJlZmVyZW5jZVJhbmdlIiwiX3dvcmRBbGlnbmVyTGliIiwiX3dvcmRPY2N1cnJlbmNlSGVscGVycyIsIl9lbGxpcHNpc0hlbHBlcnMiLCJfdmVyc2VIZWxwZXJzIiwiX2NvbnN0YW50cyIsIl90c3ZUb0dyb3VwRGF0YSIsIl9jaGVja0FyZWFIZWxwZXJzIiwiX2RlZXBFcXVhbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwiX19lc01vZHVsZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QyIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfcmVnZW5lcmF0b3IiLCJTeW1ib2wiLCJpdGVyYXRvciIsInRvU3RyaW5nVGFnIiwiYyIsInByb3RvdHlwZSIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwiYmluZCIsImxlbmd0aCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwidmFsdWUiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsImRpc3BsYXlOYW1lIiwidyIsIm0iLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX25leHQiLCJfdGhyb3ciLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsInMiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJjYXRlZ29yaXplR3JvdXBEYXRhIiwiZ3JvdXBEYXRhIiwiY2F0ZWdvcml6ZWRHcm91cERhdGEiLCJrdCIsIm5hbWVzIiwib3RoZXIiLCJjYXRlZ29yeV8iLCJjYXRlZ29yeSIsIml0ZW1zIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJpdGVtIiwiZ3JvdXBJZCIsImNvbnRleHRJZCIsImVyciIsImdlbmVyYXRlR3JvdXBEYXRhSXRlbSIsImV4cG9ydHMiLCJ0c3ZJdGVtIiwidG9vbE5hbWUiLCJ2ZXJzZVN0cmluZyIsIl90c3ZJdGVtJE9yaWdRdW90ZSIsIk9yaWdRdW90ZSIsInJlcGxhY2UiLCJ3b3JkT2NjdXJyZW5jZXNGb3JRdW90ZSIsImdldFdvcmRPY2N1cnJlbmNlc0ZvclF1b3RlIiwicXVvdGUiLCJoYXNFbGxpcHNpcyIsInF1b3RlU3RyaW5nIiwidHJpbSIsIkVMTElQU0lTIiwiX2NvbnZlcnRSZWZlcmVuY2UiLCJjb252ZXJ0UmVmZXJlbmNlIiwiY2hhcHRlciIsInZlcnNlIiwiY29tbWVudHMiLCJyZW1pbmRlcnMiLCJzZWxlY3Rpb25zIiwidmVyc2VFZGl0cyIsIm5vdGhpbmdUb1NlbGVjdCIsImNoZWNrSWQiLCJJRCIsIm9jY3VycmVuY2VOb3RlIiwiT2NjdXJyZW5jZU5vdGUiLCJyZWZlcmVuY2UiLCJib29rSWQiLCJCb29rIiwidG9Mb3dlckNhc2UiLCJ0b29sIiwiU3VwcG9ydFJlZmVyZW5jZSIsImdsUXVvdGUiLCJHTFF1b3RlIiwib2NjdXJyZW5jZSIsInBhcnNlSW50IiwiT2NjdXJyZW5jZSIsInRzdk9iamVjdHNUb0dyb3VwRGF0YSIsInRzdkl0ZW1zIiwib3JpZ0xhbmdCaWJsZSIsInJlc291cmNlc1BhdGgiLCJsYW5nSWQiLCJwYXJhbXMiLCJ0d0xpbmtNYXRjaCIsInR3TGlua1JFIiwiUmVnRXhwIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIlJlZmVyZW5jZSIsIk9yaWdXb3JkcyIsIlRXTGluayIsInR3TGluayIsIm1hdGNoIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJDaGFwdGVyIiwiVmVyc2UiLCJDYXRhZ29yeSIsImdldFZlcnNlU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImtleSIsImdyb3VwRGF0YUl0ZW0iLCJjYXRlZ29yaXplZCIsImVycm9yIiwicGFyc2VSZWZlcmVuY2UiLCJyZWYiLCJjbGVhbmVkUmVmIiwiY2xlYW51cFJlZmVyZW5jZSIsInJlZl8iLCJ2ZXJzZVN0ciIsImlzU2FtZVZlcnNlQnlDb250ZXh0IiwiY29udGV4dElkMSIsImNvbnRleHRJZDIiLCJpc1NhbWVWZXJzZUJ5UmVmIiwicmVmZXJlbmNlMSIsInJlZmVyZW5jZTIiLCJmaW5kQ2hlY2siLCJncm91cHNEYXRhIiwiZGVmYXVsdFRvRmlyc3QiLCJ1bmRlZmluZWQiLCJjaGVjayIsImNoZWNrZWRCb29rIiwiX2kiLCJfT2JqZWN0JGtleXMiLCJjYXRhZ29yeUl0ZW1zIiwiX2NhdGFnb3J5SXRlbXMkIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIml0ZW1Db250ZXh0SWQiLCJtYXRjaEZvdW5kIiwiaXNFcXVhbCIsImZpbmRGaXJzdENoZWNrIiwiZmluZE5leHRDaGVjayIsImdyb3Vwc0tleXMiLCJpZHgiLCJfY2F0YWdvcnlJdGVtcyQyIiwibmV4dEdyb3VwSWQiLCJuZXh0R3JvdXBJdGVtcyIsImZpbmRQcmV2aW91c0NoZWNrIiwiX2NhdGFnb3J5SXRlbXMkMyIsImdyb3VwS2V5cyIsImZpcnN0R3JvdXAiLCJ0d2xUc3ZUb0dyb3VwRGF0YSIsIl94IiwiX3gyIiwiX3gzIiwiX3R3bFRzdlRvR3JvdXBEYXRhIiwiX2NhbGxlZSIsInRzdkRhdGEiLCJwcm9qZWN0IiwiX3lpZWxkJHRzdkRhdGFUb09iamVjIiwidHN2SXRlbXNfIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsInRzdkl0ZW1fIiwiX3QiLCJfY29udGV4dCIsImlkZW50aWZpZXIiLCJ0c3ZEYXRhVG9PYmplY3RzIiwibGFuZ3VhZ2VJZCIsImNvbnZlcnRFbGxpcHNpc1RvQW1wZXJzYW5kIiwicGFyc2VUd1RvSW5kZXgiLCJ0d0RhdGEiLCJpbmRleCIsIl9pMiIsIl9PYmplY3Qka2V5czIiLCJjYXRhZ29yeUlkIiwiY2F0YWdvcnkiLCJfeDQiLCJfdHN2RGF0YVRvT2JqZWN0cyIsIl9jYWxsZWUyIiwicGFyc2VFcnJvck1zZyIsImV4cGVjdGVkQ29sdW1ucyIsInRhYmxlT2JqZWN0IiwibXNnIiwicm93bnVtIiwiY29sc2ZvdW5kIiwiX2NvbnRleHQyIiwidHN2U3RyaW5nVG9UYWJsZSIsImVycm9ycyIsImhlYWRlciIsImRhdGEiLCJqb2luIiwibWFwIiwibGluZSIsInRzdlBhdGgiLCJnZW5lcmF0ZUdyb3Vwc0luZGV4IiwiZmlsZXNQYXRoIiwidHdPdXRwdXRQYXRoIiwiZm9sZGVyTmFtZSIsImdyb3Vwc0luZGV4IiwiZ3JvdXBJZHMiLCJmcyIsInJlYWRkaXJTeW5jIiwiZmlsZW5hbWUiLCJzcGxpdCIsInBvcCIsImZpbGVOYW1lIiwiZ3JvdXBPYmplY3QiLCJmaWxlUGF0aCIsInBhdGgiLCJhcnRpY2xlRmlsZSIsInJlYWRGaWxlU3luYyIsImdyb3VwTmFtZSIsImlkIiwic29ydCIsImNvbXBhcmVCeUZpcnN0VW5pcXVlV29yZCIsImdyb3Vwc0luZGV4T3V0cHV0UGF0aCIsIm91dHB1dEpzb25TeW5jIiwic3BhY2VzIiwiYiIsImFXb3JkcyIsInRvVXBwZXJDYXNlIiwiYldvcmRzIiwiYVdvcmQiLCJzaGlmdCIsImJXb3JkIiwiZ2V0QWxpZ25lZEdMVGV4dCIsImFsaWduZWRHbEJpYmxlIiwibG9nIiwiX3ZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0cyIsInZlcnNlSGVscGVycyIsImdldEJlc3RWZXJzZUZyb21Cb29rIiwiX3ZlcnNlT2JqZWN0czIiLCJhbGlnbmVkVGV4dCIsImdldEFsaWduZWRUZXh0IiwiZ2V0VGl0bGVGcm9tSW5kZXgiLCJncm91cEluZGV4IiwiYXJ0aWNsZUlkIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImdldFBocmFzZUZyb21UdyIsImdsVHdEYXRhIiwiY3VycmVudEFydGljbGUiLCJfaTMiLCJfT2JqZWN0JGtleXMzIiwiX2dyb3VwIiwiX2dyb3VwMyIsImdyb3VwIiwiYXJ0aWNsZXMiLCJfZ3JvdXAyIiwiYXJ0aWNsZSIsInNwbGl0TGluZSIsImZpbmFsQXJyYXkiLCJpbmRleE9mIiwibWF4TGVuZ3RoIiwiZmluYWxTdHJpbmciLCJjaG9zZW5TdHJpbmciLCJzcGxpdFN0cmluZyIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJ3b3JkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hlbHBlcnMvdHJhbnNsYXRpb25IZWxwcy90d0FydGljbGVIZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGN1cmx5ICovXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJ3V0aWwnO1xuLy8gaW1wb3J0IHtcbi8vICAgZm9ybWF0QW5kU2F2ZUdyb3VwRGF0YSxcbi8vICAgZ2VuZXJhdGVHcm91cERhdGFJdGVtLFxuLy8gICBNYW5hZ2VSZXNvdXJjZSxcbi8vICAgcGFyc2VSZWZlcmVuY2UsXG4vLyAgIHRzdlRvT2JqZWN0cyxcbi8vIH0gZnJvbSAndHN2LWdyb3VwZGF0YS1wYXJzZXInO1xuLy8gaGVscGVyc1xuaW1wb3J0ICogYXMgcmVzb3VyY2VzSGVscGVycyBmcm9tICcuLi9yZXNvdXJjZXNIZWxwZXJzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBsaWNhdGUtaW1wb3J0c1xuLy8gaW1wb3J0IHtnZXRSZXNvdXJjZU1hbmlmZXN0fSBmcm9tICcuLi9yZXNvdXJjZXNIZWxwZXJzJztcbi8vIGNvbnN0YW50c1xuLy8gaW1wb3J0ICogYXMgZXJyb3JzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9lcnJvcnMnO1xuLy8gaW1wb3J0IHtnZXRPd25lckZvck9yaWdpbmFsTGFuZ3VhZ2V9IGZyb20gJy4uL2FwaUhlbHBlcnMnO1xuLy8gaW1wb3J0IHttYWtlU3VyZVJlc291cmNlVW56aXBwZWR9IGZyb20gJy4uL3VuemlwRmlsZUhlbHBlcnMnO1xuLy8gaW1wb3J0IHsgQklCTEVfQk9PS1MsIE5UX09SSUdfTEFORywgTlRfT1JJR19MQU5HX0JJQkxFLCBPVF9PUklHX0xBTkcsIE9UX09SSUdfTEFOR19CSUJMRSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9iaWJsZSc7XG5pbXBvcnQge1xuICBjb252ZXJ0RWxsaXBzaXNUb0FtcGVyc2FuZCxcbn0gZnJvbSAnLi90bkFydGljbGVIZWxwZXJzJztcbmltcG9ydCAqIGFzIHRzdnBhcnNlciBmcm9tICd1dy10c3YtcGFyc2VyJztcbmltcG9ydCB7IGNsZWFudXBSZWZlcmVuY2UgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgeyB2ZXJzZUhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItbGliJ1xuaW1wb3J0IHsgZ2V0V29yZE9jY3VycmVuY2VzRm9yUXVvdGUgfSBmcm9tICcuL3dvcmRPY2N1cnJlbmNlSGVscGVycydcbmltcG9ydCB7IGhhc0VsbGlwc2lzIH0gZnJvbSAnLi4vdHN2LWdyb3VwZGF0YS1wYXJzZXIvZWxsaXBzaXNIZWxwZXJzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VTdHJpbmcgfSBmcm9tICcuLi90c3YtZ3JvdXBkYXRhLXBhcnNlci92ZXJzZUhlbHBlcnMnXG5pbXBvcnQgeyBFTExJUFNJUyB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb25zdGFudHMnXG5pbXBvcnQgeyBjb252ZXJ0UmVmZXJlbmNlIH0gZnJvbSAnLi90c3ZUb0dyb3VwRGF0YSdcbmltcG9ydCB7IGdldEFsaWduZWRUZXh0IH0gZnJvbSAnLi4vLi4vdGNfdWlfdG9vbGtpdC9WZXJzZUNoZWNrL2hlbHBlcnMvY2hlY2tBcmVhSGVscGVycydcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG4vLyBpbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5JztcblxuLyoqXG4gKiBvcmdhbml6ZSBncm91cCBkYXRhIGJ5IGNhdGVnb3JpZXMgYW5kIGdyb3VwSURcbiAqIEBwYXJhbSB7YXJyYXl9IGdyb3VwRGF0YVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5jb25zdCBjYXRlZ29yaXplR3JvdXBEYXRhID0gZ3JvdXBEYXRhID0+IHtcbiAgY29uc3QgY2F0ZWdvcml6ZWRHcm91cERhdGEgPSB7XG4gICAga3Q6IHt9LFxuICAgIG5hbWVzOiB7fSxcbiAgICBvdGhlcjoge30sXG4gIH07XG4gIE9iamVjdC5rZXlzKGdyb3VwRGF0YSkuZm9yRWFjaChjYXRlZ29yeV8gPT4ge1xuICAgIGxldCBjYXRlZ29yeSA9IGNhdGVnb3J5XztcbiAgICBjb25zdCBpdGVtcyA9IGdyb3VwRGF0YVtjYXRlZ29yeV07XG4gICAgaWYgKCFjYXRlZ29yaXplZEdyb3VwRGF0YVtjYXRlZ29yeV0pIHtcbiAgICAgIGNhdGVnb3J5ID0gJ290aGVyJzsgLy8gdW5rbm93biBjYXRlZ29yaWVzIGdvIGluIG90aGVyXG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgY29uc3QgZ3JvdXBJZCA9IGl0ZW0uY29udGV4dElkICYmIGl0ZW0uY29udGV4dElkLmdyb3VwSWQ7XG4gICAgICBpZiAoZ3JvdXBJZCkge1xuICAgICAgICBpZiAoIWNhdGVnb3JpemVkR3JvdXBEYXRhW2NhdGVnb3J5XVtncm91cElkXSkge1xuICAgICAgICAgIGNhdGVnb3JpemVkR3JvdXBEYXRhW2NhdGVnb3J5XVtncm91cElkXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGNhdGVnb3JpemVkR3JvdXBEYXRhW2NhdGVnb3J5XVtncm91cElkXS5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjYXRlZ29yaXplZEdyb3VwRGF0YTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZm9ybWF0dGVkIGdyb3VwRGF0YSBpdGVtIGZvciBhIGdpdmVuIHRzdiBpdGVtLlxuICogQHBhcmFtIHtvYmplY3R9IHRzdkl0ZW0gdHN2IGl0ZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9vbE5hbWUgdG9vbCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlU3RyaW5nXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBncm91cERhdGEgaXRlbS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlR3JvdXBEYXRhSXRlbSA9ICh0c3ZJdGVtLCB0b29sTmFtZSwgdmVyc2VTdHJpbmcpID0+IHtcbiAgbGV0IHsgT3JpZ1F1b3RlID0gJycgfSA9IHRzdkl0ZW07XG4gIC8vIGNsZWFuIHF1b3RlIHN0cmluZ1xuICBPcmlnUXVvdGUgPSBPcmlnUXVvdGUucmVwbGFjZSgvIFxcJiAvZywgJyDigKYgJyk7IC8vIHRyZWF0IG5ldyBicmVhayBjaGFyYWN0ZXIgc2FtZSBhcyBlbGxpcHNpc1xuICAvLyBpZiBxdW90ZSBoYXMgbW9yZSB0aGFuIG9uZSB3b3JkIGdldCB3b3JkIG9jY3VycmVuY2VzXG4gIGNvbnN0IHdvcmRPY2N1cnJlbmNlc0ZvclF1b3RlID0gZ2V0V29yZE9jY3VycmVuY2VzRm9yUXVvdGUoT3JpZ1F1b3RlLCB2ZXJzZVN0cmluZywgdHJ1ZSk7IC8vIHVzZXMgdG9rZW5pemVyIHRvIGdldCBsaXN0IG9mIHdvcmRzIGhhbmRsZSB2YXJpb3VzIHB1bmN0dWF0aW9uIGFuZCBzcGFjaW5nIGNoYXJzXG4gIGNvbnN0IHF1b3RlID0gd29yZE9jY3VycmVuY2VzRm9yUXVvdGUubGVuZ3RoID4gMSB8fCBoYXNFbGxpcHNpcyhPcmlnUXVvdGUpID8gd29yZE9jY3VycmVuY2VzRm9yUXVvdGUgOiBPcmlnUXVvdGU7IC8vIG9ubHkgdXNlIGFycmF5IGlmIG1vcmUgdGhhbiBvbmUgd29yZCBmb3VuZFxuICBjb25zdCBxdW90ZVN0cmluZyA9IE9yaWdRdW90ZS50cmltKCkucmVwbGFjZSgvXFwuLi4vZ2ksIEVMTElQU0lTKTtcbiAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gY29udmVydFJlZmVyZW5jZSh0c3ZJdGVtKTtcbiAgcmV0dXJuIHtcbiAgICBjb21tZW50czogZmFsc2UsXG4gICAgcmVtaW5kZXJzOiBmYWxzZSxcbiAgICBzZWxlY3Rpb25zOiBmYWxzZSxcbiAgICB2ZXJzZUVkaXRzOiBmYWxzZSxcbiAgICBub3RoaW5nVG9TZWxlY3Q6IGZhbHNlLFxuICAgIGNvbnRleHRJZDoge1xuICAgICAgY2hlY2tJZDogdHN2SXRlbS5JRCB8fCAnJyxcbiAgICAgIG9jY3VycmVuY2VOb3RlOiB0c3ZJdGVtLk9jY3VycmVuY2VOb3RlIHx8ICcnLFxuICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgIGJvb2tJZDogdHN2SXRlbS5Cb29rLnRvTG93ZXJDYXNlKCkgfHwgJycsXG4gICAgICAgIGNoYXB0ZXI6IGNoYXB0ZXIgfHwgJycsXG4gICAgICAgIHZlcnNlOiB2ZXJzZSB8fCAnJyxcbiAgICAgIH0sXG4gICAgICB0b29sOiB0b29sTmFtZSB8fCAnJyxcbiAgICAgIGdyb3VwSWQ6IHRzdkl0ZW0uU3VwcG9ydFJlZmVyZW5jZSB8fCAnJyxcbiAgICAgIHF1b3RlLFxuICAgICAgcXVvdGVTdHJpbmcsXG4gICAgICBnbFF1b3RlOiB0c3ZJdGVtLkdMUXVvdGUgfHwgJycsXG4gICAgICBvY2N1cnJlbmNlOiBwYXJzZUludCh0c3ZJdGVtLk9jY3VycmVuY2UsIDEwKSB8fCAxLFxuICAgIH0sXG4gIH07XG59O1xuXG5cbi8qKlxuICogUGFyc2VzIGxpc3Qgb2YgdHN2IGl0ZW1zIGFuZCByZXR1cm5zIGFuIG9iamVjdCBob2xkaW5nIHRoZSBsaXN0cyBvZiBncm91cCBpZHMuXG4gKiBAcGFyYW0ge0FycmF5fSB0c3ZJdGVtcyAtIGxpc3Qgb2YgaXRlbXMgdG8gcHJvY2Vzc1xuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsQmlibGVQYXRoIHBhdGggdG8gb3JpZ2luYWwgYmlibGUuXG4gKiAgICAgICAgZS5nLiAvcmVzb3VyY2VzL2VsLXgta29pbmUvYmlibGVzL3VnbnQvdjAuMTFcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXNvdXJjZXNQYXRoIHBhdGggdG8gdGhlIHJlc291cmNlcyBkaXJcbiAqICAgICAgZS5nLiAvVXNlci9qb2huL3RyYW5zbGF0aW9uQ29yZS9yZXNvdXJjZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBib29rSWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5nSWRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b29sTmFtZSB0QyB0b29sIG5hbWUuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zIFdoZW4gaXQgaW5jbHVkZXMgeyBjYXRlZ29yaXplZDogdHJ1ZSB9XG4gKiAgICAgIHRoZW4gaXQgcmV0dXJucyB0aGUgb2JqZWN0IG9yZ2FuaXplZCBieSB0biBhcnRpY2xlIGNhdGVnb3J5LlxuICogQHJldHVybiB7T2JqZWN0fSAtIGdyb3VwRGF0YVxuICovXG5mdW5jdGlvbiB0c3ZPYmplY3RzVG9Hcm91cERhdGEodHN2SXRlbXMsIG9yaWdMYW5nQmlibGUsIHJlc291cmNlc1BhdGgsIGJvb2tJZCwgbGFuZ0lkLCB0b29sTmFtZSwgcGFyYW1zKSB7XG4gIGNvbnN0IGdyb3VwRGF0YSA9IHt9O1xuICBjb25zdCB0d0xpbmtNYXRjaCA9IC9ecmM6XFwvXFwvXFwqXFwvdHdcXC9kaWN0XFwvYmlibGVcXC8oXFx3KylcXC8oW1xcd1xcZF0rKS87XG4gIGNvbnN0IHR3TGlua1JFID0gbmV3IFJlZ0V4cCh0d0xpbmtNYXRjaCk7XG4gIGJvb2tJZCA9IGJvb2tJZC50b0xvd2VyQ2FzZSgpO1xuXG4gIHRyeSB7XG4gICAgLy8gY29uc3QgcmVzb3VyY2VBcGkgPSBuZXcgTWFuYWdlUmVzb3VyY2Uob3JpZ2luYWxCaWJsZVBhdGgsIGJvb2tJZCk7XG5cbiAgICBmb3IgKGNvbnN0IHRzdkl0ZW0gb2YgdHN2SXRlbXMpIHtcbiAgICAgIGlmICh0c3ZJdGVtLlJlZmVyZW5jZSAmJiB0c3ZJdGVtLklEICYmIHRzdkl0ZW0uT3JpZ1dvcmRzICYmIHRzdkl0ZW0uT2NjdXJyZW5jZSAmJiB0c3ZJdGVtLlRXTGluaykge1xuLy8gICAgICAgIGNvbnN0IHRhZ3MgPSBjbGVhbkdyb3VwSWQodHN2SXRlbS5UYWdzKSB8fCAnb3RoZXInO1xuICAgICAgICBjb25zdCB0d0xpbmsgPSB0c3ZJdGVtLlRXTGluay5tYXRjaCh0d0xpbmtSRSk7XG4gICAgICAgIGlmICghdHdMaW5rKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGB0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGludmFsaWQgVFdMaW5rOiAke3Rzdkl0ZW0uVFdMaW5rfWApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hhcHRlciA9IHRzdkl0ZW0uQ2hhcHRlcjtcbiAgICAgICAgY29uc3QgdmVyc2UgPSB0c3ZJdGVtLlZlcnNlO1xuICAgICAgICB0c3ZJdGVtLkJvb2sgPSBib29rSWQ7XG4gICAgICAgIHRzdkl0ZW0uQ2hhcHRlciA9IGNoYXB0ZXI7XG4gICAgICAgIHRzdkl0ZW0uVmVyc2UgPSB2ZXJzZTtcbiAgICAgICAgdHN2SXRlbS5PcmlnUXVvdGUgPSB0c3ZJdGVtLk9yaWdXb3JkcztcbiAgICAgICAgdHN2SXRlbS5DYXRhZ29yeSA9IHR3TGlua1sxXTtcbiAgICAgICAgdHN2SXRlbS5TdXBwb3J0UmVmZXJlbmNlID0gdHdMaW5rWzJdO1xuICAgICAgICBsZXQgdmVyc2VTdHJpbmcgPSBudWxsO1xuXG4gICAgICAgIGlmICghdHN2SXRlbS5DYXRhZ29yeSB8fCAhdHN2SXRlbS5TdXBwb3J0UmVmZXJlbmNlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGB0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGludmFsaWQgVFdMaW5rOiAke3Rzdkl0ZW0uVFdMaW5rfWApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2ZXJzZVN0cmluZyA9IGdldFZlcnNlU3RyaW5nKG9yaWdMYW5nQmlibGUsIHRzdkl0ZW0uUmVmZXJlbmNlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChwYXJzZUludChjaGFwdGVyLCAxMCkgJiYgcGFyc2VJbnQodmVyc2UsIDEwKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGB0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGVycm9yIGdldHRpbmcgdmVyc2Ugc3RyaW5nOiBjaGFwdGVyICR7Y2hhcHRlcn0sIHZlcnNlICR7dmVyc2V9IGZyb20gJHtKU09OLnN0cmluZ2lmeSh0c3ZJdGVtKX1gLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmVyc2VTdHJpbmcpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSB0c3ZJdGVtLkNhdGFnb3J5O1xuICAgICAgICAgIGNvbnN0IGdyb3VwRGF0YUl0ZW0gPSBnZW5lcmF0ZUdyb3VwRGF0YUl0ZW0odHN2SXRlbSwgdG9vbE5hbWUsIHZlcnNlU3RyaW5nKTtcbiAgICAgICAgICBpZiAoZ3JvdXBEYXRhW2tleV0pIHtcbiAgICAgICAgICAgIGdyb3VwRGF0YVtrZXldLnB1c2goZ3JvdXBEYXRhSXRlbSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdyb3VwRGF0YVtrZXldID0gW2dyb3VwRGF0YUl0ZW1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCd0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGVycm9yIHByb2Nlc3NpbmcgaXRlbTonLCBKU09OLnN0cmluZ2lmeSh0c3ZJdGVtKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcyAmJiBwYXJhbXMuY2F0ZWdvcml6ZWQgPyBjYXRlZ29yaXplR3JvdXBEYXRhKGdyb3VwRGF0YSkgOiBncm91cERhdGE7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGB0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGVycm9yIHByb2Nlc3NpbmcgVFNWc2AsIGUpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBzZXBhcmF0ZSBhIHJlZmVyZW5jZSBzdHJpbmcgc3VjaCBhcyBcIjE6MVwiIGludG8gY2hhcHRlciBhbmQgdmVyc2UgYW5kIGFkZCBhIHZlcnNlU3RyIGZvciByZWZlcmVuY2VzIHRoYXQgaGF2ZSBtdWx0aXBsZSB2ZXJzZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWYgLSByZWZlcmVuY2Ugc3RyaW5nXG4gKiBAcmV0dXJuIHt7Q2hhcHRlciwgVmVyc2V9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZWZlcmVuY2UocmVmKSB7XG4gIGNvbnN0IGNsZWFuZWRSZWYgPSBjbGVhbnVwUmVmZXJlbmNlKHJlZik7XG4gIGNvbnN0IHJlZl8gPSB7XG4gICAgQ2hhcHRlcjogY2xlYW5lZFJlZi5jaGFwdGVyLFxuICAgIFZlcnNlOiBjbGVhbmVkUmVmLnZlcnNlICsgJycsXG4gIH07XG5cbiAgaWYgKGNsZWFuZWRSZWYudmVyc2VTdHIpIHtcbiAgICByZWZfLnZlcnNlU3RyID0gY2xlYW5lZFJlZi52ZXJzZVN0cjtcbiAgfVxuICByZXR1cm4gcmVmXztcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgY29udGV4dCBJRHMgYXJlIGZvciBzYW1lIHZlcnNlLiAgT3B0aW1pemVkIG92ZXIgaXNFcXVhbCgpXG4gKiBAcGFyYW0ge09iamVjdH0gY29udGV4dElkMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRJZDJcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybnMgdHJ1ZSBpZiBjb250ZXh0IElEcyBhcmUgZm9yIHNhbWUgdmVyc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZVZlcnNlQnlDb250ZXh0KGNvbnRleHRJZDEsIGNvbnRleHRJZDIpIHtcbiAgcmV0dXJuIChjb250ZXh0SWQxLnJlZmVyZW5jZS5jaGFwdGVyID09IGNvbnRleHRJZDIucmVmZXJlbmNlLmNoYXB0ZXIpICYmIC8vIFRSSUNLWTogd2UgYXJlIGFsbG93aW5nIGNvZXJjaW9uIHNpbmNlIGNoYXB0ZXJzIGFuZCB2ZXJzZXMgY291bGQgYmUgZWl0aGVyIHN0cmluZ3Mgb3IgbnVtYmVyc1xuICAgIChjb250ZXh0SWQxLnJlZmVyZW5jZS52ZXJzZSA9PSBjb250ZXh0SWQyLnJlZmVyZW5jZS52ZXJzZSk7XG59XG5cbi8qKlxuICogbWFrZSBzdXJlIGNvbnRleHQgSURzIGFyZSBmb3Igc2FtZSB2ZXJzZS4gIE9wdGltaXplZCBvdmVyIGlzRXF1YWwoKVxuICogQHBhcmFtIHtPYmplY3R9IHJlZmVyZW5jZTFcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWZlcmVuY2UyXG4gKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm5zIHRydWUgaWYgY29udGV4dCBJRHMgYXJlIGZvciBzYW1lIHZlcnNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVWZXJzZUJ5UmVmKHJlZmVyZW5jZTEsIHJlZmVyZW5jZTIpIHtcbiAgcmV0dXJuIChyZWZlcmVuY2UxLmNoYXB0ZXIgPT0gcmVmZXJlbmNlMi5jaGFwdGVyKSAmJiAvLyBUUklDS1k6IHdlIGFyZSBhbGxvd2luZyBjb2VyY2lvbiBzaW5jZSBjaGFwdGVycyBhbmQgdmVyc2VzIGNvdWxkIGJlIGVpdGhlciBzdHJpbmdzIG9yIG51bWJlcnNcbiAgICAocmVmZXJlbmNlMS52ZXJzZSA9PSByZWZlcmVuY2UyLnZlcnNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGVjayhncm91cHNEYXRhLCBjb250ZXh0SWQsIGRlZmF1bHRUb0ZpcnN0ID0gZmFsc2UpIHtcbiAgbGV0IGNoZWNrID0gbnVsbFxuICBsZXQgY2hlY2tlZEJvb2sgPSBmYWxzZTtcbiAgaWYgKGdyb3Vwc0RhdGEgJiYgY29udGV4dElkPy5yZWZlcmVuY2UpIHtcbiAgICBmb3IgKGNvbnN0IGdyb3VwSWQgb2YgT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSkpIHtcbiAgICAgIGlmIChncm91cElkID09PSBjb250ZXh0SWQuZ3JvdXBJZCkge1xuICAgICAgICBjb25zdCBjYXRhZ29yeUl0ZW1zID0gZ3JvdXBzRGF0YVtncm91cElkXVxuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSBjb250ZXh0SWQ/LnJlZmVyZW5jZVxuICAgICAgICBpZiAoIWNoZWNrZWRCb29rICYmIGNhdGFnb3J5SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHJlZmVyZW5jZT8uYm9va0lkICE9PSBjYXRhZ29yeUl0ZW1zWzBdPy5jb250ZXh0SWQ/LnJlZmVyZW5jZT8uYm9va0lkKSB7XG4gICAgICAgICAgICBicmVhazsgLy8gY29udGV4dCBpZCBpcyBmb3IgZGlmZmVyZW5jZSBib29rXG4gICAgICAgICAgfVxuICAgICAgICAgIGNoZWNrZWRCb29rID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY2F0YWdvcnlJdGVtcykge1xuICAgICAgICAgICAgY29uc3QgaXRlbUNvbnRleHRJZCA9IGl0ZW0uY29udGV4dElkXG4gICAgICAgICAgICBpZiAoaXNTYW1lVmVyc2VCeVJlZihyZWZlcmVuY2UsIGl0ZW1Db250ZXh0SWQ/LnJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgbGV0IG1hdGNoRm91bmQgPSBmYWxzZVxuICAgICAgICAgICAgICBpZiAoY29udGV4dElkLmNoZWNrSWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dElkLmNoZWNrSWQgPT09IGl0ZW1Db250ZXh0SWQ/LmNoZWNrSWQpIHtcbiAgICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgLy8gaWYgbm8gY2hlY2tJZCwgZmFsbCBiYWNrIHRvIG1hdGNoaW5nIHF1b3RlIGFuZCBvY2N1cnJlbmNlXG4gICAgICAgICAgICAgIGlmIChpc0VxdWFsKGNvbnRleHRJZC5xdW90ZSwgaXRlbUNvbnRleHRJZD8ucXVvdGUpICYmIChjb250ZXh0SWQub2NjdXJyZW5jZSA9PT0gaXRlbUNvbnRleHRJZD8ub2NjdXJyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKG1hdGNoRm91bmQpIHtcbiAgICAgICAgICAgICAgICBjaGVjayA9IGl0ZW1cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrIC8vIHdoZW4gZmluaXNoZWQgY2hlY2tpbmcgYWxsIGl0ZW1zIGluIGdyb3VwSWQsIHRoZXJlIGlzIG5vIHBvaW50IHRvIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghY2hlY2sgJiYgZGVmYXVsdFRvRmlyc3QpIHtcbiAgICBjaGVjayA9IGZpbmRGaXJzdENoZWNrKGdyb3Vwc0RhdGEpXG4gIH1cbiAgcmV0dXJuIGNoZWNrXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmV4dENoZWNrKGdyb3Vwc0RhdGEsIGNvbnRleHRJZCwgZGVmYXVsdFRvRmlyc3QgPSBmYWxzZSkge1xuICBsZXQgY2hlY2sgPSBudWxsXG4gIGxldCBjaGVja2VkQm9vayA9IGZhbHNlO1xuICBsZXQgbWF0Y2hGb3VuZCA9IGZhbHNlXG4gIGlmIChncm91cHNEYXRhICYmIGNvbnRleHRJZD8ucmVmZXJlbmNlKSB7XG4gICAgY29uc3QgZ3JvdXBzS2V5cyA9IE9iamVjdC5rZXlzKGdyb3Vwc0RhdGEpXG4gICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgZ3JvdXBzS2V5cy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICBjb25zdCBncm91cElkID0gZ3JvdXBzS2V5c1tpZHhdXG4gICAgICBpZiAoZ3JvdXBJZCA9PT0gY29udGV4dElkLmdyb3VwSWQpIHtcbiAgICAgICAgY29uc3QgY2F0YWdvcnlJdGVtcyA9IGdyb3Vwc0RhdGFbZ3JvdXBJZF1cbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gY29udGV4dElkPy5yZWZlcmVuY2VcbiAgICAgICAgaWYgKCFjaGVja2VkQm9vayAmJiBjYXRhZ29yeUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChyZWZlcmVuY2U/LmJvb2tJZCAhPT0gY2F0YWdvcnlJdGVtc1swXT8uY29udGV4dElkPy5yZWZlcmVuY2U/LmJvb2tJZCkge1xuICAgICAgICAgICAgYnJlYWs7IC8vIGNvbnRleHQgaWQgaXMgZm9yIGRpZmZlcmVuY2UgYm9va1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaGVja2VkQm9vayA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRhZ29yeUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gY2F0YWdvcnlJdGVtc1tpXVxuICAgICAgICAgICAgY29uc3QgaXRlbUNvbnRleHRJZCA9IGl0ZW0uY29udGV4dElkXG4gICAgICAgICAgICBpZiAoaXNTYW1lVmVyc2VCeVJlZihyZWZlcmVuY2UsIGl0ZW1Db250ZXh0SWQ/LnJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbnRleHRJZC5jaGVja0lkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHRJZC5jaGVja0lkID09PSBpdGVtQ29udGV4dElkPy5jaGVja0lkKSB7XG4gICAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIC8vIGlmIG5vIGNoZWNrSWQsIGZhbGwgYmFjayB0byBtYXRjaGluZyBxdW90ZSBhbmQgb2NjdXJyZW5jZVxuICAgICAgICAgICAgICBpZiAoaXNFcXVhbChjb250ZXh0SWQucXVvdGUsIGl0ZW1Db250ZXh0SWQ/LnF1b3RlKSAmJiAoY29udGV4dElkLm9jY3VycmVuY2UgPT09IGl0ZW1Db250ZXh0SWQ/Lm9jY3VycmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hGb3VuZCA9IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWF0Y2hGb3VuZCkgeyAvLyBpZiBtYXRjaCB3YXMgZm91bmQsIHRoZW4gbW92ZSB0byBuZXh0IGNoZWNrXG4gICAgICAgICAgICAgIGlmIChpIDwgY2F0YWdvcnlJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgY2hlY2sgPSBjYXRhZ29yeUl0ZW1zW2kgKyAxXVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlkeCA8IGdyb3Vwc0tleXMubGVuZ3RoIC0gMSkgeyAvLyBtb3ZlIHRvIGZpcnN0IGl0ZW0gaW4gbmV4dCBncm91cFxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRHcm91cElkID0gZ3JvdXBzS2V5c1tpZHggKyAxXVxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRHcm91cEl0ZW1zID0gZ3JvdXBzRGF0YVtuZXh0R3JvdXBJZF1cbiAgICAgICAgICAgICAgICBjaGVjayA9IG5leHRHcm91cEl0ZW1zWzBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWsgLy8gd2hlbiBmaW5pc2hlZCBjaGVja2luZyBhbGwgaXRlbXMgaW4gZ3JvdXBJZCwgdGhlcmUgaXMgbm8gcG9pbnQgdG8gY29udGludWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFjaGVjayAmJiBkZWZhdWx0VG9GaXJzdCkge1xuICAgIGNoZWNrID0gZmluZEZpcnN0Q2hlY2soZ3JvdXBzRGF0YSlcbiAgfVxuICByZXR1cm4gY2hlY2tcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQcmV2aW91c0NoZWNrKGdyb3Vwc0RhdGEsIGNvbnRleHRJZCwgZGVmYXVsdFRvRmlyc3QgPSBmYWxzZSkge1xuICBsZXQgY2hlY2sgPSBudWxsXG4gIGxldCBjaGVja2VkQm9vayA9IGZhbHNlO1xuICBsZXQgbWF0Y2hGb3VuZCA9IGZhbHNlXG4gIGlmIChncm91cHNEYXRhICYmIGNvbnRleHRJZD8ucmVmZXJlbmNlKSB7XG4gICAgY29uc3QgZ3JvdXBzS2V5cyA9IE9iamVjdC5rZXlzKGdyb3Vwc0RhdGEpXG4gICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgZ3JvdXBzS2V5cy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICBjb25zdCBncm91cElkID0gZ3JvdXBzS2V5c1tpZHhdXG4gICAgICBpZiAoZ3JvdXBJZCA9PT0gY29udGV4dElkLmdyb3VwSWQpIHtcbiAgICAgICAgY29uc3QgY2F0YWdvcnlJdGVtcyA9IGdyb3Vwc0RhdGFbZ3JvdXBJZF1cbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gY29udGV4dElkPy5yZWZlcmVuY2VcbiAgICAgICAgaWYgKCFjaGVja2VkQm9vayAmJiBjYXRhZ29yeUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChyZWZlcmVuY2U/LmJvb2tJZCAhPT0gY2F0YWdvcnlJdGVtc1swXT8uY29udGV4dElkPy5yZWZlcmVuY2U/LmJvb2tJZCkge1xuICAgICAgICAgICAgYnJlYWs7IC8vIGNvbnRleHQgaWQgaXMgZm9yIGRpZmZlcmVuY2UgYm9va1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaGVja2VkQm9vayA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRhZ29yeUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gY2F0YWdvcnlJdGVtc1tpXVxuICAgICAgICAgICAgY29uc3QgaXRlbUNvbnRleHRJZCA9IGl0ZW0uY29udGV4dElkXG4gICAgICAgICAgICBpZiAoaXNTYW1lVmVyc2VCeVJlZihyZWZlcmVuY2UsIGl0ZW1Db250ZXh0SWQ/LnJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbnRleHRJZC5jaGVja0lkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHRJZC5jaGVja0lkID09PSBpdGVtQ29udGV4dElkPy5jaGVja0lkKSB7XG4gICAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIC8vIGlmIG5vIGNoZWNrSWQsIGZhbGwgYmFjayB0byBtYXRjaGluZyBxdW90ZSBhbmQgb2NjdXJyZW5jZVxuICAgICAgICAgICAgICBpZiAoaXNFcXVhbChjb250ZXh0SWQucXVvdGUsIGl0ZW1Db250ZXh0SWQ/LnF1b3RlKSAmJiAoY29udGV4dElkLm9jY3VycmVuY2UgPT09IGl0ZW1Db250ZXh0SWQ/Lm9jY3VycmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hGb3VuZCA9IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWF0Y2hGb3VuZCkgeyAvLyBpZiBtYXRjaCB3YXMgZm91bmQsIHRoZW4gbW92ZSB0byBwcmV2aW91cyBjaGVja1xuICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICBjaGVjayA9IGNhdGFnb3J5SXRlbXNbaSAtIDFdXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaWR4ID4gMCkgeyAvLyBtb3ZlIHRvIGZpcnN0IGl0ZW0gaW4gbmV4dCBncm91cFxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRHcm91cElkID0gZ3JvdXBzS2V5c1tpZHggLSAxXVxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRHcm91cEl0ZW1zID0gZ3JvdXBzRGF0YVtuZXh0R3JvdXBJZF1cbiAgICAgICAgICAgICAgICBjaGVjayA9IG5leHRHcm91cEl0ZW1zW25leHRHcm91cEl0ZW1zLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWsgLy8gd2hlbiBmaW5pc2hlZCBjaGVja2luZyBhbGwgaXRlbXMgaW4gZ3JvdXBJZCwgdGhlcmUgaXMgbm8gcG9pbnQgdG8gY29udGludWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFjaGVjayAmJiBkZWZhdWx0VG9GaXJzdCkge1xuICAgIGNoZWNrID0gZmluZEZpcnN0Q2hlY2soZ3JvdXBzRGF0YSlcbiAgfVxuICByZXR1cm4gY2hlY2tcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGaXJzdENoZWNrKGdyb3Vwc0RhdGEpIHtcbiAgbGV0IGNoZWNrID0gbnVsbFxuICBjb25zdCBncm91cEtleXMgPSBncm91cHNEYXRhICYmIE9iamVjdC5rZXlzKGdyb3Vwc0RhdGEpXG4gIGlmIChncm91cEtleXM/Lmxlbmd0aCkge1xuICAgIGNvbnN0IGZpcnN0R3JvdXAgPSBncm91cHNEYXRhW2dyb3VwS2V5c1swXV1cbiAgICBpZiAoZmlyc3RHcm91cD8ubGVuZ3RoKSB7XG4gICAgICBjaGVjayA9IGZpcnN0R3JvdXBbMF1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoZWNrXG59XG5cblxuLyoqXG4gKiBwcm9jZXNzIHRoZSBUU1YgZmlsZSBpbnRvIGluZGV4IGZpbGVzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHN2RGF0YVxuICogQHBhcmFtIHtvYmplY3R9IHByb2plY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXNvdXJjZXNQYXRoXG4gKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxCaWJsZVBhdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRQYXRoXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0d2xUc3ZUb0dyb3VwRGF0YSh0c3ZEYXRhLCBwcm9qZWN0LCBvcmlnTGFuZ0JpYmxlKSB7XG4gIGNvbnN0IGJvb2tJZCA9IHByb2plY3QuaWRlbnRpZmllcjtcbiAgbGV0IGdyb3VwRGF0YTtcbiAgY29uc3Qge1xuICAgIHRzdkl0ZW1zLFxuICAgIGVycm9yLFxuICB9ID0gYXdhaXQgdHN2RGF0YVRvT2JqZWN0cyh0c3ZEYXRhKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIGNvbnN0IHRzdkl0ZW1zXyA9IFtdO1xuICBmb3IgKGNvbnN0IHRzdkl0ZW0gb2YgdHN2SXRlbXMpIHtcbiAgICBjb25zdCBjbGVhbmVkUmVmID0gcGFyc2VSZWZlcmVuY2UodHN2SXRlbS5SZWZlcmVuY2UpO1xuICAgIGNvbnN0IHRzdkl0ZW1fID0ge1xuICAgICAgLi4udHN2SXRlbSxcbiAgICAgIC4uLmNsZWFuZWRSZWYsXG4gICAgfTtcbiAgICB0c3ZJdGVtc18ucHVzaCh0c3ZJdGVtXyk7XG4gIH1cblxuICB0cnkge1xuICAgIGdyb3VwRGF0YSA9IHRzdk9iamVjdHNUb0dyb3VwRGF0YSh0c3ZJdGVtc18sIG9yaWdMYW5nQmlibGUsIFwiXCIsIGJvb2tJZCwgcHJvamVjdC5sYW5ndWFnZUlkLCAndHJhbnNsYXRpb25Xb3JkcycsIHtjYXRlZ29yaXplZDogdHJ1ZX0pO1xuICAgIGNvbnZlcnRFbGxpcHNpc1RvQW1wZXJzYW5kKGdyb3VwRGF0YSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGB0d0FydGljbGVIZWxwZXJzLnR3bFRzdlRvR3JvdXBEYXRhKCkgLSBlcnJvciBwcm9jZXNzaW5nIGdyb3VwIGRhdGFgLCBlKTtcbiAgICB0aHJvdyBlO1xuICB9XG4gIHJldHVybiBncm91cERhdGE7XG59XG5cbi8qKlxuICogcGFyc2UgdGhlIHR3RGF0YSBpbnRvIGEgZmxhdCBpbmRleFxuICogQHBhcmFtIHtvYmplY3R9IHR3RGF0YVxuICogQHJldHVybnMge2FycmF5fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUd1RvSW5kZXgodHdEYXRhKSB7XG4gIGxldCBpbmRleCA9IFtdXG4gIGZvciAoY29uc3QgY2F0YWdvcnlJZCBvZiBPYmplY3Qua2V5cyh0d0RhdGEpKSB7XG4gICAgY29uc3QgY2F0YWdvcnkgPSB0d0RhdGFbY2F0YWdvcnlJZF1cbiAgICBpZiAoY2F0YWdvcnk/LmluZGV4KSB7XG4gICAgICBpbmRleCA9IGluZGV4LmNvbmNhdChjYXRhZ29yeT8uaW5kZXgpXG4gICAgfVxuICB9XG4gIHJldHVybiBpbmRleFxufVxuXG4vKipcbiAqIHByb2Nlc3MgdGhlIFRTViBmaWxlIGludG8gaW5kZXggZmlsZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0c3ZEYXRhXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHN2RGF0YVRvT2JqZWN0cyh0c3ZEYXRhKSB7XG4gIC8vIGNvbnNvbGUubG9nKHRzdkxpbmVzKTtcbiAgbGV0IHRzdkl0ZW1zO1xuICBsZXQgcGFyc2VFcnJvck1zZztcbiAgbGV0IGVycm9yO1xuICBsZXQgZXhwZWN0ZWRDb2x1bW5zID0gMDtcbiAgY29uc3QgdGFibGVPYmplY3QgPSB0c3ZwYXJzZXIudHN2U3RyaW5nVG9UYWJsZSh0c3ZEYXRhKTtcblxuICBpZiAoIHRhYmxlT2JqZWN0LmVycm9ycy5sZW5ndGggPiAwICkge1xuICAgIHBhcnNlRXJyb3JNc2cgPSAnJztcbiAgICBleHBlY3RlZENvbHVtbnMgPSB0YWJsZU9iamVjdC5oZWFkZXIubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPHRhYmxlT2JqZWN0LmVycm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG1zZztcbiAgICAgIGNvbnN0IHJvd251bSA9IHRhYmxlT2JqZWN0LmVycm9yc1tpXVswXSAtIDE7IC8vIGFkanVzdCBmb3IgZGF0YSB0YWJsZSB3aXRob3V0IGhlYWRlciByb3dcbiAgICAgIGNvbnN0IGNvbHNmb3VuZCA9IHRhYmxlT2JqZWN0LmVycm9yc1tpXVsxXTtcblxuICAgICAgaWYgKCBjb2xzZm91bmQgPiBleHBlY3RlZENvbHVtbnMgKSB7XG4gICAgICAgIG1zZyA9ICdSb3cgaXMgdG9vIGxvbmcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXNnID0gJ1JvdyBpcyB0b28gc2hvcnQnO1xuICAgICAgfVxuICAgICAgcGFyc2VFcnJvck1zZyArPSBgXFxuXFxuJHttc2d9OmA7XG4gICAgICBwYXJzZUVycm9yTXNnICs9ICdcXG4nICsgdGFibGVPYmplY3QuZGF0YVtyb3dudW1dLmpvaW4oJywnKTtcbiAgICB9XG4gICAgY29uc29sZS53YXJuKGB0d0FydGljbGVIZWxwZXJzLnR3bFRzdlRvR3JvdXBEYXRhKCkgLSB0YWJsZSBwYXJzZSBlcnJvcnMgZm91bmQ6ICR7cGFyc2VFcnJvck1zZ31gKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgdHN2SXRlbXMgPSB0YWJsZU9iamVjdC5kYXRhLm1hcChsaW5lID0+IHtcbiAgICAgIGNvbnN0IHRzdkl0ZW0gPSB7fTtcbiAgICAgIGNvbnN0IGwgPSB0YWJsZU9iamVjdC5oZWFkZXIubGVuZ3RoO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSB0YWJsZU9iamVjdC5oZWFkZXJbaV07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbGluZVtpXSB8fCAnJztcbiAgICAgICAgdHN2SXRlbVtrZXldID0gdmFsdWUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRzdkl0ZW07XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGB0d0FydGljbGVIZWxwZXJzLnR3bFRzdlRvR3JvdXBEYXRhKCkgLSBlcnJvciBwcm9jZXNzaW5nIGZpbGVwYXRoOiAke3RzdlBhdGh9YCwgZSk7XG4gICAgZXJyb3IgPSBlO1xuICB9XG4gIHJldHVybiB7XG4gICAgdHN2SXRlbXMsXG4gICAgcGFyc2VFcnJvck1zZyxcbiAgICBlcnJvcixcbiAgICBleHBlY3RlZENvbHVtbnMsXG4gIH07XG59XG5cblxuLy8gLyoqXG4vLyAgKiBAZGVzY3JpcHRpb24gUHJvY2Vzc2VzIHRoZSBleHRyYWN0ZWQgZmlsZXMgZm9yIHRyYW5zbGF0aW9uV29yZCB0byBjcmVhdGUgdGhlIGZvbGRlclxuLy8gICogc3RydWN0dXJlIGFuZCBwcm9kdWNlIHRoZSBpbmRleC5qcyBmaWxlIGZvciB0aGUgbGFuZ3VhZ2Ugd2l0aCB0aGUgdGl0bGUgb2YgZWFjaCBhcnRpY2xlLlxuLy8gICogQHBhcmFtIHtPYmplY3R9IHJlc291cmNlIC0gUmVzb3VyY2Ugb2JqZWN0XG4vLyAgKiBAcGFyYW0ge1N0cmluZ30gc291cmNlUGF0aCAtIFBhdGggdG8gdGhlIGV4dHJhY3RlZCBmaWxlcyB0aGF0IGNhbWUgZnJvbSB0aGUgemlwIGZpbGUgZnJvbSB0aGUgY2F0YWxvZ1xuLy8gICogQHBhcmFtIHtTdHJpbmd9IG91dHB1dFBhdGggLSBQYXRoIHRvIHBsYWNlIHRoZSBwcm9jZXNzZWQgcmVzb3VyY2UgZmlsZXMgV0lIVE9VVCB0aGUgdmVyc2lvbiBpbiB0aGUgcGF0aFxuLy8gICogQHBhcmFtIHtzdHJpbmd9IHJlc291cmNlc1BhdGhcbi8vICAqIEBwYXJhbSB7QXJyYXl9IGRvd25sb2FkRXJyb3JzIC0gcGFyc2VkIGxpc3Qgb2YgZG93bmxvYWQgZXJyb3JzIHdpdGggZGV0YWlscyBzdWNoIGFzIGlmIHRoZSBkb3dubG9hZCBjb21wbGV0ZWQgKHZzLiBwYXJzaW5nIGVycm9yKSwgZXJyb3IsIGFuZCB1cmxcbi8vICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgLSBjb25maWd1cmF0aW9uIG9iamVjdFxuLy8gICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBzdWNjZXNzXG4vLyAgKi9cbi8vIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzVHJhbnNsYXRpb25Xb3Jkc1RTVihyZXNvdXJjZSwgc291cmNlUGF0aCwgb3V0cHV0UGF0aCwgcmVzb3VyY2VzUGF0aCwgZG93bmxvYWRFcnJvcnMsIGNvbmZpZyA9IHt9KSB7XG4vLyAgIHRyeSB7XG4vLyAgICAgaWYgKCFyZXNvdXJjZSB8fCAhaXNPYmplY3QocmVzb3VyY2UpIHx8ICFyZXNvdXJjZS5sYW5ndWFnZUlkIHx8ICFyZXNvdXJjZS5yZXNvdXJjZUlkKVxuLy8gICAgICAgdGhyb3cgRXJyb3IocmVzb3VyY2VzSGVscGVycy5mb3JtYXRFcnJvcihyZXNvdXJjZSwgZXJyb3JzLlJFU09VUkNFX05PVF9HSVZFTikpO1xuLy8gICAgIGlmICghc291cmNlUGF0aClcbi8vICAgICAgIHRocm93IEVycm9yKHJlc291cmNlc0hlbHBlcnMuZm9ybWF0RXJyb3IocmVzb3VyY2UsIGVycm9ycy5TT1VSQ0VfUEFUSF9OT1RfR0lWRU4pKTtcbi8vICAgICBpZiAoIWZzLnBhdGhFeGlzdHNTeW5jKHNvdXJjZVBhdGgpKVxuLy8gICAgICAgdGhyb3cgRXJyb3IocmVzb3VyY2VzSGVscGVycy5mb3JtYXRFcnJvcihyZXNvdXJjZSwgZXJyb3JzLlNPVVJDRV9QQVRIX05PVF9FWElTVCkpO1xuLy8gICAgIGlmICghb3V0cHV0UGF0aClcbi8vICAgICAgIHRocm93IEVycm9yKHJlc291cmNlc0hlbHBlcnMuZm9ybWF0RXJyb3IocmVzb3VyY2UsIGVycm9ycy5PVVRQVVRfUEFUSF9OT1RfR0lWRU4pKTtcbi8vICAgICBpZiAoZnMucGF0aEV4aXN0c1N5bmMob3V0cHV0UGF0aCkpXG4vLyAgICAgICBmcy5yZW1vdmVTeW5jKG91dHB1dFBhdGgpO1xuLy9cbi8vICAgICBjb25zdCB7b3RRdWVyeSwgbnRRdWVyeX0gPSBhd2FpdCBnZXRNaXNzaW5nUmVzb3VyY2VzKHNvdXJjZVBhdGgsIHJlc291cmNlc1BhdGgsIGdldE1pc3NpbmdPcmlnaW5hbFJlc291cmNlLCBkb3dubG9hZEVycm9ycywgcmVzb3VyY2UubGFuZ3VhZ2VJZCwgcmVzb3VyY2Uub3duZXIsIGZhbHNlLCBjb25maWcpO1xuLy9cbi8vICAgICAvLyBtYWtlIHN1cmUgdFcgaXMgYWxyZWFkeSBpbnN0YWxsZWRcbi8vICAgICBjb25zdCB0d1BhdGggPSBwYXRoLmpvaW4oXG4vLyAgICAgICByZXNvdXJjZXNQYXRoLFxuLy8gICAgICAgcmVzb3VyY2UubGFuZ3VhZ2VJZCxcbi8vICAgICAgICd0cmFuc2xhdGlvbkhlbHBzL3RyYW5zbGF0aW9uV29yZHMnXG4vLyAgICAgKTtcbi8vICAgICBjb25zdCB0d1ZlcnNpb25QYXRoID0gcmVzb3VyY2VzSGVscGVycy5nZXRMYXRlc3RWZXJzaW9uSW5QYXRoKHR3UGF0aCwgcmVzb3VyY2Uub3duZXIpO1xuLy8gICAgIGlmIChmcy5leGlzdHNTeW5jKHR3VmVyc2lvblBhdGgpKSB7XG4vLyAgICAgICBtYWtlU3VyZVJlc291cmNlVW56aXBwZWQodHdWZXJzaW9uUGF0aCk7XG4vLyAgICAgfSBlbHNlIHtcbi8vICAgICAgIGNvbnN0IHJlc291cmNlXyA9IGAke3Jlc291cmNlLm93bmVyfS8ke3Jlc291cmNlLmxhbmd1YWdlSWR9X3R3YDtcbi8vICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvY2Vzc1RyYW5zbGF0aW9uV29yZHNUU1YoKSAtIGNhbm5vdCBmaW5kICcke3Jlc291cmNlX30nIGF0ICR7dHdQYXRofSBmb3IgJHtyZXNvdXJjZS5vd25lcn1gKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGNvbnN0IG1hbmlmZXN0ID0gZ2V0UmVzb3VyY2VNYW5pZmVzdChzb3VyY2VQYXRoKTtcbi8vICAgICBpZiAoIShtYW5pZmVzdCAmJiBBcnJheS5pc0FycmF5KG1hbmlmZXN0LnByb2plY3RzKSkpIHtcbi8vICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvY2Vzc1RyYW5zbGF0aW9uV29yZHNUU1YoKSAtIG5vIHByb2plY3RzIGluIG1hbmlmZXN0IGF0ICR7c291cmNlUGF0aH0gZm9yICR7cmVzb3VyY2Uub3duZXJ9YCk7XG4vLyAgICAgfVxuLy9cbi8vICAgICBjb25zdCB0d2xFcnJvcnMgPSBbXTtcbi8vXG4vLyAgICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIG1hbmlmZXN0LnByb2plY3RzKSB7XG4vLyAgICAgICBjb25zdCB0c3ZQYXRoID0gcGF0aC5qb2luKHNvdXJjZVBhdGgsIHByb2plY3QucGF0aCk7XG4vLyAgICAgICB0cnkge1xuLy8gICAgICAgICBjb25zdCBib29rSWQgPSBwcm9qZWN0LmlkZW50aWZpZXI7XG4vLyAgICAgICAgIGNvbnN0IGlzTmV3VGVzdGFtZW50ID0gQklCTEVfQk9PS1MubmV3VGVzdGFtZW50W3Byb2plY3QuaWRlbnRpZmllcl07XG4vLyAgICAgICAgIGNvbnN0IG9yaWdpbmFsTGFuZ3VhZ2VJZCA9IGlzTmV3VGVzdGFtZW50ID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HO1xuLy8gICAgICAgICBjb25zdCBvcmlnaW5hbExhbmd1YWdlQmlibGVJZCA9IGlzTmV3VGVzdGFtZW50ID8gTlRfT1JJR19MQU5HX0JJQkxFIDogT1RfT1JJR19MQU5HX0JJQkxFO1xuLy8gICAgICAgICBjb25zdCB2ZXJzaW9uID0gaXNOZXdUZXN0YW1lbnQgJiYgbnRRdWVyeSA/ICgndicgKyBudFF1ZXJ5KSA6IG90UXVlcnkgPyAoJ3YnICsgb3RRdWVyeSkgOiBudWxsO1xuLy8gICAgICAgICBpZiAoIXZlcnNpb24pIHtcbi8vICAgICAgICAgICBjb25zb2xlLndhcm4oJ3Byb2Nlc3NUcmFuc2xhdGlvbldvcmRzVFNWKCkgLSBUaGVyZSB3YXMgYSBtaXNzaW5nIHZlcnNpb24gZm9yIGJvb2sgJyArIGJvb2tJZCArICcgb2YgcmVzb3VyY2UgJyArIG9yaWdpbmFsTGFuZ3VhZ2VCaWJsZUlkICsgJyBmcm9tICcgKyByZXNvdXJjZS5kb3dubG9hZFVybCk7XG4vLyAgICAgICAgICAgY29udGludWU7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgY29uc3Qgb3JpZ2luYWxMYW5ndWFnZU93bmVyID0gZ2V0T3duZXJGb3JPcmlnaW5hbExhbmd1YWdlKHJlc291cmNlLm93bmVyKTtcbi8vICAgICAgICAgY29uc3Qgb3JpZ2luYWxCaWJsZVBhdGggPSBwYXRoLmpvaW4oXG4vLyAgICAgICAgICAgcmVzb3VyY2VzUGF0aCxcbi8vICAgICAgICAgICBvcmlnaW5hbExhbmd1YWdlSWQsXG4vLyAgICAgICAgICAgJ2JpYmxlcycsXG4vLyAgICAgICAgICAgb3JpZ2luYWxMYW5ndWFnZUJpYmxlSWQsXG4vLyAgICAgICAgICAgYCR7dmVyc2lvbn1fJHtvcmlnaW5hbExhbmd1YWdlT3duZXJ9YFxuLy8gICAgICAgICApO1xuLy9cbi8vICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMob3JpZ2luYWxCaWJsZVBhdGgpKSB7XG4vLyAgICAgICAgICAgY29uc3QgZ3JvdXBEYXRhID0gYXdhaXQgdHdsVHN2VG9Hcm91cERhdGEodHN2UGF0aCwgcHJvamVjdCwgcmVzb3VyY2VzUGF0aCwgb3JpZ2luYWxCaWJsZVBhdGgsIG91dHB1dFBhdGgpO1xuLy8gICAgICAgICAgIGNvbnZlcnRFbGxpcHNpc1RvQW1wZXJzYW5kKGdyb3VwRGF0YSwgdHN2UGF0aCk7XG4vLyAgICAgICAgICAgYXdhaXQgZm9ybWF0QW5kU2F2ZUdyb3VwRGF0YShncm91cERhdGEsIG91dHB1dFBhdGgsIGJvb2tJZCk7XG4vLyAgICAgICAgIH0gZWxzZSB7XG4vLyAgICAgICAgICAgY29uc3QgcmVzb3VyY2UgPSBgJHtvcmlnaW5hbExhbmd1YWdlT3duZXJ9LyR7b3JpZ2luYWxMYW5ndWFnZUlkfV8ke29yaWdpbmFsTGFuZ3VhZ2VCaWJsZUlkfWA7XG4vLyAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBwcm9jZXNzVHJhbnNsYXRpb25Xb3Jkc1RTVigpIC0gY2Fubm90IGZpbmQgJyR7cmVzb3VyY2V9JyBhdCAke29yaWdpbmFsQmlibGVQYXRofTpgO1xuLy8gICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4vLyAgICAgICAgICAgdHdsRXJyb3JzLnB1c2gobWVzc2FnZSk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgIH0gY2F0Y2ggKGUpIHtcbi8vICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBwcm9jZXNzVHJhbnNsYXRpb25Xb3Jkc1RTVigpIC0gZXJyb3IgcHJvY2Vzc2luZyAke3RzdlBhdGh9OmA7XG4vLyAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgZSk7XG4vLyAgICAgICAgIHR3bEVycm9ycy5wdXNoKG1lc3NhZ2UgKyBlLnRvU3RyaW5nKCkpO1xuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyAgICAgYXdhaXQgZGVsYXkoMjAwKTtcbi8vXG4vLyAgICAgaWYgKHR3bEVycm9ycy5sZW5ndGgpIHsgLy8gcmVwb3J0IGVycm9yc1xuLy8gICAgICAgY29uc3QgbWVzc2FnZSA9IGBwcm9jZXNzVHJhbnNsYXRpb25Xb3Jkc1RTVigpIC0gZXJyb3IgcHJvY2Vzc2luZyAke3NvdXJjZVBhdGh9YDtcbi8vICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4vLyAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bWVzc2FnZX06XFxuJHt0d2xFcnJvcnMuam9pbignXFxuJyl9YCk7XG4vLyAgICAgfVxuLy8gICB9IGNhdGNoIChlcnJvcikge1xuLy8gICAgIGNvbnNvbGUuZXJyb3IoJ3Byb2Nlc3NUcmFuc2xhdGlvbldvcmRzVFNWKCkgLSBlcnJvcjonLCBlcnJvcik7XG4vLyAgICAgdGhyb3cgZXJyb3I7XG4vLyAgIH1cbi8vIH1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gLSBHZW5lcmF0ZXMgdGhlIGdyb3VwcyBpbmRleCBmb3IgdGhlIHR3IGFydGljbGVzIChib3RoIGt0LCBvdGhlciBhbmQgbmFtZXMpLlxuICogQHBhcmFtIHtTdHJpbmd9IGZpbGVzUGF0aCAtIFBhdGggdG8gYWxsIHR3IG1hcmtkb3duIGFydGNpbGVzLlxuICogQHBhcmFtIHtTdHJpbmd9IHR3T3V0cHV0UGF0aCBQYXRoIHRvIHRoZSByZXNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgc3RhdGljIGZvbGRlci5cbiAqIEBwYXJhbSB7U3RyaW5nfSBmb2xkZXJOYW1lIGFydGljbGUgdHlwZS4gZXguIGt0IG9yIG90aGVyLlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUdyb3Vwc0luZGV4KGZpbGVzUGF0aCwgdHdPdXRwdXRQYXRoLCBmb2xkZXJOYW1lKSB7XG4gIGNvbnN0IGdyb3Vwc0luZGV4ID0gW107XG4gIGNvbnN0IGdyb3VwSWRzID0gZnMucmVhZGRpclN5bmMoZmlsZXNQYXRoKS5maWx0ZXIoKGZpbGVuYW1lKSA9PiB7XG4gICAgcmV0dXJuIGZpbGVuYW1lLnNwbGl0KCcuJykucG9wKCkgPT09ICdtZCc7XG4gIH0pO1xuICBncm91cElkcy5mb3JFYWNoKChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGdyb3VwT2JqZWN0ID0ge307XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZmlsZXNQYXRoLCBmaWxlTmFtZSk7XG4gICAgY29uc3QgYXJ0aWNsZUZpbGUgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgY29uc3QgZ3JvdXBJZCA9IGZpbGVOYW1lLnJlcGxhY2UoJy5tZCcsICcnKTtcbiAgICAvLyBnZXQgdGhlIGFydGljbGUncyBmaXJzdCBsaW5lIGFuZCByZW1vdmUgIydzIGFuZCBzcGFjZXMgZnJvbSBiZWdpbm5pbmcvZW5kXG4gICAgY29uc3QgZ3JvdXBOYW1lID0gYXJ0aWNsZUZpbGUuc3BsaXQoJ1xcbicpWzBdLnJlcGxhY2UoLyheXFxzKiNcXHMqfFxccyojXFxzKiQpL2dpLCAnJyk7XG4gICAgZ3JvdXBPYmplY3QuaWQgPSBncm91cElkO1xuICAgIGdyb3VwT2JqZWN0Lm5hbWUgPSBncm91cE5hbWU7XG4gICAgZ3JvdXBzSW5kZXgucHVzaChncm91cE9iamVjdCk7XG4gIH0pO1xuICBncm91cHNJbmRleC5zb3J0KGNvbXBhcmVCeUZpcnN0VW5pcXVlV29yZCk7XG4gIGNvbnN0IGdyb3Vwc0luZGV4T3V0cHV0UGF0aCA9IHBhdGguam9pbihcbiAgICB0d091dHB1dFBhdGgsXG4gICAgZm9sZGVyTmFtZSxcbiAgICAnaW5kZXguanNvbicsXG4gICk7XG5cbiAgZnMub3V0cHV0SnNvblN5bmMoZ3JvdXBzSW5kZXhPdXRwdXRQYXRoLCBncm91cHNJbmRleCwge3NwYWNlczogMn0pO1xufVxuXG4vKipcbiAqIFNwbGl0cyB0aGUgc3RyaW5nIGludG8gd29yZHMgZGVsaW1pdGVkIGJ5IGNvbW1hcyBhbmQgY29tcGFyZXMgdGhlIGZpcnN0IHVuaXF1ZSB3b3JkXG4gKiBAcGFyYW0ge1N0cmluZ30gYSBmaXJzdCBzdHJpbmcgdG8gYmUgY29tcGFyZWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBiIHNlY29uZCBzdHJpbmcgdG8gYmUgY29tcGFyZWRcbiAqIEByZXR1cm4ge2ludH0gY29tcGFyaXNvbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5Rmlyc3RVbmlxdWVXb3JkKGEsIGIpIHtcbiAgY29uc3QgYVdvcmRzID0gYS5uYW1lLnRvVXBwZXJDYXNlKCkuc3BsaXQoJywnKTtcbiAgY29uc3QgYldvcmRzID0gYi5uYW1lLnRvVXBwZXJDYXNlKCkuc3BsaXQoJywnKTtcbiAgd2hpbGUgKGFXb3Jkcy5sZW5ndGggfHwgYldvcmRzLmxlbmd0aCkge1xuICAgIGlmICghYVdvcmRzLmxlbmd0aClcbiAgICAgIHJldHVybiAtMTtcbiAgICBpZiAoIWJXb3Jkcy5sZW5ndGgpXG4gICAgICByZXR1cm4gMTtcbiAgICBjb25zdCBhV29yZCA9IGFXb3Jkcy5zaGlmdCgpLnRyaW0oKTtcbiAgICBjb25zdCBiV29yZCA9IGJXb3Jkcy5zaGlmdCgpLnRyaW0oKTtcbiAgICBpZiAoYVdvcmQgIT09IGJXb3JkKVxuICAgICAgcmV0dXJuIChhV29yZCA8IGJXb3JkID8gLTEgOiAxKTtcbiAgfVxuICByZXR1cm4gMDsgLy8gYm90aCBsaXN0cyBhcmUgdGhlIHNhbWVcbn1cblxuLyoqXG4gKiBsb29rcyB1cCB0aGUgR0wgdGV4dCBmcm9tIGFuIGFsaWduZWQgR0wgYmlibGUgdXNpbmcgdGhlIE9yaWdpbmFsIExhbmd1YWdlXG4gKiBAcGFyYW0ge29iamVjdH0gdG9vbHNTZWxlY3RlZEdMc1xuICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRJZFxuICogQHBhcmFtIHtvYmplY3R9IGJpYmxlc1xuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRUb29sTmFtZVxuICogQHJldHVybiB7c3RyaW5nfG51bGx9IHJldHVybnMgbnVsbCBpZiBlcnJvciBnZXR0aW5nIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsaWduZWRHTFRleHQoYWxpZ25lZEdsQmlibGUsIGNvbnRleHRJZCkge1xuICBjb25zb2xlLmxvZyhjb250ZXh0SWQpXG4gIGlmIChjb250ZXh0SWQpIHtcbiAgICBpZiAoIWFsaWduZWRHbEJpYmxlIHx8ICFPYmplY3Qua2V5cyhhbGlnbmVkR2xCaWJsZSkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY29udGV4dElkLnF1b3RlO1xuICAgIH1cblxuICAgIGxldCB2ZXJzZU9iamVjdHMgPSB2ZXJzZUhlbHBlcnMuZ2V0QmVzdFZlcnNlRnJvbUJvb2soYWxpZ25lZEdsQmlibGUsIGNvbnRleHRJZC5yZWZlcmVuY2UuY2hhcHRlciwgY29udGV4dElkLnJlZmVyZW5jZS52ZXJzZSlcbiAgICBjb25zb2xlLmxvZyh2ZXJzZU9iamVjdHMpXG4gICAgaWYgKHZlcnNlT2JqZWN0cz8udmVyc2VPYmplY3RzKSB7XG4gICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHM/LnZlcnNlT2JqZWN0c1xuICAgIH1cbiAgICBpZiAoY29udGV4dElkICkge1xuICAgICAgY29uc3QgYWxpZ25lZFRleHQgPSBnZXRBbGlnbmVkVGV4dCh2ZXJzZU9iamVjdHMsIGNvbnRleHRJZC5xdW90ZSwgY29udGV4dElkLm9jY3VycmVuY2UpO1xuICAgICAgY29uc29sZS5sb2coYWxpZ25lZFRleHQpXG4gICAgICBpZiAoYWxpZ25lZFRleHQpIHtcbiAgICAgICAgcmV0dXJuIGFsaWduZWRUZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB0aXRsZSBmcm9tIGdyb3VwSW5kZXhcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcnRpY2xlSWRcbiAqIEBwYXJhbSB7b2JqZWN0fSBncm91cEluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaXRsZUZyb21JbmRleChncm91cEluZGV4LCBhcnRpY2xlSWQpIHtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwSW5kZXggfHwgW10pIHtcbiAgICBpZiAoaXRlbS5pZCA9PT0gYXJ0aWNsZUlkKSB7XG4gICAgICByZXR1cm4gaXRlbS5uYW1lXG4gICAgfVxuICB9XG4gIHJldHVybiBhcnRpY2xlSWRcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwaHJhc2UgZnJvbSB0V1xuICogQHBhcmFtIHtzdHJpbmd9IGFydGljbGVJZFxuICogQHBhcmFtIHtvYmplY3R9IGdsVHdEYXRhXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaHJhc2VGcm9tVHcoZ2xUd0RhdGEsIGFydGljbGVJZCkge1xuICBsZXQgY3VycmVudEFydGljbGUgPSAnJztcbiAgZ2xUd0RhdGEgPSBnbFR3RGF0YSB8fCB7fVxuXG4gIGZvciAoY29uc3QgZ3JvdXBJZCBvZiBPYmplY3Qua2V5cyhnbFR3RGF0YSkpIHtcbiAgICBsZXQgZ3JvdXAgPSBnbFR3RGF0YVtncm91cElkXVxuICAgIGlmIChncm91cD8uYXJ0aWNsZXMpIHtcbiAgICAgIGdyb3VwID0gZ3JvdXA/LmFydGljbGVzXG4gICAgfVxuICAgIGNvbnN0IGFydGljbGUgPSBncm91cD8uW2FydGljbGVJZF1cbiAgICBpZiAoYXJ0aWNsZSkge1xuICAgICAgY3VycmVudEFydGljbGUgPSBhcnRpY2xlXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICghY3VycmVudEFydGljbGUpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsZXQgc3BsaXRMaW5lID0gY3VycmVudEFydGljbGUuc3BsaXQoJ1xcbicpO1xuXG4gIGlmIChzcGxpdExpbmUubGVuZ3RoID09PSAxICYmIHNwbGl0TGluZVswXSA9PT0gJycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsZXQgZmluYWxBcnJheSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRMaW5lLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHNwbGl0TGluZVtpXSAhPT0gJycgJiYgIX5zcGxpdExpbmVbaV0uaW5kZXhPZignIycpKSB7XG4gICAgICBmaW5hbEFycmF5LnB1c2goc3BsaXRMaW5lW2ldKTtcbiAgICB9XG4gIH1cblxuICBsZXQgbWF4TGVuZ3RoID0gMjI1O1xuICBsZXQgZmluYWxTdHJpbmcgPSAnJztcbiAgbGV0IGNob3NlblN0cmluZyA9IGZpbmFsQXJyYXlbMF07XG4gIGxldCBzcGxpdFN0cmluZyA9IGNob3NlblN0cmluZy5zcGxpdCgnICcpO1xuXG4gIGZvciAobGV0IHdvcmQgb2Ygc3BsaXRTdHJpbmcpIHtcbiAgICBpZiAoKGZpbmFsU3RyaW5nICsgJyAnICsgd29yZCkubGVuZ3RoID49IG1heExlbmd0aCkge1xuICAgICAgZmluYWxTdHJpbmcgKz0gJy4uLic7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZmluYWxTdHJpbmcgKz0gJyAnO1xuICAgIGZpbmFsU3RyaW5nICs9IHdvcmQ7XG4g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QUFjLEVBQUU7SUFDbkIsT0FBTyxFQUFFO0VBQ1g7RUFFQSxJQUFJUyxTQUFTLEdBQUdULGNBQWMsQ0FBQ3ZDLEtBQUssQ0FBQyxJQUFJLENBQUM7RUFFMUMsSUFBSWdELFNBQVMsQ0FBQ3RSLE1BQU0sS0FBSyxDQUFDLElBQUlzUixTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ2pELE9BQU8sRUFBRTtFQUNYO0VBRUEsSUFBSUMsVUFBVSxHQUFHLEVBQUU7RUFFbkIsS0FBSyxJQUFJclQsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHb1QsU0FBUyxDQUFDdFIsTUFBTSxFQUFFOUIsQ0FBQyxFQUFFLEVBQUU7SUFDekMsSUFBSW9ULFNBQVMsQ0FBQ3BULENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUNvVCxTQUFTLENBQUNwVCxDQUFDLENBQUMsQ0FBQ3NULE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtNQUN0REQsVUFBVSxDQUFDbFEsSUFBSSxDQUFDaVEsU0FBUyxDQUFDcFQsQ0FBQyxDQUFDLENBQUM7SUFDL0I7RUFDRjtFQUVBLElBQUl1VCxTQUFTLEdBQUcsR0FBRztFQUNuQixJQUFJQyxXQUFXLEdBQUcsRUFBRTtFQUNwQixJQUFJQyxZQUFZLEdBQUdKLFVBQVUsQ0FBQyxDQUFDLENBQUM7RUFDaEMsSUFBSUssV0FBVyxHQUFHRCxZQUFZLENBQUNyRCxLQUFLLENBQUMsR0FBRyxDQUFDO0VBQUMsSUFBQXVELFVBQUEsR0FBQXBQLDBCQUFBLENBRXpCbVAsV0FBVztJQUFBRSxNQUFBO0VBQUE7SUFBNUIsS0FBQUQsVUFBQSxDQUFBOU8sQ0FBQSxNQUFBK08sTUFBQSxHQUFBRCxVQUFBLENBQUE3VCxDQUFBLElBQUFtQyxJQUFBLEdBQThCO01BQUEsSUFBckI0UixJQUFJLEdBQUFELE1BQUEsQ0FBQTFSLEtBQUE7TUFDWCxJQUFJLENBQUNzUixXQUFXLEdBQUcsR0FBRyxHQUFHSyxJQUFJLEVBQUUvUixNQUFNLElBQUl5UixTQUFTLEVBQUU7UUFDbERDLFdBQVcsSUFBSSxLQUFLO1FBQ3BCO01BQ0Y7TUFDQUEsV0FBVyxJQUFJLEdBQUc7TUFDbEJBLFdBQVcsSUFBSUssSUFBSTtJQUNyQjtFQUFDLFNBQUF6TixHQUFBO0lBQUF1TixVQUFBLENBQUFsVSxDQUFBLENBQUEyRyxHQUFBO0VBQUE7SUFBQXVOLFVBQUEsQ0FBQTFULENBQUE7RUFBQTtFQUNELE9BQU91VCxXQUFXO0FBQ3BCIiwiaWdub3JlTGlzdCI6W119
847
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJyZXNvdXJjZXNIZWxwZXJzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdG5BcnRpY2xlSGVscGVycyIsInRzdnBhcnNlciIsIl9iaWJsZVJlZmVyZW5jZVJhbmdlIiwiX3dvcmRBbGlnbmVyTGliIiwiX3dvcmRPY2N1cnJlbmNlSGVscGVycyIsIl9lbGxpcHNpc0hlbHBlcnMiLCJfdmVyc2VIZWxwZXJzIiwiX2NvbnN0YW50cyIsIl90c3ZUb0dyb3VwRGF0YSIsIl9jaGVja0FyZWFIZWxwZXJzIiwiX2RlZXBFcXVhbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwiX19lc01vZHVsZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QyIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfcmVnZW5lcmF0b3IiLCJTeW1ib2wiLCJpdGVyYXRvciIsInRvU3RyaW5nVGFnIiwiYyIsInByb3RvdHlwZSIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwiYmluZCIsImxlbmd0aCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwidmFsdWUiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsImRpc3BsYXlOYW1lIiwidyIsIm0iLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX25leHQiLCJfdGhyb3ciLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsInMiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJjYXRlZ29yaXplR3JvdXBEYXRhIiwiZ3JvdXBEYXRhIiwiY2F0ZWdvcml6ZWRHcm91cERhdGEiLCJrdCIsIm5hbWVzIiwib3RoZXIiLCJjYXRlZ29yeV8iLCJjYXRlZ29yeSIsIml0ZW1zIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJpdGVtIiwiZ3JvdXBJZCIsImNvbnRleHRJZCIsImVyciIsImdlbmVyYXRlR3JvdXBEYXRhSXRlbSIsImV4cG9ydHMiLCJ0c3ZJdGVtIiwidG9vbE5hbWUiLCJ2ZXJzZVN0cmluZyIsIl90c3ZJdGVtJE9yaWdRdW90ZSIsIk9yaWdRdW90ZSIsInJlcGxhY2UiLCJ3b3JkT2NjdXJyZW5jZXNGb3JRdW90ZSIsImdldFdvcmRPY2N1cnJlbmNlc0ZvclF1b3RlIiwicXVvdGUiLCJoYXNFbGxpcHNpcyIsInF1b3RlU3RyaW5nIiwidHJpbSIsIkVMTElQU0lTIiwiX2NvbnZlcnRSZWZlcmVuY2UiLCJjb252ZXJ0UmVmZXJlbmNlIiwiY2hhcHRlciIsInZlcnNlIiwiY29tbWVudHMiLCJyZW1pbmRlcnMiLCJzZWxlY3Rpb25zIiwidmVyc2VFZGl0cyIsIm5vdGhpbmdUb1NlbGVjdCIsImNoZWNrSWQiLCJJRCIsIm9jY3VycmVuY2VOb3RlIiwiT2NjdXJyZW5jZU5vdGUiLCJyZWZlcmVuY2UiLCJib29rSWQiLCJCb29rIiwidG9Mb3dlckNhc2UiLCJ0b29sIiwiU3VwcG9ydFJlZmVyZW5jZSIsImdsUXVvdGUiLCJHTFF1b3RlIiwib2NjdXJyZW5jZSIsInBhcnNlSW50IiwiT2NjdXJyZW5jZSIsInRzdk9iamVjdHNUb0dyb3VwRGF0YSIsInRzdkl0ZW1zIiwib3JpZ0xhbmdCaWJsZSIsInJlc291cmNlc1BhdGgiLCJsYW5nSWQiLCJwYXJhbXMiLCJ0d0xpbmtNYXRjaCIsInR3TGlua1JFIiwiUmVnRXhwIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIlJlZmVyZW5jZSIsIk9yaWdXb3JkcyIsIlRXTGluayIsInR3TGluayIsIm1hdGNoIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJDaGFwdGVyIiwiVmVyc2UiLCJDYXRhZ29yeSIsImdldFZlcnNlU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImtleSIsImdyb3VwRGF0YUl0ZW0iLCJjYXRlZ29yaXplZCIsImVycm9yIiwicGFyc2VSZWZlcmVuY2UiLCJyZWYiLCJjbGVhbmVkUmVmIiwiY2xlYW51cFJlZmVyZW5jZSIsInJlZl8iLCJ2ZXJzZVN0ciIsImlzU2FtZVZlcnNlQnlDb250ZXh0IiwiY29udGV4dElkMSIsImNvbnRleHRJZDIiLCJpc1NhbWVWZXJzZUJ5UmVmIiwicmVmZXJlbmNlMSIsInJlZmVyZW5jZTIiLCJmaW5kQ2hlY2siLCJncm91cHNEYXRhIiwiZGVmYXVsdFRvRmlyc3QiLCJ1bmRlZmluZWQiLCJjaGVjayIsImNoZWNrZWRCb29rIiwiX2kiLCJfT2JqZWN0JGtleXMiLCJjYXRhZ29yeUl0ZW1zIiwiX2NhdGFnb3J5SXRlbXMkIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIml0ZW1Db250ZXh0SWQiLCJtYXRjaEZvdW5kIiwiaXNFcXVhbCIsImZpbmRGaXJzdENoZWNrIiwiZmluZE5leHRDaGVjayIsImxvZyIsImdyb3Vwc0tleXMiLCJpZHgiLCJfY2F0YWdvcnlJdGVtcyQyIiwibmV4dEdyb3VwSWQiLCJuZXh0R3JvdXBJdGVtcyIsImZpbmRQcmV2aW91c0NoZWNrIiwiX2NhdGFnb3J5SXRlbXMkMyIsImdyb3VwS2V5cyIsImZpcnN0R3JvdXAiLCJ0d2xUc3ZUb0dyb3VwRGF0YSIsIl94IiwiX3gyIiwiX3gzIiwiX3R3bFRzdlRvR3JvdXBEYXRhIiwiX2NhbGxlZSIsInRzdkRhdGEiLCJwcm9qZWN0IiwiX3lpZWxkJHRzdkRhdGFUb09iamVjIiwidHN2SXRlbXNfIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsInRzdkl0ZW1fIiwiX3QiLCJfY29udGV4dCIsImlkZW50aWZpZXIiLCJ0c3ZEYXRhVG9PYmplY3RzIiwibGFuZ3VhZ2VJZCIsImNvbnZlcnRFbGxpcHNpc1RvQW1wZXJzYW5kIiwicGFyc2VUd1RvSW5kZXgiLCJ0d0RhdGEiLCJpbmRleCIsIl9pMiIsIl9PYmplY3Qka2V5czIiLCJjYXRhZ29yeUlkIiwiY2F0YWdvcnkiLCJfeDQiLCJfdHN2RGF0YVRvT2JqZWN0cyIsIl9jYWxsZWUyIiwicGFyc2VFcnJvck1zZyIsImV4cGVjdGVkQ29sdW1ucyIsInRhYmxlT2JqZWN0IiwibXNnIiwicm93bnVtIiwiY29sc2ZvdW5kIiwiX2NvbnRleHQyIiwidHN2U3RyaW5nVG9UYWJsZSIsImVycm9ycyIsImhlYWRlciIsImRhdGEiLCJqb2luIiwibWFwIiwibGluZSIsInRzdlBhdGgiLCJnZW5lcmF0ZUdyb3Vwc0luZGV4IiwiZmlsZXNQYXRoIiwidHdPdXRwdXRQYXRoIiwiZm9sZGVyTmFtZSIsImdyb3Vwc0luZGV4IiwiZ3JvdXBJZHMiLCJmcyIsInJlYWRkaXJTeW5jIiwiZmlsZW5hbWUiLCJzcGxpdCIsInBvcCIsImZpbGVOYW1lIiwiZ3JvdXBPYmplY3QiLCJmaWxlUGF0aCIsInBhdGgiLCJhcnRpY2xlRmlsZSIsInJlYWRGaWxlU3luYyIsImdyb3VwTmFtZSIsImlkIiwic29ydCIsImNvbXBhcmVCeUZpcnN0VW5pcXVlV29yZCIsImdyb3Vwc0luZGV4T3V0cHV0UGF0aCIsIm91dHB1dEpzb25TeW5jIiwic3BhY2VzIiwiYiIsImFXb3JkcyIsInRvVXBwZXJDYXNlIiwiYldvcmRzIiwiYVdvcmQiLCJzaGlmdCIsImJXb3JkIiwiZ2V0QWxpZ25lZEdMVGV4dCIsImFsaWduZWRHbEJpYmxlIiwiX3ZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0cyIsInZlcnNlSGVscGVycyIsImdldEJlc3RWZXJzZUZyb21Cb29rIiwiX3ZlcnNlT2JqZWN0czIiLCJhbGlnbmVkVGV4dCIsImdldEFsaWduZWRUZXh0IiwiZ2V0VGl0bGVGcm9tSW5kZXgiLCJncm91cEluZGV4IiwiYXJ0aWNsZUlkIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImdldFBocmFzZUZyb21UdyIsImdsVHdEYXRhIiwiY3VycmVudEFydGljbGUiLCJfaTMiLCJfT2JqZWN0JGtleXMzIiwiX2dyb3VwIiwiX2dyb3VwMyIsImdyb3VwIiwiYXJ0aWNsZXMiLCJfZ3JvdXAyIiwiYXJ0aWNsZSIsInNwbGl0TGluZSIsImZpbmFsQXJyYXkiLCJpbmRleE9mIiwibWF4TGVuZ3RoIiwiZmluYWxTdHJpbmciLCJjaG9zZW5TdHJpbmciLCJzcGxpdFN0cmluZyIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJ3b3JkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hlbHBlcnMvdHJhbnNsYXRpb25IZWxwcy90d0FydGljbGVIZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGN1cmx5ICovXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJ3V0aWwnO1xuLy8gaW1wb3J0IHtcbi8vICAgZm9ybWF0QW5kU2F2ZUdyb3VwRGF0YSxcbi8vICAgZ2VuZXJhdGVHcm91cERhdGFJdGVtLFxuLy8gICBNYW5hZ2VSZXNvdXJjZSxcbi8vICAgcGFyc2VSZWZlcmVuY2UsXG4vLyAgIHRzdlRvT2JqZWN0cyxcbi8vIH0gZnJvbSAndHN2LWdyb3VwZGF0YS1wYXJzZXInO1xuLy8gaGVscGVyc1xuaW1wb3J0ICogYXMgcmVzb3VyY2VzSGVscGVycyBmcm9tICcuLi9yZXNvdXJjZXNIZWxwZXJzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBsaWNhdGUtaW1wb3J0c1xuLy8gaW1wb3J0IHtnZXRSZXNvdXJjZU1hbmlmZXN0fSBmcm9tICcuLi9yZXNvdXJjZXNIZWxwZXJzJztcbi8vIGNvbnN0YW50c1xuLy8gaW1wb3J0ICogYXMgZXJyb3JzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9lcnJvcnMnO1xuLy8gaW1wb3J0IHtnZXRPd25lckZvck9yaWdpbmFsTGFuZ3VhZ2V9IGZyb20gJy4uL2FwaUhlbHBlcnMnO1xuLy8gaW1wb3J0IHttYWtlU3VyZVJlc291cmNlVW56aXBwZWR9IGZyb20gJy4uL3VuemlwRmlsZUhlbHBlcnMnO1xuLy8gaW1wb3J0IHsgQklCTEVfQk9PS1MsIE5UX09SSUdfTEFORywgTlRfT1JJR19MQU5HX0JJQkxFLCBPVF9PUklHX0xBTkcsIE9UX09SSUdfTEFOR19CSUJMRSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9iaWJsZSc7XG5pbXBvcnQge1xuICBjb252ZXJ0RWxsaXBzaXNUb0FtcGVyc2FuZCxcbn0gZnJvbSAnLi90bkFydGljbGVIZWxwZXJzJztcbmltcG9ydCAqIGFzIHRzdnBhcnNlciBmcm9tICd1dy10c3YtcGFyc2VyJztcbmltcG9ydCB7IGNsZWFudXBSZWZlcmVuY2UgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgeyB2ZXJzZUhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItbGliJ1xuaW1wb3J0IHsgZ2V0V29yZE9jY3VycmVuY2VzRm9yUXVvdGUgfSBmcm9tICcuL3dvcmRPY2N1cnJlbmNlSGVscGVycydcbmltcG9ydCB7IGhhc0VsbGlwc2lzIH0gZnJvbSAnLi4vdHN2LWdyb3VwZGF0YS1wYXJzZXIvZWxsaXBzaXNIZWxwZXJzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VTdHJpbmcgfSBmcm9tICcuLi90c3YtZ3JvdXBkYXRhLXBhcnNlci92ZXJzZUhlbHBlcnMnXG5pbXBvcnQgeyBFTExJUFNJUyB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb25zdGFudHMnXG5pbXBvcnQgeyBjb252ZXJ0UmVmZXJlbmNlIH0gZnJvbSAnLi90c3ZUb0dyb3VwRGF0YSdcbmltcG9ydCB7IGdldEFsaWduZWRUZXh0IH0gZnJvbSAnLi4vLi4vdGNfdWlfdG9vbGtpdC9WZXJzZUNoZWNrL2hlbHBlcnMvY2hlY2tBcmVhSGVscGVycydcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG4vLyBpbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5JztcblxuLyoqXG4gKiBvcmdhbml6ZSBncm91cCBkYXRhIGJ5IGNhdGVnb3JpZXMgYW5kIGdyb3VwSURcbiAqIEBwYXJhbSB7YXJyYXl9IGdyb3VwRGF0YVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5jb25zdCBjYXRlZ29yaXplR3JvdXBEYXRhID0gZ3JvdXBEYXRhID0+IHtcbiAgY29uc3QgY2F0ZWdvcml6ZWRHcm91cERhdGEgPSB7XG4gICAga3Q6IHt9LFxuICAgIG5hbWVzOiB7fSxcbiAgICBvdGhlcjoge30sXG4gIH07XG4gIE9iamVjdC5rZXlzKGdyb3VwRGF0YSkuZm9yRWFjaChjYXRlZ29yeV8gPT4ge1xuICAgIGxldCBjYXRlZ29yeSA9IGNhdGVnb3J5XztcbiAgICBjb25zdCBpdGVtcyA9IGdyb3VwRGF0YVtjYXRlZ29yeV07XG4gICAgaWYgKCFjYXRlZ29yaXplZEdyb3VwRGF0YVtjYXRlZ29yeV0pIHtcbiAgICAgIGNhdGVnb3J5ID0gJ290aGVyJzsgLy8gdW5rbm93biBjYXRlZ29yaWVzIGdvIGluIG90aGVyXG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgY29uc3QgZ3JvdXBJZCA9IGl0ZW0uY29udGV4dElkICYmIGl0ZW0uY29udGV4dElkLmdyb3VwSWQ7XG4gICAgICBpZiAoZ3JvdXBJZCkge1xuICAgICAgICBpZiAoIWNhdGVnb3JpemVkR3JvdXBEYXRhW2NhdGVnb3J5XVtncm91cElkXSkge1xuICAgICAgICAgIGNhdGVnb3JpemVkR3JvdXBEYXRhW2NhdGVnb3J5XVtncm91cElkXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGNhdGVnb3JpemVkR3JvdXBEYXRhW2NhdGVnb3J5XVtncm91cElkXS5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjYXRlZ29yaXplZEdyb3VwRGF0YTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZm9ybWF0dGVkIGdyb3VwRGF0YSBpdGVtIGZvciBhIGdpdmVuIHRzdiBpdGVtLlxuICogQHBhcmFtIHtvYmplY3R9IHRzdkl0ZW0gdHN2IGl0ZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9vbE5hbWUgdG9vbCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlU3RyaW5nXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBncm91cERhdGEgaXRlbS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlR3JvdXBEYXRhSXRlbSA9ICh0c3ZJdGVtLCB0b29sTmFtZSwgdmVyc2VTdHJpbmcpID0+IHtcbiAgbGV0IHsgT3JpZ1F1b3RlID0gJycgfSA9IHRzdkl0ZW07XG4gIC8vIGNsZWFuIHF1b3RlIHN0cmluZ1xuICBPcmlnUXVvdGUgPSBPcmlnUXVvdGUucmVwbGFjZSgvIFxcJiAvZywgJyDigKYgJyk7IC8vIHRyZWF0IG5ldyBicmVhayBjaGFyYWN0ZXIgc2FtZSBhcyBlbGxpcHNpc1xuICAvLyBpZiBxdW90ZSBoYXMgbW9yZSB0aGFuIG9uZSB3b3JkIGdldCB3b3JkIG9jY3VycmVuY2VzXG4gIGNvbnN0IHdvcmRPY2N1cnJlbmNlc0ZvclF1b3RlID0gZ2V0V29yZE9jY3VycmVuY2VzRm9yUXVvdGUoT3JpZ1F1b3RlLCB2ZXJzZVN0cmluZywgdHJ1ZSk7IC8vIHVzZXMgdG9rZW5pemVyIHRvIGdldCBsaXN0IG9mIHdvcmRzIGhhbmRsZSB2YXJpb3VzIHB1bmN0dWF0aW9uIGFuZCBzcGFjaW5nIGNoYXJzXG4gIGNvbnN0IHF1b3RlID0gd29yZE9jY3VycmVuY2VzRm9yUXVvdGUubGVuZ3RoID4gMSB8fCBoYXNFbGxpcHNpcyhPcmlnUXVvdGUpID8gd29yZE9jY3VycmVuY2VzRm9yUXVvdGUgOiBPcmlnUXVvdGU7IC8vIG9ubHkgdXNlIGFycmF5IGlmIG1vcmUgdGhhbiBvbmUgd29yZCBmb3VuZFxuICBjb25zdCBxdW90ZVN0cmluZyA9IE9yaWdRdW90ZS50cmltKCkucmVwbGFjZSgvXFwuLi4vZ2ksIEVMTElQU0lTKTtcbiAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gY29udmVydFJlZmVyZW5jZSh0c3ZJdGVtKTtcbiAgcmV0dXJuIHtcbiAgICBjb21tZW50czogZmFsc2UsXG4gICAgcmVtaW5kZXJzOiBmYWxzZSxcbiAgICBzZWxlY3Rpb25zOiBmYWxzZSxcbiAgICB2ZXJzZUVkaXRzOiBmYWxzZSxcbiAgICBub3RoaW5nVG9TZWxlY3Q6IGZhbHNlLFxuICAgIGNvbnRleHRJZDoge1xuICAgICAgY2hlY2tJZDogdHN2SXRlbS5JRCB8fCAnJyxcbiAgICAgIG9jY3VycmVuY2VOb3RlOiB0c3ZJdGVtLk9jY3VycmVuY2VOb3RlIHx8ICcnLFxuICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgIGJvb2tJZDogdHN2SXRlbS5Cb29rLnRvTG93ZXJDYXNlKCkgfHwgJycsXG4gICAgICAgIGNoYXB0ZXI6IGNoYXB0ZXIgfHwgJycsXG4gICAgICAgIHZlcnNlOiB2ZXJzZSB8fCAnJyxcbiAgICAgIH0sXG4gICAgICB0b29sOiB0b29sTmFtZSB8fCAnJyxcbiAgICAgIGdyb3VwSWQ6IHRzdkl0ZW0uU3VwcG9ydFJlZmVyZW5jZSB8fCAnJyxcbiAgICAgIHF1b3RlLFxuICAgICAgcXVvdGVTdHJpbmcsXG4gICAgICBnbFF1b3RlOiB0c3ZJdGVtLkdMUXVvdGUgfHwgJycsXG4gICAgICBvY2N1cnJlbmNlOiBwYXJzZUludCh0c3ZJdGVtLk9jY3VycmVuY2UsIDEwKSB8fCAxLFxuICAgIH0sXG4gIH07XG59O1xuXG5cbi8qKlxuICogUGFyc2VzIGxpc3Qgb2YgdHN2IGl0ZW1zIGFuZCByZXR1cm5zIGFuIG9iamVjdCBob2xkaW5nIHRoZSBsaXN0cyBvZiBncm91cCBpZHMuXG4gKiBAcGFyYW0ge0FycmF5fSB0c3ZJdGVtcyAtIGxpc3Qgb2YgaXRlbXMgdG8gcHJvY2Vzc1xuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsQmlibGVQYXRoIHBhdGggdG8gb3JpZ2luYWwgYmlibGUuXG4gKiAgICAgICAgZS5nLiAvcmVzb3VyY2VzL2VsLXgta29pbmUvYmlibGVzL3VnbnQvdjAuMTFcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXNvdXJjZXNQYXRoIHBhdGggdG8gdGhlIHJlc291cmNlcyBkaXJcbiAqICAgICAgZS5nLiAvVXNlci9qb2huL3RyYW5zbGF0aW9uQ29yZS9yZXNvdXJjZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBib29rSWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5nSWRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b29sTmFtZSB0QyB0b29sIG5hbWUuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zIFdoZW4gaXQgaW5jbHVkZXMgeyBjYXRlZ29yaXplZDogdHJ1ZSB9XG4gKiAgICAgIHRoZW4gaXQgcmV0dXJucyB0aGUgb2JqZWN0IG9yZ2FuaXplZCBieSB0biBhcnRpY2xlIGNhdGVnb3J5LlxuICogQHJldHVybiB7T2JqZWN0fSAtIGdyb3VwRGF0YVxuICovXG5mdW5jdGlvbiB0c3ZPYmplY3RzVG9Hcm91cERhdGEodHN2SXRlbXMsIG9yaWdMYW5nQmlibGUsIHJlc291cmNlc1BhdGgsIGJvb2tJZCwgbGFuZ0lkLCB0b29sTmFtZSwgcGFyYW1zKSB7XG4gIGNvbnN0IGdyb3VwRGF0YSA9IHt9O1xuICBjb25zdCB0d0xpbmtNYXRjaCA9IC9ecmM6XFwvXFwvXFwqXFwvdHdcXC9kaWN0XFwvYmlibGVcXC8oXFx3KylcXC8oW1xcd1xcZF0rKS87XG4gIGNvbnN0IHR3TGlua1JFID0gbmV3IFJlZ0V4cCh0d0xpbmtNYXRjaCk7XG4gIGJvb2tJZCA9IGJvb2tJZC50b0xvd2VyQ2FzZSgpO1xuXG4gIHRyeSB7XG4gICAgLy8gY29uc3QgcmVzb3VyY2VBcGkgPSBuZXcgTWFuYWdlUmVzb3VyY2Uob3JpZ2luYWxCaWJsZVBhdGgsIGJvb2tJZCk7XG5cbiAgICBmb3IgKGNvbnN0IHRzdkl0ZW0gb2YgdHN2SXRlbXMpIHtcbiAgICAgIGlmICh0c3ZJdGVtLlJlZmVyZW5jZSAmJiB0c3ZJdGVtLklEICYmIHRzdkl0ZW0uT3JpZ1dvcmRzICYmIHRzdkl0ZW0uT2NjdXJyZW5jZSAmJiB0c3ZJdGVtLlRXTGluaykge1xuLy8gICAgICAgIGNvbnN0IHRhZ3MgPSBjbGVhbkdyb3VwSWQodHN2SXRlbS5UYWdzKSB8fCAnb3RoZXInO1xuICAgICAgICBjb25zdCB0d0xpbmsgPSB0c3ZJdGVtLlRXTGluay5tYXRjaCh0d0xpbmtSRSk7XG4gICAgICAgIGlmICghdHdMaW5rKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGB0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGludmFsaWQgVFdMaW5rOiAke3Rzdkl0ZW0uVFdMaW5rfWApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hhcHRlciA9IHRzdkl0ZW0uQ2hhcHRlcjtcbiAgICAgICAgY29uc3QgdmVyc2UgPSB0c3ZJdGVtLlZlcnNlO1xuICAgICAgICB0c3ZJdGVtLkJvb2sgPSBib29rSWQ7XG4gICAgICAgIHRzdkl0ZW0uQ2hhcHRlciA9IGNoYXB0ZXI7XG4gICAgICAgIHRzdkl0ZW0uVmVyc2UgPSB2ZXJzZTtcbiAgICAgICAgdHN2SXRlbS5PcmlnUXVvdGUgPSB0c3ZJdGVtLk9yaWdXb3JkcztcbiAgICAgICAgdHN2SXRlbS5DYXRhZ29yeSA9IHR3TGlua1sxXTtcbiAgICAgICAgdHN2SXRlbS5TdXBwb3J0UmVmZXJlbmNlID0gdHdMaW5rWzJdO1xuICAgICAgICBsZXQgdmVyc2VTdHJpbmcgPSBudWxsO1xuXG4gICAgICAgIGlmICghdHN2SXRlbS5DYXRhZ29yeSB8fCAhdHN2SXRlbS5TdXBwb3J0UmVmZXJlbmNlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGB0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGludmFsaWQgVFdMaW5rOiAke3Rzdkl0ZW0uVFdMaW5rfWApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2ZXJzZVN0cmluZyA9IGdldFZlcnNlU3RyaW5nKG9yaWdMYW5nQmlibGUsIHRzdkl0ZW0uUmVmZXJlbmNlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChwYXJzZUludChjaGFwdGVyLCAxMCkgJiYgcGFyc2VJbnQodmVyc2UsIDEwKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGB0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGVycm9yIGdldHRpbmcgdmVyc2Ugc3RyaW5nOiBjaGFwdGVyICR7Y2hhcHRlcn0sIHZlcnNlICR7dmVyc2V9IGZyb20gJHtKU09OLnN0cmluZ2lmeSh0c3ZJdGVtKX1gLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmVyc2VTdHJpbmcpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSB0c3ZJdGVtLkNhdGFnb3J5O1xuICAgICAgICAgIGNvbnN0IGdyb3VwRGF0YUl0ZW0gPSBnZW5lcmF0ZUdyb3VwRGF0YUl0ZW0odHN2SXRlbSwgdG9vbE5hbWUsIHZlcnNlU3RyaW5nKTtcbiAgICAgICAgICBpZiAoZ3JvdXBEYXRhW2tleV0pIHtcbiAgICAgICAgICAgIGdyb3VwRGF0YVtrZXldLnB1c2goZ3JvdXBEYXRhSXRlbSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdyb3VwRGF0YVtrZXldID0gW2dyb3VwRGF0YUl0ZW1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCd0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGVycm9yIHByb2Nlc3NpbmcgaXRlbTonLCBKU09OLnN0cmluZ2lmeSh0c3ZJdGVtKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcyAmJiBwYXJhbXMuY2F0ZWdvcml6ZWQgPyBjYXRlZ29yaXplR3JvdXBEYXRhKGdyb3VwRGF0YSkgOiBncm91cERhdGE7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGB0c3ZPYmplY3RzVG9Hcm91cERhdGEoKSAtIGVycm9yIHByb2Nlc3NpbmcgVFNWc2AsIGUpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBzZXBhcmF0ZSBhIHJlZmVyZW5jZSBzdHJpbmcgc3VjaCBhcyBcIjE6MVwiIGludG8gY2hhcHRlciBhbmQgdmVyc2UgYW5kIGFkZCBhIHZlcnNlU3RyIGZvciByZWZlcmVuY2VzIHRoYXQgaGF2ZSBtdWx0aXBsZSB2ZXJzZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWYgLSByZWZlcmVuY2Ugc3RyaW5nXG4gKiBAcmV0dXJuIHt7Q2hhcHRlciwgVmVyc2V9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZWZlcmVuY2UocmVmKSB7XG4gIGNvbnN0IGNsZWFuZWRSZWYgPSBjbGVhbnVwUmVmZXJlbmNlKHJlZik7XG4gIGNvbnN0IHJlZl8gPSB7XG4gICAgQ2hhcHRlcjogY2xlYW5lZFJlZi5jaGFwdGVyLFxuICAgIFZlcnNlOiBjbGVhbmVkUmVmLnZlcnNlICsgJycsXG4gIH07XG5cbiAgaWYgKGNsZWFuZWRSZWYudmVyc2VTdHIpIHtcbiAgICByZWZfLnZlcnNlU3RyID0gY2xlYW5lZFJlZi52ZXJzZVN0cjtcbiAgfVxuICByZXR1cm4gcmVmXztcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgY29udGV4dCBJRHMgYXJlIGZvciBzYW1lIHZlcnNlLiAgT3B0aW1pemVkIG92ZXIgaXNFcXVhbCgpXG4gKiBAcGFyYW0ge09iamVjdH0gY29udGV4dElkMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRJZDJcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybnMgdHJ1ZSBpZiBjb250ZXh0IElEcyBhcmUgZm9yIHNhbWUgdmVyc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZVZlcnNlQnlDb250ZXh0KGNvbnRleHRJZDEsIGNvbnRleHRJZDIpIHtcbiAgcmV0dXJuIChjb250ZXh0SWQxLnJlZmVyZW5jZS5jaGFwdGVyID09IGNvbnRleHRJZDIucmVmZXJlbmNlLmNoYXB0ZXIpICYmIC8vIFRSSUNLWTogd2UgYXJlIGFsbG93aW5nIGNvZXJjaW9uIHNpbmNlIGNoYXB0ZXJzIGFuZCB2ZXJzZXMgY291bGQgYmUgZWl0aGVyIHN0cmluZ3Mgb3IgbnVtYmVyc1xuICAgIChjb250ZXh0SWQxLnJlZmVyZW5jZS52ZXJzZSA9PSBjb250ZXh0SWQyLnJlZmVyZW5jZS52ZXJzZSk7XG59XG5cbi8qKlxuICogbWFrZSBzdXJlIGNvbnRleHQgSURzIGFyZSBmb3Igc2FtZSB2ZXJzZS4gIE9wdGltaXplZCBvdmVyIGlzRXF1YWwoKVxuICogQHBhcmFtIHtPYmplY3R9IHJlZmVyZW5jZTFcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWZlcmVuY2UyXG4gKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm5zIHRydWUgaWYgY29udGV4dCBJRHMgYXJlIGZvciBzYW1lIHZlcnNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVWZXJzZUJ5UmVmKHJlZmVyZW5jZTEsIHJlZmVyZW5jZTIpIHtcbiAgcmV0dXJuIChyZWZlcmVuY2UxLmNoYXB0ZXIgPT0gcmVmZXJlbmNlMi5jaGFwdGVyKSAmJiAvLyBUUklDS1k6IHdlIGFyZSBhbGxvd2luZyBjb2VyY2lvbiBzaW5jZSBjaGFwdGVycyBhbmQgdmVyc2VzIGNvdWxkIGJlIGVpdGhlciBzdHJpbmdzIG9yIG51bWJlcnNcbiAgICAocmVmZXJlbmNlMS52ZXJzZSA9PSByZWZlcmVuY2UyLnZlcnNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGVjayhncm91cHNEYXRhLCBjb250ZXh0SWQsIGRlZmF1bHRUb0ZpcnN0ID0gZmFsc2UpIHtcbiAgbGV0IGNoZWNrID0gbnVsbFxuICBsZXQgY2hlY2tlZEJvb2sgPSBmYWxzZTtcbiAgaWYgKGdyb3Vwc0RhdGEgJiYgY29udGV4dElkPy5yZWZlcmVuY2UpIHtcbiAgICBmb3IgKGNvbnN0IGdyb3VwSWQgb2YgT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSkpIHtcbiAgICAgIGlmIChncm91cElkID09PSBjb250ZXh0SWQuZ3JvdXBJZCkge1xuICAgICAgICBjb25zdCBjYXRhZ29yeUl0ZW1zID0gZ3JvdXBzRGF0YVtncm91cElkXVxuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSBjb250ZXh0SWQ/LnJlZmVyZW5jZVxuICAgICAgICBpZiAoIWNoZWNrZWRCb29rICYmIGNhdGFnb3J5SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHJlZmVyZW5jZT8uYm9va0lkICE9PSBjYXRhZ29yeUl0ZW1zWzBdPy5jb250ZXh0SWQ/LnJlZmVyZW5jZT8uYm9va0lkKSB7XG4gICAgICAgICAgICBicmVhazsgLy8gY29udGV4dCBpZCBpcyBmb3IgZGlmZmVyZW5jZSBib29rXG4gICAgICAgICAgfVxuICAgICAgICAgIGNoZWNrZWRCb29rID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY2F0YWdvcnlJdGVtcykge1xuICAgICAgICAgICAgY29uc3QgaXRlbUNvbnRleHRJZCA9IGl0ZW0uY29udGV4dElkXG4gICAgICAgICAgICBpZiAoaXNTYW1lVmVyc2VCeVJlZihyZWZlcmVuY2UsIGl0ZW1Db250ZXh0SWQ/LnJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgbGV0IG1hdGNoRm91bmQgPSBmYWxzZVxuICAgICAgICAgICAgICBpZiAoY29udGV4dElkLmNoZWNrSWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dElkLmNoZWNrSWQgPT09IGl0ZW1Db250ZXh0SWQ/LmNoZWNrSWQpIHtcbiAgICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgLy8gaWYgbm8gY2hlY2tJZCwgZmFsbCBiYWNrIHRvIG1hdGNoaW5nIHF1b3RlIGFuZCBvY2N1cnJlbmNlXG4gICAgICAgICAgICAgIGlmIChpc0VxdWFsKGNvbnRleHRJZC5xdW90ZSwgaXRlbUNvbnRleHRJZD8ucXVvdGUpICYmIChjb250ZXh0SWQub2NjdXJyZW5jZSA9PT0gaXRlbUNvbnRleHRJZD8ub2NjdXJyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKG1hdGNoRm91bmQpIHtcbiAgICAgICAgICAgICAgICBjaGVjayA9IGl0ZW1cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrIC8vIHdoZW4gZmluaXNoZWQgY2hlY2tpbmcgYWxsIGl0ZW1zIGluIGdyb3VwSWQsIHRoZXJlIGlzIG5vIHBvaW50IHRvIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghY2hlY2sgJiYgZGVmYXVsdFRvRmlyc3QpIHtcbiAgICBjaGVjayA9IGZpbmRGaXJzdENoZWNrKGdyb3Vwc0RhdGEpXG4gIH1cbiAgcmV0dXJuIGNoZWNrXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmV4dENoZWNrKGdyb3Vwc0RhdGEsIGNvbnRleHRJZCwgZGVmYXVsdFRvRmlyc3QgPSBmYWxzZSkge1xuICBjb25zb2xlLmxvZyhncm91cHNEYXRhKVxuICBjb25zb2xlLmxvZyhjb250ZXh0SWQpXG4gIGxldCBjaGVjayA9IG51bGxcbiAgbGV0IGNoZWNrZWRCb29rID0gZmFsc2U7XG4gIGxldCBtYXRjaEZvdW5kID0gZmFsc2VcbiAgaWYgKGdyb3Vwc0RhdGEgJiYgY29udGV4dElkPy5yZWZlcmVuY2UpIHtcbiAgICBjb25zdCBncm91cHNLZXlzID0gT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSlcbiAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBncm91cHNLZXlzLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGNvbnN0IGdyb3VwSWQgPSBncm91cHNLZXlzW2lkeF1cbiAgICAgIGlmIChncm91cElkID09PSBjb250ZXh0SWQuZ3JvdXBJZCkge1xuICAgICAgICBjb25zdCBjYXRhZ29yeUl0ZW1zID0gZ3JvdXBzRGF0YVtncm91cElkXVxuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSBjb250ZXh0SWQ/LnJlZmVyZW5jZVxuICAgICAgICBpZiAoIWNoZWNrZWRCb29rICYmIGNhdGFnb3J5SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHJlZmVyZW5jZT8uYm9va0lkICE9PSBjYXRhZ29yeUl0ZW1zWzBdPy5jb250ZXh0SWQ/LnJlZmVyZW5jZT8uYm9va0lkKSB7XG4gICAgICAgICAgICBicmVhazsgLy8gY29udGV4dCBpZCBpcyBmb3IgZGlmZmVyZW5jZSBib29rXG4gICAgICAgICAgfVxuICAgICAgICAgIGNoZWNrZWRCb29rID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhdGFnb3J5SXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBjYXRhZ29yeUl0ZW1zW2ldXG4gICAgICAgICAgICBjb25zdCBpdGVtQ29udGV4dElkID0gaXRlbS5jb250ZXh0SWRcbiAgICAgICAgICAgIGlmIChpc1NhbWVWZXJzZUJ5UmVmKHJlZmVyZW5jZSwgaXRlbUNvbnRleHRJZD8ucmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICBpZiAoY29udGV4dElkLmNoZWNrSWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dElkLmNoZWNrSWQgPT09IGl0ZW1Db250ZXh0SWQ/LmNoZWNrSWQpIHtcbiAgICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgLy8gaWYgbm8gY2hlY2tJZCwgZmFsbCBiYWNrIHRvIG1hdGNoaW5nIHF1b3RlIGFuZCBvY2N1cnJlbmNlXG4gICAgICAgICAgICAgIGlmIChpc0VxdWFsKGNvbnRleHRJZC5xdW90ZSwgaXRlbUNvbnRleHRJZD8ucXVvdGUpICYmIChjb250ZXh0SWQub2NjdXJyZW5jZSA9PT0gaXRlbUNvbnRleHRJZD8ub2NjdXJyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtYXRjaEZvdW5kKSB7IC8vIGlmIG1hdGNoIHdhcyBmb3VuZCwgdGhlbiBtb3ZlIHRvIG5leHQgY2hlY2tcbiAgICAgICAgICAgICAgaWYgKGkgPCBjYXRhZ29yeUl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBjaGVjayA9IGNhdGFnb3J5SXRlbXNbaSArIDFdXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaWR4IDwgZ3JvdXBzS2V5cy5sZW5ndGggLSAxKSB7IC8vIG1vdmUgdG8gZmlyc3QgaXRlbSBpbiBuZXh0IGdyb3VwXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEdyb3VwSWQgPSBncm91cHNLZXlzW2lkeCArIDFdXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEdyb3VwSXRlbXMgPSBncm91cHNEYXRhW25leHRHcm91cElkXVxuICAgICAgICAgICAgICAgIGNoZWNrID0gbmV4dEdyb3VwSXRlbXNbMF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhayAvLyB3aGVuIGZpbmlzaGVkIGNoZWNraW5nIGFsbCBpdGVtcyBpbiBncm91cElkLCB0aGVyZSBpcyBubyBwb2ludCB0byBjb250aW51ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoIWNoZWNrICYmIGRlZmF1bHRUb0ZpcnN0KSB7XG4gICAgY2hlY2sgPSBmaW5kRmlyc3RDaGVjayhncm91cHNEYXRhKVxuICB9XG4gIHJldHVybiBjaGVja1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFByZXZpb3VzQ2hlY2soZ3JvdXBzRGF0YSwgY29udGV4dElkLCBkZWZhdWx0VG9GaXJzdCA9IGZhbHNlKSB7XG4gIGxldCBjaGVjayA9IG51bGxcbiAgbGV0IGNoZWNrZWRCb29rID0gZmFsc2U7XG4gIGxldCBtYXRjaEZvdW5kID0gZmFsc2VcbiAgaWYgKGdyb3Vwc0RhdGEgJiYgY29udGV4dElkPy5yZWZlcmVuY2UpIHtcbiAgICBjb25zdCBncm91cHNLZXlzID0gT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSlcbiAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBncm91cHNLZXlzLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGNvbnN0IGdyb3VwSWQgPSBncm91cHNLZXlzW2lkeF1cbiAgICAgIGlmIChncm91cElkID09PSBjb250ZXh0SWQuZ3JvdXBJZCkge1xuICAgICAgICBjb25zdCBjYXRhZ29yeUl0ZW1zID0gZ3JvdXBzRGF0YVtncm91cElkXVxuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSBjb250ZXh0SWQ/LnJlZmVyZW5jZVxuICAgICAgICBpZiAoIWNoZWNrZWRCb29rICYmIGNhdGFnb3J5SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHJlZmVyZW5jZT8uYm9va0lkICE9PSBjYXRhZ29yeUl0ZW1zWzBdPy5jb250ZXh0SWQ/LnJlZmVyZW5jZT8uYm9va0lkKSB7XG4gICAgICAgICAgICBicmVhazsgLy8gY29udGV4dCBpZCBpcyBmb3IgZGlmZmVyZW5jZSBib29rXG4gICAgICAgICAgfVxuICAgICAgICAgIGNoZWNrZWRCb29rID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhdGFnb3J5SXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBjYXRhZ29yeUl0ZW1zW2ldXG4gICAgICAgICAgICBjb25zdCBpdGVtQ29udGV4dElkID0gaXRlbS5jb250ZXh0SWRcbiAgICAgICAgICAgIGlmIChpc1NhbWVWZXJzZUJ5UmVmKHJlZmVyZW5jZSwgaXRlbUNvbnRleHRJZD8ucmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICBpZiAoY29udGV4dElkLmNoZWNrSWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dElkLmNoZWNrSWQgPT09IGl0ZW1Db250ZXh0SWQ/LmNoZWNrSWQpIHtcbiAgICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgLy8gaWYgbm8gY2hlY2tJZCwgZmFsbCBiYWNrIHRvIG1hdGNoaW5nIHF1b3RlIGFuZCBvY2N1cnJlbmNlXG4gICAgICAgICAgICAgIGlmIChpc0VxdWFsKGNvbnRleHRJZC5xdW90ZSwgaXRlbUNvbnRleHRJZD8ucXVvdGUpICYmIChjb250ZXh0SWQub2NjdXJyZW5jZSA9PT0gaXRlbUNvbnRleHRJZD8ub2NjdXJyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtYXRjaEZvdW5kKSB7IC8vIGlmIG1hdGNoIHdhcyBmb3VuZCwgdGhlbiBtb3ZlIHRvIHByZXZpb3VzIGNoZWNrXG4gICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgIGNoZWNrID0gY2F0YWdvcnlJdGVtc1tpIC0gMV1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpZHggPiAwKSB7IC8vIG1vdmUgdG8gZmlyc3QgaXRlbSBpbiBuZXh0IGdyb3VwXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEdyb3VwSWQgPSBncm91cHNLZXlzW2lkeCAtIDFdXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEdyb3VwSXRlbXMgPSBncm91cHNEYXRhW25leHRHcm91cElkXVxuICAgICAgICAgICAgICAgIGNoZWNrID0gbmV4dEdyb3VwSXRlbXNbbmV4dEdyb3VwSXRlbXMubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhayAvLyB3aGVuIGZpbmlzaGVkIGNoZWNraW5nIGFsbCBpdGVtcyBpbiBncm91cElkLCB0aGVyZSBpcyBubyBwb2ludCB0byBjb250aW51ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoIWNoZWNrICYmIGRlZmF1bHRUb0ZpcnN0KSB7XG4gICAgY2hlY2sgPSBmaW5kRmlyc3RDaGVjayhncm91cHNEYXRhKVxuICB9XG4gIHJldHVybiBjaGVja1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEZpcnN0Q2hlY2soZ3JvdXBzRGF0YSkge1xuICBsZXQgY2hlY2sgPSBudWxsXG4gIGNvbnN0IGdyb3VwS2V5cyA9IGdyb3Vwc0RhdGEgJiYgT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSlcbiAgaWYgKGdyb3VwS2V5cz8ubGVuZ3RoKSB7XG4gICAgY29uc3QgZmlyc3RHcm91cCA9IGdyb3Vwc0RhdGFbZ3JvdXBLZXlzWzBdXVxuICAgIGlmIChmaXJzdEdyb3VwPy5sZW5ndGgpIHtcbiAgICAgIGNoZWNrID0gZmlyc3RHcm91cFswXVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hlY2tcbn1cblxuXG4vKipcbiAqIHByb2Nlc3MgdGhlIFRTViBmaWxlIGludG8gaW5kZXggZmlsZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0c3ZEYXRhXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IHJlc291cmNlc1BhdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbEJpYmxlUGF0aFxuICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dFBhdGhcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHR3bFRzdlRvR3JvdXBEYXRhKHRzdkRhdGEsIHByb2plY3QsIG9yaWdMYW5nQmlibGUpIHtcbiAgY29uc3QgYm9va0lkID0gcHJvamVjdC5pZGVudGlmaWVyO1xuICBsZXQgZ3JvdXBEYXRhO1xuICBjb25zdCB7XG4gICAgdHN2SXRlbXMsXG4gICAgZXJyb3IsXG4gIH0gPSBhd2FpdCB0c3ZEYXRhVG9PYmplY3RzKHRzdkRhdGEpO1xuXG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgY29uc3QgdHN2SXRlbXNfID0gW107XG4gIGZvciAoY29uc3QgdHN2SXRlbSBvZiB0c3ZJdGVtcykge1xuICAgIGNvbnN0IGNsZWFuZWRSZWYgPSBwYXJzZVJlZmVyZW5jZSh0c3ZJdGVtLlJlZmVyZW5jZSk7XG4gICAgY29uc3QgdHN2SXRlbV8gPSB7XG4gICAgICAuLi50c3ZJdGVtLFxuICAgICAgLi4uY2xlYW5lZFJlZixcbiAgICB9O1xuICAgIHRzdkl0ZW1zXy5wdXNoKHRzdkl0ZW1fKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgZ3JvdXBEYXRhID0gdHN2T2JqZWN0c1RvR3JvdXBEYXRhKHRzdkl0ZW1zXywgb3JpZ0xhbmdCaWJsZSwgXCJcIiwgYm9va0lkLCBwcm9qZWN0Lmxhbmd1YWdlSWQsICd0cmFuc2xhdGlvbldvcmRzJywge2NhdGVnb3JpemVkOiB0cnVlfSk7XG4gICAgY29udmVydEVsbGlwc2lzVG9BbXBlcnNhbmQoZ3JvdXBEYXRhKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYHR3QXJ0aWNsZUhlbHBlcnMudHdsVHN2VG9Hcm91cERhdGEoKSAtIGVycm9yIHByb2Nlc3NpbmcgZ3JvdXAgZGF0YWAsIGUpO1xuICAgIHRocm93IGU7XG4gIH1cbiAgcmV0dXJuIGdyb3VwRGF0YTtcbn1cblxuLyoqXG4gKiBwYXJzZSB0aGUgdHdEYXRhIGludG8gYSBmbGF0IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdH0gdHdEYXRhXG4gKiBAcmV0dXJucyB7YXJyYXl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR3VG9JbmRleCh0d0RhdGEpIHtcbiAgbGV0IGluZGV4ID0gW11cbiAgZm9yIChjb25zdCBjYXRhZ29yeUlkIG9mIE9iamVjdC5rZXlzKHR3RGF0YSkpIHtcbiAgICBjb25zdCBjYXRhZ29yeSA9IHR3RGF0YVtjYXRhZ29yeUlkXVxuICAgIGlmIChjYXRhZ29yeT8uaW5kZXgpIHtcbiAgICAgIGluZGV4ID0gaW5kZXguY29uY2F0KGNhdGFnb3J5Py5pbmRleClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluZGV4XG59XG5cbi8qKlxuICogcHJvY2VzcyB0aGUgVFNWIGZpbGUgaW50byBpbmRleCBmaWxlc1xuICogQHBhcmFtIHtzdHJpbmd9IHRzdkRhdGFcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0c3ZEYXRhVG9PYmplY3RzKHRzdkRhdGEpIHtcbiAgLy8gY29uc29sZS5sb2codHN2TGluZXMpO1xuICBsZXQgdHN2SXRlbXM7XG4gIGxldCBwYXJzZUVycm9yTXNnO1xuICBsZXQgZXJyb3I7XG4gIGxldCBleHBlY3RlZENvbHVtbnMgPSAwO1xuICBjb25zdCB0YWJsZU9iamVjdCA9IHRzdnBhcnNlci50c3ZTdHJpbmdUb1RhYmxlKHRzdkRhdGEpO1xuXG4gIGlmICggdGFibGVPYmplY3QuZXJyb3JzLmxlbmd0aCA+IDAgKSB7XG4gICAgcGFyc2VFcnJvck1zZyA9ICcnO1xuICAgIGV4cGVjdGVkQ29sdW1ucyA9IHRhYmxlT2JqZWN0LmhlYWRlci5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dGFibGVPYmplY3QuZXJyb3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbXNnO1xuICAgICAgY29uc3Qgcm93bnVtID0gdGFibGVPYmplY3QuZXJyb3JzW2ldWzBdIC0gMTsgLy8gYWRqdXN0IGZvciBkYXRhIHRhYmxlIHdpdGhvdXQgaGVhZGVyIHJvd1xuICAgICAgY29uc3QgY29sc2ZvdW5kID0gdGFibGVPYmplY3QuZXJyb3JzW2ldWzFdO1xuXG4gICAgICBpZiAoIGNvbHNmb3VuZCA+IGV4cGVjdGVkQ29sdW1ucyApIHtcbiAgICAgICAgbXNnID0gJ1JvdyBpcyB0b28gbG9uZyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtc2cgPSAnUm93IGlzIHRvbyBzaG9ydCc7XG4gICAgICB9XG4gICAgICBwYXJzZUVycm9yTXNnICs9IGBcXG5cXG4ke21zZ306YDtcbiAgICAgIHBhcnNlRXJyb3JNc2cgKz0gJ1xcbicgKyB0YWJsZU9iamVjdC5kYXRhW3Jvd251bV0uam9pbignLCcpO1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oYHR3QXJ0aWNsZUhlbHBlcnMudHdsVHN2VG9Hcm91cERhdGEoKSAtIHRhYmxlIHBhcnNlIGVycm9ycyBmb3VuZDogJHtwYXJzZUVycm9yTXNnfWApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICB0c3ZJdGVtcyA9IHRhYmxlT2JqZWN0LmRhdGEubWFwKGxpbmUgPT4ge1xuICAgICAgY29uc3QgdHN2SXRlbSA9IHt9O1xuICAgICAgY29uc3QgbCA9IHRhYmxlT2JqZWN0LmhlYWRlci5sZW5ndGg7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRhYmxlT2JqZWN0LmhlYWRlcltpXTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsaW5lW2ldIHx8ICcnO1xuICAgICAgICB0c3ZJdGVtW2tleV0gPSB2YWx1ZS50cmltKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHN2SXRlbTtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYHR3QXJ0aWNsZUhlbHBlcnMudHdsVHN2VG9Hcm91cERhdGEoKSAtIGVycm9yIHByb2Nlc3NpbmcgZmlsZXBhdGg6ICR7dHN2UGF0aH1gLCBlKTtcbiAgICBlcnJvciA9IGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0c3ZJdGVtcyxcbiAgICBwYXJzZUVycm9yTXNnLFxuICAgIGVycm9yLFxuICAgIGV4cGVjdGVkQ29sdW1ucyxcbiAgfTtcbn1cblxuXG4vLyAvKipcbi8vICAqIEBkZXNjcmlwdGlvbiBQcm9jZXNzZXMgdGhlIGV4dHJhY3RlZCBmaWxlcyBmb3IgdHJhbnNsYXRpb25Xb3JkIHRvIGNyZWF0ZSB0aGUgZm9sZGVyXG4vLyAgKiBzdHJ1Y3R1cmUgYW5kIHByb2R1Y2UgdGhlIGluZGV4LmpzIGZpbGUgZm9yIHRoZSBsYW5ndWFnZSB3aXRoIHRoZSB0aXRsZSBvZiBlYWNoIGFydGljbGUuXG4vLyAgKiBAcGFyYW0ge09iamVjdH0gcmVzb3VyY2UgLSBSZXNvdXJjZSBvYmplY3Rcbi8vICAqIEBwYXJhbSB7U3RyaW5nfSBzb3VyY2VQYXRoIC0gUGF0aCB0byB0aGUgZXh0cmFjdGVkIGZpbGVzIHRoYXQgY2FtZSBmcm9tIHRoZSB6aXAgZmlsZSBmcm9tIHRoZSBjYXRhbG9nXG4vLyAgKiBAcGFyYW0ge1N0cmluZ30gb3V0cHV0UGF0aCAtIFBhdGggdG8gcGxhY2UgdGhlIHByb2Nlc3NlZCByZXNvdXJjZSBmaWxlcyBXSUhUT1VUIHRoZSB2ZXJzaW9uIGluIHRoZSBwYXRoXG4vLyAgKiBAcGFyYW0ge3N0cmluZ30gcmVzb3VyY2VzUGF0aFxuLy8gICogQHBhcmFtIHtBcnJheX0gZG93bmxvYWRFcnJvcnMgLSBwYXJzZWQgbGlzdCBvZiBkb3dubG9hZCBlcnJvcnMgd2l0aCBkZXRhaWxzIHN1Y2ggYXMgaWYgdGhlIGRvd25sb2FkIGNvbXBsZXRlZCAodnMuIHBhcnNpbmcgZXJyb3IpLCBlcnJvciwgYW5kIHVybFxuLy8gICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyAtIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4vLyAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlmIHN1Y2Nlc3Ncbi8vICAqL1xuLy8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NUcmFuc2xhdGlvbldvcmRzVFNWKHJlc291cmNlLCBzb3VyY2VQYXRoLCBvdXRwdXRQYXRoLCByZXNvdXJjZXNQYXRoLCBkb3dubG9hZEVycm9ycywgY29uZmlnID0ge30pIHtcbi8vICAgdHJ5IHtcbi8vICAgICBpZiAoIXJlc291cmNlIHx8ICFpc09iamVjdChyZXNvdXJjZSkgfHwgIXJlc291cmNlLmxhbmd1YWdlSWQgfHwgIXJlc291cmNlLnJlc291cmNlSWQpXG4vLyAgICAgICB0aHJvdyBFcnJvcihyZXNvdXJjZXNIZWxwZXJzLmZvcm1hdEVycm9yKHJlc291cmNlLCBlcnJvcnMuUkVTT1VSQ0VfTk9UX0dJVkVOKSk7XG4vLyAgICAgaWYgKCFzb3VyY2VQYXRoKVxuLy8gICAgICAgdGhyb3cgRXJyb3IocmVzb3VyY2VzSGVscGVycy5mb3JtYXRFcnJvcihyZXNvdXJjZSwgZXJyb3JzLlNPVVJDRV9QQVRIX05PVF9HSVZFTikpO1xuLy8gICAgIGlmICghZnMucGF0aEV4aXN0c1N5bmMoc291cmNlUGF0aCkpXG4vLyAgICAgICB0aHJvdyBFcnJvcihyZXNvdXJjZXNIZWxwZXJzLmZvcm1hdEVycm9yKHJlc291cmNlLCBlcnJvcnMuU09VUkNFX1BBVEhfTk9UX0VYSVNUKSk7XG4vLyAgICAgaWYgKCFvdXRwdXRQYXRoKVxuLy8gICAgICAgdGhyb3cgRXJyb3IocmVzb3VyY2VzSGVscGVycy5mb3JtYXRFcnJvcihyZXNvdXJjZSwgZXJyb3JzLk9VVFBVVF9QQVRIX05PVF9HSVZFTikpO1xuLy8gICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyhvdXRwdXRQYXRoKSlcbi8vICAgICAgIGZzLnJlbW92ZVN5bmMob3V0cHV0UGF0aCk7XG4vL1xuLy8gICAgIGNvbnN0IHtvdFF1ZXJ5LCBudFF1ZXJ5fSA9IGF3YWl0IGdldE1pc3NpbmdSZXNvdXJjZXMoc291cmNlUGF0aCwgcmVzb3VyY2VzUGF0aCwgZ2V0TWlzc2luZ09yaWdpbmFsUmVzb3VyY2UsIGRvd25sb2FkRXJyb3JzLCByZXNvdXJjZS5sYW5ndWFnZUlkLCByZXNvdXJjZS5vd25lciwgZmFsc2UsIGNvbmZpZyk7XG4vL1xuLy8gICAgIC8vIG1ha2Ugc3VyZSB0VyBpcyBhbHJlYWR5IGluc3RhbGxlZFxuLy8gICAgIGNvbnN0IHR3UGF0aCA9IHBhdGguam9pbihcbi8vICAgICAgIHJlc291cmNlc1BhdGgsXG4vLyAgICAgICByZXNvdXJjZS5sYW5ndWFnZUlkLFxuLy8gICAgICAgJ3RyYW5zbGF0aW9uSGVscHMvdHJhbnNsYXRpb25Xb3Jkcydcbi8vICAgICApO1xuLy8gICAgIGNvbnN0IHR3VmVyc2lvblBhdGggPSByZXNvdXJjZXNIZWxwZXJzLmdldExhdGVzdFZlcnNpb25JblBhdGgodHdQYXRoLCByZXNvdXJjZS5vd25lcik7XG4vLyAgICAgaWYgKGZzLmV4aXN0c1N5bmModHdWZXJzaW9uUGF0aCkpIHtcbi8vICAgICAgIG1ha2VTdXJlUmVzb3VyY2VVbnppcHBlZCh0d1ZlcnNpb25QYXRoKTtcbi8vICAgICB9IGVsc2Uge1xuLy8gICAgICAgY29uc3QgcmVzb3VyY2VfID0gYCR7cmVzb3VyY2Uub3duZXJ9LyR7cmVzb3VyY2UubGFuZ3VhZ2VJZH1fdHdgO1xuLy8gICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcm9jZXNzVHJhbnNsYXRpb25Xb3Jkc1RTVigpIC0gY2Fubm90IGZpbmQgJyR7cmVzb3VyY2VffScgYXQgJHt0d1BhdGh9IGZvciAke3Jlc291cmNlLm93bmVyfWApO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgY29uc3QgbWFuaWZlc3QgPSBnZXRSZXNvdXJjZU1hbmlmZXN0KHNvdXJjZVBhdGgpO1xuLy8gICAgIGlmICghKG1hbmlmZXN0ICYmIEFycmF5LmlzQXJyYXkobWFuaWZlc3QucHJvamVjdHMpKSkge1xuLy8gICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcm9jZXNzVHJhbnNsYXRpb25Xb3Jkc1RTVigpIC0gbm8gcHJvamVjdHMgaW4gbWFuaWZlc3QgYXQgJHtzb3VyY2VQYXRofSBmb3IgJHtyZXNvdXJjZS5vd25lcn1gKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGNvbnN0IHR3bEVycm9ycyA9IFtdO1xuLy9cbi8vICAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgbWFuaWZlc3QucHJvamVjdHMpIHtcbi8vICAgICAgIGNvbnN0IHRzdlBhdGggPSBwYXRoLmpvaW4oc291cmNlUGF0aCwgcHJvamVjdC5wYXRoKTtcbi8vICAgICAgIHRyeSB7XG4vLyAgICAgICAgIGNvbnN0IGJvb2tJZCA9IHByb2plY3QuaWRlbnRpZmllcjtcbi8vICAgICAgICAgY29uc3QgaXNOZXdUZXN0YW1lbnQgPSBCSUJMRV9CT09LUy5uZXdUZXN0YW1lbnRbcHJvamVjdC5pZGVudGlmaWVyXTtcbi8vICAgICAgICAgY29uc3Qgb3JpZ2luYWxMYW5ndWFnZUlkID0gaXNOZXdUZXN0YW1lbnQgPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkc7XG4vLyAgICAgICAgIGNvbnN0IG9yaWdpbmFsTGFuZ3VhZ2VCaWJsZUlkID0gaXNOZXdUZXN0YW1lbnQgPyBOVF9PUklHX0xBTkdfQklCTEUgOiBPVF9PUklHX0xBTkdfQklCTEU7XG4vLyAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBpc05ld1Rlc3RhbWVudCAmJiBudFF1ZXJ5ID8gKCd2JyArIG50UXVlcnkpIDogb3RRdWVyeSA/ICgndicgKyBvdFF1ZXJ5KSA6IG51bGw7XG4vLyAgICAgICAgIGlmICghdmVyc2lvbikge1xuLy8gICAgICAgICAgIGNvbnNvbGUud2FybigncHJvY2Vzc1RyYW5zbGF0aW9uV29yZHNUU1YoKSAtIFRoZXJlIHdhcyBhIG1pc3NpbmcgdmVyc2lvbiBmb3IgYm9vayAnICsgYm9va0lkICsgJyBvZiByZXNvdXJjZSAnICsgb3JpZ2luYWxMYW5ndWFnZUJpYmxlSWQgKyAnIGZyb20gJyArIHJlc291cmNlLmRvd25sb2FkVXJsKTtcbi8vICAgICAgICAgICBjb250aW51ZTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgICBjb25zdCBvcmlnaW5hbExhbmd1YWdlT3duZXIgPSBnZXRPd25lckZvck9yaWdpbmFsTGFuZ3VhZ2UocmVzb3VyY2Uub3duZXIpO1xuLy8gICAgICAgICBjb25zdCBvcmlnaW5hbEJpYmxlUGF0aCA9IHBhdGguam9pbihcbi8vICAgICAgICAgICByZXNvdXJjZXNQYXRoLFxuLy8gICAgICAgICAgIG9yaWdpbmFsTGFuZ3VhZ2VJZCxcbi8vICAgICAgICAgICAnYmlibGVzJyxcbi8vICAgICAgICAgICBvcmlnaW5hbExhbmd1YWdlQmlibGVJZCxcbi8vICAgICAgICAgICBgJHt2ZXJzaW9ufV8ke29yaWdpbmFsTGFuZ3VhZ2VPd25lcn1gXG4vLyAgICAgICAgICk7XG4vL1xuLy8gICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhvcmlnaW5hbEJpYmxlUGF0aCkpIHtcbi8vICAgICAgICAgICBjb25zdCBncm91cERhdGEgPSBhd2FpdCB0d2xUc3ZUb0dyb3VwRGF0YSh0c3ZQYXRoLCBwcm9qZWN0LCByZXNvdXJjZXNQYXRoLCBvcmlnaW5hbEJpYmxlUGF0aCwgb3V0cHV0UGF0aCk7XG4vLyAgICAgICAgICAgY29udmVydEVsbGlwc2lzVG9BbXBlcnNhbmQoZ3JvdXBEYXRhLCB0c3ZQYXRoKTtcbi8vICAgICAgICAgICBhd2FpdCBmb3JtYXRBbmRTYXZlR3JvdXBEYXRhKGdyb3VwRGF0YSwgb3V0cHV0UGF0aCwgYm9va0lkKTtcbi8vICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICBjb25zdCByZXNvdXJjZSA9IGAke29yaWdpbmFsTGFuZ3VhZ2VPd25lcn0vJHtvcmlnaW5hbExhbmd1YWdlSWR9XyR7b3JpZ2luYWxMYW5ndWFnZUJpYmxlSWR9YDtcbi8vICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYHByb2Nlc3NUcmFuc2xhdGlvbldvcmRzVFNWKCkgLSBjYW5ub3QgZmluZCAnJHtyZXNvdXJjZX0nIGF0ICR7b3JpZ2luYWxCaWJsZVBhdGh9OmA7XG4vLyAgICAgICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbi8vICAgICAgICAgICB0d2xFcnJvcnMucHVzaChtZXNzYWdlKTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgfSBjYXRjaCAoZSkge1xuLy8gICAgICAgICBjb25zdCBtZXNzYWdlID0gYHByb2Nlc3NUcmFuc2xhdGlvbldvcmRzVFNWKCkgLSBlcnJvciBwcm9jZXNzaW5nICR7dHN2UGF0aH06YDtcbi8vICAgICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlLCBlKTtcbi8vICAgICAgICAgdHdsRXJyb3JzLnB1c2gobWVzc2FnZSArIGUudG9TdHJpbmcoKSk7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy9cbi8vICAgICBhd2FpdCBkZWxheSgyMDApO1xuLy9cbi8vICAgICBpZiAodHdsRXJyb3JzLmxlbmd0aCkgeyAvLyByZXBvcnQgZXJyb3JzXG4vLyAgICAgICBjb25zdCBtZXNzYWdlID0gYHByb2Nlc3NUcmFuc2xhdGlvbldvcmRzVFNWKCkgLSBlcnJvciBwcm9jZXNzaW5nICR7c291cmNlUGF0aH1gO1xuLy8gICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbi8vICAgICAgIHRocm93IG5ldyBFcnJvcihgJHttZXNzYWdlfTpcXG4ke3R3bEVycm9ycy5qb2luKCdcXG4nKX1gKTtcbi8vICAgICB9XG4vLyAgIH0gY2F0Y2ggKGVycm9yKSB7XG4vLyAgICAgY29uc29sZS5lcnJvcigncHJvY2Vzc1RyYW5zbGF0aW9uV29yZHNUU1YoKSAtIGVycm9yOicsIGVycm9yKTtcbi8vICAgICB0aHJvdyBlcnJvcjtcbi8vICAgfVxuLy8gfVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiAtIEdlbmVyYXRlcyB0aGUgZ3JvdXBzIGluZGV4IGZvciB0aGUgdHcgYXJ0aWNsZXMgKGJvdGgga3QsIG90aGVyIGFuZCBuYW1lcykuXG4gKiBAcGFyYW0ge1N0cmluZ30gZmlsZXNQYXRoIC0gUGF0aCB0byBhbGwgdHcgbWFya2Rvd24gYXJ0Y2lsZXMuXG4gKiBAcGFyYW0ge1N0cmluZ30gdHdPdXRwdXRQYXRoIFBhdGggdG8gdGhlIHJlc291cmNlIGxvY2F0aW9uIGluIHRoZSBzdGF0aWMgZm9sZGVyLlxuICogQHBhcmFtIHtTdHJpbmd9IGZvbGRlck5hbWUgYXJ0aWNsZSB0eXBlLiBleC4ga3Qgb3Igb3RoZXIuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlR3JvdXBzSW5kZXgoZmlsZXNQYXRoLCB0d091dHB1dFBhdGgsIGZvbGRlck5hbWUpIHtcbiAgY29uc3QgZ3JvdXBzSW5kZXggPSBbXTtcbiAgY29uc3QgZ3JvdXBJZHMgPSBmcy5yZWFkZGlyU3luYyhmaWxlc1BhdGgpLmZpbHRlcigoZmlsZW5hbWUpID0+IHtcbiAgICByZXR1cm4gZmlsZW5hbWUuc3BsaXQoJy4nKS5wb3AoKSA9PT0gJ21kJztcbiAgfSk7XG4gIGdyb3VwSWRzLmZvckVhY2goKGZpbGVOYW1lKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBPYmplY3QgPSB7fTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihmaWxlc1BhdGgsIGZpbGVOYW1lKTtcbiAgICBjb25zdCBhcnRpY2xlRmlsZSA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICBjb25zdCBncm91cElkID0gZmlsZU5hbWUucmVwbGFjZSgnLm1kJywgJycpO1xuICAgIC8vIGdldCB0aGUgYXJ0aWNsZSdzIGZpcnN0IGxpbmUgYW5kIHJlbW92ZSAjJ3MgYW5kIHNwYWNlcyBmcm9tIGJlZ2lubmluZy9lbmRcbiAgICBjb25zdCBncm91cE5hbWUgPSBhcnRpY2xlRmlsZS5zcGxpdCgnXFxuJylbMF0ucmVwbGFjZSgvKF5cXHMqI1xccyp8XFxzKiNcXHMqJCkvZ2ksICcnKTtcbiAgICBncm91cE9iamVjdC5pZCA9IGdyb3VwSWQ7XG4gICAgZ3JvdXBPYmplY3QubmFtZSA9IGdyb3VwTmFtZTtcbiAgICBncm91cHNJbmRleC5wdXNoKGdyb3VwT2JqZWN0KTtcbiAgfSk7XG4gIGdyb3Vwc0luZGV4LnNvcnQoY29tcGFyZUJ5Rmlyc3RVbmlxdWVXb3JkKTtcbiAgY29uc3QgZ3JvdXBzSW5kZXhPdXRwdXRQYXRoID0gcGF0aC5qb2luKFxuICAgIHR3T3V0cHV0UGF0aCxcbiAgICBmb2xkZXJOYW1lLFxuICAgICdpbmRleC5qc29uJyxcbiAgKTtcblxuICBmcy5vdXRwdXRKc29uU3luYyhncm91cHNJbmRleE91dHB1dFBhdGgsIGdyb3Vwc0luZGV4LCB7c3BhY2VzOiAyfSk7XG59XG5cbi8qKlxuICogU3BsaXRzIHRoZSBzdHJpbmcgaW50byB3b3JkcyBkZWxpbWl0ZWQgYnkgY29tbWFzIGFuZCBjb21wYXJlcyB0aGUgZmlyc3QgdW5pcXVlIHdvcmRcbiAqIEBwYXJhbSB7U3RyaW5nfSBhIGZpcnN0IHN0cmluZyB0byBiZSBjb21wYXJlZFxuICogQHBhcmFtIHtTdHJpbmd9IGIgc2Vjb25kIHN0cmluZyB0byBiZSBjb21wYXJlZFxuICogQHJldHVybiB7aW50fSBjb21wYXJpc29uIHJlc3VsdFxuICovXG5mdW5jdGlvbiBjb21wYXJlQnlGaXJzdFVuaXF1ZVdvcmQoYSwgYikge1xuICBjb25zdCBhV29yZHMgPSBhLm5hbWUudG9VcHBlckNhc2UoKS5zcGxpdCgnLCcpO1xuICBjb25zdCBiV29yZHMgPSBiLm5hbWUudG9VcHBlckNhc2UoKS5zcGxpdCgnLCcpO1xuICB3aGlsZSAoYVdvcmRzLmxlbmd0aCB8fCBiV29yZHMubGVuZ3RoKSB7XG4gICAgaWYgKCFhV29yZHMubGVuZ3RoKVxuICAgICAgcmV0dXJuIC0xO1xuICAgIGlmICghYldvcmRzLmxlbmd0aClcbiAgICAgIHJldHVybiAxO1xuICAgIGNvbnN0IGFXb3JkID0gYVdvcmRzLnNoaWZ0KCkudHJpbSgpO1xuICAgIGNvbnN0IGJXb3JkID0gYldvcmRzLnNoaWZ0KCkudHJpbSgpO1xuICAgIGlmIChhV29yZCAhPT0gYldvcmQpXG4gICAgICByZXR1cm4gKGFXb3JkIDwgYldvcmQgPyAtMSA6IDEpO1xuICB9XG4gIHJldHVybiAwOyAvLyBib3RoIGxpc3RzIGFyZSB0aGUgc2FtZVxufVxuXG4vKipcbiAqIGxvb2tzIHVwIHRoZSBHTCB0ZXh0IGZyb20gYW4gYWxpZ25lZCBHTCBiaWJsZSB1c2luZyB0aGUgT3JpZ2luYWwgTGFuZ3VhZ2VcbiAqIEBwYXJhbSB7b2JqZWN0fSB0b29sc1NlbGVjdGVkR0xzXG4gKiBAcGFyYW0ge29iamVjdH0gY29udGV4dElkXG4gKiBAcGFyYW0ge29iamVjdH0gYmlibGVzXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudFRvb2xOYW1lXG4gKiBAcmV0dXJuIHtzdHJpbmd8bnVsbH0gcmV0dXJucyBudWxsIGlmIGVycm9yIGdldHRpbmcgdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxpZ25lZEdMVGV4dChhbGlnbmVkR2xCaWJsZSwgY29udGV4dElkKSB7XG4gIGNvbnNvbGUubG9nKGNvbnRleHRJZClcbiAgaWYgKGNvbnRleHRJZCkge1xuICAgIGlmICghYWxpZ25lZEdsQmlibGUgfHwgIU9iamVjdC5rZXlzKGFsaWduZWRHbEJpYmxlKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBjb250ZXh0SWQucXVvdGU7XG4gICAgfVxuXG4gICAgbGV0IHZlcnNlT2JqZWN0cyA9IHZlcnNlSGVscGVycy5nZXRCZXN0VmVyc2VGcm9tQm9vayhhbGlnbmVkR2xCaWJsZSwgY29udGV4dElkLnJlZmVyZW5jZS5jaGFwdGVyLCBjb250ZXh0SWQucmVmZXJlbmNlLnZlcnNlKVxuICAgIGNvbnNvbGUubG9nKHZlcnNlT2JqZWN0cylcbiAgICBpZiAodmVyc2VPYmplY3RzPy52ZXJzZU9iamVjdHMpIHtcbiAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cz8udmVyc2VPYmplY3RzXG4gICAgfVxuICAgIGlmIChjb250ZXh0SWQgKSB7XG4gICAgICBjb25zdCBhbGlnbmVkVGV4dCA9IGdldEFsaWduZWRUZXh0KHZlcnNlT2JqZWN0cywgY29udGV4dElkLnF1b3RlLCBjb250ZXh0SWQub2NjdXJyZW5jZSk7XG4gICAgICBjb25zb2xlLmxvZyhhbGlnbmVkVGV4dClcbiAgICAgIGlmIChhbGlnbmVkVGV4dCkge1xuICAgICAgICByZXR1cm4gYWxpZ25lZFRleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHRpdGxlIGZyb20gZ3JvdXBJbmRleFxuICogQHBhcmFtIHtzdHJpbmd9IGFydGljbGVJZFxuICogQHBhcmFtIHtvYmplY3R9IGdyb3VwSW5kZXhcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpdGxlRnJvbUluZGV4KGdyb3VwSW5kZXgsIGFydGljbGVJZCkge1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgZ3JvdXBJbmRleCB8fCBbXSkge1xuICAgIGlmIChpdGVtLmlkID09PSBhcnRpY2xlSWQpIHtcbiAgICAgIHJldHVybiBpdGVtLm5hbWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFydGljbGVJZFxufVxuXG4vKipcbiAqIEdldHMgdGhlIHBocmFzZSBmcm9tIHRXXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJ0aWNsZUlkXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xUd0RhdGFcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBocmFzZUZyb21UdyhnbFR3RGF0YSwgYXJ0aWNsZUlkKSB7XG4gIGxldCBjdXJyZW50QXJ0aWNsZSA9ICcnO1xuICBnbFR3RGF0YSA9IGdsVHdEYXRhIHx8IHt9XG5cbiAgZm9yIChjb25zdCBncm91cElkIG9mIE9iamVjdC5rZXlzKGdsVHdEYXRhKSkge1xuICAgIGxldCBncm91cCA9IGdsVHdEYXRhW2dyb3VwSWRdXG4gICAgaWYgKGdyb3VwPy5hcnRpY2xlcykge1xuICAgICAgZ3JvdXAgPSBncm91cD8uYXJ0aWNsZXNcbiAgICB9XG4gICAgY29uc3QgYXJ0aWNsZSA9IGdyb3VwPy5bYXJ0aWNsZUlkXVxuICAgIGlmIChhcnRpY2xlKSB7XG4gICAgICBjdXJyZW50QXJ0aWNsZSA9IGFydGljbGVcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFjdXJyZW50QXJ0aWNsZSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGxldCBzcGxpdExpbmUgPSBjdXJyZW50QXJ0aWNsZS5zcGxpdCgnXFxuJyk7XG5cbiAgaWYgKHNwbGl0TGluZS5sZW5ndGggPT09IDEgJiYgc3BsaXRMaW5lWzBdID09PSAnJykge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGxldCBmaW5hbEFycmF5ID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGxpdExpbmUubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3BsaXRMaW5lW2ldICE9PSAnJyAmJiAhfnNwbGl0TGluZVtpXS5pbmRleE9mKCcjJykpIHtcbiAgICAgIGZpbmFsQXJyYXkucHVzaChzcGxpdExpbmVbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGxldCBtYXhMZW5ndGggPSAyMjU7XG4gIGxldCBmaW5hbFN0cmluZyA9ICcnO1xuICBsZXQgY2hvc2VuU3RyaW5nID0gZmluYWxBcnJheVswXTtcbiAgbGV0IHNwbGl0U3RyaW5nID0gY2hvc2VuU3RyaW5nLnNwbGl0KCcgJyk7XG5cbiAgZm9yIChsZXQgd29yZCBvZiBzcGxpdFN0cmluZykge1xuICAgIGlmICgoZmluYWxTdHJpbmcgKyAnICcgKyB3b3JkKS5sZW5ndGggPj0gbWF4TGVuZ3RoKSB7XG4gICAgICBmaW5hbFN0cmluZyArPSAnLi4uJztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaW5hbFN0cmluZyArPSAnICc7XG4gICAgZmluYWxTdHJpbmcgKz0gd29yZDtcbiAgfVxuICByZXR1cm4gZmluYWxTdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBU0EsSUFBQUMsZ0JBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQVFBLElBQUFHLGlCQUFBLEdBQUFILE9BQUE7QUFHQSxJQUFBSSxTQUFBLEdBQUFGLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxvQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sc0JBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGdCQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxhQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxlQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxpQkFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBZCxPQUFBO0FBQWdDLFNBQUFjLHVCQUFBQyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBYix3QkFBQWEsQ0FBQSxFQUFBRSxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQWhCLHVCQUFBLFlBQUFBLHdCQUFBYSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tc-checking-tool-rcl",
3
- "version": "0.9.105",
3
+ "version": "0.9.107",
4
4
  "main": "dist",
5
5
  "source": "dist/index.js",
6
6
  "repository": "https://github.com/unfoldingWord-box/checking-tool-rcl.git",