studiokit-scaffolding-js 7.8.0 → 7.8.1

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.
@@ -82,8 +82,6 @@ export interface AddBusinessModel {
82
82
  existingUserRoles: UserRole[];
83
83
  blockedUserRoles?: UserRole[];
84
84
  invalidIdentifiers: string[];
85
- allowedDomains: string;
86
- invalidDomainIdentifiers: string[];
87
85
  }
88
86
  /**
89
87
  * Component used to manage either UserRoles (global roles) or EntityUserRoles.
@@ -158,9 +158,7 @@ class UserRoles extends _react.Component {
158
158
  addedUserRoles,
159
159
  existingUserRoles,
160
160
  blockedUserRoles,
161
- invalidIdentifiers,
162
- allowedDomains,
163
- invalidDomainIdentifiers
161
+ invalidIdentifiers
164
162
  } = data;
165
163
  const roleString = this.textForRole(roleForAdd, true);
166
164
  const singularArticleString = this.singularArticleForRole(roleForAdd);
@@ -174,10 +172,7 @@ class UserRoles extends _react.Component {
174
172
  const blockedNames = !!blockedUserRoles && blockedUserRoles.length > 0 ? blockedUserRoles.map(eu => `${(0, _user.displayName)(eu)}${eu.uid ? ` (${eu.uid})` : ''}`).join('\r\n') : undefined;
175
173
  const hasMultipleBlocked = !!blockedUserRoles && blockedUserRoles.length > 1;
176
174
  const blockedMessage = blockedNames ? `The following ${hasMultipleBlocked ? 'people' : 'person'} could not be added ${entityName ? `to your ${entityName}` : ''} as ${hasMultipleBlocked ? '' : `${singularArticleString} `}${roleString}${hasMultipleBlocked ? 's' : ''} because they already have a role:\r\n${blockedNames}` : undefined;
177
- let failMessage = invalidIdentifiers.length > 0 ? `The following ${(0, _domainIdentifier.getDomainIdentifierTypePluralString)()} are invalid:\r\n${invalidIdentifiers.join('\r\n')}` : undefined;
178
- if (invalidDomainIdentifiers.length > 0) {
179
- failMessage = `${failMessage ? `${failMessage}\r\n` : ''}The following ${(0, _domainIdentifier.getDomainIdentifierTypePluralString)()} do not match the allowed domains of ${allowedDomains.replace(',', ', ')}:\r\n${invalidDomainIdentifiers.join('\r\n')}`;
180
- }
175
+ const failMessage = invalidIdentifiers.length > 0 ? `The following ${(0, _domainIdentifier.getDomainIdentifierTypePluralString)()} are invalid:\r\n${invalidIdentifiers.join('\r\n')}` : undefined;
181
176
  this.setState({
182
177
  shouldResetAddForm: true,
183
178
  isAdding: false,
@@ -552,4 +547,4 @@ const mapStateToProps = (state, ownProps) => {
552
547
  };
553
548
  exports.mapStateToProps = mapStateToProps;
554
549
  var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps)(UserRoles);
555
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX3JlYWN0UmVkdXgiLCJfdXVpZCIsIl9BbGVydERpYWxvZyIsIl9Mb2FkaW5nIiwiX0FkZCIsIl9UYWJsZSIsIl9jb25zdGFudHMiLCJfYmFzZVJvbGUiLCJfbW9kZWxTdGF0dXMiLCJfYWN0aW9uQ3JlYXRvciIsIl9hY3Rpb25zIiwiX25vU3RvcmVTYWdhIiwiX2Jhc2VBY3Rpdml0eSIsIl9iYXNlUm9sZTIiLCJfZG9tYWluSWRlbnRpZmllciIsIl9lbnRpdHlVc2VyUm9sZSIsIl9mZXRjaCIsIl9zb3J0IiwiX3VzZXIiLCJfdXNlclJvbGUiLCJfQWxlcnRXaXRoSWNvbiIsIl9Db250ZXh0IiwiX2pzeFJ1bnRpbWUiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJVc2VyUm9sZXMiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl90aGlzIiwiYXJndW1lbnRzIiwidGhpcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJzb3J0ZWRVc2VycyIsImFkZFVzZXJzSG9va0lkIiwidXVpZHY0IiwiaXNBZGRpbmciLCJpc1VwZGF0aW5nIiwiaXNSZW1vdmluZyIsInNob3VsZFJlc2V0QWRkRm9ybSIsInNob3VsZFNob3dSZW1vdmVEaWFsb2ciLCJwcm9wcyIsIm1vZGVsQXJyYXkiLCJ1c2VyUm9sZXMiLCJmaWx0ZXJVc2VycyIsInVzZXJzV2l0aFJvbGVzIiwidmFsdWVzIiwicmVkdWNlIiwicmVzdWx0IiwidXNlclJvbGUiLCJ1c2VySWQiLCJnZXRVc2VySWQiLCJ1c2VyV2l0aFJvbGVzIiwiY29udmVydFRvVXNlcldpdGhSb2xlcyIsInJvbGVzIiwicHVzaCIsImZpbHRlcmVkVXNlcnMiLCJzb3J0Iiwic29ydEJ5TmFtZXMiLCJzZXRTdGF0ZSIsInJvbGUiLCJsb3dlcmNhc2UiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJsb3dlcmNhc2VUZXh0Rm9yUm9sZSIsInJvbGVTdHJpbmciLCJ0ZXh0Rm9yUm9sZSIsInRleHRGb3JCYXNlUm9sZSIsInRvTG93ZXJDYXNlIiwic2luZ3VsYXJBcnRpY2xlRm9yUm9sZSIsInNpbmd1bGFyQXJ0aWNsZUZvckJhc2VSb2xlIiwiaWRlbnRpZmllcnMiLCJlbnRpdHkiLCJpZGVudGlmaWVyc1RvQWRkIiwicm9sZUZvckFkZCIsInN1Y2Nlc3NNZXNzYWdlIiwiZmFpbE1lc3NhZ2UiLCJleGlzdGluZ01lc3NhZ2UiLCJibG9ja2VkTWVzc2FnZSIsInN0YXRlIiwibm9TdG9yZUhvb2tzIiwicmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayIsImRhdGEiLCJ1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2siLCJkaWRBZGQiLCJyb290TW9kZWxOYW1lIiwiZ2V0Um9vdE1vZGVsTmFtZSIsImRpc3BhdGNoTW9kZWxGZXRjaFJlcXVlc3QiLCJtb2RlbE5hbWUiLCJwYXRoUGFyYW1zIiwiaWQiLCJib2R5IiwiZW50aXR5SWQiLCJyb2xlTmFtZSIsIm5vU3RvcmUiLCJndWlkIiwiZW50aXR5TmFtZSIsIm9uQWRkIiwibW9kZWwiLCJFcnJvciIsImlzRmV0Y2hDYW5jZWxsZWREYXRhIiwiaXNGZXRjaEVycm9yRGF0YSIsImpvaW4iLCJhZGRlZFVzZXJSb2xlcyIsImV4aXN0aW5nVXNlclJvbGVzIiwiYmxvY2tlZFVzZXJSb2xlcyIsImludmFsaWRJZGVudGlmaWVycyIsImFsbG93ZWREb21haW5zIiwiaW52YWxpZERvbWFpbklkZW50aWZpZXJzIiwic2luZ3VsYXJBcnRpY2xlU3RyaW5nIiwiYWRkZWROYW1lcyIsIm1hcCIsImF1IiwiZGlzcGxheU5hbWUiLCJ1aWQiLCJleGlzdGluZ05hbWVzIiwiZXUiLCJoYXNNdWx0aXBsZUV4aXN0aW5nIiwiYmxvY2tlZE5hbWVzIiwiaGFzTXVsdGlwbGVCbG9ja2VkIiwiZ2V0RG9tYWluSWRlbnRpZmllclR5cGVQbHVyYWxTdHJpbmciLCJyZXBsYWNlIiwidXBkYXRlZE1vZGVsIiwiY2xvbmVEZWVwIiwiZm9yRWFjaCIsIm1vZGVsUGF0aCIsInByZXBhcmVGZXRjaCIsInR5cGUiLCJNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFIiwiRkVUQ0hfUkVRVUVTVCIsImdldEVuZHBvaW50TWFwcGluZ3MiLCJkaXNwYXRjaEFjdGlvbiIsIk1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSIsIkZFVENIX1JFU1VMVF9SRUNFSVZFRCIsInVzZXJSb2xlVG9VcGRhdGUiLCJuZXdSb2xlIiwicm9sZUZvclVwZGF0ZSIsInVwZGF0ZSIsInF1ZXJ5UGFyYW1zIiwiaXNTdWNjZXNzIiwib25VcGRhdGUiLCJuYW1lIiwidXNlclJvbGVUb1JlbW92ZSIsInJvbGVGb3JSZW1vdmUiLCJ3YXJuaW5nIiwiZXh0ZXJuYWxQcm92aWRlcnMiLCJncm91cCIsImRlZmF1bHRXYXJuaW5nIiwianN4cyIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiZXh0ZXJuYWxHcm91cHNUb1JlbW92ZSIsImV4dGVybmFsR3JvdXBzIiwiZmlsdGVyIiwiZWciLCJCQVNFX1JPTEUiLCJHUk9VUF9PV05FUiIsImV4dGVybmFsR3JvdXBzVG9SZW1vdmVXaXRoUm9zdGVyU3luYyIsImV4dGVybmFsUHJvdmlkZXJJZCIsInJvc3RlclN5bmNFbmFibGVkIiwianN4IiwiZGVzY3JpcHRpb24iLCJzaG91bGRSZW1vdmUiLCJkZWxldGUiLCJvblJlbW92ZSIsImNvbXBvbmVudERpZE1vdW50Iiwic2V0U3RhdGVGcm9tUHJvcHMiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2TW9kZWxBcnJheSIsIm1vZGVsU3RhdHVzIiwicHJldk1vZGVsU3RhdHVzIiwiaXNFcXVhbCIsIk1PREVMX1NUQVRVUyIsIlVOSU5JVElBTElaRUQiLCJMT0FESU5HIiwiRVJST1IiLCJVUERBVElORyIsImRpZFVwZGF0ZSIsIlJFQURZIiwiREVMRVRJTkciLCJkaWRSZW1vdmUiLCJyZW5kZXIiLCJjYW5Nb2RpZnkiLCJyZWFkT25seSIsImNhbkRlbGV0ZVNlbGYiLCJhbGxvd011bHRpcGxlUm9sZXMiLCJpc0FkZERpc2FibGVkIiwiaXNVcGRhdGVEaXNhYmxlZCIsImlzRGVsZXRlRGlzYWJsZWQiLCJkZWZhdWx0Um9sZSIsInJlcXVpcmVkUm9sZSIsInJvbGVEZXNjcmlwdGlvbnMiLCJhZGRSb2xlRXhjbHVkZUxpc3QiLCJyZW5kZXJUYWJsZURlc2NyaXB0aW9uIiwicmVuZGVyQWRkRGVzY3JpcHRpb24iLCJhZGRhYmxlUm9sZURlc2NyaXB0aW9ucyIsInBpY2tCeSIsIl8iLCJrZXkiLCJpbmNsdWRlcyIsImtleXMiLCJzaG91bGRSZW5kZXJBc011dGFibGUiLCJGcmFnbWVudCIsIkFsZXJ0V2l0aEljb24iLCJ2YXJpYW50IiwiZGlzbWlzc2libGUiLCJvbkNsb3NlIiwiVXNlclJvbGVzQWRkIiwiZGlzYWJsZWQiLCJpc0FkZGluZ1VzZXJzVG9Sb2xlIiwic2hvdWxkUmVzZXQiLCJhZGRVc2VyUm9sZXMiLCJSb3ciLCJDb2wiLCJ4cyIsIkxvYWRpbmciLCJVc2VyUm9sZXNDb250ZXh0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVwZGF0ZVVzZXJSb2xlIiwicmVtb3ZlVXNlclJvbGUiLCJhbGVydFJlbW92ZVVzZXJSb2xlIiwiVXNlclJvbGVzVGFibGUiLCJ1c2VycyIsIkFsZXJ0RGlhbG9nIiwiaXNPcGVuIiwidGl0bGUiLCJyZW1vdmVVc2VyUm9sZVRpdGxlIiwicmVuZGVyUmVtb3ZlVXNlclJvbGVEZXNjcmlwdGlvbiIsIm9uRGVzdHJveSIsImRlc3Ryb3lUZXh0Iiwib25DYW5jZWwiLCJjYW5jZWxUZXh0IiwiZXhwb3J0cyIsIm1hcFN0YXRlVG9Qcm9wcyIsIm93blByb3BzIiwiY2FuTW9kaWZ5R2xvYmFsbHkiLCJjYW5QZXJmb3JtQWN0aXZpdHlHbG9iYWxseSIsIm1vZGlmeVVzZXJSb2xlQWN0aXZpdHlOYW1lIiwiZGVmYXVsdE9wdGlvbnMiLCJjYW5QZXJmb3JtQWN0aXZpdHlPbkVudGl0eSIsImRlbGV0ZU93blVzZXJSb2xlQWN0aXZpdHlOYW1lIiwiX2RlZmF1bHQiLCJjb25uZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVXNlclJvbGVzL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAsIERpY3Rpb25hcnksIGlzRXF1YWwsIHBpY2tCeSB9IGZyb20gJ2xvZGFzaCdcbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbCwgUm93IH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJ1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IEFsZXJ0RGlhbG9nIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9BbGVydERpYWxvZydcbmltcG9ydCB7IExvYWRpbmcgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL0xvYWRpbmcnXG5pbXBvcnQgeyBVc2VyUm9sZXNBZGQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1VzZXJSb2xlcy9BZGQnXG5pbXBvcnQgeyBVc2VyUm9sZXNUYWJsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVXNlclJvbGVzL1RhYmxlJ1xuaW1wb3J0IHsgZ2V0RW5kcG9pbnRNYXBwaW5ncyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cydcbmltcG9ydCB7IEJBU0VfUk9MRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9iYXNlUm9sZSdcbmltcG9ydCB7IE1PREVMX1NUQVRVUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9tb2RlbFN0YXR1cydcbmltcG9ydCB7IGRpc3BhdGNoQWN0aW9uLCBkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vcmVkdXgvYWN0aW9uQ3JlYXRvcidcbmltcG9ydCB7XG5cdE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdE1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSxcblx0TW9kZWxGZXRjaFJlc3VsdEFjdGlvblxufSBmcm9tICcuLi8uLi9yZWR1eC9hY3Rpb25zJ1xuaW1wb3J0IHsgbm9TdG9yZUhvb2tzIH0gZnJvbSAnLi4vLi4vcmVkdXgvc2FnYXMvbm9TdG9yZVNhZ2EnXG5pbXBvcnQge1xuXHRCYXNlUmVkdXhTdGF0ZSxcblx0RXh0ZXJuYWxQcm92aWRlcixcblx0R3JvdXAsXG5cdE1vZGVsLFxuXHRNb2RlbENvbGxlY3Rpb24sXG5cdFJvbGVEZXNjcmlwdGlvbnMsXG5cdFVzZXIsXG5cdFVzZXJSb2xlLFxuXHRVc2VyV2l0aFJvbGVzXG59IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgY2FuUGVyZm9ybUFjdGl2aXR5R2xvYmFsbHksIGNhblBlcmZvcm1BY3Rpdml0eU9uRW50aXR5LCBkZWZhdWx0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2Jhc2VBY3Rpdml0eSdcbmltcG9ydCB7IHNpbmd1bGFyQXJ0aWNsZUZvckJhc2VSb2xlLCB0ZXh0Rm9yQmFzZVJvbGUgfSBmcm9tICcuLi8uLi91dGlscy9iYXNlUm9sZSdcbmltcG9ydCB7IGdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tYWluSWRlbnRpZmllcidcbmltcG9ydCB7IGdldFJvb3RNb2RlbE5hbWUgfSBmcm9tICcuLi8uLi91dGlscy9lbnRpdHlVc2VyUm9sZSdcbmltcG9ydCB7IGlzRmV0Y2hDYW5jZWxsZWREYXRhLCBpc0ZldGNoRXJyb3JEYXRhLCBwcmVwYXJlRmV0Y2ggfSBmcm9tICcuLi8uLi91dGlscy9mZXRjaCdcbmltcG9ydCB7IHNvcnRCeU5hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc29ydCdcbmltcG9ydCB7IGRpc3BsYXlOYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXNlcidcbmltcG9ydCB7IGNvbnZlcnRUb1VzZXJXaXRoUm9sZXMsIGdldFVzZXJJZCB9IGZyb20gJy4uLy4uL3V0aWxzL3VzZXJSb2xlJ1xuaW1wb3J0IHsgQWxlcnRXaXRoSWNvbiB9IGZyb20gJy4uL0FsZXJ0V2l0aEljb24nXG5pbXBvcnQgeyBDb2xsZWN0aW9uQ29tcG9uZW50V3JhcHBlZFByb3BzIH0gZnJvbSAnLi4vSE9DL0NvbGxlY3Rpb25Db21wb25lbnQnXG5pbXBvcnQgeyBVc2VyUm9sZXNDb250ZXh0IH0gZnJvbSAnLi9Db250ZXh0J1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJSb2xlc1JlZHV4UHJvcHMge1xuXHQvKiogSXMgdGhlIGN1cnJlbnQgdXNlciBhbGxvd2VkIHRvIGFkZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHVzZXIgcm9sZXM/ICovXG5cdGNhbk1vZGlmeT86IGJvb2xlYW5cblx0LyoqIElzIHRoZSBjdXJyZW50IHVzZXIgYWxsb3dlZCB0byBkZWxldGUgdGhlaXIgb3duIHVzZXIgcm9sZT8gKi9cblx0Y2FuRGVsZXRlU2VsZj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUm9sZXNPd25Qcm9wcyBleHRlbmRzIENvbGxlY3Rpb25Db21wb25lbnRXcmFwcGVkUHJvcHM8VXNlclJvbGU+IHtcblx0LyoqIFNob3VsZCB0aGUgY29tcG9uZW50IHByZXZlbnQgbW9kaWZpY2F0aW9ucywgaW5kZXBlbmRlbnQgb2YgcGVybWlzc2lvbnM/ICovXG5cdHJlYWRPbmx5PzogYm9vbGVhblxuXHQvKiogSXMgdGhlIGN1cnJlbnQgdXNlciBhbGxvd2VkIHRvIGRlbGV0ZSB0aGVpciBvd24gdXNlciByb2xlPyBPdmVycmlkZXMgdGhlIHZhbHVlIGZyb20gcmVkdXguICovXG5cdGNhbkRlbGV0ZVNlbGY/OiBib29sZWFuXG5cblx0LyoqIElmIG11bHRpcGxlIHJvbGVzIGFsbG93ZWQsIGVhY2ggcm9sZSBpcyBkaXNwbGF5ZWQgcGVyIHVzZXIsIG90aGVyd2lzZSBhIHNlbGVjdCBkcm9wZG93biBpcyBkaXNwbGF5ZWQuICovXG5cdGFsbG93TXVsdGlwbGVSb2xlcz86IGJvb2xlYW5cblx0LyoqIGRpc2FibGUgYWRkaW5nIG5ldyB1c2VyIHJvbGVzICovXG5cdGlzQWRkRGlzYWJsZWQ/OiBib29sZWFuXG5cdC8qKiBkaXNhYmxlIGFsbCB1c2VyIHJvbGUgc2VsZWN0IGRyb3Bkb3ducywgaWYgYW55ICovXG5cdGlzVXBkYXRlRGlzYWJsZWQ/OiBib29sZWFuXG5cdC8qKiBkaXNhYmxlIGFsbCB1c2VyIHJvbGUgZGVsZXRlIGJ1dHRvbnMgKi9cblx0aXNEZWxldGVEaXNhYmxlZD86IGJvb2xlYW5cblxuXHQvKiogVGhlIGFjdGl2aXR5IHRoZSBjdXJyZW50IHVzZXIgbXVzdCBoYXZlIGluIG9yZGVyIHRvIGFkZCwgdXBkYXRlLCBvciBkZWxldGUgdXNlciByb2xlcy4gKi9cblx0bW9kaWZ5VXNlclJvbGVBY3Rpdml0eU5hbWU6IHN0cmluZ1xuXHQvKiogKE9wdGlvbmFsKSBUaGUgYWN0aXZpdHkgdGhlIGN1cnJlbnQgdXNlciBtdXN0IGhhdmUgaW4gb3JkZXIgdG8gZGVsZXRlIHRoZWlyIG93biB1c2VyIHJvbGVzLCBpZiB0aGV5IGNhbm5vdCBtb2RpZnkgYWxsLiAqL1xuXHRkZWxldGVPd25Vc2VyUm9sZUFjdGl2aXR5TmFtZT86IHN0cmluZ1xuXHQvKiogVGhlIHJvbGUgdGhhdCB3aWxsIGJlIHNob3duIGZpcnN0IGluIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSByb2xlcy4gKi9cblx0ZGVmYXVsdFJvbGU6IHN0cmluZ1xuXHQvKiogKE9wdGlvbmFsKSBJZiBwcm92aWRlZCwgdGhlIGxhc3QgdXNlciByb2xlIHdpdGggdGhlIHJlcXVpcmVkIHJvbGUgd2lsbCBiZSBwcmV2ZW50ZWQgZnJvbSBiZWluZyByZW1vdmVkLiAqL1xuXHRyZXF1aXJlZFJvbGU/OiBzdHJpbmdcblx0LyoqIEEgZGljdGlvbmFyeSBvZiBhbGwgcG9zc2libGUgcm9sZXMgYW5kIHRoZWlyIGRlc2NyaXB0aW9ucy4gKi9cblx0cm9sZURlc2NyaXB0aW9uczogUm9sZURlc2NyaXB0aW9uc1xuXHQvKiogKE9wdGlvbmFsKSBsaXN0IG9mIHJvbGVzIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGFkZCBvcHRpb25zLiAqL1xuXHRhZGRSb2xlRXhjbHVkZUxpc3Q/OiBzdHJpbmdbXVxuXG5cdC8qKiAoT3B0aW9uYWwpIFRoZSBlbnRpdHkgdGhhdCBvd25zIHRoZSB1c2VyIHJvbGVzLCB3aGVuIHRhcmdldGluZyBFbnRpdHlVc2VyUm9sZXMgKi9cblx0ZW50aXR5PzogTW9kZWxcblx0LyoqIChPcHRpb25hbCkgQSB1c2VyLWZyaWVuZGx5IG5hbWUgZm9yIHRoZSBlbnRpdHkgdHlwZSwgd2hlbiB0YXJnZXRpbmcgRW50aXR5VXNlclJvbGVzICAqL1xuXHRlbnRpdHlOYW1lPzogc3RyaW5nXG5cdC8qKiAoT3B0aW9uYWwpIHNldCBpZiBgcmVuZGVyUmVtb3ZlVXNlclJvbGVEZXNjcmlwdGlvbmAgc2hvdWxkIGNoZWNrIGZvciByb3N0ZXIgc3luYyAqL1xuXHRleHRlcm5hbFByb3ZpZGVycz86IE1vZGVsQ29sbGVjdGlvbjxFeHRlcm5hbFByb3ZpZGVyPlxuXG5cdC8qKiAoT3B0aW9uYWwpIEFsbG93IHVzZXJzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gYmVpbmcgZGlzcGxheWVkIGluIHRoZSB0YWJsZSAqL1xuXHRmaWx0ZXJVc2Vycz86ICh1c2VyczogVXNlcldpdGhSb2xlc1tdKSA9PiBVc2VyV2l0aFJvbGVzW11cblx0LyoqIChPcHRpb25hbCkgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgdXNlciByb2xlcyBhcmUgYWRkZWQgKi9cblx0b25BZGQ/OiAodXNlclJvbGVzOiBVc2VyUm9sZVtdKSA9PiB2b2lkXG5cdC8qKiAoT3B0aW9uYWwpIENhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgdXNlciByb2xlIGlzIHVwZGF0ZWQgKi9cblx0b25VcGRhdGU/OiAodXNlclJvbGU6IFVzZXJSb2xlLCByb2xlOiBzdHJpbmcpID0+IHZvaWRcblx0LyoqIChPcHRpb25hbCkgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSB1c2VyIHJvbGUgaXMgcmVtb3ZlZCAqL1xuXHRvblJlbW92ZT86ICh1c2VyUm9sZTogVXNlclJvbGUpID0+IHZvaWRcblx0LyoqIChPcHRpb25hbCkgUmVuZGVyIGN1c3RvbSBjb21wb25lbnRzIGJldHdlZW4gdGhlIEFkZCBhbmQgVGFibGUgY29tcG9uZW50cyAqL1xuXHRyZW5kZXJUYWJsZURlc2NyaXB0aW9uPzogKGNhbk1vZGlmeT86IGJvb2xlYW4pID0+IFJlYWN0LkpTWC5FbGVtZW50XG5cdC8qKiAoT3B0aW9uYWwpIFJlbmRlciBjdXN0b20gY29tcG9uZW50cyBhdCB0aGUgc3RhcnQgb2YgdGhlIEFkZCBjb21wb25lbnQgKi9cblx0cmVuZGVyQWRkRGVzY3JpcHRpb24/OiAoZW50aXR5TmFtZT86IHN0cmluZykgPT4gUmVhY3QuSlNYLkVsZW1lbnRcblx0LyoqIChPcHRpb25hbCkgUHJvdmlkZSBjdXN0b20gdXNlci1mcmllbmRseSBuYW1lcyBmb3IgZGlzcGxheWVkIHJvbGVzICovXG5cdHRleHRGb3JSb2xlPzogKHJvbGU6IHN0cmluZykgPT4gc3RyaW5nXG5cdC8qKiAoT3B0aW9uYWwpIFByb3ZpZGUgY3VzdG9tIHVzZXItZnJpZW5kbHkgbmFtZXMgZm9yIGRpc3BsYXllZCByb2xlcyB0aGF0IHJlcXVpcmUgY3VzdG9tIGNhc2luZyAqL1xuXHRsb3dlcmNhc2VUZXh0Rm9yUm9sZT86IChyb2xlOiBzdHJpbmcpID0+IHN0cmluZ1xuXHQvKiogKE9wdGlvbmFsKSBQcm92aWRlIGN1c3RvbSB1c2VyLWZyaWVuZGx5IGFydGljbGVzIChcImFcIiB2cy4gXCJhblwiKSBmb3IgZGlzcGxheWVkIHJvbGVzICovXG5cdHNpbmd1bGFyQXJ0aWNsZUZvclJvbGU/OiAocm9sZTogc3RyaW5nKSA9PiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUm9sZXNQcm9wcyBleHRlbmRzIFVzZXJSb2xlc1JlZHV4UHJvcHMsIFVzZXJSb2xlc093blByb3BzIHt9XG5cbmludGVyZmFjZSBVc2VyUm9sZXNTdGF0ZSB7XG5cdHNvcnRlZFVzZXJzOiBVc2VyV2l0aFJvbGVzW11cblx0Ly8gYWRkXG5cdGFkZFVzZXJzSG9va0lkOiBzdHJpbmdcblx0aXNBZGRpbmc6IGJvb2xlYW5cblx0aWRlbnRpZmllcnNUb0FkZD86IHN0cmluZ1tdXG5cdHJvbGVGb3JBZGQ/OiBzdHJpbmdcblx0c2hvdWxkUmVzZXRBZGRGb3JtOiBib29sZWFuXG5cdC8vIHVwZGF0ZVxuXHR1c2VyUm9sZVRvVXBkYXRlPzogVXNlclJvbGVcblx0cm9sZUZvclVwZGF0ZT86IHN0cmluZ1xuXHRpc1VwZGF0aW5nOiBib29sZWFuXG5cdC8vIHJlbW92ZVxuXHRzaG91bGRTaG93UmVtb3ZlRGlhbG9nOiBib29sZWFuXG5cdHVzZXJSb2xlVG9SZW1vdmU/OiBVc2VyUm9sZVxuXHRpc1JlbW92aW5nOiBib29sZWFuXG5cdC8vIG1lc3NhZ2VzXG5cdHN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nXG5cdGV4aXN0aW5nTWVzc2FnZT86IHN0cmluZ1xuXHRibG9ja2VkTWVzc2FnZT86IHN0cmluZ1xuXHRmYWlsTWVzc2FnZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZEJ1c2luZXNzTW9kZWwge1xuXHRhZGRlZFVzZXJSb2xlczogVXNlclJvbGVbXVxuXHRleGlzdGluZ1VzZXJSb2xlczogVXNlclJvbGVbXVxuXHRibG9ja2VkVXNlclJvbGVzPzogVXNlclJvbGVbXVxuXHRpbnZhbGlkSWRlbnRpZmllcnM6IHN0cmluZ1tdXG5cdGFsbG93ZWREb21haW5zOiBzdHJpbmdcblx0aW52YWxpZERvbWFpbklkZW50aWZpZXJzOiBzdHJpbmdbXVxufVxuXG4vKipcbiAqIENvbXBvbmVudCB1c2VkIHRvIG1hbmFnZSBlaXRoZXIgVXNlclJvbGVzIChnbG9iYWwgcm9sZXMpIG9yIEVudGl0eVVzZXJSb2xlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVzZXJSb2xlcyBleHRlbmRzIENvbXBvbmVudDxVc2VyUm9sZXNQcm9wcywgVXNlclJvbGVzU3RhdGU+IHtcblx0c3RhdGU6IFVzZXJSb2xlc1N0YXRlID0ge1xuXHRcdHNvcnRlZFVzZXJzOiBbXSxcblx0XHQvLyBhZGRcblx0XHRhZGRVc2Vyc0hvb2tJZDogdXVpZHY0KCksXG5cdFx0aXNBZGRpbmc6IGZhbHNlLFxuXHRcdGlzVXBkYXRpbmc6IGZhbHNlLFxuXHRcdGlzUmVtb3Zpbmc6IGZhbHNlLFxuXHRcdHNob3VsZFJlc2V0QWRkRm9ybTogZmFsc2UsXG5cdFx0c2hvdWxkU2hvd1JlbW92ZURpYWxvZzogZmFsc2Vcblx0fVxuXG5cdGNvbXBvbmVudERpZE1vdW50KCkge1xuXHRcdHRoaXMuc2V0U3RhdGVGcm9tUHJvcHModGhpcy5wcm9wcylcblx0XHRjb25zdCB7IGFkZFVzZXJzSG9va0lkIH0gPSB0aGlzLnN0YXRlXG5cdFx0bm9TdG9yZUhvb2tzLnVucmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayhhZGRVc2Vyc0hvb2tJZClcblx0fVxuXG5cdGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IFVzZXJSb2xlc1Byb3BzKSB7XG5cdFx0Y29uc3QgeyBtb2RlbEFycmF5OiBwcmV2TW9kZWxBcnJheSwgbW9kZWxTdGF0dXM6IHByZXZNb2RlbFN0YXR1cyB9ID0gcHJldlByb3BzXG5cdFx0Y29uc3QgeyBtb2RlbEFycmF5LCBtb2RlbFN0YXR1cywgZW50aXR5TmFtZSB9ID0gdGhpcy5wcm9wc1xuXG5cdFx0aWYgKCFpc0VxdWFsKHByZXZNb2RlbEFycmF5LCBtb2RlbEFycmF5KSkge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzKVxuXHRcdH1cblxuXHRcdC8vIGxvYWRpbmcgZXJyb3Jcblx0XHRpZiAoXG5cdFx0XHQocHJldk1vZGVsU3RhdHVzID09PSBNT0RFTF9TVEFUVVMuVU5JTklUSUFMSVpFRCB8fCBwcmV2TW9kZWxTdGF0dXMgPT09IE1PREVMX1NUQVRVUy5MT0FESU5HKSAmJlxuXHRcdFx0bW9kZWxTdGF0dXMgPT09IE1PREVMX1NUQVRVUy5FUlJPUlxuXHRcdCkge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdGZhaWxNZXNzYWdlOiBgT29wcyEgVGhlcmUgd2FzIGFuIGVycm9yIGxvYWRpbmcke1xuXHRcdFx0XHRcdGVudGl0eU5hbWUgPyBgIHRoZSBwZW9wbGUgZm9yIHlvdXIgJHtlbnRpdHlOYW1lfWAgOiAnJ1xuXHRcdFx0XHR9LlxcclxcblBsZWFzZSB0cnkgYWdhaW4uYFxuXHRcdFx0fSlcblx0XHR9XG5cblx0XHQvLyB1cGRhdGluZ1xuXHRcdGlmIChwcmV2TW9kZWxTdGF0dXMgPT09IE1PREVMX1NUQVRVUy5VUERBVElORyAmJiBtb2RlbFN0YXR1cyAhPT0gTU9ERUxfU1RBVFVTLlVQREFUSU5HKSB7XG5cdFx0XHR0aGlzLmRpZFVwZGF0ZShtb2RlbFN0YXR1cyA9PT0gTU9ERUxfU1RBVFVTLlJFQURZKVxuXHRcdH1cblxuXHRcdC8vIHJlbW92aW5nXG5cdFx0aWYgKHByZXZNb2RlbFN0YXR1cyA9PT0gTU9ERUxfU1RBVFVTLkRFTEVUSU5HICYmIG1vZGVsU3RhdHVzICE9PSBNT0RFTF9TVEFUVVMuREVMRVRJTkcpIHtcblx0XHRcdHRoaXMuZGlkUmVtb3ZlKG1vZGVsU3RhdHVzID09PSBNT0RFTF9TVEFUVVMuUkVBRFkpXG5cdFx0fVxuXHR9XG5cblx0c2V0U3RhdGVGcm9tUHJvcHMgPSAocHJvcHM6IFVzZXJSb2xlc1Byb3BzKSA9PiB7XG5cdFx0Y29uc3QgeyBtb2RlbEFycmF5OiB1c2VyUm9sZXMsIGZpbHRlclVzZXJzIH0gPSBwcm9wc1xuXHRcdGNvbnN0IHVzZXJzV2l0aFJvbGVzID0gT2JqZWN0LnZhbHVlcyhcblx0XHRcdHVzZXJSb2xlcy5yZWR1Y2UoKHJlc3VsdDogRGljdGlvbmFyeTxVc2VyV2l0aFJvbGVzPiwgdXNlclJvbGU6IFVzZXJSb2xlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHVzZXJJZCA9IGdldFVzZXJJZCh1c2VyUm9sZSlcblx0XHRcdFx0bGV0IHVzZXJXaXRoUm9sZXMgPSByZXN1bHRbdXNlcklkXSBhcyBVc2VyV2l0aFJvbGVzIHwgdW5kZWZpbmVkXG5cdFx0XHRcdGlmICghdXNlcldpdGhSb2xlcykge1xuXHRcdFx0XHRcdHVzZXJXaXRoUm9sZXMgPSBjb252ZXJ0VG9Vc2VyV2l0aFJvbGVzKHVzZXJSb2xlKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVzZXJXaXRoUm9sZXMucm9sZXMucHVzaCh1c2VyUm9sZSlcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXN1bHRbdXNlcklkXSA9IHVzZXJXaXRoUm9sZXNcblx0XHRcdFx0cmV0dXJuIHJlc3VsdFxuXHRcdFx0fSwge30pXG5cdFx0KVxuXHRcdGNvbnN0IGZpbHRlcmVkVXNlcnMgPSBmaWx0ZXJVc2VycyA/IGZpbHRlclVzZXJzKHVzZXJzV2l0aFJvbGVzKSA6IHVzZXJzV2l0aFJvbGVzXG5cdFx0Y29uc3Qgc29ydGVkVXNlcnMgPSBmaWx0ZXJlZFVzZXJzLnNvcnQoc29ydEJ5TmFtZXMpXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRzb3J0ZWRVc2Vyc1xuXHRcdH0pXG5cdH1cblxuXHR0ZXh0Rm9yUm9sZSA9IChyb2xlOiBzdHJpbmcsIGxvd2VyY2FzZSA9IGZhbHNlKSA9PiB7XG5cdFx0aWYgKGxvd2VyY2FzZSAmJiB0aGlzLnByb3BzLmxvd2VyY2FzZVRleHRGb3JSb2xlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5wcm9wcy5sb3dlcmNhc2VUZXh0Rm9yUm9sZShyb2xlKVxuXHRcdH1cblx0XHRjb25zdCByb2xlU3RyaW5nID0gdGhpcy5wcm9wcy50ZXh0Rm9yUm9sZSA/IHRoaXMucHJvcHMudGV4dEZvclJvbGUocm9sZSkgOiB0ZXh0Rm9yQmFzZVJvbGUocm9sZSlcblx0XHRyZXR1cm4gbG93ZXJjYXNlID8gcm9sZVN0cmluZy50b0xvd2VyQ2FzZSgpIDogcm9sZVN0cmluZ1xuXHR9XG5cblx0c2luZ3VsYXJBcnRpY2xlRm9yUm9sZSA9IChyb2xlOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5wcm9wcy5zaW5ndWxhckFydGljbGVGb3JSb2xlXG5cdFx0XHQ/IHRoaXMucHJvcHMuc2luZ3VsYXJBcnRpY2xlRm9yUm9sZShyb2xlKVxuXHRcdFx0OiBzaW5ndWxhckFydGljbGVGb3JCYXNlUm9sZShyb2xlKVxuXHR9XG5cblx0Ly8jcmVnaW9uIEFkZCBVc2Vyc1xuXG5cdGFkZFVzZXJSb2xlcyA9IChpZGVudGlmaWVyczogc3RyaW5nW10sIHJvbGU6IHN0cmluZykgPT4ge1xuXHRcdGNvbnN0IHsgZW50aXR5IH0gPSB0aGlzLnByb3BzXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRpZGVudGlmaWVyc1RvQWRkOiBpZGVudGlmaWVycyxcblx0XHRcdHJvbGVGb3JBZGQ6IHJvbGUsXG5cdFx0XHRzdWNjZXNzTWVzc2FnZTogdW5kZWZpbmVkLFxuXHRcdFx0ZmFpbE1lc3NhZ2U6IHVuZGVmaW5lZCxcblx0XHRcdGV4aXN0aW5nTWVzc2FnZTogdW5kZWZpbmVkLFxuXHRcdFx0YmxvY2tlZE1lc3NhZ2U6IHVuZGVmaW5lZCxcblx0XHRcdHNob3VsZFJlc2V0QWRkRm9ybTogZmFsc2UsXG5cdFx0XHRpc0FkZGluZzogdHJ1ZVxuXHRcdH0pXG5cdFx0Y29uc3QgeyBhZGRVc2Vyc0hvb2tJZCB9ID0gdGhpcy5zdGF0ZVxuXHRcdG5vU3RvcmVIb29rcy5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGFkZFVzZXJzSG9va0lkLCAoZGF0YTogdW5rbm93bikgPT4ge1xuXHRcdFx0bm9TdG9yZUhvb2tzLnVucmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayhhZGRVc2Vyc0hvb2tJZClcblx0XHRcdHRoaXMuZGlkQWRkKGRhdGEpXG5cdFx0fSlcblx0XHRjb25zdCByb290TW9kZWxOYW1lID0gZ2V0Um9vdE1vZGVsTmFtZSh0aGlzLnByb3BzKVxuXHRcdGRpc3BhdGNoTW9kZWxGZXRjaFJlcXVlc3Qoe1xuXHRcdFx0bW9kZWxOYW1lOiBgJHtyb290TW9kZWxOYW1lID8gYCR7cm9vdE1vZGVsTmFtZX0uYCA6ICcnfWFkZFVzZXJSb2xlc2AsXG5cdFx0XHRwYXRoUGFyYW1zOiBlbnRpdHkgPyBbZW50aXR5LmlkXSA6IHVuZGVmaW5lZCxcblx0XHRcdGJvZHk6IHtcblx0XHRcdFx0ZW50aXR5SWQ6IGVudGl0eSA/IGVudGl0eS5pZCA6IHVuZGVmaW5lZCxcblx0XHRcdFx0aWRlbnRpZmllcnM6IGlkZW50aWZpZXJzLFxuXHRcdFx0XHRyb2xlTmFtZTogcm9sZVxuXHRcdFx0fSxcblx0XHRcdG5vU3RvcmU6IHRydWUsXG5cdFx0XHRndWlkOiBhZGRVc2Vyc0hvb2tJZFxuXHRcdH0pXG5cdH1cblxuXHRkaWRBZGQgPSAoZGF0YTogdW5rbm93bikgPT4ge1xuXHRcdGNvbnN0IHsgZW50aXR5TmFtZSwgb25BZGQsIG1vZGVsLCBtb2RlbE5hbWUsIHBhdGhQYXJhbXMgfSA9IHRoaXMucHJvcHNcblx0XHRjb25zdCB7IHJvbGVGb3JBZGQsIGlkZW50aWZpZXJzVG9BZGQgfSA9IHRoaXMuc3RhdGVcblx0XHRpZiAoIXJvbGVGb3JBZGQgfHwgIWlkZW50aWZpZXJzVG9BZGQgfHwgaWRlbnRpZmllcnNUb0FkZC5sZW5ndGggPT09IDApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignZGlkQWRkIHdhcyBjYWxsZWQgaW4gdGhlIGluY29ycmVjdCBzdGF0ZScpXG5cdFx0fVxuXG5cdFx0aWYgKGlzRmV0Y2hDYW5jZWxsZWREYXRhKGRhdGEpKSB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0c2hvdWxkUmVzZXRBZGRGb3JtOiB0cnVlLFxuXHRcdFx0XHRpc0FkZGluZzogZmFsc2UsXG5cdFx0XHRcdGlkZW50aWZpZXJzVG9BZGQ6IHVuZGVmaW5lZCxcblx0XHRcdFx0cm9sZUZvckFkZDogdW5kZWZpbmVkXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0aWYgKCFkYXRhIHx8IGlzRmV0Y2hFcnJvckRhdGEoZGF0YSkpIHtcblx0XHRcdGNvbnN0IGZhaWxNZXNzYWdlID0gYFRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgd2VyZSBub3QgYWRkZWQke1xuXHRcdFx0XHRlbnRpdHlOYW1lID8gYCB0byB5b3VyICR7ZW50aXR5TmFtZX1gIDogJydcblx0XHRcdH06XFxyXFxuJHtpZGVudGlmaWVyc1RvQWRkLmpvaW4oJ1xcclxcbicpfWBcblxuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdHNob3VsZFJlc2V0QWRkRm9ybTogdHJ1ZSxcblx0XHRcdFx0aXNBZGRpbmc6IGZhbHNlLFxuXHRcdFx0XHRpZGVudGlmaWVyc1RvQWRkOiB1bmRlZmluZWQsXG5cdFx0XHRcdHJvbGVGb3JBZGQ6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZmFpbE1lc3NhZ2Vcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cblx0XHRjb25zdCB7XG5cdFx0XHRhZGRlZFVzZXJSb2xlcyxcblx0XHRcdGV4aXN0aW5nVXNlclJvbGVzLFxuXHRcdFx0YmxvY2tlZFVzZXJSb2xlcyxcblx0XHRcdGludmFsaWRJZGVudGlmaWVycyxcblx0XHRcdGFsbG93ZWREb21haW5zLFxuXHRcdFx0aW52YWxpZERvbWFpbklkZW50aWZpZXJzXG5cdFx0fSA9IGRhdGEgYXMgQWRkQnVzaW5lc3NNb2RlbFxuXHRcdGNvbnN0IHJvbGVTdHJpbmcgPSB0aGlzLnRleHRGb3JSb2xlKHJvbGVGb3JBZGQsIHRydWUpXG5cdFx0Y29uc3Qgc2luZ3VsYXJBcnRpY2xlU3RyaW5nID0gdGhpcy5zaW5ndWxhckFydGljbGVGb3JSb2xlKHJvbGVGb3JBZGQpXG5cblx0XHRjb25zdCBhZGRlZE5hbWVzID1cblx0XHRcdGFkZGVkVXNlclJvbGVzLmxlbmd0aCA+IDBcblx0XHRcdFx0PyBhZGRlZFVzZXJSb2xlc1xuXHRcdFx0XHRcdFx0Lm1hcCgoYXU6IFVzZXIpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGAke2Rpc3BsYXlOYW1lKGF1KX0ke2F1LnVpZCA/IGAgKCR7YXUudWlkfSlgIDogJyd9YFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5qb2luKCdcXHJcXG4nKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXG5cdFx0Y29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBhZGRlZE5hbWVzXG5cdFx0XHQ/IGBUaGUgZm9sbG93aW5nICR7cm9sZVN0cmluZ30ke2FkZGVkVXNlclJvbGVzLmxlbmd0aCA+IDEgPyAncyB3ZXJlJyA6ICcgd2FzJ30gc3VjY2Vzc2Z1bGx5IGFkZGVkJHtcblx0XHRcdFx0XHRlbnRpdHlOYW1lID8gYCB0byB5b3VyICR7ZW50aXR5TmFtZX1gIDogJydcblx0XHRcdFx0fTpcXHJcXG4ke2FkZGVkTmFtZXN9YFxuXHRcdFx0OiB1bmRlZmluZWRcblxuXHRcdGNvbnN0IGV4aXN0aW5nTmFtZXMgPVxuXHRcdFx0ZXhpc3RpbmdVc2VyUm9sZXMubGVuZ3RoID4gMFxuXHRcdFx0XHQ/IGV4aXN0aW5nVXNlclJvbGVzLm1hcCgoZXU6IFVzZXIpID0+IGAke2Rpc3BsYXlOYW1lKGV1KX0ke2V1LnVpZCA/IGAgKCR7ZXUudWlkfSlgIDogJyd9YCkuam9pbignXFxyXFxuJylcblx0XHRcdFx0OiB1bmRlZmluZWRcblxuXHRcdGNvbnN0IGhhc011bHRpcGxlRXhpc3RpbmcgPSBleGlzdGluZ1VzZXJSb2xlcy5sZW5ndGggPiAxXG5cdFx0Y29uc3QgZXhpc3RpbmdNZXNzYWdlID0gZXhpc3RpbmdOYW1lc1xuXHRcdFx0PyBgVGhlIGZvbGxvd2luZyAke2hhc011bHRpcGxlRXhpc3RpbmcgPyAncGVvcGxlIHdlcmUnIDogJ3BlcnNvbiB3YXMnfSBhbHJlYWR5ICR7XG5cdFx0XHRcdFx0ZW50aXR5TmFtZVxuXHRcdFx0XHRcdFx0PyBgaW4geW91ciAke2VudGl0eU5hbWV9IGFzICR7aGFzTXVsdGlwbGVFeGlzdGluZyA/ICcnIDogYCR7c2luZ3VsYXJBcnRpY2xlU3RyaW5nfSBgfWBcblx0XHRcdFx0XHRcdDogaGFzTXVsdGlwbGVFeGlzdGluZ1xuXHRcdFx0XHRcdFx0XHQ/ICcnXG5cdFx0XHRcdFx0XHRcdDogYCR7c2luZ3VsYXJBcnRpY2xlU3RyaW5nfSBgXG5cdFx0XHRcdH0ke3JvbGVTdHJpbmd9JHtoYXNNdWx0aXBsZUV4aXN0aW5nID8gJ3MnIDogJyd9OlxcclxcbiR7ZXhpc3RpbmdOYW1lc31gXG5cdFx0XHQ6IHVuZGVmaW5lZFxuXG5cdFx0Y29uc3QgYmxvY2tlZE5hbWVzID1cblx0XHRcdCEhYmxvY2tlZFVzZXJSb2xlcyAmJiBibG9ja2VkVXNlclJvbGVzLmxlbmd0aCA+IDBcblx0XHRcdFx0PyBibG9ja2VkVXNlclJvbGVzLm1hcCgoZXU6IFVzZXIpID0+IGAke2Rpc3BsYXlOYW1lKGV1KX0ke2V1LnVpZCA/IGAgKCR7ZXUudWlkfSlgIDogJyd9YCkuam9pbignXFxyXFxuJylcblx0XHRcdFx0OiB1bmRlZmluZWRcblx0XHRjb25zdCBoYXNNdWx0aXBsZUJsb2NrZWQgPSAhIWJsb2NrZWRVc2VyUm9sZXMgJiYgYmxvY2tlZFVzZXJSb2xlcy5sZW5ndGggPiAxXG5cdFx0Y29uc3QgYmxvY2tlZE1lc3NhZ2UgPSBibG9ja2VkTmFtZXNcblx0XHRcdD8gYFRoZSBmb2xsb3dpbmcgJHtoYXNNdWx0aXBsZUJsb2NrZWQgPyAncGVvcGxlJyA6ICdwZXJzb24nfSBjb3VsZCBub3QgYmUgYWRkZWQgJHtcblx0XHRcdFx0XHRlbnRpdHlOYW1lID8gYHRvIHlvdXIgJHtlbnRpdHlOYW1lfWAgOiAnJ1xuXHRcdFx0XHR9IGFzICR7aGFzTXVsdGlwbGVCbG9ja2VkID8gJycgOiBgJHtzaW5ndWxhckFydGljbGVTdHJpbmd9IGB9JHtyb2xlU3RyaW5nfSR7XG5cdFx0XHRcdFx0aGFzTXVsdGlwbGVCbG9ja2VkID8gJ3MnIDogJydcblx0XHRcdFx0fSBiZWNhdXNlIHRoZXkgYWxyZWFkeSBoYXZlIGEgcm9sZTpcXHJcXG4ke2Jsb2NrZWROYW1lc31gXG5cdFx0XHQ6IHVuZGVmaW5lZFxuXG5cdFx0bGV0IGZhaWxNZXNzYWdlID1cblx0XHRcdGludmFsaWRJZGVudGlmaWVycy5sZW5ndGggPiAwXG5cdFx0XHRcdD8gYFRoZSBmb2xsb3dpbmcgJHtnZXREb21haW5JZGVudGlmaWVyVHlwZVBsdXJhbFN0cmluZygpfSBhcmUgaW52YWxpZDpcXHJcXG4ke2ludmFsaWRJZGVudGlmaWVycy5qb2luKFxuXHRcdFx0XHRcdFx0J1xcclxcbidcblx0XHRcdFx0XHQpfWBcblx0XHRcdFx0OiB1bmRlZmluZWRcblxuXHRcdGlmIChpbnZhbGlkRG9tYWluSWRlbnRpZmllcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0ZmFpbE1lc3NhZ2UgPSBgJHtcblx0XHRcdFx0ZmFpbE1lc3NhZ2UgPyBgJHtmYWlsTWVzc2FnZX1cXHJcXG5gIDogJydcblx0XHRcdH1UaGUgZm9sbG93aW5nICR7Z2V0RG9tYWluSWRlbnRpZmllclR5cGVQbHVyYWxTdHJpbmcoKX0gZG8gbm90IG1hdGNoIHRoZSBhbGxvd2VkIGRvbWFpbnMgb2YgJHthbGxvd2VkRG9tYWlucy5yZXBsYWNlKFxuXHRcdFx0XHQnLCcsXG5cdFx0XHRcdCcsICdcblx0XHRcdCl9OlxcclxcbiR7aW52YWxpZERvbWFpbklkZW50aWZpZXJzLmpvaW4oJ1xcclxcbicpfWBcblx0XHR9XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdHNob3VsZFJlc2V0QWRkRm9ybTogdHJ1ZSxcblx0XHRcdGlzQWRkaW5nOiBmYWxzZSxcblx0XHRcdGlkZW50aWZpZXJzVG9BZGQ6IHVuZGVmaW5lZCxcblx0XHRcdHJvbGVGb3JBZGQ6IHVuZGVmaW5lZCxcblx0XHRcdHN1Y2Nlc3NNZXNzYWdlLFxuXHRcdFx0ZXhpc3RpbmdNZXNzYWdlLFxuXHRcdFx0YmxvY2tlZE1lc3NhZ2UsXG5cdFx0XHRmYWlsTWVzc2FnZVxuXHRcdH0pXG5cblx0XHQvLyBvbmx5IHJlbG9hZCBpZiB3ZSBoYWQgc29tZSBzdWNjZXNzZnVsIGFkZHNcblx0XHRpZiAoYWRkZWROYW1lcykge1xuXHRcdFx0Ly8gdXBkYXRlIHJlZHV4IHdpdGggYWRkZWQgdXNlclJvbGVzXG5cdFx0XHRjb25zdCB1cGRhdGVkTW9kZWwgPSBjbG9uZURlZXAobW9kZWwpXG5cdFx0XHRhZGRlZFVzZXJSb2xlcy5mb3JFYWNoKHVzZXJSb2xlID0+ICh1cGRhdGVkTW9kZWxbdXNlclJvbGUuaWRdID0gY2xvbmVEZWVwKHVzZXJSb2xlKSkpXG5cblx0XHRcdC8vIGNyZWF0ZSBhIGR1bW15IGFjdGlvbiBhbmQgY2FsbCBgcHJlcGFyZUZldGNoYCB0byBnZXQgdGhlIGZpbmFsIGBtb2RlbFBhdGhgXG5cdFx0XHRjb25zdCB7IG1vZGVsUGF0aCB9ID0gcHJlcGFyZUZldGNoKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdFx0XHRcdG1vZGVsTmFtZSxcblx0XHRcdFx0XHRwYXRoUGFyYW1zXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGdldEVuZHBvaW50TWFwcGluZ3MoKVxuXHRcdFx0KVxuXHRcdFx0ZGlzcGF0Y2hBY3Rpb248TW9kZWxGZXRjaFJlc3VsdEFjdGlvbj4oe1xuXHRcdFx0XHR0eXBlOiBNT0RFTF9GRVRDSF9SRVNVTFRfQUNUSU9OX1RZUEUuRkVUQ0hfUkVTVUxUX1JFQ0VJVkVELFxuXHRcdFx0XHRtb2RlbFBhdGgsXG5cdFx0XHRcdGRhdGE6IHVwZGF0ZWRNb2RlbFxuXHRcdFx0fSlcblxuXHRcdFx0aWYgKG9uQWRkKSB7XG5cdFx0XHRcdG9uQWRkKGFkZGVkVXNlclJvbGVzKVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vI2VuZHJlZ2lvbiBBZGQgVXNlcnNcblxuXHQvLyNyZWdpb24gVXBkYXRlXG5cblx0dXBkYXRlVXNlclJvbGUgPSAodXNlclJvbGVUb1VwZGF0ZTogVXNlclJvbGUsIG5ld1JvbGU6IHN0cmluZykgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0aXNVcGRhdGluZzogdHJ1ZSxcblx0XHRcdHVzZXJSb2xlVG9VcGRhdGUsXG5cdFx0XHRyb2xlRm9yVXBkYXRlOiBuZXdSb2xlLFxuXHRcdFx0c3VjY2Vzc01lc3NhZ2U6IHVuZGVmaW5lZCxcblx0XHRcdGZhaWxNZXNzYWdlOiB1bmRlZmluZWRcblx0XHR9KVxuXHRcdHRoaXMucHJvcHMudXBkYXRlKHtcblx0XHRcdGlkOiB1c2VyUm9sZVRvVXBkYXRlLmlkLFxuXHRcdFx0Ym9keToge30sXG5cdFx0XHRxdWVyeVBhcmFtczoge1xuXHRcdFx0XHRyb2xlTmFtZTogbmV3Um9sZVxuXHRcdFx0fVxuXHRcdH0pXG5cdH1cblxuXHRkaWRVcGRhdGUgPSAoaXNTdWNjZXNzOiBib29sZWFuKSA9PiB7XG5cdFx0Y29uc3QgeyBlbnRpdHlOYW1lLCBvblVwZGF0ZSB9ID0gdGhpcy5wcm9wc1xuXHRcdGNvbnN0IHsgdXNlclJvbGVUb1VwZGF0ZSwgcm9sZUZvclVwZGF0ZSB9ID0gdGhpcy5zdGF0ZVxuXHRcdGlmICh1c2VyUm9sZVRvVXBkYXRlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignYGRpZFVwZGF0ZWAgd2FzIGNhbGxlZCB3aXRob3V0IHNldHRpbmcgYHVzZXJSb2xlVG9VcGRhdGVgIGluIHN0YXRlJylcblx0XHR9XG5cdFx0aWYgKHJvbGVGb3JVcGRhdGUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdgZGlkVXBkYXRlYCB3YXMgY2FsbGVkIHdpdGhvdXQgc2V0dGluZyBgcm9sZUZvclVwZGF0ZWAgaW4gc3RhdGUnKVxuXHRcdH1cblxuXHRcdGNvbnN0IG5hbWUgPSBkaXNwbGF5TmFtZSh1c2VyUm9sZVRvVXBkYXRlKVxuXHRcdGNvbnN0IHJvbGVTdHJpbmcgPSB0aGlzLnRleHRGb3JSb2xlKHJvbGVGb3JVcGRhdGUsIHRydWUpXG5cdFx0Y29uc3Qgc2luZ3VsYXJBcnRpY2xlU3RyaW5nID0gdGhpcy5zaW5ndWxhckFydGljbGVGb3JSb2xlKHJvbGVGb3JVcGRhdGUpXG5cblx0XHRpZiAoIWlzU3VjY2Vzcykge1xuXHRcdFx0Y29uc3QgZmFpbE1lc3NhZ2UgPSBgT29wcyEgVGhlcmUgd2FzIGFuIGVycm9yIHVwZGF0aW5nICR7bmFtZX0gdG8gJHtzaW5ndWxhckFydGljbGVTdHJpbmd9ICR7cm9sZVN0cmluZ30ke1xuXHRcdFx0XHRlbnRpdHlOYW1lID8gYCBpbiB5b3VyICR7ZW50aXR5TmFtZX1gIDogJydcblx0XHRcdH0uIFBsZWFzZSB0cnkgYWdhaW4uYFxuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdGlzVXBkYXRpbmc6IGZhbHNlLFxuXHRcdFx0XHR1c2VyUm9sZVRvVXBkYXRlOiB1bmRlZmluZWQsXG5cdFx0XHRcdHJvbGVGb3JVcGRhdGU6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZmFpbE1lc3NhZ2Vcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cblx0XHRjb25zdCBzdWNjZXNzTWVzc2FnZSA9IGAke25hbWV9IHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZCB0byAke3Npbmd1bGFyQXJ0aWNsZVN0cmluZ30gJHtyb2xlU3RyaW5nfSR7XG5cdFx0XHRlbnRpdHlOYW1lID8gYCBpbiB5b3VyICR7ZW50aXR5TmFtZX1gIDogJydcblx0XHR9LmBcblxuXHRcdGlmIChvblVwZGF0ZSkge1xuXHRcdFx0b25VcGRhdGUodXNlclJvbGVUb1VwZGF0ZSwgcm9sZUZvclVwZGF0ZSlcblx0XHR9XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdGlzVXBkYXRpbmc6IGZhbHNlLFxuXHRcdFx0dXNlclJvbGVUb1VwZGF0ZTogdW5kZWZpbmVkLFxuXHRcdFx0cm9sZUZvclVwZGF0ZTogdW5kZWZpbmVkLFxuXHRcdFx0c3VjY2Vzc01lc3NhZ2Vcblx0XHR9KVxuXHR9XG5cblx0Ly8jZW5kcmVnaW9uIFVwZGF0ZVxuXG5cdC8vI3JlZ2lvbiBSZW1vdmUgVXNlclxuXG5cdGFsZXJ0UmVtb3ZlVXNlclJvbGUgPSAodXNlclJvbGVUb1JlbW92ZTogVXNlclJvbGUpID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdHVzZXJSb2xlVG9SZW1vdmUsXG5cdFx0XHRzaG91bGRTaG93UmVtb3ZlRGlhbG9nOiB0cnVlXG5cdFx0fSlcblx0fVxuXG5cdHJlbW92ZVVzZXJSb2xlVGl0bGUgPSAocm9sZUZvclJlbW92ZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIGBSZW1vdmUgJHt0aGlzLnRleHRGb3JSb2xlKHJvbGVGb3JSZW1vdmUpfWBcblx0fVxuXG5cdHJlbmRlclJlbW92ZVVzZXJSb2xlRGVzY3JpcHRpb24gPSAodXNlclJvbGVUb1JlbW92ZTogVXNlclJvbGUsIHdhcm5pbmc/OiBSZWFjdC5KU1guRWxlbWVudCkgPT4ge1xuXHRcdGNvbnN0IHsgZW50aXR5LCBleHRlcm5hbFByb3ZpZGVycyB9ID0gdGhpcy5wcm9wc1xuXHRcdGNvbnN0IGdyb3VwID0gZW50aXR5ICYmICdleHRlcm5hbEdyb3VwcycgaW4gZW50aXR5ID8gKGVudGl0eSBhcyBHcm91cCkgOiB1bmRlZmluZWRcblxuXHRcdGNvbnN0IHJvbGVTdHJpbmcgPSB0aGlzLnRleHRGb3JSb2xlKHVzZXJSb2xlVG9SZW1vdmUucm9sZSwgdHJ1ZSlcblx0XHRjb25zdCBzaW5ndWxhckFydGljbGVTdHJpbmcgPSB0aGlzLnNpbmd1bGFyQXJ0aWNsZUZvclJvbGUodXNlclJvbGVUb1JlbW92ZS5yb2xlKVxuXHRcdGNvbnN0IGRlZmF1bHRXYXJuaW5nID0gd2FybmluZyA/PyAoXG5cdFx0XHQ8cCBjbGFzc05hbWU9XCJtYTBcIj5cblx0XHRcdFx0QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIDxzdHJvbmc+cmVtb3ZlIHtkaXNwbGF5TmFtZSh1c2VyUm9sZVRvUmVtb3ZlKX08L3N0cm9uZz4gYXN7JyAnfVxuXHRcdFx0XHR7c2luZ3VsYXJBcnRpY2xlU3RyaW5nfSB7cm9sZVN0cmluZ30/XG5cdFx0XHQ8L3A+XG5cdFx0KVxuXG5cdFx0Y29uc3QgZXh0ZXJuYWxHcm91cHNUb1JlbW92ZSA9IGdyb3VwPy5leHRlcm5hbEdyb3Vwcy5maWx0ZXIoZWcgPT4gZWcudXNlcklkID09PSB1c2VyUm9sZVRvUmVtb3ZlLmlkKVxuXG5cdFx0aWYgKFxuXHRcdFx0IWV4dGVybmFsR3JvdXBzVG9SZW1vdmUgfHxcblx0XHRcdGV4dGVybmFsR3JvdXBzVG9SZW1vdmUubGVuZ3RoID09PSAwIHx8XG5cdFx0XHR1c2VyUm9sZVRvUmVtb3ZlLnJvbGUgIT09IEJBU0VfUk9MRS5HUk9VUF9PV05FUlxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIGRlZmF1bHRXYXJuaW5nXG5cdFx0fVxuXG5cdFx0Y29uc3QgZXh0ZXJuYWxHcm91cHNUb1JlbW92ZVdpdGhSb3N0ZXJTeW5jID0gZXh0ZXJuYWxHcm91cHNUb1JlbW92ZS5maWx0ZXIoXG5cdFx0XHRlZyA9PiBleHRlcm5hbFByb3ZpZGVycz8uW2VnLmV4dGVybmFsUHJvdmlkZXJJZF0/LnJvc3RlclN5bmNFbmFibGVkXG5cdFx0KVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXY+XG5cdFx0XHRcdDxwPlxuXHRcdFx0XHRcdFRoZSBmb2xsb3dpbmcgY291cnNlIHNlY3Rpb25zIHdpbGwgYmUgPHN0cm9uZz5kaXNjb25uZWN0ZWQ8L3N0cm9uZz4ueycgJ31cblx0XHRcdFx0XHR7ZXh0ZXJuYWxHcm91cHNUb1JlbW92ZVdpdGhSb3N0ZXJTeW5jLmxlbmd0aCA+IDAgJiYgKFxuXHRcdFx0XHRcdFx0PHNwYW4+XG5cdFx0XHRcdFx0XHRcdEFueSBhdXRvbWF0aWNhbGx5IGFkZGVkIHN0dWRlbnRzIHdpbGwgYmUgPHN0cm9uZz5yZW1vdmVkPC9zdHJvbmc+LlxuXHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdDwvcD5cblx0XHRcdFx0PHVsPlxuXHRcdFx0XHRcdHtleHRlcm5hbEdyb3Vwc1RvUmVtb3ZlLm1hcChlZyA9PiAoXG5cdFx0XHRcdFx0XHQ8bGkga2V5PXtlZy5pZH0+e2VnLmRlc2NyaXB0aW9ufTwvbGk+XG5cdFx0XHRcdFx0KSl9XG5cdFx0XHRcdDwvdWw+XG5cdFx0XHRcdHtkZWZhdWx0V2FybmluZ31cblx0XHRcdDwvZGl2PlxuXHRcdClcblx0fVxuXG5cdHJlbW92ZVVzZXJSb2xlID0gKHNob3VsZFJlbW92ZTogYm9vbGVhbikgPT4ge1xuXHRcdGNvbnN0IHsgdXNlclJvbGVUb1JlbW92ZSB9ID0gdGhpcy5zdGF0ZVxuXHRcdGlmICh1c2VyUm9sZVRvUmVtb3ZlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignYHJlbW92ZVVzZXJgIHdhcyBjYWxsZWQgd2l0aG91dCBzZXR0aW5nIGB1c2VyUm9sZVRvUmVtb3ZlYCBpbiBzdGF0ZScpXG5cdFx0fVxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0aXNSZW1vdmluZzogc2hvdWxkUmVtb3ZlLFxuXHRcdFx0c2hvdWxkU2hvd1JlbW92ZURpYWxvZzogZmFsc2UsXG5cdFx0XHRzdWNjZXNzTWVzc2FnZTogdW5kZWZpbmVkLFxuXHRcdFx0ZmFpbE1lc3NhZ2U6IHVuZGVmaW5lZCxcblx0XHRcdC8vIGNsZWFyIGlmIGNhbmNlbGxlZFxuXHRcdFx0dXNlclJvbGVUb1JlbW92ZTogc2hvdWxkUmVtb3ZlID8gdXNlclJvbGVUb1JlbW92ZSA6IHVuZGVmaW5lZFxuXHRcdH0pXG5cdFx0aWYgKCFzaG91bGRSZW1vdmUpIHtcblx0XHRcdHJldHVyblxuXHRcdH1cblx0XHR0aGlzLnByb3BzLmRlbGV0ZSh7XG5cdFx0XHRpZDogdXNlclJvbGVUb1JlbW92ZS5pZFxuXHRcdH0pXG5cdH1cblxuXHRkaWRSZW1vdmUgPSAoaXNTdWNjZXNzOiBib29sZWFuKSA9PiB7XG5cdFx0Y29uc3QgeyBlbnRpdHlOYW1lLCBvblJlbW92ZSB9ID0gdGhpcy5wcm9wc1xuXHRcdGNvbnN0IHsgdXNlclJvbGVUb1JlbW92ZSB9ID0gdGhpcy5zdGF0ZVxuXHRcdGlmICh1c2VyUm9sZVRvUmVtb3ZlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignYGRpZFJlbW92ZWAgd2FzIGNhbGxlZCB3aXRob3V0IHNldHRpbmcgYHVzZXJSb2xlVG9SZW1vdmVgIGluIHN0YXRlJylcblx0XHR9XG5cblx0XHRjb25zdCBuYW1lID0gZGlzcGxheU5hbWUodXNlclJvbGVUb1JlbW92ZSlcblx0XHRpZiAoIWlzU3VjY2Vzcykge1xuXHRcdFx0Y29uc3QgZmFpbE1lc3NhZ2UgPSBgT29wcyEgVGhlcmUgd2FzIGFuIGVycm9yIHJlbW92aW5nICR7bmFtZX0ke1xuXHRcdFx0XHRlbnRpdHlOYW1lID8gYCBmcm9tIHlvdXIgJHtlbnRpdHlOYW1lfWAgOiAnJ1xuXHRcdFx0fS4gUGxlYXNlIHRyeSBhZ2Fpbi5gXG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0aXNSZW1vdmluZzogZmFsc2UsXG5cdFx0XHRcdHVzZXJSb2xlVG9SZW1vdmU6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZmFpbE1lc3NhZ2Vcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cblx0XHRjb25zdCBzdWNjZXNzTWVzc2FnZSA9IGAke25hbWV9IHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZCR7ZW50aXR5TmFtZSA/IGAgZnJvbSB5b3VyICR7ZW50aXR5TmFtZX1gIDogJyd9LmBcblxuXHRcdGlmIChvblJlbW92ZSkge1xuXHRcdFx0b25SZW1vdmUodXNlclJvbGVUb1JlbW92ZSlcblx0XHR9XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdGlzUmVtb3Zpbmc6IGZhbHNlLFxuXHRcdFx0dXNlclJvbGVUb1JlbW92ZTogdW5kZWZpbmVkLFxuXHRcdFx0c3VjY2Vzc01lc3NhZ2Vcblx0XHR9KVxuXHR9XG5cblx0Ly8jZW5kcmVnaW9uIFJlbW92ZSBVc2VyXG5cblx0cmVuZGVyKCkge1xuXHRcdGNvbnN0IHtcblx0XHRcdG1vZGVsU3RhdHVzLFxuXHRcdFx0Y2FuTW9kaWZ5LFxuXHRcdFx0cmVhZE9ubHksXG5cdFx0XHRjYW5EZWxldGVTZWxmLFxuXHRcdFx0YWxsb3dNdWx0aXBsZVJvbGVzLFxuXHRcdFx0aXNBZGREaXNhYmxlZCxcblx0XHRcdGlzVXBkYXRlRGlzYWJsZWQsXG5cdFx0XHRpc0RlbGV0ZURpc2FibGVkLFxuXHRcdFx0ZGVmYXVsdFJvbGUsXG5cdFx0XHRyZXF1aXJlZFJvbGUsXG5cdFx0XHRyb2xlRGVzY3JpcHRpb25zLFxuXHRcdFx0YWRkUm9sZUV4Y2x1ZGVMaXN0LFxuXHRcdFx0ZW50aXR5TmFtZSxcblx0XHRcdHJlbmRlclRhYmxlRGVzY3JpcHRpb24sXG5cdFx0XHRyZW5kZXJBZGREZXNjcmlwdGlvblxuXHRcdH0gPSB0aGlzLnByb3BzXG5cdFx0Y29uc3Qge1xuXHRcdFx0c29ydGVkVXNlcnMsXG5cdFx0XHRpc0FkZGluZyxcblx0XHRcdGlzVXBkYXRpbmcsXG5cdFx0XHRpc1JlbW92aW5nLFxuXHRcdFx0c2hvdWxkUmVzZXRBZGRGb3JtLFxuXHRcdFx0c2hvdWxkU2hvd1JlbW92ZURpYWxvZyxcblx0XHRcdHVzZXJSb2xlVG9VcGRhdGUsXG5cdFx0XHR1c2VyUm9sZVRvUmVtb3ZlLFxuXHRcdFx0c3VjY2Vzc01lc3NhZ2UsXG5cdFx0XHRleGlzdGluZ01lc3NhZ2UsXG5cdFx0XHRibG9ja2VkTWVzc2FnZSxcblx0XHRcdGZhaWxNZXNzYWdlXG5cdFx0fSA9IHRoaXMuc3RhdGVcblxuXHRcdGNvbnN0IGFkZGFibGVSb2xlRGVzY3JpcHRpb25zID0gYWRkUm9sZUV4Y2x1ZGVMaXN0XG5cdFx0XHQ/IHBpY2tCeShyb2xlRGVzY3JpcHRpb25zLCAoXywga2V5KSA9PiAhYWRkUm9sZUV4Y2x1ZGVMaXN0LmluY2x1ZGVzKGtleSkpXG5cdFx0XHQ6IHJvbGVEZXNjcmlwdGlvbnNcblx0XHRjb25zdCByb2xlcyA9IE9iamVjdC5rZXlzKHJvbGVEZXNjcmlwdGlvbnMpXG5cdFx0Y29uc3Qgc2hvdWxkUmVuZGVyQXNNdXRhYmxlID0gIXJlYWRPbmx5ICYmIGNhbk1vZGlmeVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdHshIXN1Y2Nlc3NNZXNzYWdlICYmIChcblx0XHRcdFx0XHQ8QWxlcnRXaXRoSWNvblxuXHRcdFx0XHRcdFx0aWQ9XCJzdWNjZXNzTWVzc2FnZUFsZXJ0XCJcblx0XHRcdFx0XHRcdHZhcmlhbnQ9XCJzdWNjZXNzXCJcblx0XHRcdFx0XHRcdGRpc21pc3NpYmxlXG5cdFx0XHRcdFx0XHRvbkNsb3NlPXsoKSA9PlxuXHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdFx0XHRzdWNjZXNzTWVzc2FnZTogdW5kZWZpbmVkXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9PlxuXHRcdFx0XHRcdFx0PHAgY2xhc3NOYW1lPVwicHJlLXdyYXBcIj57c3VjY2Vzc01lc3NhZ2V9PC9wPlxuXHRcdFx0XHRcdDwvQWxlcnRXaXRoSWNvbj5cblx0XHRcdFx0KX1cblx0XHRcdFx0eyEhZXhpc3RpbmdNZXNzYWdlICYmIChcblx0XHRcdFx0XHQ8QWxlcnRXaXRoSWNvblxuXHRcdFx0XHRcdFx0aWQ9XCJleGlzdGluZ01lc3NhZ2VBbGVydFwiXG5cdFx0XHRcdFx0XHR2YXJpYW50PVwiaW5mb1wiXG5cdFx0XHRcdFx0XHRkaXNtaXNzaWJsZVxuXHRcdFx0XHRcdFx0b25DbG9zZT17KCkgPT5cblx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0ZXhpc3RpbmdNZXNzYWdlOiB1bmRlZmluZWRcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH0+XG5cdFx0XHRcdFx0XHQ8cCBjbGFzc05hbWU9XCJwcmUtd3JhcFwiPntleGlzdGluZ01lc3NhZ2V9PC9wPlxuXHRcdFx0XHRcdDwvQWxlcnRXaXRoSWNvbj5cblx0XHRcdFx0KX1cblx0XHRcdFx0eyEhYmxvY2tlZE1lc3NhZ2UgJiYgKFxuXHRcdFx0XHRcdDxBbGVydFdpdGhJY29uXG5cdFx0XHRcdFx0XHRpZD1cImJsb2NrZWRNZXNzYWdlQWxlcnRcIlxuXHRcdFx0XHRcdFx0dmFyaWFudD1cIndhcm5pbmdcIlxuXHRcdFx0XHRcdFx0ZGlzbWlzc2libGVcblx0XHRcdFx0XHRcdG9uQ2xvc2U9eygpID0+XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdGJsb2NrZWRNZXNzYWdlOiB1bmRlZmluZWRcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH0+XG5cdFx0XHRcdFx0XHQ8cCBjbGFzc05hbWU9XCJwcmUtd3JhcFwiPntibG9ja2VkTWVzc2FnZX08L3A+XG5cdFx0XHRcdFx0PC9BbGVydFdpdGhJY29uPlxuXHRcdFx0XHQpfVxuXHRcdFx0XHR7ISFmYWlsTWVzc2FnZSAmJiAoXG5cdFx0XHRcdFx0PEFsZXJ0V2l0aEljb25cblx0XHRcdFx0XHRcdGlkPVwiZmFpbE1lc3NhZ2VBbGVydFwiXG5cdFx0XHRcdFx0XHR2YXJpYW50PVwid2FybmluZ1wiXG5cdFx0XHRcdFx0XHRkaXNtaXNzaWJsZVxuXHRcdFx0XHRcdFx0b25DbG9zZT17KCkgPT5cblx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0ZmFpbE1lc3NhZ2U6IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fT5cblx0XHRcdFx0XHRcdDxwIGNsYXNzTmFtZT1cInByZS13cmFwXCI+e2ZhaWxNZXNzYWdlfTwvcD5cblx0XHRcdFx0XHQ8L0FsZXJ0V2l0aEljb24+XG5cdFx0XHRcdCl9XG5cdFx0XHRcdHtzaG91bGRSZW5kZXJBc011dGFibGUgJiYgKFxuXHRcdFx0XHRcdDxVc2VyUm9sZXNBZGRcblx0XHRcdFx0XHRcdGlkPVwiZW50aXR5VXNlclJvbGVzQWRkXCJcblx0XHRcdFx0XHRcdGRpc2FibGVkPXtpc0FkZERpc2FibGVkfVxuXHRcdFx0XHRcdFx0ZW50aXR5TmFtZT17ZW50aXR5TmFtZX1cblx0XHRcdFx0XHRcdGRlZmF1bHRSb2xlPXtkZWZhdWx0Um9sZX1cblx0XHRcdFx0XHRcdHJvbGVEZXNjcmlwdGlvbnM9e2FkZGFibGVSb2xlRGVzY3JpcHRpb25zfVxuXHRcdFx0XHRcdFx0cmVuZGVyQWRkRGVzY3JpcHRpb249e3JlbmRlckFkZERlc2NyaXB0aW9ufVxuXHRcdFx0XHRcdFx0dGV4dEZvclJvbGU9e3RoaXMudGV4dEZvclJvbGV9XG5cdFx0XHRcdFx0XHRpc0FkZGluZ1VzZXJzVG9Sb2xlPXtpc0FkZGluZ31cblx0XHRcdFx0XHRcdHNob3VsZFJlc2V0PXtzaG91bGRSZXNldEFkZEZvcm19XG5cdFx0XHRcdFx0XHRhZGRVc2VyUm9sZXM9e3RoaXMuYWRkVXNlclJvbGVzfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCl9XG5cdFx0XHRcdHshIXJlbmRlclRhYmxlRGVzY3JpcHRpb24gJiYgcmVuZGVyVGFibGVEZXNjcmlwdGlvbihzaG91bGRSZW5kZXJBc011dGFibGUpfVxuXHRcdFx0XHQ8Um93IGNsYXNzTmFtZT1cIm10M1wiPlxuXHRcdFx0XHRcdDxDb2wgeHM9ezEyfT5cblx0XHRcdFx0XHRcdHttb2RlbFN0YXR1cyA9PT0gTU9ERUxfU1RBVFVTLkxPQURJTkcgPyAoXG5cdFx0XHRcdFx0XHRcdDxMb2FkaW5nIC8+XG5cdFx0XHRcdFx0XHQpIDogc29ydGVkVXNlcnMubGVuZ3RoID4gMCA/IChcblx0XHRcdFx0XHRcdFx0PFVzZXJSb2xlc0NvbnRleHQuUHJvdmlkZXJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17e1xuXHRcdFx0XHRcdFx0XHRcdFx0aXNVcGRhdGVEaXNhYmxlZDogaXNVcGRhdGVEaXNhYmxlZCB8fCByZWFkT25seSxcblx0XHRcdFx0XHRcdFx0XHRcdGlzRGVsZXRlRGlzYWJsZWQ6IGlzRGVsZXRlRGlzYWJsZWQgfHwgcmVhZE9ubHksXG5cdFx0XHRcdFx0XHRcdFx0XHRjYW5Nb2RpZnk6IHNob3VsZFJlbmRlckFzTXV0YWJsZSxcblx0XHRcdFx0XHRcdFx0XHRcdGNhbkRlbGV0ZVNlbGYsXG5cdFx0XHRcdFx0XHRcdFx0XHRhbGxvd011bHRpcGxlUm9sZXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2xlcyxcblx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkUm9sZSxcblx0XHRcdFx0XHRcdFx0XHRcdHRleHRGb3JSb2xlOiB0aGlzLnRleHRGb3JSb2xlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlclJvbGVUb1VwZGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdGlzVXBkYXRpbmcsXG5cdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVVc2VyUm9sZTogdGhpcy51cGRhdGVVc2VyUm9sZSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJSb2xlVG9SZW1vdmUsXG5cdFx0XHRcdFx0XHRcdFx0XHRpc1JlbW92aW5nLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVtb3ZlVXNlclJvbGU6IHRoaXMuYWxlcnRSZW1vdmVVc2VyUm9sZVxuXHRcdFx0XHRcdFx0XHRcdH19PlxuXHRcdFx0XHRcdFx0XHRcdDxVc2VyUm9sZXNUYWJsZSBpZD1cImVudGl0eVVzZXJSb2xlc1RhYmxlXCIgdXNlcnM9e3NvcnRlZFVzZXJzfSAvPlxuXHRcdFx0XHRcdFx0XHQ8L1VzZXJSb2xlc0NvbnRleHQuUHJvdmlkZXI+XG5cdFx0XHRcdFx0XHQpIDogbnVsbH1cblx0XHRcdFx0XHQ8L0NvbD5cblx0XHRcdFx0PC9Sb3c+XG5cdFx0XHRcdHshIXVzZXJSb2xlVG9SZW1vdmUgJiYgKFxuXHRcdFx0XHRcdDxBbGVydERpYWxvZ1xuXHRcdFx0XHRcdFx0aWQ9XCJyZW1vdmVVc2VyQWxlcnRcIlxuXHRcdFx0XHRcdFx0aXNPcGVuPXtzaG91bGRTaG93UmVtb3ZlRGlhbG9nfVxuXHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVtb3ZlVXNlclJvbGVUaXRsZSh1c2VyUm9sZVRvUmVtb3ZlLnJvbGUpfVxuXHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249e3RoaXMucmVuZGVyUmVtb3ZlVXNlclJvbGVEZXNjcmlwdGlvbih1c2VyUm9sZVRvUmVtb3ZlKX1cblx0XHRcdFx0XHRcdG9uRGVzdHJveT17KCkgPT4gdGhpcy5yZW1vdmVVc2VyUm9sZSh0cnVlKX1cblx0XHRcdFx0XHRcdGRlc3Ryb3lUZXh0PVwiWWVzLCByZW1vdmUgdGhlIHVzZXJcIlxuXHRcdFx0XHRcdFx0b25DYW5jZWw9eygpID0+IHRoaXMucmVtb3ZlVXNlclJvbGUoZmFsc2UpfVxuXHRcdFx0XHRcdFx0Y2FuY2VsVGV4dD1cIk5vLCBJIGNoYW5nZWQgbXkgbWluZFwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0KX1cblx0XHRcdDwvPlxuXHRcdClcblx0fVxufVxuXG5leHBvcnQgY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHN0YXRlOiBCYXNlUmVkdXhTdGF0ZSwgb3duUHJvcHM6IFVzZXJSb2xlc093blByb3BzKTogVXNlclJvbGVzUmVkdXhQcm9wcyA9PiB7XG5cdGNvbnN0IGNhbk1vZGlmeUdsb2JhbGx5ID0gY2FuUGVyZm9ybUFjdGl2aXR5R2xvYmFsbHkob3duUHJvcHMubW9kaWZ5VXNlclJvbGVBY3Rpdml0eU5hbWUsIGRlZmF1bHRPcHRpb25zKHN0YXRlKSlcblxuXHRjb25zdCBjYW5Nb2RpZnkgPVxuXHRcdGNhbk1vZGlmeUdsb2JhbGx5IHx8XG5cdFx0KG93blByb3BzLmVudGl0eVxuXHRcdFx0PyBjYW5QZXJmb3JtQWN0aXZpdHlPbkVudGl0eShvd25Qcm9wcy5tb2RpZnlVc2VyUm9sZUFjdGl2aXR5TmFtZSwgZGVmYXVsdE9wdGlvbnMoc3RhdGUsIG93blByb3BzLCAnZW50aXR5JykpXG5cdFx0XHQ6IGZhbHNlKVxuXG5cdHJldHVybiB7XG5cdFx0Y2FuTW9kaWZ5LFxuXHRcdGNhbkRlbGV0ZVNlbGY6XG5cdFx0XHRjYW5Nb2RpZnkgfHxcblx0XHRcdChvd25Qcm9wcy5lbnRpdHkgJiYgb3duUHJvcHMuZGVsZXRlT3duVXNlclJvbGVBY3Rpdml0eU5hbWVcblx0XHRcdFx0PyBjYW5QZXJmb3JtQWN0aXZpdHlPbkVudGl0eShcblx0XHRcdFx0XHRcdG93blByb3BzLmRlbGV0ZU93blVzZXJSb2xlQWN0aXZpdHlOYW1lLFxuXHRcdFx0XHRcdFx0ZGVmYXVsdE9wdGlvbnMoc3RhdGUsIG93blByb3BzLCAnZW50aXR5Jylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdDogZmFsc2UpXG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMpKFVzZXJSb2xlcylcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxJQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxTQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxZQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxjQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxRQUFBLEdBQUFkLE9BQUE7QUFLQSxJQUFBZSxZQUFBLEdBQUFmLE9BQUE7QUFZQSxJQUFBZ0IsYUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixVQUFBLEdBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLGlCQUFBLEdBQUFsQixPQUFBO0FBQ0EsSUFBQW1CLGVBQUEsR0FBQW5CLE9BQUE7QUFDQSxJQUFBb0IsTUFBQSxHQUFBcEIsT0FBQTtBQUNBLElBQUFxQixLQUFBLEdBQUFyQixPQUFBO0FBQ0EsSUFBQXNCLEtBQUEsR0FBQXRCLE9BQUE7QUFDQSxJQUFBdUIsU0FBQSxHQUFBdkIsT0FBQTtBQUNBLElBQUF3QixjQUFBLEdBQUF4QixPQUFBO0FBRUEsSUFBQXlCLFFBQUEsR0FBQXpCLE9BQUE7QUFBNEMsSUFBQTBCLFdBQUEsR0FBQTFCLE9BQUE7QUFBQSxTQUFBRSx3QkFBQXlCLENBQUEsRUFB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
550
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX3JlYWN0UmVkdXgiLCJfdXVpZCIsIl9BbGVydERpYWxvZyIsIl9Mb2FkaW5nIiwiX0FkZCIsIl9UYWJsZSIsIl9jb25zdGFudHMiLCJfYmFzZVJvbGUiLCJfbW9kZWxTdGF0dXMiLCJfYWN0aW9uQ3JlYXRvciIsIl9hY3Rpb25zIiwiX25vU3RvcmVTYWdhIiwiX2Jhc2VBY3Rpdml0eSIsIl9iYXNlUm9sZTIiLCJfZG9tYWluSWRlbnRpZmllciIsIl9lbnRpdHlVc2VyUm9sZSIsIl9mZXRjaCIsIl9zb3J0IiwiX3VzZXIiLCJfdXNlclJvbGUiLCJfQWxlcnRXaXRoSWNvbiIsIl9Db250ZXh0IiwiX2pzeFJ1bnRpbWUiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJVc2VyUm9sZXMiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl90aGlzIiwiYXJndW1lbnRzIiwidGhpcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJzb3J0ZWRVc2VycyIsImFkZFVzZXJzSG9va0lkIiwidXVpZHY0IiwiaXNBZGRpbmciLCJpc1VwZGF0aW5nIiwiaXNSZW1vdmluZyIsInNob3VsZFJlc2V0QWRkRm9ybSIsInNob3VsZFNob3dSZW1vdmVEaWFsb2ciLCJwcm9wcyIsIm1vZGVsQXJyYXkiLCJ1c2VyUm9sZXMiLCJmaWx0ZXJVc2VycyIsInVzZXJzV2l0aFJvbGVzIiwidmFsdWVzIiwicmVkdWNlIiwicmVzdWx0IiwidXNlclJvbGUiLCJ1c2VySWQiLCJnZXRVc2VySWQiLCJ1c2VyV2l0aFJvbGVzIiwiY29udmVydFRvVXNlcldpdGhSb2xlcyIsInJvbGVzIiwicHVzaCIsImZpbHRlcmVkVXNlcnMiLCJzb3J0Iiwic29ydEJ5TmFtZXMiLCJzZXRTdGF0ZSIsInJvbGUiLCJsb3dlcmNhc2UiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJsb3dlcmNhc2VUZXh0Rm9yUm9sZSIsInJvbGVTdHJpbmciLCJ0ZXh0Rm9yUm9sZSIsInRleHRGb3JCYXNlUm9sZSIsInRvTG93ZXJDYXNlIiwic2luZ3VsYXJBcnRpY2xlRm9yUm9sZSIsInNpbmd1bGFyQXJ0aWNsZUZvckJhc2VSb2xlIiwiaWRlbnRpZmllcnMiLCJlbnRpdHkiLCJpZGVudGlmaWVyc1RvQWRkIiwicm9sZUZvckFkZCIsInN1Y2Nlc3NNZXNzYWdlIiwiZmFpbE1lc3NhZ2UiLCJleGlzdGluZ01lc3NhZ2UiLCJibG9ja2VkTWVzc2FnZSIsInN0YXRlIiwibm9TdG9yZUhvb2tzIiwicmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayIsImRhdGEiLCJ1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2siLCJkaWRBZGQiLCJyb290TW9kZWxOYW1lIiwiZ2V0Um9vdE1vZGVsTmFtZSIsImRpc3BhdGNoTW9kZWxGZXRjaFJlcXVlc3QiLCJtb2RlbE5hbWUiLCJwYXRoUGFyYW1zIiwiaWQiLCJib2R5IiwiZW50aXR5SWQiLCJyb2xlTmFtZSIsIm5vU3RvcmUiLCJndWlkIiwiZW50aXR5TmFtZSIsIm9uQWRkIiwibW9kZWwiLCJFcnJvciIsImlzRmV0Y2hDYW5jZWxsZWREYXRhIiwiaXNGZXRjaEVycm9yRGF0YSIsImpvaW4iLCJhZGRlZFVzZXJSb2xlcyIsImV4aXN0aW5nVXNlclJvbGVzIiwiYmxvY2tlZFVzZXJSb2xlcyIsImludmFsaWRJZGVudGlmaWVycyIsInNpbmd1bGFyQXJ0aWNsZVN0cmluZyIsImFkZGVkTmFtZXMiLCJtYXAiLCJhdSIsImRpc3BsYXlOYW1lIiwidWlkIiwiZXhpc3RpbmdOYW1lcyIsImV1IiwiaGFzTXVsdGlwbGVFeGlzdGluZyIsImJsb2NrZWROYW1lcyIsImhhc011bHRpcGxlQmxvY2tlZCIsImdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nIiwidXBkYXRlZE1vZGVsIiwiY2xvbmVEZWVwIiwiZm9yRWFjaCIsIm1vZGVsUGF0aCIsInByZXBhcmVGZXRjaCIsInR5cGUiLCJNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFIiwiRkVUQ0hfUkVRVUVTVCIsImdldEVuZHBvaW50TWFwcGluZ3MiLCJkaXNwYXRjaEFjdGlvbiIsIk1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSIsIkZFVENIX1JFU1VMVF9SRUNFSVZFRCIsInVzZXJSb2xlVG9VcGRhdGUiLCJuZXdSb2xlIiwicm9sZUZvclVwZGF0ZSIsInVwZGF0ZSIsInF1ZXJ5UGFyYW1zIiwiaXNTdWNjZXNzIiwib25VcGRhdGUiLCJuYW1lIiwidXNlclJvbGVUb1JlbW92ZSIsInJvbGVGb3JSZW1vdmUiLCJ3YXJuaW5nIiwiZXh0ZXJuYWxQcm92aWRlcnMiLCJncm91cCIsImRlZmF1bHRXYXJuaW5nIiwianN4cyIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiZXh0ZXJuYWxHcm91cHNUb1JlbW92ZSIsImV4dGVybmFsR3JvdXBzIiwiZmlsdGVyIiwiZWciLCJCQVNFX1JPTEUiLCJHUk9VUF9PV05FUiIsImV4dGVybmFsR3JvdXBzVG9SZW1vdmVXaXRoUm9zdGVyU3luYyIsImV4dGVybmFsUHJvdmlkZXJJZCIsInJvc3RlclN5bmNFbmFibGVkIiwianN4IiwiZGVzY3JpcHRpb24iLCJzaG91bGRSZW1vdmUiLCJkZWxldGUiLCJvblJlbW92ZSIsImNvbXBvbmVudERpZE1vdW50Iiwic2V0U3RhdGVGcm9tUHJvcHMiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2TW9kZWxBcnJheSIsIm1vZGVsU3RhdHVzIiwicHJldk1vZGVsU3RhdHVzIiwiaXNFcXVhbCIsIk1PREVMX1NUQVRVUyIsIlVOSU5JVElBTElaRUQiLCJMT0FESU5HIiwiRVJST1IiLCJVUERBVElORyIsImRpZFVwZGF0ZSIsIlJFQURZIiwiREVMRVRJTkciLCJkaWRSZW1vdmUiLCJyZW5kZXIiLCJjYW5Nb2RpZnkiLCJyZWFkT25seSIsImNhbkRlbGV0ZVNlbGYiLCJhbGxvd011bHRpcGxlUm9sZXMiLCJpc0FkZERpc2FibGVkIiwiaXNVcGRhdGVEaXNhYmxlZCIsImlzRGVsZXRlRGlzYWJsZWQiLCJkZWZhdWx0Um9sZSIsInJlcXVpcmVkUm9sZSIsInJvbGVEZXNjcmlwdGlvbnMiLCJhZGRSb2xlRXhjbHVkZUxpc3QiLCJyZW5kZXJUYWJsZURlc2NyaXB0aW9uIiwicmVuZGVyQWRkRGVzY3JpcHRpb24iLCJhZGRhYmxlUm9sZURlc2NyaXB0aW9ucyIsInBpY2tCeSIsIl8iLCJrZXkiLCJpbmNsdWRlcyIsImtleXMiLCJzaG91bGRSZW5kZXJBc011dGFibGUiLCJGcmFnbWVudCIsIkFsZXJ0V2l0aEljb24iLCJ2YXJpYW50IiwiZGlzbWlzc2libGUiLCJvbkNsb3NlIiwiVXNlclJvbGVzQWRkIiwiZGlzYWJsZWQiLCJpc0FkZGluZ1VzZXJzVG9Sb2xlIiwic2hvdWxkUmVzZXQiLCJhZGRVc2VyUm9sZXMiLCJSb3ciLCJDb2wiLCJ4cyIsIkxvYWRpbmciLCJVc2VyUm9sZXNDb250ZXh0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVwZGF0ZVVzZXJSb2xlIiwicmVtb3ZlVXNlclJvbGUiLCJhbGVydFJlbW92ZVVzZXJSb2xlIiwiVXNlclJvbGVzVGFibGUiLCJ1c2VycyIsIkFsZXJ0RGlhbG9nIiwiaXNPcGVuIiwidGl0bGUiLCJyZW1vdmVVc2VyUm9sZVRpdGxlIiwicmVuZGVyUmVtb3ZlVXNlclJvbGVEZXNjcmlwdGlvbiIsIm9uRGVzdHJveSIsImRlc3Ryb3lUZXh0Iiwib25DYW5jZWwiLCJjYW5jZWxUZXh0IiwiZXhwb3J0cyIsIm1hcFN0YXRlVG9Qcm9wcyIsIm93blByb3BzIiwiY2FuTW9kaWZ5R2xvYmFsbHkiLCJjYW5QZXJmb3JtQWN0aXZpdHlHbG9iYWxseSIsIm1vZGlmeVVzZXJSb2xlQWN0aXZpdHlOYW1lIiwiZGVmYXVsdE9wdGlvbnMiLCJjYW5QZXJmb3JtQWN0aXZpdHlPbkVudGl0eSIsImRlbGV0ZU93blVzZXJSb2xlQWN0aXZpdHlOYW1lIiwiX2RlZmF1bHQiLCJjb25uZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVXNlclJvbGVzL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAsIERpY3Rpb25hcnksIGlzRXF1YWwsIHBpY2tCeSB9IGZyb20gJ2xvZGFzaCdcbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbCwgUm93IH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJ1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IEFsZXJ0RGlhbG9nIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9BbGVydERpYWxvZydcbmltcG9ydCB7IExvYWRpbmcgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL0xvYWRpbmcnXG5pbXBvcnQgeyBVc2VyUm9sZXNBZGQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1VzZXJSb2xlcy9BZGQnXG5pbXBvcnQgeyBVc2VyUm9sZXNUYWJsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVXNlclJvbGVzL1RhYmxlJ1xuaW1wb3J0IHsgZ2V0RW5kcG9pbnRNYXBwaW5ncyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cydcbmltcG9ydCB7IEJBU0VfUk9MRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9iYXNlUm9sZSdcbmltcG9ydCB7IE1PREVMX1NUQVRVUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9tb2RlbFN0YXR1cydcbmltcG9ydCB7IGRpc3BhdGNoQWN0aW9uLCBkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vcmVkdXgvYWN0aW9uQ3JlYXRvcidcbmltcG9ydCB7XG5cdE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdE1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSxcblx0TW9kZWxGZXRjaFJlc3VsdEFjdGlvblxufSBmcm9tICcuLi8uLi9yZWR1eC9hY3Rpb25zJ1xuaW1wb3J0IHsgbm9TdG9yZUhvb2tzIH0gZnJvbSAnLi4vLi4vcmVkdXgvc2FnYXMvbm9TdG9yZVNhZ2EnXG5pbXBvcnQge1xuXHRCYXNlUmVkdXhTdGF0ZSxcblx0RXh0ZXJuYWxQcm92aWRlcixcblx0R3JvdXAsXG5cdE1vZGVsLFxuXHRNb2RlbENvbGxlY3Rpb24sXG5cdFJvbGVEZXNjcmlwdGlvbnMsXG5cdFVzZXIsXG5cdFVzZXJSb2xlLFxuXHRVc2VyV2l0aFJvbGVzXG59IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgY2FuUGVyZm9ybUFjdGl2aXR5R2xvYmFsbHksIGNhblBlcmZvcm1BY3Rpdml0eU9uRW50aXR5LCBkZWZhdWx0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2Jhc2VBY3Rpdml0eSdcbmltcG9ydCB7IHNpbmd1bGFyQXJ0aWNsZUZvckJhc2VSb2xlLCB0ZXh0Rm9yQmFzZVJvbGUgfSBmcm9tICcuLi8uLi91dGlscy9iYXNlUm9sZSdcbmltcG9ydCB7IGdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tYWluSWRlbnRpZmllcidcbmltcG9ydCB7IGdldFJvb3RNb2RlbE5hbWUgfSBmcm9tICcuLi8uLi91dGlscy9lbnRpdHlVc2VyUm9sZSdcbmltcG9ydCB7IGlzRmV0Y2hDYW5jZWxsZWREYXRhLCBpc0ZldGNoRXJyb3JEYXRhLCBwcmVwYXJlRmV0Y2ggfSBmcm9tICcuLi8uLi91dGlscy9mZXRjaCdcbmltcG9ydCB7IHNvcnRCeU5hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc29ydCdcbmltcG9ydCB7IGRpc3BsYXlOYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXNlcidcbmltcG9ydCB7IGNvbnZlcnRUb1VzZXJXaXRoUm9sZXMsIGdldFVzZXJJZCB9IGZyb20gJy4uLy4uL3V0aWxzL3VzZXJSb2xlJ1xuaW1wb3J0IHsgQWxlcnRXaXRoSWNvbiB9IGZyb20gJy4uL0FsZXJ0V2l0aEljb24nXG5pbXBvcnQgeyBDb2xsZWN0aW9uQ29tcG9uZW50V3JhcHBlZFByb3BzIH0gZnJvbSAnLi4vSE9DL0NvbGxlY3Rpb25Db21wb25lbnQnXG5pbXBvcnQgeyBVc2VyUm9sZXNDb250ZXh0IH0gZnJvbSAnLi9Db250ZXh0J1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJSb2xlc1JlZHV4UHJvcHMge1xuXHQvKiogSXMgdGhlIGN1cnJlbnQgdXNlciBhbGxvd2VkIHRvIGFkZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHVzZXIgcm9sZXM/ICovXG5cdGNhbk1vZGlmeT86IGJvb2xlYW5cblx0LyoqIElzIHRoZSBjdXJyZW50IHVzZXIgYWxsb3dlZCB0byBkZWxldGUgdGhlaXIgb3duIHVzZXIgcm9sZT8gKi9cblx0Y2FuRGVsZXRlU2VsZj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUm9sZXNPd25Qcm9wcyBleHRlbmRzIENvbGxlY3Rpb25Db21wb25lbnRXcmFwcGVkUHJvcHM8VXNlclJvbGU+IHtcblx0LyoqIFNob3VsZCB0aGUgY29tcG9uZW50IHByZXZlbnQgbW9kaWZpY2F0aW9ucywgaW5kZXBlbmRlbnQgb2YgcGVybWlzc2lvbnM/ICovXG5cdHJlYWRPbmx5PzogYm9vbGVhblxuXHQvKiogSXMgdGhlIGN1cnJlbnQgdXNlciBhbGxvd2VkIHRvIGRlbGV0ZSB0aGVpciBvd24gdXNlciByb2xlPyBPdmVycmlkZXMgdGhlIHZhbHVlIGZyb20gcmVkdXguICovXG5cdGNhbkRlbGV0ZVNlbGY/OiBib29sZWFuXG5cblx0LyoqIElmIG11bHRpcGxlIHJvbGVzIGFsbG93ZWQsIGVhY2ggcm9sZSBpcyBkaXNwbGF5ZWQgcGVyIHVzZXIsIG90aGVyd2lzZSBhIHNlbGVjdCBkcm9wZG93biBpcyBkaXNwbGF5ZWQuICovXG5cdGFsbG93TXVsdGlwbGVSb2xlcz86IGJvb2xlYW5cblx0LyoqIGRpc2FibGUgYWRkaW5nIG5ldyB1c2VyIHJvbGVzICovXG5cdGlzQWRkRGlzYWJsZWQ/OiBib29sZWFuXG5cdC8qKiBkaXNhYmxlIGFsbCB1c2VyIHJvbGUgc2VsZWN0IGRyb3Bkb3ducywgaWYgYW55ICovXG5cdGlzVXBkYXRlRGlzYWJsZWQ/OiBib29sZWFuXG5cdC8qKiBkaXNhYmxlIGFsbCB1c2VyIHJvbGUgZGVsZXRlIGJ1dHRvbnMgKi9cblx0aXNEZWxldGVEaXNhYmxlZD86IGJvb2xlYW5cblxuXHQvKiogVGhlIGFjdGl2aXR5IHRoZSBjdXJyZW50IHVzZXIgbXVzdCBoYXZlIGluIG9yZGVyIHRvIGFkZCwgdXBkYXRlLCBvciBkZWxldGUgdXNlciByb2xlcy4gKi9cblx0bW9kaWZ5VXNlclJvbGVBY3Rpdml0eU5hbWU6IHN0cmluZ1xuXHQvKiogKE9wdGlvbmFsKSBUaGUgYWN0aXZpdHkgdGhlIGN1cnJlbnQgdXNlciBtdXN0IGhhdmUgaW4gb3JkZXIgdG8gZGVsZXRlIHRoZWlyIG93biB1c2VyIHJvbGVzLCBpZiB0aGV5IGNhbm5vdCBtb2RpZnkgYWxsLiAqL1xuXHRkZWxldGVPd25Vc2VyUm9sZUFjdGl2aXR5TmFtZT86IHN0cmluZ1xuXHQvKiogVGhlIHJvbGUgdGhhdCB3aWxsIGJlIHNob3duIGZpcnN0IGluIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSByb2xlcy4gKi9cblx0ZGVmYXVsdFJvbGU6IHN0cmluZ1xuXHQvKiogKE9wdGlvbmFsKSBJZiBwcm92aWRlZCwgdGhlIGxhc3QgdXNlciByb2xlIHdpdGggdGhlIHJlcXVpcmVkIHJvbGUgd2lsbCBiZSBwcmV2ZW50ZWQgZnJvbSBiZWluZyByZW1vdmVkLiAqL1xuXHRyZXF1aXJlZFJvbGU/OiBzdHJpbmdcblx0LyoqIEEgZGljdGlvbmFyeSBvZiBhbGwgcG9zc2libGUgcm9sZXMgYW5kIHRoZWlyIGRlc2NyaXB0aW9ucy4gKi9cblx0cm9sZURlc2NyaXB0aW9uczogUm9sZURlc2NyaXB0aW9uc1xuXHQvKiogKE9wdGlvbmFsKSBsaXN0IG9mIHJvbGVzIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGFkZCBvcHRpb25zLiAqL1xuXHRhZGRSb2xlRXhjbHVkZUxpc3Q/OiBzdHJpbmdbXVxuXG5cdC8qKiAoT3B0aW9uYWwpIFRoZSBlbnRpdHkgdGhhdCBvd25zIHRoZSB1c2VyIHJvbGVzLCB3aGVuIHRhcmdldGluZyBFbnRpdHlVc2VyUm9sZXMgKi9cblx0ZW50aXR5PzogTW9kZWxcblx0LyoqIChPcHRpb25hbCkgQSB1c2VyLWZyaWVuZGx5IG5hbWUgZm9yIHRoZSBlbnRpdHkgdHlwZSwgd2hlbiB0YXJnZXRpbmcgRW50aXR5VXNlclJvbGVzICAqL1xuXHRlbnRpdHlOYW1lPzogc3RyaW5nXG5cdC8qKiAoT3B0aW9uYWwpIHNldCBpZiBgcmVuZGVyUmVtb3ZlVXNlclJvbGVEZXNjcmlwdGlvbmAgc2hvdWxkIGNoZWNrIGZvciByb3N0ZXIgc3luYyAqL1xuXHRleHRlcm5hbFByb3ZpZGVycz86IE1vZGVsQ29sbGVjdGlvbjxFeHRlcm5hbFByb3ZpZGVyPlxuXG5cdC8qKiAoT3B0aW9uYWwpIEFsbG93IHVzZXJzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gYmVpbmcgZGlzcGxheWVkIGluIHRoZSB0YWJsZSAqL1xuXHRmaWx0ZXJVc2Vycz86ICh1c2VyczogVXNlcldpdGhSb2xlc1tdKSA9PiBVc2VyV2l0aFJvbGVzW11cblx0LyoqIChPcHRpb25hbCkgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgdXNlciByb2xlcyBhcmUgYWRkZWQgKi9cblx0b25BZGQ/OiAodXNlclJvbGVzOiBVc2VyUm9sZVtdKSA9PiB2b2lkXG5cdC8qKiAoT3B0aW9uYWwpIENhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgdXNlciByb2xlIGlzIHVwZGF0ZWQgKi9cblx0b25VcGRhdGU/OiAodXNlclJvbGU6IFVzZXJSb2xlLCByb2xlOiBzdHJpbmcpID0+IHZvaWRcblx0LyoqIChPcHRpb25hbCkgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSB1c2VyIHJvbGUgaXMgcmVtb3ZlZCAqL1xuXHRvblJlbW92ZT86ICh1c2VyUm9sZTogVXNlclJvbGUpID0+IHZvaWRcblx0LyoqIChPcHRpb25hbCkgUmVuZGVyIGN1c3RvbSBjb21wb25lbnRzIGJldHdlZW4gdGhlIEFkZCBhbmQgVGFibGUgY29tcG9uZW50cyAqL1xuXHRyZW5kZXJUYWJsZURlc2NyaXB0aW9uPzogKGNhbk1vZGlmeT86IGJvb2xlYW4pID0+IFJlYWN0LkpTWC5FbGVtZW50XG5cdC8qKiAoT3B0aW9uYWwpIFJlbmRlciBjdXN0b20gY29tcG9uZW50cyBhdCB0aGUgc3RhcnQgb2YgdGhlIEFkZCBjb21wb25lbnQgKi9cblx0cmVuZGVyQWRkRGVzY3JpcHRpb24/OiAoZW50aXR5TmFtZT86IHN0cmluZykgPT4gUmVhY3QuSlNYLkVsZW1lbnRcblx0LyoqIChPcHRpb25hbCkgUHJvdmlkZSBjdXN0b20gdXNlci1mcmllbmRseSBuYW1lcyBmb3IgZGlzcGxheWVkIHJvbGVzICovXG5cdHRleHRGb3JSb2xlPzogKHJvbGU6IHN0cmluZykgPT4gc3RyaW5nXG5cdC8qKiAoT3B0aW9uYWwpIFByb3ZpZGUgY3VzdG9tIHVzZXItZnJpZW5kbHkgbmFtZXMgZm9yIGRpc3BsYXllZCByb2xlcyB0aGF0IHJlcXVpcmUgY3VzdG9tIGNhc2luZyAqL1xuXHRsb3dlcmNhc2VUZXh0Rm9yUm9sZT86IChyb2xlOiBzdHJpbmcpID0+IHN0cmluZ1xuXHQvKiogKE9wdGlvbmFsKSBQcm92aWRlIGN1c3RvbSB1c2VyLWZyaWVuZGx5IGFydGljbGVzIChcImFcIiB2cy4gXCJhblwiKSBmb3IgZGlzcGxheWVkIHJvbGVzICovXG5cdHNpbmd1bGFyQXJ0aWNsZUZvclJvbGU/OiAocm9sZTogc3RyaW5nKSA9PiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUm9sZXNQcm9wcyBleHRlbmRzIFVzZXJSb2xlc1JlZHV4UHJvcHMsIFVzZXJSb2xlc093blByb3BzIHt9XG5cbmludGVyZmFjZSBVc2VyUm9sZXNTdGF0ZSB7XG5cdHNvcnRlZFVzZXJzOiBVc2VyV2l0aFJvbGVzW11cblx0Ly8gYWRkXG5cdGFkZFVzZXJzSG9va0lkOiBzdHJpbmdcblx0aXNBZGRpbmc6IGJvb2xlYW5cblx0aWRlbnRpZmllcnNUb0FkZD86IHN0cmluZ1tdXG5cdHJvbGVGb3JBZGQ/OiBzdHJpbmdcblx0c2hvdWxkUmVzZXRBZGRGb3JtOiBib29sZWFuXG5cdC8vIHVwZGF0ZVxuXHR1c2VyUm9sZVRvVXBkYXRlPzogVXNlclJvbGVcblx0cm9sZUZvclVwZGF0ZT86IHN0cmluZ1xuXHRpc1VwZGF0aW5nOiBib29sZWFuXG5cdC8vIHJlbW92ZVxuXHRzaG91bGRTaG93UmVtb3ZlRGlhbG9nOiBib29sZWFuXG5cdHVzZXJSb2xlVG9SZW1vdmU/OiBVc2VyUm9sZVxuXHRpc1JlbW92aW5nOiBib29sZWFuXG5cdC8vIG1lc3NhZ2VzXG5cdHN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nXG5cdGV4aXN0aW5nTWVzc2FnZT86IHN0cmluZ1xuXHRibG9ja2VkTWVzc2FnZT86IHN0cmluZ1xuXHRmYWlsTWVzc2FnZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZEJ1c2luZXNzTW9kZWwge1xuXHRhZGRlZFVzZXJSb2xlczogVXNlclJvbGVbXVxuXHRleGlzdGluZ1VzZXJSb2xlczogVXNlclJvbGVbXVxuXHRibG9ja2VkVXNlclJvbGVzPzogVXNlclJvbGVbXVxuXHRpbnZhbGlkSWRlbnRpZmllcnM6IHN0cmluZ1tdXG59XG5cbi8qKlxuICogQ29tcG9uZW50IHVzZWQgdG8gbWFuYWdlIGVpdGhlciBVc2VyUm9sZXMgKGdsb2JhbCByb2xlcykgb3IgRW50aXR5VXNlclJvbGVzLlxuICovXG5leHBvcnQgY2xhc3MgVXNlclJvbGVzIGV4dGVuZHMgQ29tcG9uZW50PFVzZXJSb2xlc1Byb3BzLCBVc2VyUm9sZXNTdGF0ZT4ge1xuXHRzdGF0ZTogVXNlclJvbGVzU3RhdGUgPSB7XG5cdFx0c29ydGVkVXNlcnM6IFtdLFxuXHRcdC8vIGFkZFxuXHRcdGFkZFVzZXJzSG9va0lkOiB1dWlkdjQoKSxcblx0XHRpc0FkZGluZzogZmFsc2UsXG5cdFx0aXNVcGRhdGluZzogZmFsc2UsXG5cdFx0aXNSZW1vdmluZzogZmFsc2UsXG5cdFx0c2hvdWxkUmVzZXRBZGRGb3JtOiBmYWxzZSxcblx0XHRzaG91bGRTaG93UmVtb3ZlRGlhbG9nOiBmYWxzZVxuXHR9XG5cblx0Y29tcG9uZW50RGlkTW91bnQoKSB7XG5cdFx0dGhpcy5zZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzKVxuXHRcdGNvbnN0IHsgYWRkVXNlcnNIb29rSWQgfSA9IHRoaXMuc3RhdGVcblx0XHRub1N0b3JlSG9va3MudW5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGFkZFVzZXJzSG9va0lkKVxuXHR9XG5cblx0Y29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogVXNlclJvbGVzUHJvcHMpIHtcblx0XHRjb25zdCB7IG1vZGVsQXJyYXk6IHByZXZNb2RlbEFycmF5LCBtb2RlbFN0YXR1czogcHJldk1vZGVsU3RhdHVzIH0gPSBwcmV2UHJvcHNcblx0XHRjb25zdCB7IG1vZGVsQXJyYXksIG1vZGVsU3RhdHVzLCBlbnRpdHlOYW1lIH0gPSB0aGlzLnByb3BzXG5cblx0XHRpZiAoIWlzRXF1YWwocHJldk1vZGVsQXJyYXksIG1vZGVsQXJyYXkpKSB7XG5cdFx0XHR0aGlzLnNldFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMpXG5cdFx0fVxuXG5cdFx0Ly8gbG9hZGluZyBlcnJvclxuXHRcdGlmIChcblx0XHRcdChwcmV2TW9kZWxTdGF0dXMgPT09IE1PREVMX1NUQVRVUy5VTklOSVRJQUxJWkVEIHx8IHByZXZNb2RlbFN0YXR1cyA9PT0gTU9ERUxfU1RBVFVTLkxPQURJTkcpICYmXG5cdFx0XHRtb2RlbFN0YXR1cyA9PT0gTU9ERUxfU1RBVFVTLkVSUk9SXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0ZmFpbE1lc3NhZ2U6IGBPb3BzISBUaGVyZSB3YXMgYW4gZXJyb3IgbG9hZGluZyR7XG5cdFx0XHRcdFx0ZW50aXR5TmFtZSA/IGAgdGhlIHBlb3BsZSBmb3IgeW91ciAke2VudGl0eU5hbWV9YCA6ICcnXG5cdFx0XHRcdH0uXFxyXFxuUGxlYXNlIHRyeSBhZ2Fpbi5gXG5cdFx0XHR9KVxuXHRcdH1cblxuXHRcdC8vIHVwZGF0aW5nXG5cdFx0aWYgKHByZXZNb2RlbFN0YXR1cyA9PT0gTU9ERUxfU1RBVFVTLlVQREFUSU5HICYmIG1vZGVsU3RhdHVzICE9PSBNT0RFTF9TVEFUVVMuVVBEQVRJTkcpIHtcblx0XHRcdHRoaXMuZGlkVXBkYXRlKG1vZGVsU3RhdHVzID09PSBNT0RFTF9TVEFUVVMuUkVBRFkpXG5cdFx0fVxuXG5cdFx0Ly8gcmVtb3Zpbmdcblx0XHRpZiAocHJldk1vZGVsU3RhdHVzID09PSBNT0RFTF9TVEFUVVMuREVMRVRJTkcgJiYgbW9kZWxTdGF0dXMgIT09IE1PREVMX1NUQVRVUy5ERUxFVElORykge1xuXHRcdFx0dGhpcy5kaWRSZW1vdmUobW9kZWxTdGF0dXMgPT09IE1PREVMX1NUQVRVUy5SRUFEWSlcblx0XHR9XG5cdH1cblxuXHRzZXRTdGF0ZUZyb21Qcm9wcyA9IChwcm9wczogVXNlclJvbGVzUHJvcHMpID0+IHtcblx0XHRjb25zdCB7IG1vZGVsQXJyYXk6IHVzZXJSb2xlcywgZmlsdGVyVXNlcnMgfSA9IHByb3BzXG5cdFx0Y29uc3QgdXNlcnNXaXRoUm9sZXMgPSBPYmplY3QudmFsdWVzKFxuXHRcdFx0dXNlclJvbGVzLnJlZHVjZSgocmVzdWx0OiBEaWN0aW9uYXJ5PFVzZXJXaXRoUm9sZXM+LCB1c2VyUm9sZTogVXNlclJvbGUpID0+IHtcblx0XHRcdFx0Y29uc3QgdXNlcklkID0gZ2V0VXNlcklkKHVzZXJSb2xlKVxuXHRcdFx0XHRsZXQgdXNlcldpdGhSb2xlcyA9IHJlc3VsdFt1c2VySWRdIGFzIFVzZXJXaXRoUm9sZXMgfCB1bmRlZmluZWRcblx0XHRcdFx0aWYgKCF1c2VyV2l0aFJvbGVzKSB7XG5cdFx0XHRcdFx0dXNlcldpdGhSb2xlcyA9IGNvbnZlcnRUb1VzZXJXaXRoUm9sZXModXNlclJvbGUpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dXNlcldpdGhSb2xlcy5yb2xlcy5wdXNoKHVzZXJSb2xlKVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJlc3VsdFt1c2VySWRdID0gdXNlcldpdGhSb2xlc1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0XG5cdFx0XHR9LCB7fSlcblx0XHQpXG5cdFx0Y29uc3QgZmlsdGVyZWRVc2VycyA9IGZpbHRlclVzZXJzID8gZmlsdGVyVXNlcnModXNlcnNXaXRoUm9sZXMpIDogdXNlcnNXaXRoUm9sZXNcblx0XHRjb25zdCBzb3J0ZWRVc2VycyA9IGZpbHRlcmVkVXNlcnMuc29ydChzb3J0QnlOYW1lcylcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdHNvcnRlZFVzZXJzXG5cdFx0fSlcblx0fVxuXG5cdHRleHRGb3JSb2xlID0gKHJvbGU6IHN0cmluZywgbG93ZXJjYXNlID0gZmFsc2UpID0+IHtcblx0XHRpZiAobG93ZXJjYXNlICYmIHRoaXMucHJvcHMubG93ZXJjYXNlVGV4dEZvclJvbGUpIHtcblx0XHRcdHJldHVybiB0aGlzLnByb3BzLmxvd2VyY2FzZVRleHRGb3JSb2xlKHJvbGUpXG5cdFx0fVxuXHRcdGNvbnN0IHJvbGVTdHJpbmcgPSB0aGlzLnByb3BzLnRleHRGb3JSb2xlID8gdGhpcy5wcm9wcy50ZXh0Rm9yUm9sZShyb2xlKSA6IHRleHRGb3JCYXNlUm9sZShyb2xlKVxuXHRcdHJldHVybiBsb3dlcmNhc2UgPyByb2xlU3RyaW5nLnRvTG93ZXJDYXNlKCkgOiByb2xlU3RyaW5nXG5cdH1cblxuXHRzaW5ndWxhckFydGljbGVGb3JSb2xlID0gKHJvbGU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLnByb3BzLnNpbmd1bGFyQXJ0aWNsZUZvclJvbGVcblx0XHRcdD8gdGhpcy5wcm9wcy5zaW5ndWxhckFydGljbGVGb3JSb2xlKHJvbGUpXG5cdFx0XHQ6IHNpbmd1bGFyQXJ0aWNsZUZvckJhc2VSb2xlKHJvbGUpXG5cdH1cblxuXHQvLyNyZWdpb24gQWRkIFVzZXJzXG5cblx0YWRkVXNlclJvbGVzID0gKGlkZW50aWZpZXJzOiBzdHJpbmdbXSwgcm9sZTogc3RyaW5nKSA9PiB7XG5cdFx0Y29uc3QgeyBlbnRpdHkgfSA9IHRoaXMucHJvcHNcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdGlkZW50aWZpZXJzVG9BZGQ6IGlkZW50aWZpZXJzLFxuXHRcdFx0cm9sZUZvckFkZDogcm9sZSxcblx0XHRcdHN1Y2Nlc3NNZXNzYWdlOiB1bmRlZmluZWQsXG5cdFx0XHRmYWlsTWVzc2FnZTogdW5kZWZpbmVkLFxuXHRcdFx0ZXhpc3RpbmdNZXNzYWdlOiB1bmRlZmluZWQsXG5cdFx0XHRibG9ja2VkTWVzc2FnZTogdW5kZWZpbmVkLFxuXHRcdFx0c2hvdWxkUmVzZXRBZGRGb3JtOiBmYWxzZSxcblx0XHRcdGlzQWRkaW5nOiB0cnVlXG5cdFx0fSlcblx0XHRjb25zdCB7IGFkZFVzZXJzSG9va0lkIH0gPSB0aGlzLnN0YXRlXG5cdFx0bm9TdG9yZUhvb2tzLnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2soYWRkVXNlcnNIb29rSWQsIChkYXRhOiB1bmtub3duKSA9PiB7XG5cdFx0XHRub1N0b3JlSG9va3MudW5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGFkZFVzZXJzSG9va0lkKVxuXHRcdFx0dGhpcy5kaWRBZGQoZGF0YSlcblx0XHR9KVxuXHRcdGNvbnN0IHJvb3RNb2RlbE5hbWUgPSBnZXRSb290TW9kZWxOYW1lKHRoaXMucHJvcHMpXG5cdFx0ZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCh7XG5cdFx0XHRtb2RlbE5hbWU6IGAke3Jvb3RNb2RlbE5hbWUgPyBgJHtyb290TW9kZWxOYW1lfS5gIDogJyd9YWRkVXNlclJvbGVzYCxcblx0XHRcdHBhdGhQYXJhbXM6IGVudGl0eSA/IFtlbnRpdHkuaWRdIDogdW5kZWZpbmVkLFxuXHRcdFx0Ym9keToge1xuXHRcdFx0XHRlbnRpdHlJZDogZW50aXR5ID8gZW50aXR5LmlkIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRpZGVudGlmaWVyczogaWRlbnRpZmllcnMsXG5cdFx0XHRcdHJvbGVOYW1lOiByb2xlXG5cdFx0XHR9LFxuXHRcdFx0bm9TdG9yZTogdHJ1ZSxcblx0XHRcdGd1aWQ6IGFkZFVzZXJzSG9va0lkXG5cdFx0fSlcblx0fVxuXG5cdGRpZEFkZCA9IChkYXRhOiB1bmtub3duKSA9PiB7XG5cdFx0Y29uc3QgeyBlbnRpdHlOYW1lLCBvbkFkZCwgbW9kZWwsIG1vZGVsTmFtZSwgcGF0aFBhcmFtcyB9ID0gdGhpcy5wcm9wc1xuXHRcdGNvbnN0IHsgcm9sZUZvckFkZCwgaWRlbnRpZmllcnNUb0FkZCB9ID0gdGhpcy5zdGF0ZVxuXHRcdGlmICghcm9sZUZvckFkZCB8fCAhaWRlbnRpZmllcnNUb0FkZCB8fCBpZGVudGlmaWVyc1RvQWRkLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdkaWRBZGQgd2FzIGNhbGxlZCBpbiB0aGUgaW5jb3JyZWN0IHN0YXRlJylcblx0XHR9XG5cblx0XHRpZiAoaXNGZXRjaENhbmNlbGxlZERhdGEoZGF0YSkpIHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRzaG91bGRSZXNldEFkZEZvcm06IHRydWUsXG5cdFx0XHRcdGlzQWRkaW5nOiBmYWxzZSxcblx0XHRcdFx0aWRlbnRpZmllcnNUb0FkZDogdW5kZWZpbmVkLFxuXHRcdFx0XHRyb2xlRm9yQWRkOiB1bmRlZmluZWRcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cblx0XHRpZiAoIWRhdGEgfHwgaXNGZXRjaEVycm9yRGF0YShkYXRhKSkge1xuXHRcdFx0Y29uc3QgZmFpbE1lc3NhZ2UgPSBgVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyB3ZXJlIG5vdCBhZGRlZCR7XG5cdFx0XHRcdGVudGl0eU5hbWUgPyBgIHRvIHlvdXIgJHtlbnRpdHlOYW1lfWAgOiAnJ1xuXHRcdFx0fTpcXHJcXG4ke2lkZW50aWZpZXJzVG9BZGQuam9pbignXFxyXFxuJyl9YFxuXG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0c2hvdWxkUmVzZXRBZGRGb3JtOiB0cnVlLFxuXHRcdFx0XHRpc0FkZGluZzogZmFsc2UsXG5cdFx0XHRcdGlkZW50aWZpZXJzVG9BZGQ6IHVuZGVmaW5lZCxcblx0XHRcdFx0cm9sZUZvckFkZDogdW5kZWZpbmVkLFxuXHRcdFx0XHRmYWlsTWVzc2FnZVxuXHRcdFx0fSlcblx0XHRcdHJldHVyblxuXHRcdH1cblxuXHRcdGNvbnN0IHsgYWRkZWRVc2VyUm9sZXMsIGV4aXN0aW5nVXNlclJvbGVzLCBibG9ja2VkVXNlclJvbGVzLCBpbnZhbGlkSWRlbnRpZmllcnMgfSA9IGRhdGEgYXMgQWRkQnVzaW5lc3NNb2RlbFxuXHRcdGNvbnN0IHJvbGVTdHJpbmcgPSB0aGlzLnRleHRGb3JSb2xlKHJvbGVGb3JBZGQsIHRydWUpXG5cdFx0Y29uc3Qgc2luZ3VsYXJBcnRpY2xlU3RyaW5nID0gdGhpcy5zaW5ndWxhckFydGljbGVGb3JSb2xlKHJvbGVGb3JBZGQpXG5cblx0XHRjb25zdCBhZGRlZE5hbWVzID1cblx0XHRcdGFkZGVkVXNlclJvbGVzLmxlbmd0aCA+IDBcblx0XHRcdFx0PyBhZGRlZFVzZXJSb2xlc1xuXHRcdFx0XHRcdFx0Lm1hcCgoYXU6IFVzZXIpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGAke2Rpc3BsYXlOYW1lKGF1KX0ke2F1LnVpZCA/IGAgKCR7YXUudWlkfSlgIDogJyd9YFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5qb2luKCdcXHJcXG4nKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXG5cdFx0Y29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBhZGRlZE5hbWVzXG5cdFx0XHQ/IGBUaGUgZm9sbG93aW5nICR7cm9sZVN0cmluZ30ke2FkZGVkVXNlclJvbGVzLmxlbmd0aCA+IDEgPyAncyB3ZXJlJyA6ICcgd2FzJ30gc3VjY2Vzc2Z1bGx5IGFkZGVkJHtcblx0XHRcdFx0XHRlbnRpdHlOYW1lID8gYCB0byB5b3VyICR7ZW50aXR5TmFtZX1gIDogJydcblx0XHRcdFx0fTpcXHJcXG4ke2FkZGVkTmFtZXN9YFxuXHRcdFx0OiB1bmRlZmluZWRcblxuXHRcdGNvbnN0IGV4aXN0aW5nTmFtZXMgPVxuXHRcdFx0ZXhpc3RpbmdVc2VyUm9sZXMubGVuZ3RoID4gMFxuXHRcdFx0XHQ/IGV4aXN0aW5nVXNlclJvbGVzLm1hcCgoZXU6IFVzZXIpID0+IGAke2Rpc3BsYXlOYW1lKGV1KX0ke2V1LnVpZCA/IGAgKCR7ZXUudWlkfSlgIDogJyd9YCkuam9pbignXFxyXFxuJylcblx0XHRcdFx0OiB1bmRlZmluZWRcblxuXHRcdGNvbnN0IGhhc011bHRpcGxlRXhpc3RpbmcgPSBleGlzdGluZ1VzZXJSb2xlcy5sZW5ndGggPiAxXG5cdFx0Y29uc3QgZXhpc3RpbmdNZXNzYWdlID0gZXhpc3RpbmdOYW1lc1xuXHRcdFx0PyBgVGhlIGZvbGxvd2luZyAke2hhc011bHRpcGxlRXhpc3RpbmcgPyAncGVvcGxlIHdlcmUnIDogJ3BlcnNvbiB3YXMnfSBhbHJlYWR5ICR7XG5cdFx0XHRcdFx0ZW50aXR5TmFtZVxuXHRcdFx0XHRcdFx0PyBgaW4geW91ciAke2VudGl0eU5hbWV9IGFzICR7aGFzTXVsdGlwbGVFeGlzdGluZyA/ICcnIDogYCR7c2luZ3VsYXJBcnRpY2xlU3RyaW5nfSBgfWBcblx0XHRcdFx0XHRcdDogaGFzTXVsdGlwbGVFeGlzdGluZ1xuXHRcdFx0XHRcdFx0XHQ/ICcnXG5cdFx0XHRcdFx0XHRcdDogYCR7c2luZ3VsYXJBcnRpY2xlU3RyaW5nfSBgXG5cdFx0XHRcdH0ke3JvbGVTdHJpbmd9JHtoYXNNdWx0aXBsZUV4aXN0aW5nID8gJ3MnIDogJyd9OlxcclxcbiR7ZXhpc3RpbmdOYW1lc31gXG5cdFx0XHQ6IHVuZGVmaW5lZFxuXG5cdFx0Y29uc3QgYmxvY2tlZE5hbWVzID1cblx0XHRcdCEhYmxvY2tlZFVzZXJSb2xlcyAmJiBibG9ja2VkVXNlclJvbGVzLmxlbmd0aCA+IDBcblx0XHRcdFx0PyBibG9ja2VkVXNlclJvbGVzLm1hcCgoZXU6IFVzZXIpID0+IGAke2Rpc3BsYXlOYW1lKGV1KX0ke2V1LnVpZCA/IGAgKCR7ZXUudWlkfSlgIDogJyd9YCkuam9pbignXFxyXFxuJylcblx0XHRcdFx0OiB1bmRlZmluZWRcblx0XHRjb25zdCBoYXNNdWx0aXBsZUJsb2NrZWQgPSAhIWJsb2NrZWRVc2VyUm9sZXMgJiYgYmxvY2tlZFVzZXJSb2xlcy5sZW5ndGggPiAxXG5cdFx0Y29uc3QgYmxvY2tlZE1lc3NhZ2UgPSBibG9ja2VkTmFtZXNcblx0XHRcdD8gYFRoZSBmb2xsb3dpbmcgJHtoYXNNdWx0aXBsZUJsb2NrZWQgPyAncGVvcGxlJyA6ICdwZXJzb24nfSBjb3VsZCBub3QgYmUgYWRkZWQgJHtcblx0XHRcdFx0XHRlbnRpdHlOYW1lID8gYHRvIHlvdXIgJHtlbnRpdHlOYW1lfWAgOiAnJ1xuXHRcdFx0XHR9IGFzICR7aGFzTXVsdGlwbGVCbG9ja2VkID8gJycgOiBgJHtzaW5ndWxhckFydGljbGVTdHJpbmd9IGB9JHtyb2xlU3RyaW5nfSR7XG5cdFx0XHRcdFx0aGFzTXVsdGlwbGVCbG9ja2VkID8gJ3MnIDogJydcblx0XHRcdFx0fSBiZWNhdXNlIHRoZXkgYWxyZWFkeSBoYXZlIGEgcm9sZTpcXHJcXG4ke2Jsb2NrZWROYW1lc31gXG5cdFx0XHQ6IHVuZGVmaW5lZFxuXG5cdFx0Y29uc3QgZmFpbE1lc3NhZ2UgPVxuXHRcdFx0aW52YWxpZElkZW50aWZpZXJzLmxlbmd0aCA+IDBcblx0XHRcdFx0PyBgVGhlIGZvbGxvd2luZyAke2dldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nKCl9IGFyZSBpbnZhbGlkOlxcclxcbiR7aW52YWxpZElkZW50aWZpZXJzLmpvaW4oXG5cdFx0XHRcdFx0XHQnXFxyXFxuJ1xuXHRcdFx0XHRcdCl9YFxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRzaG91bGRSZXNldEFkZEZvcm06IHRydWUsXG5cdFx0XHRpc0FkZGluZzogZmFsc2UsXG5cdFx0XHRpZGVudGlmaWVyc1RvQWRkOiB1bmRlZmluZWQsXG5cdFx0XHRyb2xlRm9yQWRkOiB1bmRlZmluZWQsXG5cdFx0XHRzdWNjZXNzTWVzc2FnZSxcblx0XHRcdGV4aXN0aW5nTWVzc2FnZSxcblx0XHRcdGJsb2NrZWRNZXNzYWdlLFxuXHRcdFx0ZmFpbE1lc3NhZ2Vcblx0XHR9KVxuXG5cdFx0Ly8gb25seSByZWxvYWQgaWYgd2UgaGFkIHNvbWUgc3VjY2Vzc2Z1bCBhZGRzXG5cdFx0aWYgKGFkZGVkTmFtZXMpIHtcblx0XHRcdC8vIHVwZGF0ZSByZWR1eCB3aXRoIGFkZGVkIHVzZXJSb2xlc1xuXHRcdFx0Y29uc3QgdXBkYXRlZE1vZGVsID0gY2xvbmVEZWVwKG1vZGVsKVxuXHRcdFx0YWRkZWRVc2VyUm9sZXMuZm9yRWFjaCh1c2VyUm9sZSA9PiAodXBkYXRlZE1vZGVsW3VzZXJSb2xlLmlkXSA9IGNsb25lRGVlcCh1c2VyUm9sZSkpKVxuXG5cdFx0XHQvLyBjcmVhdGUgYSBkdW1teSBhY3Rpb24gYW5kIGNhbGwgYHByZXBhcmVGZXRjaGAgdG8gZ2V0IHRoZSBmaW5hbCBgbW9kZWxQYXRoYFxuXHRcdFx0Y29uc3QgeyBtb2RlbFBhdGggfSA9IHByZXBhcmVGZXRjaChcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRcdFx0XHRtb2RlbE5hbWUsXG5cdFx0XHRcdFx0cGF0aFBhcmFtc1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRnZXRFbmRwb2ludE1hcHBpbmdzKClcblx0XHRcdClcblx0XHRcdGRpc3BhdGNoQWN0aW9uPE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24+KHtcblx0XHRcdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVTVUxUX0FDVElPTl9UWVBFLkZFVENIX1JFU1VMVF9SRUNFSVZFRCxcblx0XHRcdFx0bW9kZWxQYXRoLFxuXHRcdFx0XHRkYXRhOiB1cGRhdGVkTW9kZWxcblx0XHRcdH0pXG5cblx0XHRcdGlmIChvbkFkZCkge1xuXHRcdFx0XHRvbkFkZChhZGRlZFVzZXJSb2xlcylcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyNlbmRyZWdpb24gQWRkIFVzZXJzXG5cblx0Ly8jcmVnaW9uIFVwZGF0ZVxuXG5cdHVwZGF0ZVVzZXJSb2xlID0gKHVzZXJSb2xlVG9VcGRhdGU6IFVzZXJSb2xlLCBuZXdSb2xlOiBzdHJpbmcpID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdGlzVXBkYXRpbmc6IHRydWUsXG5cdFx0XHR1c2VyUm9sZVRvVXBkYXRlLFxuXHRcdFx0cm9sZUZvclVwZGF0ZTogbmV3Um9sZSxcblx0XHRcdHN1Y2Nlc3NNZXNzYWdlOiB1bmRlZmluZWQsXG5cdFx0XHRmYWlsTWVzc2FnZTogdW5kZWZpbmVkXG5cdFx0fSlcblx0XHR0aGlzLnByb3BzLnVwZGF0ZSh7XG5cdFx0XHRpZDogdXNlclJvbGVUb1VwZGF0ZS5pZCxcblx0XHRcdGJvZHk6IHt9LFxuXHRcdFx0cXVlcnlQYXJhbXM6IHtcblx0XHRcdFx0cm9sZU5hbWU6IG5ld1JvbGVcblx0XHRcdH1cblx0XHR9KVxuXHR9XG5cblx0ZGlkVXBkYXRlID0gKGlzU3VjY2VzczogYm9vbGVhbikgPT4ge1xuXHRcdGNvbnN0IHsgZW50aXR5TmFtZSwgb25VcGRhdGUgfSA9IHRoaXMucHJvcHNcblx0XHRjb25zdCB7IHVzZXJSb2xlVG9VcGRhdGUsIHJvbGVGb3JVcGRhdGUgfSA9IHRoaXMuc3RhdGVcblx0XHRpZiAodXNlclJvbGVUb1VwZGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2BkaWRVcGRhdGVgIHdhcyBjYWxsZWQgd2l0aG91dCBzZXR0aW5nIGB1c2VyUm9sZVRvVXBkYXRlYCBpbiBzdGF0ZScpXG5cdFx0fVxuXHRcdGlmIChyb2xlRm9yVXBkYXRlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignYGRpZFVwZGF0ZWAgd2FzIGNhbGxlZCB3aXRob3V0IHNldHRpbmcgYHJvbGVGb3JVcGRhdGVgIGluIHN0YXRlJylcblx0XHR9XG5cblx0XHRjb25zdCBuYW1lID0gZGlzcGxheU5hbWUodXNlclJvbGVUb1VwZGF0ZSlcblx0XHRjb25zdCByb2xlU3RyaW5nID0gdGhpcy50ZXh0Rm9yUm9sZShyb2xlRm9yVXBkYXRlLCB0cnVlKVxuXHRcdGNvbnN0IHNpbmd1bGFyQXJ0aWNsZVN0cmluZyA9IHRoaXMuc2luZ3VsYXJBcnRpY2xlRm9yUm9sZShyb2xlRm9yVXBkYXRlKVxuXG5cdFx0aWYgKCFpc1N1Y2Nlc3MpIHtcblx0XHRcdGNvbnN0IGZhaWxNZXNzYWdlID0gYE9vcHMhIFRoZXJlIHdhcyBhbiBlcnJvciB1cGRhdGluZyAke25hbWV9IHRvICR7c2luZ3VsYXJBcnRpY2xlU3RyaW5nfSAke3JvbGVTdHJpbmd9JHtcblx0XHRcdFx0ZW50aXR5TmFtZSA/IGAgaW4geW91ciAke2VudGl0eU5hbWV9YCA6ICcnXG5cdFx0XHR9LiBQbGVhc2UgdHJ5IGFnYWluLmBcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRpc1VwZGF0aW5nOiBmYWxzZSxcblx0XHRcdFx0dXNlclJvbGVUb1VwZGF0ZTogdW5kZWZpbmVkLFxuXHRcdFx0XHRyb2xlRm9yVXBkYXRlOiB1bmRlZmluZWQsXG5cdFx0XHRcdGZhaWxNZXNzYWdlXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBgJHtuYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgdG8gJHtzaW5ndWxhckFydGljbGVTdHJpbmd9ICR7cm9sZVN0cmluZ30ke1xuXHRcdFx0ZW50aXR5TmFtZSA/IGAgaW4geW91ciAke2VudGl0eU5hbWV9YCA6ICcnXG5cdFx0fS5gXG5cblx0XHRpZiAob25VcGRhdGUpIHtcblx0XHRcdG9uVXBkYXRlKHVzZXJSb2xlVG9VcGRhdGUsIHJvbGVGb3JVcGRhdGUpXG5cdFx0fVxuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRpc1VwZGF0aW5nOiBmYWxzZSxcblx0XHRcdHVzZXJSb2xlVG9VcGRhdGU6IHVuZGVmaW5lZCxcblx0XHRcdHJvbGVGb3JVcGRhdGU6IHVuZGVmaW5lZCxcblx0XHRcdHN1Y2Nlc3NNZXNzYWdlXG5cdFx0fSlcblx0fVxuXG5cdC8vI2VuZHJlZ2lvbiBVcGRhdGVcblxuXHQvLyNyZWdpb24gUmVtb3ZlIFVzZXJcblxuXHRhbGVydFJlbW92ZVVzZXJSb2xlID0gKHVzZXJSb2xlVG9SZW1vdmU6IFVzZXJSb2xlKSA9PiB7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHR1c2VyUm9sZVRvUmVtb3ZlLFxuXHRcdFx0c2hvdWxkU2hvd1JlbW92ZURpYWxvZzogdHJ1ZVxuXHRcdH0pXG5cdH1cblxuXHRyZW1vdmVVc2VyUm9sZVRpdGxlID0gKHJvbGVGb3JSZW1vdmU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBgUmVtb3ZlICR7dGhpcy50ZXh0Rm9yUm9sZShyb2xlRm9yUmVtb3ZlKX1gXG5cdH1cblxuXHRyZW5kZXJSZW1vdmVVc2VyUm9sZURlc2NyaXB0aW9uID0gKHVzZXJSb2xlVG9SZW1vdmU6IFVzZXJSb2xlLCB3YXJuaW5nPzogUmVhY3QuSlNYLkVsZW1lbnQpID0+IHtcblx0XHRjb25zdCB7IGVudGl0eSwgZXh0ZXJuYWxQcm92aWRlcnMgfSA9IHRoaXMucHJvcHNcblx0XHRjb25zdCBncm91cCA9IGVudGl0eSAmJiAnZXh0ZXJuYWxHcm91cHMnIGluIGVudGl0eSA/IChlbnRpdHkgYXMgR3JvdXApIDogdW5kZWZpbmVkXG5cblx0XHRjb25zdCByb2xlU3RyaW5nID0gdGhpcy50ZXh0Rm9yUm9sZSh1c2VyUm9sZVRvUmVtb3ZlLnJvbGUsIHRydWUpXG5cdFx0Y29uc3Qgc2luZ3VsYXJBcnRpY2xlU3RyaW5nID0gdGhpcy5zaW5ndWxhckFydGljbGVGb3JSb2xlKHVzZXJSb2xlVG9SZW1vdmUucm9sZSlcblx0XHRjb25zdCBkZWZhdWx0V2FybmluZyA9IHdhcm5pbmcgPz8gKFxuXHRcdFx0PHAgY2xhc3NOYW1lPVwibWEwXCI+XG5cdFx0XHRcdEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byA8c3Ryb25nPnJlbW92ZSB7ZGlzcGxheU5hbWUodXNlclJvbGVUb1JlbW92ZSl9PC9zdHJvbmc+IGFzeycgJ31cblx0XHRcdFx0e3Npbmd1bGFyQXJ0aWNsZVN0cmluZ30ge3JvbGVTdHJpbmd9P1xuXHRcdFx0PC9wPlxuXHRcdClcblxuXHRcdGNvbnN0IGV4dGVybmFsR3JvdXBzVG9SZW1vdmUgPSBncm91cD8uZXh0ZXJuYWxHcm91cHMuZmlsdGVyKGVnID0+IGVnLnVzZXJJZCA9PT0gdXNlclJvbGVUb1JlbW92ZS5pZClcblxuXHRcdGlmIChcblx0XHRcdCFleHRlcm5hbEdyb3Vwc1RvUmVtb3ZlIHx8XG5cdFx0XHRleHRlcm5hbEdyb3Vwc1RvUmVtb3ZlLmxlbmd0aCA9PT0gMCB8fFxuXHRcdFx0dXNlclJvbGVUb1JlbW92ZS5yb2xlICE9PSBCQVNFX1JPTEUuR1JPVVBfT1dORVJcblx0XHQpIHtcblx0XHRcdHJldHVybiBkZWZhdWx0V2FybmluZ1xuXHRcdH1cblxuXHRcdGNvbnN0IGV4dGVybmFsR3JvdXBzVG9SZW1vdmVXaXRoUm9zdGVyU3luYyA9IGV4dGVybmFsR3JvdXBzVG9SZW1vdmUuZmlsdGVyKFxuXHRcdFx0ZWcgPT4gZXh0ZXJuYWxQcm92aWRlcnM/LltlZy5leHRlcm5hbFByb3ZpZGVySWRdPy5yb3N0ZXJTeW5jRW5hYmxlZFxuXHRcdClcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2PlxuXHRcdFx0XHQ8cD5cblx0XHRcdFx0XHRUaGUgZm9sbG93aW5nIGNvdXJzZSBzZWN0aW9ucyB3aWxsIGJlIDxzdHJvbmc+ZGlzY29ubmVjdGVkPC9zdHJvbmc+LnsnICd9XG5cdFx0XHRcdFx0e2V4dGVybmFsR3JvdXBzVG9SZW1vdmVXaXRoUm9zdGVyU3luYy5sZW5ndGggPiAwICYmIChcblx0XHRcdFx0XHRcdDxzcGFuPlxuXHRcdFx0XHRcdFx0XHRBbnkgYXV0b21hdGljYWxseSBhZGRlZCBzdHVkZW50cyB3aWxsIGJlIDxzdHJvbmc+cmVtb3ZlZDwvc3Ryb25nPi5cblx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHQpfVxuXHRcdFx0XHQ8L3A+XG5cdFx0XHRcdDx1bD5cblx0XHRcdFx0XHR7ZXh0ZXJuYWxHcm91cHNUb1JlbW92ZS5tYXAoZWcgPT4gKFxuXHRcdFx0XHRcdFx0PGxpIGtleT17ZWcuaWR9PntlZy5kZXNjcmlwdGlvbn08L2xpPlxuXHRcdFx0XHRcdCkpfVxuXHRcdFx0XHQ8L3VsPlxuXHRcdFx0XHR7ZGVmYXVsdFdhcm5pbmd9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpXG5cdH1cblxuXHRyZW1vdmVVc2VyUm9sZSA9IChzaG91bGRSZW1vdmU6IGJvb2xlYW4pID0+IHtcblx0XHRjb25zdCB7IHVzZXJSb2xlVG9SZW1vdmUgfSA9IHRoaXMuc3RhdGVcblx0XHRpZiAodXNlclJvbGVUb1JlbW92ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ByZW1vdmVVc2VyYCB3YXMgY2FsbGVkIHdpdGhvdXQgc2V0dGluZyBgdXNlclJvbGVUb1JlbW92ZWAgaW4gc3RhdGUnKVxuXHRcdH1cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdGlzUmVtb3Zpbmc6IHNob3VsZFJlbW92ZSxcblx0XHRcdHNob3VsZFNob3dSZW1vdmVEaWFsb2c6IGZhbHNlLFxuXHRcdFx0c3VjY2Vzc01lc3NhZ2U6IHVuZGVmaW5lZCxcblx0XHRcdGZhaWxNZXNzYWdlOiB1bmRlZmluZWQsXG5cdFx0XHQvLyBjbGVhciBpZiBjYW5jZWxsZWRcblx0XHRcdHVzZXJSb2xlVG9SZW1vdmU6IHNob3VsZFJlbW92ZSA/IHVzZXJSb2xlVG9SZW1vdmUgOiB1bmRlZmluZWRcblx0XHR9KVxuXHRcdGlmICghc2hvdWxkUmVtb3ZlKSB7XG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cdFx0dGhpcy5wcm9wcy5kZWxldGUoe1xuXHRcdFx0aWQ6IHVzZXJSb2xlVG9SZW1vdmUuaWRcblx0XHR9KVxuXHR9XG5cblx0ZGlkUmVtb3ZlID0gKGlzU3VjY2VzczogYm9vbGVhbikgPT4ge1xuXHRcdGNvbnN0IHsgZW50aXR5TmFtZSwgb25SZW1vdmUgfSA9IHRoaXMucHJvcHNcblx0XHRjb25zdCB7IHVzZXJSb2xlVG9SZW1vdmUgfSA9IHRoaXMuc3RhdGVcblx0XHRpZiAodXNlclJvbGVUb1JlbW92ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2BkaWRSZW1vdmVgIHdhcyBjYWxsZWQgd2l0aG91dCBzZXR0aW5nIGB1c2VyUm9sZVRvUmVtb3ZlYCBpbiBzdGF0ZScpXG5cdFx0fVxuXG5cdFx0Y29uc3QgbmFtZSA9IGRpc3BsYXlOYW1lKHVzZXJSb2xlVG9SZW1vdmUpXG5cdFx0aWYgKCFpc1N1Y2Nlc3MpIHtcblx0XHRcdGNvbnN0IGZhaWxNZXNzYWdlID0gYE9vcHMhIFRoZXJlIHdhcyBhbiBlcnJvciByZW1vdmluZyAke25hbWV9JHtcblx0XHRcdFx0ZW50aXR5TmFtZSA/IGAgZnJvbSB5b3VyICR7ZW50aXR5TmFtZX1gIDogJydcblx0XHRcdH0uIFBsZWFzZSB0cnkgYWdhaW4uYFxuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdGlzUmVtb3Zpbmc6IGZhbHNlLFxuXHRcdFx0XHR1c2VyUm9sZVRvUmVtb3ZlOiB1bmRlZmluZWQsXG5cdFx0XHRcdGZhaWxNZXNzYWdlXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBgJHtuYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQke2VudGl0eU5hbWUgPyBgIGZyb20geW91ciAke2VudGl0eU5hbWV9YCA6ICcnfS5gXG5cblx0XHRpZiAob25SZW1vdmUpIHtcblx0XHRcdG9uUmVtb3ZlKHVzZXJSb2xlVG9SZW1vdmUpXG5cdFx0fVxuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRpc1JlbW92aW5nOiBmYWxzZSxcblx0XHRcdHVzZXJSb2xlVG9SZW1vdmU6IHVuZGVmaW5lZCxcblx0XHRcdHN1Y2Nlc3NNZXNzYWdlXG5cdFx0fSlcblx0fVxuXG5cdC8vI2VuZHJlZ2lvbiBSZW1vdmUgVXNlclxuXG5cdHJlbmRlcigpIHtcblx0XHRjb25zdCB7XG5cdFx0XHRtb2RlbFN0YXR1cyxcblx0XHRcdGNhbk1vZGlmeSxcblx0XHRcdHJlYWRPbmx5LFxuXHRcdFx0Y2FuRGVsZXRlU2VsZixcblx0XHRcdGFsbG93TXVsdGlwbGVSb2xlcyxcblx0XHRcdGlzQWRkRGlzYWJsZWQsXG5cdFx0XHRpc1VwZGF0ZURpc2FibGVkLFxuXHRcdFx0aXNEZWxldGVEaXNhYmxlZCxcblx0XHRcdGRlZmF1bHRSb2xlLFxuXHRcdFx0cmVxdWlyZWRSb2xlLFxuXHRcdFx0cm9sZURlc2NyaXB0aW9ucyxcblx0XHRcdGFkZFJvbGVFeGNsdWRlTGlzdCxcblx0XHRcdGVudGl0eU5hbWUsXG5cdFx0XHRyZW5kZXJUYWJsZURlc2NyaXB0aW9uLFxuXHRcdFx0cmVuZGVyQWRkRGVzY3JpcHRpb25cblx0XHR9ID0gdGhpcy5wcm9wc1xuXHRcdGNvbnN0IHtcblx0XHRcdHNvcnRlZFVzZXJzLFxuXHRcdFx0aXNBZGRpbmcsXG5cdFx0XHRpc1VwZGF0aW5nLFxuXHRcdFx0aXNSZW1vdmluZyxcblx0XHRcdHNob3VsZFJlc2V0QWRkRm9ybSxcblx0XHRcdHNob3VsZFNob3dSZW1vdmVEaWFsb2csXG5cdFx0XHR1c2VyUm9sZVRvVXBkYXRlLFxuXHRcdFx0dXNlclJvbGVUb1JlbW92ZSxcblx0XHRcdHN1Y2Nlc3NNZXNzYWdlLFxuXHRcdFx0ZXhpc3RpbmdNZXNzYWdlLFxuXHRcdFx0YmxvY2tlZE1lc3NhZ2UsXG5cdFx0XHRmYWlsTWVzc2FnZVxuXHRcdH0gPSB0aGlzLnN0YXRlXG5cblx0XHRjb25zdCBhZGRhYmxlUm9sZURlc2NyaXB0aW9ucyA9IGFkZFJvbGVFeGNsdWRlTGlzdFxuXHRcdFx0PyBwaWNrQnkocm9sZURlc2NyaXB0aW9ucywgKF8sIGtleSkgPT4gIWFkZFJvbGVFeGNsdWRlTGlzdC5pbmNsdWRlcyhrZXkpKVxuXHRcdFx0OiByb2xlRGVzY3JpcHRpb25zXG5cdFx0Y29uc3Qgcm9sZXMgPSBPYmplY3Qua2V5cyhyb2xlRGVzY3JpcHRpb25zKVxuXHRcdGNvbnN0IHNob3VsZFJlbmRlckFzTXV0YWJsZSA9ICFyZWFkT25seSAmJiBjYW5Nb2RpZnlcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8PlxuXHRcdFx0XHR7ISFzdWNjZXNzTWVzc2FnZSAmJiAoXG5cdFx0XHRcdFx0PEFsZXJ0V2l0aEljb25cblx0XHRcdFx0XHRcdGlkPVwic3VjY2Vzc01lc3NhZ2VBbGVydFwiXG5cdFx0XHRcdFx0XHR2YXJpYW50PVwic3VjY2Vzc1wiXG5cdFx0XHRcdFx0XHRkaXNtaXNzaWJsZVxuXHRcdFx0XHRcdFx0b25DbG9zZT17KCkgPT5cblx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0c3VjY2Vzc01lc3NhZ2U6IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fT5cblx0XHRcdFx0XHRcdDxwIGNsYXNzTmFtZT1cInByZS13cmFwXCI+e3N1Y2Nlc3NNZXNzYWdlfTwvcD5cblx0XHRcdFx0XHQ8L0FsZXJ0V2l0aEljb24+XG5cdFx0XHRcdCl9XG5cdFx0XHRcdHshIWV4aXN0aW5nTWVzc2FnZSAmJiAoXG5cdFx0XHRcdFx0PEFsZXJ0V2l0aEljb25cblx0XHRcdFx0XHRcdGlkPVwiZXhpc3RpbmdNZXNzYWdlQWxlcnRcIlxuXHRcdFx0XHRcdFx0dmFyaWFudD1cImluZm9cIlxuXHRcdFx0XHRcdFx0ZGlzbWlzc2libGVcblx0XHRcdFx0XHRcdG9uQ2xvc2U9eygpID0+XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdGV4aXN0aW5nTWVzc2FnZTogdW5kZWZpbmVkXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9PlxuXHRcdFx0XHRcdFx0PHAgY2xhc3NOYW1lPVwicHJlLXdyYXBcIj57ZXhpc3RpbmdNZXNzYWdlfTwvcD5cblx0XHRcdFx0XHQ8L0FsZXJ0V2l0aEljb24+XG5cdFx0XHRcdCl9XG5cdFx0XHRcdHshIWJsb2NrZWRNZXNzYWdlICYmIChcblx0XHRcdFx0XHQ8QWxlcnRXaXRoSWNvblxuXHRcdFx0XHRcdFx0aWQ9XCJibG9ja2VkTWVzc2FnZUFsZXJ0XCJcblx0XHRcdFx0XHRcdHZhcmlhbnQ9XCJ3YXJuaW5nXCJcblx0XHRcdFx0XHRcdGRpc21pc3NpYmxlXG5cdFx0XHRcdFx0XHRvbkNsb3NlPXsoKSA9PlxuXHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdFx0XHRibG9ja2VkTWVzc2FnZTogdW5kZWZpbmVkXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9PlxuXHRcdFx0XHRcdFx0PHAgY2xhc3NOYW1lPVwicHJlLXdyYXBcIj57YmxvY2tlZE1lc3NhZ2V9PC9wPlxuXHRcdFx0XHRcdDwvQWxlcnRXaXRoSWNvbj5cblx0XHRcdFx0KX1cblx0XHRcdFx0eyEhZmFpbE1lc3NhZ2UgJiYgKFxuXHRcdFx0XHRcdDxBbGVydFdpdGhJY29uXG5cdFx0XHRcdFx0XHRpZD1cImZhaWxNZXNzYWdlQWxlcnRcIlxuXHRcdFx0XHRcdFx0dmFyaWFudD1cIndhcm5pbmdcIlxuXHRcdFx0XHRcdFx0ZGlzbWlzc2libGVcblx0XHRcdFx0XHRcdG9uQ2xvc2U9eygpID0+XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdGZhaWxNZXNzYWdlOiB1bmRlZmluZWRcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH0+XG5cdFx0XHRcdFx0XHQ8cCBjbGFzc05hbWU9XCJwcmUtd3JhcFwiPntmYWlsTWVzc2FnZX08L3A+XG5cdFx0XHRcdFx0PC9BbGVydFdpdGhJY29uPlxuXHRcdFx0XHQpfVxuXHRcdFx0XHR7c2hvdWxkUmVuZGVyQXNNdXRhYmxlICYmIChcblx0XHRcdFx0XHQ8VXNlclJvbGVzQWRkXG5cdFx0XHRcdFx0XHRpZD1cImVudGl0eVVzZXJSb2xlc0FkZFwiXG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17aXNBZGREaXNhYmxlZH1cblx0XHRcdFx0XHRcdGVudGl0eU5hbWU9e2VudGl0eU5hbWV9XG5cdFx0XHRcdFx0XHRkZWZhdWx0Um9sZT17ZGVmYXVsdFJvbGV9XG5cdFx0XHRcdFx0XHRyb2xlRGVzY3JpcHRpb25zPXthZGRhYmxlUm9sZURlc2NyaXB0aW9uc31cblx0XHRcdFx0XHRcdHJlbmRlckFkZERlc2NyaXB0aW9uPXtyZW5kZXJBZGREZXNjcmlwdGlvbn1cblx0XHRcdFx0XHRcdHRleHRGb3JSb2xlPXt0aGlzLnRleHRGb3JSb2xlfVxuXHRcdFx0XHRcdFx0aXNBZGRpbmdVc2Vyc1RvUm9sZT17aXNBZGRpbmd9XG5cdFx0XHRcdFx0XHRzaG91bGRSZXNldD17c2hvdWxkUmVzZXRBZGRGb3JtfVxuXHRcdFx0XHRcdFx0YWRkVXNlclJvbGVzPXt0aGlzLmFkZFVzZXJSb2xlc31cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQpfVxuXHRcdFx0XHR7ISFyZW5kZXJUYWJsZURlc2NyaXB0aW9uICYmIHJlbmRlclRhYmxlRGVzY3JpcHRpb24oc2hvdWxkUmVuZGVyQXNNdXRhYmxlKX1cblx0XHRcdFx0PFJvdyBjbGFzc05hbWU9XCJtdDNcIj5cblx0XHRcdFx0XHQ8Q29sIHhzPXsxMn0+XG5cdFx0XHRcdFx0XHR7bW9kZWxTdGF0dXMgPT09IE1PREVMX1NUQVRVUy5MT0FESU5HID8gKFxuXHRcdFx0XHRcdFx0XHQ8TG9hZGluZyAvPlxuXHRcdFx0XHRcdFx0KSA6IHNvcnRlZFVzZXJzLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHRcdFx0XHRcdDxVc2VyUm9sZXNDb250ZXh0LlByb3ZpZGVyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e3tcblx0XHRcdFx0XHRcdFx0XHRcdGlzVXBkYXRlRGlzYWJsZWQ6IGlzVXBkYXRlRGlzYWJsZWQgfHwgcmVhZE9ubHksXG5cdFx0XHRcdFx0XHRcdFx0XHRpc0RlbGV0ZURpc2FibGVkOiBpc0RlbGV0ZURpc2FibGVkIHx8IHJlYWRPbmx5LFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FuTW9kaWZ5OiBzaG91bGRSZW5kZXJBc011dGFibGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRjYW5EZWxldGVTZWxmLFxuXHRcdFx0XHRcdFx0XHRcdFx0YWxsb3dNdWx0aXBsZVJvbGVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0cm9sZXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFJvbGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0Rm9yUm9sZTogdGhpcy50ZXh0Rm9yUm9sZSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJSb2xlVG9VcGRhdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRpc1VwZGF0aW5nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlVXNlclJvbGU6IHRoaXMudXBkYXRlVXNlclJvbGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VyUm9sZVRvUmVtb3ZlLFxuXHRcdFx0XHRcdFx0XHRcdFx0aXNSZW1vdmluZyxcblx0XHRcdFx0XHRcdFx0XHRcdHJlbW92ZVVzZXJSb2xlOiB0aGlzLmFsZXJ0UmVtb3ZlVXNlclJvbGVcblx0XHRcdFx0XHRcdFx0XHR9fT5cblx0XHRcdFx0XHRcdFx0XHQ8VXNlclJvbGVzVGFibGUgaWQ9XCJlbnRpdHlVc2VyUm9sZXNUYWJsZVwiIHVzZXJzPXtzb3J0ZWRVc2Vyc30gLz5cblx0XHRcdFx0XHRcdFx0PC9Vc2VyUm9sZXNDb250ZXh0LlByb3ZpZGVyPlxuXHRcdFx0XHRcdFx0KSA6IG51bGx9XG5cdFx0XHRcdFx0PC9Db2w+XG5cdFx0XHRcdDwvUm93PlxuXHRcdFx0XHR7ISF1c2VyUm9sZVRvUmVtb3ZlICYmIChcblx0XHRcdFx0XHQ8QWxlcnREaWFsb2dcblx0XHRcdFx0XHRcdGlkPVwicmVtb3ZlVXNlckFsZXJ0XCJcblx0XHRcdFx0XHRcdGlzT3Blbj17c2hvdWxkU2hvd1JlbW92ZURpYWxvZ31cblx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLnJlbW92ZVVzZXJSb2xlVGl0bGUodXNlclJvbGVUb1JlbW92ZS5yb2xlKX1cblx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlbmRlclJlbW92ZVVzZXJSb2xlRGVzY3JpcHRpb24odXNlclJvbGVUb1JlbW92ZSl9XG5cdFx0XHRcdFx0XHRvbkRlc3Ryb3k9eygpID0+IHRoaXMucmVtb3ZlVXNlclJvbGUodHJ1ZSl9XG5cdFx0XHRcdFx0XHRkZXN0cm95VGV4dD1cIlllcywgcmVtb3ZlIHRoZSB1c2VyXCJcblx0XHRcdFx0XHRcdG9uQ2FuY2VsPXsoKSA9PiB0aGlzLnJlbW92ZVVzZXJSb2xlKGZhbHNlKX1cblx0XHRcdFx0XHRcdGNhbmNlbFRleHQ9XCJObywgSSBjaGFuZ2VkIG15IG1pbmRcIlxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCl9XG5cdFx0XHQ8Lz5cblx0XHQpXG5cdH1cbn1cblxuZXhwb3J0IGNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9IChzdGF0ZTogQmFzZVJlZHV4U3RhdGUsIG93blByb3BzOiBVc2VyUm9sZXNPd25Qcm9wcyk6IFVzZXJSb2xlc1JlZHV4UHJvcHMgPT4ge1xuXHRjb25zdCBjYW5Nb2RpZnlHbG9iYWxseSA9IGNhblBlcmZvcm1BY3Rpdml0eUdsb2JhbGx5KG93blByb3BzLm1vZGlmeVVzZXJSb2xlQWN0aXZpdHlOYW1lLCBkZWZhdWx0T3B0aW9ucyhzdGF0ZSkpXG5cblx0Y29uc3QgY2FuTW9kaWZ5ID1cblx0XHRjYW5Nb2RpZnlHbG9iYWxseSB8fFxuXHRcdChvd25Qcm9wcy5lbnRpdHlcblx0XHRcdD8gY2FuUGVyZm9ybUFjdGl2aXR5T25FbnRpdHkob3duUHJvcHMubW9kaWZ5VXNlclJvbGVBY3Rpdml0eU5hbWUsIGRlZmF1bHRPcHRpb25zKHN0YXRlLCBvd25Qcm9wcywgJ2VudGl0eScpKVxuXHRcdFx0OiBmYWxzZSlcblxuXHRyZXR1cm4ge1xuXHRcdGNhbk1vZGlmeSxcblx0XHRjYW5EZWxldGVTZWxmOlxuXHRcdFx0Y2FuTW9kaWZ5IHx8XG5cdFx0XHQob3duUHJvcHMuZW50aXR5ICYmIG93blByb3BzLmRlbGV0ZU93blVzZXJSb2xlQWN0aXZpdHlOYW1lXG5cdFx0XHRcdD8gY2FuUGVyZm9ybUFjdGl2aXR5T25FbnRpdHkoXG5cdFx0XHRcdFx0XHRvd25Qcm9wcy5kZWxldGVPd25Vc2VyUm9sZUFjdGl2aXR5TmFtZSxcblx0XHRcdFx0XHRcdGRlZmF1bHRPcHRpb25zKHN0YXRlLCBvd25Qcm9wcywgJ2VudGl0eScpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQ6IGZhbHNlKVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzKShVc2VyUm9sZXMpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsSUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsU0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksWUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsY0FBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsUUFBQSxHQUFBZCxPQUFBO0FBS0EsSUFBQWUsWUFBQSxHQUFBZixPQUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "studiokit-scaffolding-js",
3
- "version": "7.8.0",
3
+ "version": "7.8.1",
4
4
  "description": "Common scaffolding for Studio apps at Purdue",
5
5
  "repository": "https://gitlab.com/purdue-informatics/studiokit/studiokit-scaffolding-js",
6
6
  "license": "MIT",