@fgv/ts-bcp47 0.9.4 → 0.9.6

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.
package/bcp47/common.js CHANGED
@@ -29,7 +29,7 @@ exports.GlobalRegion = exports.UndeterminedLanguage = exports.subtagsToString =
29
29
  * @public
30
30
  */
31
31
  function subtagsToString(subtags) {
32
- var _a, _b, _c, _d;
32
+ var _a, _b, _c;
33
33
  if (subtags.grandfathered) {
34
34
  return subtags.grandfathered;
35
35
  }
@@ -40,7 +40,7 @@ function subtagsToString(subtags) {
40
40
  subtags.region,
41
41
  ...((_b = subtags.variants) !== null && _b !== void 0 ? _b : []),
42
42
  ...((_c = subtags.extensions) !== null && _c !== void 0 ? _c : []).map((e) => `${e.singleton}-${e.value}`),
43
- ...((_d = subtags.privateUse) !== null && _d !== void 0 ? _d : []).map((p) => `x-${p}`),
43
+ ...(subtags.privateUse && subtags.privateUse.length > 0 ? [`x-${subtags.privateUse.join('-')}`] : []),
44
44
  ]
45
45
  .filter((s) => s !== undefined)
46
46
  .join('-');
@@ -56,4 +56,4 @@ exports.UndeterminedLanguage = 'und';
56
56
  */
57
57
  // eslint-disable-next-line @typescript-eslint/naming-convention
58
58
  exports.GlobalRegion = '001';
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JjcDQ3L2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUE4Qkg7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQUMsT0FBZ0I7O0lBQzVDLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDaEM7SUFDRCxPQUFPO1FBQ0gsT0FBTyxDQUFDLGVBQWU7UUFDdkIsR0FBRyxDQUFDLE1BQUEsT0FBTyxDQUFDLFFBQVEsbUNBQUksRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxNQUFNO1FBQ2QsT0FBTyxDQUFDLE1BQU07UUFDZCxHQUFHLENBQUMsTUFBQSxPQUFPLENBQUMsUUFBUSxtQ0FBSSxFQUFFLENBQUM7UUFDM0IsR0FBRyxDQUFDLE1BQUEsT0FBTyxDQUFDLFVBQVUsbUNBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JFLEdBQUcsQ0FBQyxNQUFBLE9BQU8sQ0FBQyxVQUFVLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztLQUNyRDtTQUNJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBZSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQztTQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQWZELDBDQWVDO0FBRUQ7O0dBRUc7QUFDSCxnRUFBZ0U7QUFDbkQsUUFBQSxvQkFBb0IsR0FBRyxLQUE0QyxDQUFDO0FBRWpGOztHQUVHO0FBQ0gsZ0VBQWdFO0FBQ25ELFFBQUEsWUFBWSxHQUFHLEtBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgRXh0ZW5zaW9uU2luZ2xldG9uLCBFeHRlbnNpb25TdWJ0YWcgfSBmcm9tICcuL2JjcDQ3U3VidGFncy9tb2RlbCc7XG5leHBvcnQgeyBFeHRlbnNpb25TaW5nbGV0b24sIEV4dGVuc2lvblN1YnRhZyB9O1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25TdWJ0YWdWYWx1ZSB7XG4gICAgcmVhZG9ubHkgc2luZ2xldG9uOiBFeHRlbnNpb25TaW5nbGV0b247XG4gICAgcmVhZG9ubHkgdmFsdWU6IEV4dGVuc2lvblN1YnRhZztcbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VidGFncyB7XG4gICAgcHJpbWFyeUxhbmd1YWdlPzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTGFuZ3VhZ2VTdWJ0YWc7XG4gICAgZXh0bGFuZ3M/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRMYW5nU3VidGFnW107XG4gICAgc2NyaXB0PzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuU2NyaXB0U3VidGFnO1xuICAgIHJlZ2lvbj86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlJlZ2lvblN1YnRhZztcbiAgICB2YXJpYW50cz86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlZhcmlhbnRTdWJ0YWdbXTtcbiAgICBleHRlbnNpb25zPzogRXh0ZW5zaW9uU3VidGFnVmFsdWVbXTtcbiAgICBwcml2YXRlVXNlPzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0ZW5kZWRMYW5ndWFnZVJhbmdlW107XG5cbiAgICBncmFuZGZhdGhlcmVkPzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuR3JhbmRmYXRoZXJlZFRhZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHRvIGEgc3RyaW5nLlxuICogQHBhcmFtIHN1YnRhZ3MgLSBUaGUge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJ0YWdzVG9TdHJpbmcoc3VidGFnczogU3VidGFncyk6IHN0cmluZyB7XG4gICAgaWYgKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICByZXR1cm4gc3VidGFncy5ncmFuZGZhdGhlcmVkO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgICBzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSxcbiAgICAgICAgLi4uKHN1YnRhZ3MuZXh0bGFuZ3MgPz8gW10pLFxuICAgICAgICBzdWJ0YWdzLnNjcmlwdCxcbiAgICAgICAgc3VidGFncy5yZWdpb24sXG4gICAgICAgIC4uLihzdWJ0YWdzLnZhcmlhbnRzID8/IFtdKSxcbiAgICAgICAgLi4uKHN1YnRhZ3MuZXh0ZW5zaW9ucyA/PyBbXSkubWFwKChlKSA9PiBgJHtlLnNpbmdsZXRvbn0tJHtlLnZhbHVlfWApLFxuICAgICAgICAuLi4oc3VidGFncy5wcml2YXRlVXNlID8/IFtdKS5tYXAoKHApID0+IGB4LSR7cH1gKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiBzICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5qb2luKCctJyk7XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgVW5kZXRlcm1pbmVkTGFuZ3VhZ2UgPSAndW5kJyBhcyBJYW5hLkxhbmd1YWdlU3VidGFncy5MYW5ndWFnZVN1YnRhZztcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBHbG9iYWxSZWdpb24gPSAnMDAxJyBhcyBJYW5hLkxhbmd1YWdlU3VidGFncy5SZWdpb25TdWJ0YWc7XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JjcDQ3L2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUE4Qkg7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQUMsT0FBZ0I7O0lBQzVDLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDaEM7SUFDRCxPQUFPO1FBQ0gsT0FBTyxDQUFDLGVBQWU7UUFDdkIsR0FBRyxDQUFDLE1BQUEsT0FBTyxDQUFDLFFBQVEsbUNBQUksRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxNQUFNO1FBQ2QsT0FBTyxDQUFDLE1BQU07UUFDZCxHQUFHLENBQUMsTUFBQSxPQUFPLENBQUMsUUFBUSxtQ0FBSSxFQUFFLENBQUM7UUFDM0IsR0FBRyxDQUFDLE1BQUEsT0FBTyxDQUFDLFVBQVUsbUNBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JFLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hHO1NBQ0ksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFlLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDO1NBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixDQUFDO0FBZkQsMENBZUM7QUFFRDs7R0FFRztBQUNILGdFQUFnRTtBQUNuRCxRQUFBLG9CQUFvQixHQUFHLEtBQTRDLENBQUM7QUFFakY7O0dBRUc7QUFDSCxnRUFBZ0U7QUFDbkQsUUFBQSxZQUFZLEdBQUcsS0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25TaW5nbGV0b24sIEV4dGVuc2lvblN1YnRhZyB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzL21vZGVsJztcbmV4cG9ydCB7IEV4dGVuc2lvblNpbmdsZXRvbiwgRXh0ZW5zaW9uU3VidGFnIH07XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvblN1YnRhZ1ZhbHVlIHtcbiAgICByZWFkb25seSBzaW5nbGV0b246IEV4dGVuc2lvblNpbmdsZXRvbjtcbiAgICByZWFkb25seSB2YWx1ZTogRXh0ZW5zaW9uU3VidGFnO1xufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJ0YWdzIHtcbiAgICBwcmltYXJ5TGFuZ3VhZ2U/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5MYW5ndWFnZVN1YnRhZztcbiAgICBleHRsYW5ncz86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkV4dExhbmdTdWJ0YWdbXTtcbiAgICBzY3JpcHQ/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5TY3JpcHRTdWJ0YWc7XG4gICAgcmVnaW9uPzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuUmVnaW9uU3VidGFnO1xuICAgIHZhcmlhbnRzPzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFyaWFudFN1YnRhZ1tdO1xuICAgIGV4dGVuc2lvbnM/OiBFeHRlbnNpb25TdWJ0YWdWYWx1ZVtdO1xuICAgIHByaXZhdGVVc2U/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRlbmRlZExhbmd1YWdlUmFuZ2VbXTtcblxuICAgIGdyYW5kZmF0aGVyZWQ/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5HcmFuZGZhdGhlcmVkVGFnO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdG8gYSBzdHJpbmcuXG4gKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnRhZ3NUb1N0cmluZyhzdWJ0YWdzOiBTdWJ0YWdzKTogc3RyaW5nIHtcbiAgICBpZiAoc3VidGFncy5ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgIHJldHVybiBzdWJ0YWdzLmdyYW5kZmF0aGVyZWQ7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAgIHN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlLFxuICAgICAgICAuLi4oc3VidGFncy5leHRsYW5ncyA/PyBbXSksXG4gICAgICAgIHN1YnRhZ3Muc2NyaXB0LFxuICAgICAgICBzdWJ0YWdzLnJlZ2lvbixcbiAgICAgICAgLi4uKHN1YnRhZ3MudmFyaWFudHMgPz8gW10pLFxuICAgICAgICAuLi4oc3VidGFncy5leHRlbnNpb25zID8/IFtdKS5tYXAoKGUpID0+IGAke2Uuc2luZ2xldG9ufS0ke2UudmFsdWV9YCksXG4gICAgICAgIC4uLihzdWJ0YWdzLnByaXZhdGVVc2UgJiYgc3VidGFncy5wcml2YXRlVXNlLmxlbmd0aCA+IDAgPyBbYHgtJHtzdWJ0YWdzLnByaXZhdGVVc2Uuam9pbignLScpfWBdIDogW10pLFxuICAgIF1cbiAgICAgICAgLmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHMgIT09IHVuZGVmaW5lZClcbiAgICAgICAgLmpvaW4oJy0nKTtcbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBVbmRldGVybWluZWRMYW5ndWFnZSA9ICd1bmQnIGFzIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkxhbmd1YWdlU3VidGFnO1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IEdsb2JhbFJlZ2lvbiA9ICcwMDEnIGFzIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlJlZ2lvblN1YnRhZztcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"languageTag.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"languageTag.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTag.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,MAAM,EAA0B,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAyC,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAa,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB;;OAEG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,WAAW;IACpB;;;OAGG;IACH,SAAgB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE3C;;OAEG;IACH,SAAgB,GAAG,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,SAAgB,QAAQ,EAAE,oBAAoB,CAAC;IAE/C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAElD;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAE3C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IAExC;;OAEG;IACH,SAAS,CAAC,gBAAgB,EAAE,SAAS,GAAG,OAAO,CAAC;IAEhD;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC;IAE5C;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC;IAE5C;;OAEG;IACH,SAAS,CAAC,iBAAiB,EAAE,SAAS,GAAG,YAAY,GAAG,KAAK,CAAC;IAE9D;;;;;;;;;;;OAWG;IACH,SAAS,aAAa,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB;IAuB7H;;;;;;;OAOG;IACH,IAAW,eAAe,IAAI,YAAY,GAAG,SAAS,CAErD;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAQ5B;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAQpC;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,OAAO,CAQhC;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,OAAO,CAQhC;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,MAAM,CAkC/B;IAED;;;;;;;;;OASG;WACW,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC,WAAW,CAAC;IAQ/F;;;;;;;;;;OAUG;WACW,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC,WAAW,CAAC;IAIxG;;;;;;;;;;OAUG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC,WAAW,CAAC;IAQnG;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAC/B,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,WAAW,EACzB,iBAAiB,EAAE,gBAAgB,EACnC,cAAc,CAAC,EAAE,sBAAsB,GACxC,MAAM,CAAC,WAAW,CAAC;IAatB;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;IAQhG;;;;;OAKG;IACI,mBAAmB,IAAI,YAAY,GAAG,SAAS;IAatD;;;;OAIG;IACI,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC;IAYrC;;;;OAIG;IACI,eAAe,IAAI,MAAM,CAAC,WAAW,CAAC;IAY7C;;;;OAIG;IACI,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;IAYzC;;;;OAIG;IACI,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;IAYzC;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAG5B"}
@@ -199,9 +199,7 @@ class LanguageTag {
199
199
  }
200
200
  }
201
201
  if (this.subtags.privateUse && this.subtags.privateUse.length > 0) {
202
- for (const e of this.subtags.privateUse) {
203
- parts.push(`(-x "${e}")`);
204
- }
202
+ parts.push(`(-x "${this.subtags.privateUse.join('-')}")`);
205
203
  }
206
204
  }
207
205
  else {
@@ -389,4 +387,4 @@ class LanguageTag {
389
387
  }
390
388
  }
391
389
  exports.LanguageTag = LanguageTag;
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQStEO0FBQy9ELHFDQUEwRTtBQUMxRSxtREFBMEU7QUFDMUUsZ0RBQTZEO0FBRTdELGlFQUE4RDtBQUM5RCwyREFBd0Q7QUFDeEQsbURBQStDO0FBRS9DLDZDQUEyQztBQXNCM0M7OztHQUdHO0FBQ0gsTUFBYSxXQUFXO0lBMERwQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQXNCLE9BQWdCLEVBQUUsUUFBcUIsRUFBRSxhQUErQixFQUFFLElBQTZCO1FBQ3pILElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUEsd0JBQWUsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3RCxJQUFJLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO2FBQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FB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RDs7OztPQUlHO0lBQ0ksV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUNELE1BQU0sT0FBTyxHQUEyQjtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVc7UUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTyxJQUFBLGtCQUFPLEVBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7UUFDRCxNQUFNLE9BQU8sR0FBMkI7WUFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2hCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFyWkQsa0NBcVpDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIElhbmEgZnJvbSAnLi4vaWFuYSc7XG5cbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgU3VidGFncywgVW5kZXRlcm1pbmVkTGFuZ3VhZ2UsIHN1YnRhZ3NUb1N0cmluZyB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IFRhZ05vcm1hbGl6YXRpb24sIG1vc3ROb3JtYWxpemVkIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdWYWxpZGl0eSwgbW9zdFZhbGlkIH0gZnJvbSAnLi92YWxpZGF0aW9uL2NvbW1vbic7XG5cbmltcG9ydCB7IExhbmd1YWdlUmVnaXN0cnlEYXRhIH0gZnJvbSAnLi9sYW5ndWFnZVJlZ2lzdHJ5RGF0YSc7XG5pbXBvcnQgeyBMYW5ndWFnZVRhZ1BhcnNlciB9IGZyb20gJy4vbGFuZ3VhZ2VUYWdQYXJzZXInO1xuaW1wb3J0IHsgTm9ybWFsaXplVGFnIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uJztcbmltcG9ydCB7IFNjcmlwdFN1YnRhZyB9IGZyb20gJy4uL2lhbmEvbGFuZ3VhZ2Utc3VidGFncyc7XG5pbXBvcnQgeyBWYWxpZGF0ZVRhZyB9IGZyb20gJy4vdmFsaWRhdGlvbic7XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgcGFyc2luZyBvciBjcmVhdGlvbiBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9iamVjdHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogRGVzaXJlZCB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGl0eSBsZXZlbH0gKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICB2YWxpZGl0eT86IFRhZ1ZhbGlkaXR5O1xuICAgIC8qKlxuICAgICAqIERlc2lyZWQge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfSAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIG5vcm1hbGl6YXRpb24/OiBUYWdOb3JtYWxpemF0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoZSB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHN1YnRhZyBhbmQgZXh0ZW5zaW9uIHJlZ2lzdHJpZXN9IHRvXG4gICAgICogYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICBpYW5hPzogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXM7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBCQ1AtNDcgbGFuZ3VhZ2UgdGFnLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWcge1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRpdmlkdWFsIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gZm9yXG4gICAgICogdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1YnRhZ3M6IFJlYWRvbmx5PFN1YnRhZ3M+O1xuXG4gICAgLyoqXG4gICAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGV0YWlscyBhYm91dCB0aGlzIGxhbmd1YWdlIHRhZyBmcm9tIHRoZSBJQU5BIGxhbmd1YWdlXG4gICAgICogcmVnaXN0cmllcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVnaXN0cnk6IExhbmd1YWdlUmVnaXN0cnlEYXRhO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsaWRpdHk6IFRhZ1ZhbGlkaXR5O1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9ub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ZhbGlkOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1N0cmljdGx5VmFsaWQ6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzQ2Fub25pY2FsOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ByZWZlcnJlZDogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc3VwcHJlc3NlZFNjcmlwdDogdW5kZWZpbmVkIHwgU2NyaXB0U3VidGFnIHwgZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgTGFuZ3VhZ2VUYWcgfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3MgfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHRhZyBpcyBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gdmFsaWRpdHkgLSBLbm93biB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGF0aW9uIGxldmVsfSBvZiB0aGVcbiAgICAgKiBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBub3JtYWxpemF0aW9uIC0gS25vd24ge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfVxuICAgICAqIG9mIHRoZSBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBpYW5hIC0gVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlUmVnaXN0cmllc30gdXNlZCB0byB2YWxpZGF0ZSBhbmQgbm9ybWFsaXplXG4gICAgICogdGhpcyB0YWcuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHN1YnRhZ3M6IFN1YnRhZ3MsIHZhbGlkaXR5OiBUYWdWYWxpZGl0eSwgbm9ybWFsaXphdGlvbjogVGFnTm9ybWFsaXphdGlvbiwgaWFuYTogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMpIHtcbiAgICAgICAgdGhpcy5zdWJ0YWdzID0gT2JqZWN0LmZyZWV6ZSh7IC4uLnN1YnRhZ3MgfSk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6YXRpb24gPSBub3JtYWxpemF0aW9uO1xuICAgICAgICB0aGlzLl92YWxpZGl0eSA9IHZhbGlkaXR5O1xuICAgICAgICB0aGlzLnRhZyA9IHN1YnRhZ3NUb1N0cmluZyhzdWJ0YWdzKTtcbiAgICAgICAgdGhpcy5faWFuYSA9IGlhbmE7XG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSBuZXcgTGFuZ3VhZ2VSZWdpc3RyeURhdGEodGhpcy5zdWJ0YWdzLCBpYW5hKTtcblxuICAgICAgICBpZiAodmFsaWRpdHkgPT09ICdzdHJpY3RseS12YWxpZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxpZGl0eSA9PT0gJ3ZhbGlkJykge1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9ybWFsaXphdGlvbiA9PT0gJ3ByZWZlcnJlZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUHJlZmVycmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2lzQ2Fub25pY2FsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uID09PSAnY2Fub25pY2FsJykge1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGVmZmVjdGl2ZSBzY3JpcHQgb2YgdGhpcyBsYW5ndWFnZSB0YWcsIGlmIGtub3duLlxuICAgICAqIFRoZSBlZmZlY3RpdmUgc2NyaXB0IGlzIHRoZSBzY3JpcHQgc3VidGFnIGluIHRoZSB0YWcgaXRzZWxmLFxuICAgICAqIGlmIHByZXNlbnQsIG9yIHRoZSBgU3VwcHJlc3MtU2NyaXB0YCBkZWZpbmVkIGluIHRoZVxuICAgICAqIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkvbGFuZ3VhZ2Utc3VidGFnLXJlZ2lzdHJ5IHwgSUFOQSBzdWJ0YWcgcmVnaXN0cnl9XG4gICAgICogZm9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlIG9mIHRoaXMgdGFnLiAgQ2FuIGJlIGB1bmRlZmluZWRgXG4gICAgICogaWYgbmVpdGhlciB0aGUgdGFnIG5vciB0aGUgSUFOQSByZWdpc3RyeSBkZWZpbmUgYSBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlZmZlY3RpdmVTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5zY3JpcHQgPz8gdGhpcy5nZXRTdXBwcmVzc2VkU2NyaXB0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiB0aGlzIHRhZyByZXByZXNlbnRzIHRoZSBzcGVjaWFsIGB1bmRldGVybWluZWRgIGxhbmd1YWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNVbmRldGVybWluZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiB0aGlzLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpID09PSBVbmRldGVybWluZWRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIHZhbGlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IFZhbGlkYXRlVGFnLmlzVmFsaWQodGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRpdHkgPSAndmFsaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgaWYgdGhpcyBsYW5ndWFnZSB0YWcgaXMgc3RyaWN0bHkgdmFsaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1N0cmljdGx5VmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1N0cmljdGx5VmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNTdHJpY3RseVZhbGlkID0gVmFsaWRhdGVUYWcuaXNTdHJpY3RseVZhbGlkKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNTdHJpY3RseVZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRpdHkgPSAnc3RyaWN0bHktdmFsaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1N0cmljdGx5VmFsaWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIGxhbmd1YWdlIHRhZyBpcyBpbiBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzQ2Fub25pY2FsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNDYW5vbmljYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSBWYWxpZGF0ZVRhZy5pc0Nhbm9uaWNhbCh0aGlzLnN1YnRhZ3MpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXphdGlvbiA9ICdjYW5vbmljYWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Nhbm9uaWNhbCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIGluIHByZWZlcnJlZCBmb3JtLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNQcmVmZXJyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1ByZWZlcnJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ByZWZlcnJlZCA9IFZhbGlkYXRlVGFnLmlzSW5QcmVmZXJyZWRGb3JtKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNQcmVmZXJyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3JtYWxpemF0aW9uID0gJ3ByZWZlcnJlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJlZmVycmVkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgYSBncmFuZGZhdGhlcmVkIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzR3JhbmRmYXRoZXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5ncmFuZGZhdGhlcmVkICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhpcyB0YWcuXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKCF0aGlzLnN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVnaXN0cnkucHJpbWFyeUxhbmd1YWdlIHx8IHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKCh0aGlzLnJlZ2lzdHJ5LnByaW1hcnlMYW5ndWFnZT8uZGVzY3JpcHRpb25bMF0gPz8gdGhpcy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSkhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmV4dGxhbmdzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMucmVnaXN0cnkuZXh0bGFuZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaChgLyAke2UucmVnaXN0cnk/LmRlc2NyaXB0aW9uWzBdID8/IGUuc3VidGFnfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChgaW4gJHt0aGlzLnJlZ2lzdHJ5LnNjcmlwdD8uZGVzY3JpcHRpb25bMF0gPz8gdGhpcy5zdWJ0YWdzLnNjcmlwdH0gc2NyaXB0YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYGFzIHNwb2tlbiBpbiAke3RoaXMucmVnaXN0cnkucmVnaW9uPy5kZXNjcmlwdGlvblswXSA/PyB0aGlzLnN1YnRhZ3MucmVnaW9ufWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVnaXN0cnkudmFyaWFudHMgJiYgdGhpcy5yZWdpc3RyeS52YXJpYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMucmVnaXN0cnkudmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaChgKCR7ZS5yZWdpc3RyeT8uZGVzY3JpcHRpb25bMF0gPz8gZS5zdWJ0YWd9KWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmV4dGVuc2lvbnMgJiYgdGhpcy5yZWdpc3RyeS5leHRlbnNpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5yZWdpc3RyeS5leHRlbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYCgke2UucmVnaXN0cnk/LmRlc2NyaXB0aW9uWzBdID8/IGAtJHtlLnNpbmdsZXRvbn1gfSBcIiR7ZS52YWx1ZX1cIilgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJ0YWdzLnByaXZhdGVVc2UgJiYgdGhpcy5zdWJ0YWdzLnByaXZhdGVVc2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLnN1YnRhZ3MucHJpdmF0ZVVzZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGAoLXggXCIke2V9XCIpYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChgJHt0aGlzLnRhZ30gKGdyYW5kZmF0aGVyZWQpYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgIHRhZ1xuICAgICAqIHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSB0YWcgLSBUaGUgYHN0cmluZ2AgdGFnIGZyb20gd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ31cbiAgICAgKiBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVRhZyh0YWc6IHN0cmluZywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnUGFyc2VyLnBhcnNlKHRhZywgb3B0aW9ucy5pYW5hKS5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1lZChzdWJ0YWdzLCAndW5rbm93bicsICd1bmtub3duJywgb3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBmcm9tIGEgc3VwcGxpZWRcbiAgICAgKiB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICogQHBhcmFtIHRhZyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IGZyb20gd2hpY2ggdGhlXG4gICAgICoge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVN1YnRhZ3Moc3VidGFnczogU3VidGFncywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRyYW5zZm9ybWVkKHN1YnRhZ3MsICd1bmtub3duJywgJ3Vua25vd24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgXG4gICAgICogdGFnIG9yIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdXNpbmcgb3B0aW9uYWwgY29uZmlndXJhdGlvbixcbiAgICAgKiBpZiBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBgc3RyaW5nYCB0YWcgb3Ige0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShmcm9tOiBzdHJpbmcgfCBTdWJ0YWdzLCBvcHRpb25zPzogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodHlwZW9mIGZyb20gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tVGFnKGZyb20sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbVN1YnRhZ3MoZnJvbSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gYnkgYXBwbHlpbmcgYXBwcm9wcmlhdGUgdHJhbnNmb3JtYXRpb25zXG4gICAgICogdG8gYXMgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBCY3A0Ny5TdWJ0YWdzfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHdoaWNoIHJlcHJlc2VudCB0aGUgdGFnLlxuICAgICAqIEBwYXJhbSBmcm9tVmFsaWRpdHkgLSBUaGUge0BsaW5rIEJjcDQ3LlRhZ1ZhbGlkaXR5IHwgdmFsaWRhdGlvbiBsZXZlbH0gb2YgdGhlIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIGZyb21Ob3JtYWxpemF0aW9uIC0gVGhlIHtAbGluayBCY3A0Ny5UYWdOb3JtYWxpemF0aW9uIHwgbm9ybWFsaXphdGlvbiBsZXZlbH0gZm8gdGhlXG4gICAgICogc3VwcGxpZWQgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gcGFydGlhbE9wdGlvbnMgLSBBbnkge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnMgfCBpbml0aWFsaXphdGlvbiBvcHRpb25zfS5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgY29ycmVzcG9uZGluZyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9yIGBGYWlsdXJlYFxuICAgICAqIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfY3JlYXRlVHJhbnNmb3JtZWQoXG4gICAgICAgIHN1YnRhZ3M6IFN1YnRhZ3MsXG4gICAgICAgIGZyb21WYWxpZGl0eTogVGFnVmFsaWRpdHksXG4gICAgICAgIGZyb21Ob3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uLFxuICAgICAgICBwYXJ0aWFsT3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnNcbiAgICApOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMocGFydGlhbE9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gVmFsaWRhdGVUYWcudmFsaWRhdGVTdWJ0YWdzKHN1YnRhZ3MsIG9wdGlvbnMudmFsaWRpdHksIGZyb21WYWxpZGl0eSlcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVUYWcubm9ybWFsaXplU3VidGFncyhzdWJ0YWdzLCBvcHRpb25zLm5vcm1hbGl6YXRpb24sIGZyb21Ob3JtYWxpemF0aW9uKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAub25TdWNjZXNzKChub3JtYWxpemVkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRpdHkgPSBtb3N0VmFsaWQoZnJvbVZhbGlkaXR5LCBvcHRpb25zLnZhbGlkaXR5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemF0aW9uID0gbW9zdE5vcm1hbGl6ZWQoZnJvbU5vcm1hbGl6YXRpb24sIG9wdGlvbnMubm9ybWFsaXphdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IExhbmd1YWdlVGFnKG5vcm1hbGl6ZWQsIHZhbGlkaXR5LCBub3JtYWxpemF0aW9uLCBvcHRpb25zLmlhbmEpKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBmdWxseS1zcGVjaWZpZWQge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IGZyb20gcGFydGlhbCBvciB1bmRlZmluZWRcbiAgICAgKiBvcHRpb25zLCBzdWJzdGl0dXRpbmcgZGVmYXVsdHMgYXMgYXBwcm9wcmlhdGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IHRvIGJlIGV4cGFuZGVkLCBvciBgdW5kZWZpbmVkYFxuICAgICAqIGZvciBkZWZhdWx0IG9wdGlvbnMuXG4gICAgICogQHJldHVybnMgRnVsbHktc3BlY2lmaWVkIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfS5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXRPcHRpb25zKG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVxdWlyZWQ8TGFuZ3VhZ2VUYWdJbml0T3B0aW9ucz4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWFuYTogb3B0aW9ucz8uaWFuYSA/PyBJYW5hLkRlZmF1bHRSZWdpc3RyaWVzLmxhbmd1YWdlUmVnaXN0cmllcyxcbiAgICAgICAgICAgIHZhbGlkaXR5OiBvcHRpb25zPy52YWxpZGl0eSA/PyAnd2VsbC1mb3JtZWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogb3B0aW9ucz8ubm9ybWFsaXphdGlvbiA/PyAnbm9uZScsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYFN1cHByZXNzLVNjcmlwdGAgdmFsdWUgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugb2YgdGhpcyB0YWcsXG4gICAgICogcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgZGlmZmVyZW50IHNjcmlwdCBpcyBkZWZpbmVkIGluIHRoaXMgc3VidGFnLlxuICAgICAqIEByZXR1cm5zIFRoZSBzdXBwcmVzcy1zY3JpcHQgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2UsIG9yIHVuZGVmaW5lZCBpZlxuICAgICAqIHRoZSBwcmltYXJ5IGxhbmd1YWdlIGlzIGludmFsaWQgb3IgaGFzIG5vIGRlZmluZWQgc3VwcHJlc3NlZCBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldFN1cHByZXNzZWRTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudHJ5R2V0KHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZT8uc3VwcHJlc3NTY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID0gbGFuZ3VhZ2Uuc3VwcHJlc3NTY3JpcHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID8gdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1ZhbGlkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiAndmFsaWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogdGhpcy5fbm9ybWFsaXphdGlvbixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHN0cmljdGx5IHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgc3RyaWN0bHkgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgc3RyaWN0bHkgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmljdGx5VmFsaWQoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RyaWN0bHlWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3N0cmljdGx5LXZhbGlkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IHRoaXMuX25vcm1hbGl6YXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9DYW5vbmljYWwoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiB0aGlzLl92YWxpZGl0eSxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246ICdjYW5vbmljYWwnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWcuX2NyZWF0ZVRyYW5zZm9ybWVkKHRoaXMuc3VidGFncywgdGhpcy5fdmFsaWRpdHksIHRoaXMuX25vcm1hbGl6YXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjb25maXJtZWQgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIG5vcm1hbGl6ZWQgdG8gcHJlZmVycmVkIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIHRvUHJlZmVycmVkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ByZWZlcnJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3ZhbGlkJywgLy8gcHJlZmVycmVkIHJlcXVpcmVzIHZhbGlkaXR5XG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiAncHJlZmVycmVkJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50YWc7XG4gICAgfVxufVxuIl19
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQStEO0FBQy9ELHFDQUEwRTtBQUMxRSxtREFBMEU7QUFDMUUsZ0RBQTZEO0FBRTdELGlFQUE4RDtBQUM5RCwyREFBd0Q7QUFDeEQsbURBQStDO0FBRS9DLDZDQUEyQztBQXNCM0M7OztHQUdHO0FBQ0gsTUFBYSxXQUFXO0lBMERwQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQXNCLE9BQWdCLEVBQUUsUUFBcUIsRUFBRSxhQUErQixFQUFFLElBQTZCO1FBQ3pILElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUEsd0JBQWUsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3RCxJQUFJLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO2FBQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FB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VztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUNELE1BQU0sT0FBTyxHQUEyQjtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVc7UUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTyxJQUFBLGtCQUFPLEVBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7UUFDRCxNQUFNLE9BQU8sR0FBMkI7WUFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2hCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFuWkQsa0NBbVpDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIElhbmEgZnJvbSAnLi4vaWFuYSc7XG5cbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgU3VidGFncywgVW5kZXRlcm1pbmVkTGFuZ3VhZ2UsIHN1YnRhZ3NUb1N0cmluZyB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IFRhZ05vcm1hbGl6YXRpb24sIG1vc3ROb3JtYWxpemVkIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdWYWxpZGl0eSwgbW9zdFZhbGlkIH0gZnJvbSAnLi92YWxpZGF0aW9uL2NvbW1vbic7XG5cbmltcG9ydCB7IExhbmd1YWdlUmVnaXN0cnlEYXRhIH0gZnJvbSAnLi9sYW5ndWFnZVJlZ2lzdHJ5RGF0YSc7XG5pbXBvcnQgeyBMYW5ndWFnZVRhZ1BhcnNlciB9IGZyb20gJy4vbGFuZ3VhZ2VUYWdQYXJzZXInO1xuaW1wb3J0IHsgTm9ybWFsaXplVGFnIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uJztcbmltcG9ydCB7IFNjcmlwdFN1YnRhZyB9IGZyb20gJy4uL2lhbmEvbGFuZ3VhZ2Utc3VidGFncyc7XG5pbXBvcnQgeyBWYWxpZGF0ZVRhZyB9IGZyb20gJy4vdmFsaWRhdGlvbic7XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgcGFyc2luZyBvciBjcmVhdGlvbiBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9iamVjdHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogRGVzaXJlZCB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGl0eSBsZXZlbH0gKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICB2YWxpZGl0eT86IFRhZ1ZhbGlkaXR5O1xuICAgIC8qKlxuICAgICAqIERlc2lyZWQge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfSAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIG5vcm1hbGl6YXRpb24/OiBUYWdOb3JtYWxpemF0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoZSB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHN1YnRhZyBhbmQgZXh0ZW5zaW9uIHJlZ2lzdHJpZXN9IHRvXG4gICAgICogYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICBpYW5hPzogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXM7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBCQ1AtNDcgbGFuZ3VhZ2UgdGFnLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWcge1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRpdmlkdWFsIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gZm9yXG4gICAgICogdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1YnRhZ3M6IFJlYWRvbmx5PFN1YnRhZ3M+O1xuXG4gICAgLyoqXG4gICAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGV0YWlscyBhYm91dCB0aGlzIGxhbmd1YWdlIHRhZyBmcm9tIHRoZSBJQU5BIGxhbmd1YWdlXG4gICAgICogcmVnaXN0cmllcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVnaXN0cnk6IExhbmd1YWdlUmVnaXN0cnlEYXRhO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsaWRpdHk6IFRhZ1ZhbGlkaXR5O1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9ub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ZhbGlkOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1N0cmljdGx5VmFsaWQ6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzQ2Fub25pY2FsOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ByZWZlcnJlZDogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc3VwcHJlc3NlZFNjcmlwdDogdW5kZWZpbmVkIHwgU2NyaXB0U3VidGFnIHwgZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgTGFuZ3VhZ2VUYWcgfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3MgfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHRhZyBpcyBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gdmFsaWRpdHkgLSBLbm93biB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGF0aW9uIGxldmVsfSBvZiB0aGVcbiAgICAgKiBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBub3JtYWxpemF0aW9uIC0gS25vd24ge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfVxuICAgICAqIG9mIHRoZSBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBpYW5hIC0gVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlUmVnaXN0cmllc30gdXNlZCB0byB2YWxpZGF0ZSBhbmQgbm9ybWFsaXplXG4gICAgICogdGhpcyB0YWcuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHN1YnRhZ3M6IFN1YnRhZ3MsIHZhbGlkaXR5OiBUYWdWYWxpZGl0eSwgbm9ybWFsaXphdGlvbjogVGFnTm9ybWFsaXphdGlvbiwgaWFuYTogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMpIHtcbiAgICAgICAgdGhpcy5zdWJ0YWdzID0gT2JqZWN0LmZyZWV6ZSh7IC4uLnN1YnRhZ3MgfSk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6YXRpb24gPSBub3JtYWxpemF0aW9uO1xuICAgICAgICB0aGlzLl92YWxpZGl0eSA9IHZhbGlkaXR5O1xuICAgICAgICB0aGlzLnRhZyA9IHN1YnRhZ3NUb1N0cmluZyhzdWJ0YWdzKTtcbiAgICAgICAgdGhpcy5faWFuYSA9IGlhbmE7XG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSBuZXcgTGFuZ3VhZ2VSZWdpc3RyeURhdGEodGhpcy5zdWJ0YWdzLCBpYW5hKTtcblxuICAgICAgICBpZiAodmFsaWRpdHkgPT09ICdzdHJpY3RseS12YWxpZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxpZGl0eSA9PT0gJ3ZhbGlkJykge1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9ybWFsaXphdGlvbiA9PT0gJ3ByZWZlcnJlZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUHJlZmVycmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2lzQ2Fub25pY2FsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uID09PSAnY2Fub25pY2FsJykge1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGVmZmVjdGl2ZSBzY3JpcHQgb2YgdGhpcyBsYW5ndWFnZSB0YWcsIGlmIGtub3duLlxuICAgICAqIFRoZSBlZmZlY3RpdmUgc2NyaXB0IGlzIHRoZSBzY3JpcHQgc3VidGFnIGluIHRoZSB0YWcgaXRzZWxmLFxuICAgICAqIGlmIHByZXNlbnQsIG9yIHRoZSBgU3VwcHJlc3MtU2NyaXB0YCBkZWZpbmVkIGluIHRoZVxuICAgICAqIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkvbGFuZ3VhZ2Utc3VidGFnLXJlZ2lzdHJ5IHwgSUFOQSBzdWJ0YWcgcmVnaXN0cnl9XG4gICAgICogZm9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlIG9mIHRoaXMgdGFnLiAgQ2FuIGJlIGB1bmRlZmluZWRgXG4gICAgICogaWYgbmVpdGhlciB0aGUgdGFnIG5vciB0aGUgSUFOQSByZWdpc3RyeSBkZWZpbmUgYSBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlZmZlY3RpdmVTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5zY3JpcHQgPz8gdGhpcy5nZXRTdXBwcmVzc2VkU2NyaXB0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiB0aGlzIHRhZyByZXByZXNlbnRzIHRoZSBzcGVjaWFsIGB1bmRldGVybWluZWRgIGxhbmd1YWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNVbmRldGVybWluZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiB0aGlzLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpID09PSBVbmRldGVybWluZWRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIHZhbGlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IFZhbGlkYXRlVGFnLmlzVmFsaWQodGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRpdHkgPSAndmFsaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgaWYgdGhpcyBsYW5ndWFnZSB0YWcgaXMgc3RyaWN0bHkgdmFsaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1N0cmljdGx5VmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1N0cmljdGx5VmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNTdHJpY3RseVZhbGlkID0gVmFsaWRhdGVUYWcuaXNTdHJpY3RseVZhbGlkKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNTdHJpY3RseVZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRpdHkgPSAnc3RyaWN0bHktdmFsaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1N0cmljdGx5VmFsaWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIGxhbmd1YWdlIHRhZyBpcyBpbiBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzQ2Fub25pY2FsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNDYW5vbmljYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSBWYWxpZGF0ZVRhZy5pc0Nhbm9uaWNhbCh0aGlzLnN1YnRhZ3MpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXphdGlvbiA9ICdjYW5vbmljYWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Nhbm9uaWNhbCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIGluIHByZWZlcnJlZCBmb3JtLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNQcmVmZXJyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1ByZWZlcnJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ByZWZlcnJlZCA9IFZhbGlkYXRlVGFnLmlzSW5QcmVmZXJyZWRGb3JtKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNQcmVmZXJyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3JtYWxpemF0aW9uID0gJ3ByZWZlcnJlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJlZmVycmVkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgYSBncmFuZGZhdGhlcmVkIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzR3JhbmRmYXRoZXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5ncmFuZGZhdGhlcmVkICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhpcyB0YWcuXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKCF0aGlzLnN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVnaXN0cnkucHJpbWFyeUxhbmd1YWdlIHx8IHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKCh0aGlzLnJlZ2lzdHJ5LnByaW1hcnlMYW5ndWFnZT8uZGVzY3JpcHRpb25bMF0gPz8gdGhpcy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSkhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmV4dGxhbmdzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMucmVnaXN0cnkuZXh0bGFuZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaChgLyAke2UucmVnaXN0cnk/LmRlc2NyaXB0aW9uWzBdID8/IGUuc3VidGFnfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChgaW4gJHt0aGlzLnJlZ2lzdHJ5LnNjcmlwdD8uZGVzY3JpcHRpb25bMF0gPz8gdGhpcy5zdWJ0YWdzLnNjcmlwdH0gc2NyaXB0YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYGFzIHNwb2tlbiBpbiAke3RoaXMucmVnaXN0cnkucmVnaW9uPy5kZXNjcmlwdGlvblswXSA/PyB0aGlzLnN1YnRhZ3MucmVnaW9ufWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVnaXN0cnkudmFyaWFudHMgJiYgdGhpcy5yZWdpc3RyeS52YXJpYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMucmVnaXN0cnkudmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaChgKCR7ZS5yZWdpc3RyeT8uZGVzY3JpcHRpb25bMF0gPz8gZS5zdWJ0YWd9KWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmV4dGVuc2lvbnMgJiYgdGhpcy5yZWdpc3RyeS5leHRlbnNpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5yZWdpc3RyeS5leHRlbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYCgke2UucmVnaXN0cnk/LmRlc2NyaXB0aW9uWzBdID8/IGAtJHtlLnNpbmdsZXRvbn1gfSBcIiR7ZS52YWx1ZX1cIilgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJ0YWdzLnByaXZhdGVVc2UgJiYgdGhpcy5zdWJ0YWdzLnByaXZhdGVVc2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYCgteCBcIiR7dGhpcy5zdWJ0YWdzLnByaXZhdGVVc2Uuam9pbignLScpfVwiKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChgJHt0aGlzLnRhZ30gKGdyYW5kZmF0aGVyZWQpYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgIHRhZ1xuICAgICAqIHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSB0YWcgLSBUaGUgYHN0cmluZ2AgdGFnIGZyb20gd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ31cbiAgICAgKiBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVRhZyh0YWc6IHN0cmluZywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnUGFyc2VyLnBhcnNlKHRhZywgb3B0aW9ucy5pYW5hKS5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1lZChzdWJ0YWdzLCAndW5rbm93bicsICd1bmtub3duJywgb3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBmcm9tIGEgc3VwcGxpZWRcbiAgICAgKiB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICogQHBhcmFtIHRhZyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IGZyb20gd2hpY2ggdGhlXG4gICAgICoge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVN1YnRhZ3Moc3VidGFnczogU3VidGFncywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRyYW5zZm9ybWVkKHN1YnRhZ3MsICd1bmtub3duJywgJ3Vua25vd24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgXG4gICAgICogdGFnIG9yIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdXNpbmcgb3B0aW9uYWwgY29uZmlndXJhdGlvbixcbiAgICAgKiBpZiBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBgc3RyaW5nYCB0YWcgb3Ige0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShmcm9tOiBzdHJpbmcgfCBTdWJ0YWdzLCBvcHRpb25zPzogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodHlwZW9mIGZyb20gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tVGFnKGZyb20sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbVN1YnRhZ3MoZnJvbSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gYnkgYXBwbHlpbmcgYXBwcm9wcmlhdGUgdHJhbnNmb3JtYXRpb25zXG4gICAgICogdG8gYXMgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBCY3A0Ny5TdWJ0YWdzfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHdoaWNoIHJlcHJlc2VudCB0aGUgdGFnLlxuICAgICAqIEBwYXJhbSBmcm9tVmFsaWRpdHkgLSBUaGUge0BsaW5rIEJjcDQ3LlRhZ1ZhbGlkaXR5IHwgdmFsaWRhdGlvbiBsZXZlbH0gb2YgdGhlIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIGZyb21Ob3JtYWxpemF0aW9uIC0gVGhlIHtAbGluayBCY3A0Ny5UYWdOb3JtYWxpemF0aW9uIHwgbm9ybWFsaXphdGlvbiBsZXZlbH0gZm8gdGhlXG4gICAgICogc3VwcGxpZWQgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gcGFydGlhbE9wdGlvbnMgLSBBbnkge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnMgfCBpbml0aWFsaXphdGlvbiBvcHRpb25zfS5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgY29ycmVzcG9uZGluZyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9yIGBGYWlsdXJlYFxuICAgICAqIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfY3JlYXRlVHJhbnNmb3JtZWQoXG4gICAgICAgIHN1YnRhZ3M6IFN1YnRhZ3MsXG4gICAgICAgIGZyb21WYWxpZGl0eTogVGFnVmFsaWRpdHksXG4gICAgICAgIGZyb21Ob3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uLFxuICAgICAgICBwYXJ0aWFsT3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnNcbiAgICApOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMocGFydGlhbE9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gVmFsaWRhdGVUYWcudmFsaWRhdGVTdWJ0YWdzKHN1YnRhZ3MsIG9wdGlvbnMudmFsaWRpdHksIGZyb21WYWxpZGl0eSlcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVUYWcubm9ybWFsaXplU3VidGFncyhzdWJ0YWdzLCBvcHRpb25zLm5vcm1hbGl6YXRpb24sIGZyb21Ob3JtYWxpemF0aW9uKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAub25TdWNjZXNzKChub3JtYWxpemVkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRpdHkgPSBtb3N0VmFsaWQoZnJvbVZhbGlkaXR5LCBvcHRpb25zLnZhbGlkaXR5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemF0aW9uID0gbW9zdE5vcm1hbGl6ZWQoZnJvbU5vcm1hbGl6YXRpb24sIG9wdGlvbnMubm9ybWFsaXphdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IExhbmd1YWdlVGFnKG5vcm1hbGl6ZWQsIHZhbGlkaXR5LCBub3JtYWxpemF0aW9uLCBvcHRpb25zLmlhbmEpKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBmdWxseS1zcGVjaWZpZWQge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IGZyb20gcGFydGlhbCBvciB1bmRlZmluZWRcbiAgICAgKiBvcHRpb25zLCBzdWJzdGl0dXRpbmcgZGVmYXVsdHMgYXMgYXBwcm9wcmlhdGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IHRvIGJlIGV4cGFuZGVkLCBvciBgdW5kZWZpbmVkYFxuICAgICAqIGZvciBkZWZhdWx0IG9wdGlvbnMuXG4gICAgICogQHJldHVybnMgRnVsbHktc3BlY2lmaWVkIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfS5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXRPcHRpb25zKG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVxdWlyZWQ8TGFuZ3VhZ2VUYWdJbml0T3B0aW9ucz4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWFuYTogb3B0aW9ucz8uaWFuYSA/PyBJYW5hLkRlZmF1bHRSZWdpc3RyaWVzLmxhbmd1YWdlUmVnaXN0cmllcyxcbiAgICAgICAgICAgIHZhbGlkaXR5OiBvcHRpb25zPy52YWxpZGl0eSA/PyAnd2VsbC1mb3JtZWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogb3B0aW9ucz8ubm9ybWFsaXphdGlvbiA/PyAnbm9uZScsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYFN1cHByZXNzLVNjcmlwdGAgdmFsdWUgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugb2YgdGhpcyB0YWcsXG4gICAgICogcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgZGlmZmVyZW50IHNjcmlwdCBpcyBkZWZpbmVkIGluIHRoaXMgc3VidGFnLlxuICAgICAqIEByZXR1cm5zIFRoZSBzdXBwcmVzcy1zY3JpcHQgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2UsIG9yIHVuZGVmaW5lZCBpZlxuICAgICAqIHRoZSBwcmltYXJ5IGxhbmd1YWdlIGlzIGludmFsaWQgb3IgaGFzIG5vIGRlZmluZWQgc3VwcHJlc3NlZCBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldFN1cHByZXNzZWRTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudHJ5R2V0KHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZT8uc3VwcHJlc3NTY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID0gbGFuZ3VhZ2Uuc3VwcHJlc3NTY3JpcHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID8gdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1ZhbGlkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiAndmFsaWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogdGhpcy5fbm9ybWFsaXphdGlvbixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHN0cmljdGx5IHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgc3RyaWN0bHkgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgc3RyaWN0bHkgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmljdGx5VmFsaWQoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RyaWN0bHlWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3N0cmljdGx5LXZhbGlkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IHRoaXMuX25vcm1hbGl6YXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9DYW5vbmljYWwoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiB0aGlzLl92YWxpZGl0eSxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246ICdjYW5vbmljYWwnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWcuX2NyZWF0ZVRyYW5zZm9ybWVkKHRoaXMuc3VidGFncywgdGhpcy5fdmFsaWRpdHksIHRoaXMuX25vcm1hbGl6YXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjb25maXJtZWQgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIG5vcm1hbGl6ZWQgdG8gcHJlZmVycmVkIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIHRvUHJlZmVycmVkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ByZWZlcnJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3ZhbGlkJywgLy8gcHJlZmVycmVkIHJlcXVpcmVzIHZhbGlkaXR5XG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiAncHJlZmVycmVkJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50YWc7XG4gICAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"languageTagParser.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTagParser.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAA6B,MAAM,eAAe,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC;;GAEG;AACH,UAAU,WAAW;IACjB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAG1B,OAAO;IAEP;;;;;;;;;;OAUG;WACW,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC;IA6BjF;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAW7E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAiB3E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAenE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IASlE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IASlE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAapE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IA+BtE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IA+B1E;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;CAMrE"}
1
+ {"version":3,"file":"languageTagParser.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTagParser.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAA6B,MAAM,eAAe,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC;;GAEG;AACH,UAAU,WAAW;IACjB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAG1B,OAAO;IAEP;;;;;;;;;;OAUG;WACW,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC;IA6BjF;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAW7E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAiB3E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAenE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IASlE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IASlE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAapE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IA+BtE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAsB1E;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;CAMrE"}
@@ -266,28 +266,20 @@ class LanguageTagParser {
266
266
  */
267
267
  static _parsePrivateSubtags(state) {
268
268
  // optional private use subtags
269
- while (state.next != undefined && bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
269
+ if (state.next != undefined && bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
270
270
  const values = [];
271
271
  state.next = state.subtags.shift();
272
- while (state.next &&
273
- !bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next) &&
274
- Iana.LanguageSubtags.Validate.extendedLanguageRange.isWellFormed(state.next)) {
272
+ while (state.next && state.next.length > 1 && Iana.LanguageSubtags.Validate.extendedLanguageRange.isWellFormed(state.next)) {
275
273
  values.push(state.next);
276
274
  state.next = state.subtags.shift();
277
275
  }
278
- if (state.next !== undefined && !bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
276
+ if (state.next !== undefined) {
279
277
  return (0, ts_utils_1.fail)(`${state.next}: malformed private-use subtag`);
280
278
  }
281
279
  else if (values.length < 1) {
282
280
  return (0, ts_utils_1.fail)(`${state.tag}: private-use tag must have at least one subtag.`);
283
281
  }
284
- const value = values.join('-');
285
- if (state.parsedSubtags.privateUse === undefined) {
286
- state.parsedSubtags.privateUse = [value];
287
- }
288
- else {
289
- state.parsedSubtags.privateUse.push(value);
290
- }
282
+ state.parsedSubtags.privateUse = values;
291
283
  }
292
284
  return (0, ts_utils_1.succeed)(state.parsedSubtags);
293
285
  }
@@ -307,4 +299,4 @@ class LanguageTagParser {
307
299
  }
308
300
  }
309
301
  exports.LanguageTagParser = LanguageTagParser;
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWdQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWdQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQTJFO0FBSTNFLGlEQUEwQztBQWExQzs7R0FFRztBQUNILE1BQWEsaUJBQWlCO0lBQzFCLHVCQUF1QjtJQUN2QixnRUFBZ0U7SUFDaEUsZ0JBQXVCLENBQUM7SUFFeEI7Ozs7Ozs7Ozs7T0FVRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBVyxFQUFFLElBQThCO1FBQzNELHVCQUF1QjtRQUN2QixJQUFJLEdBQUcsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFnQjtZQUN4QixHQUFHO1lBQ0gsSUFBSTtZQUNKLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUN2QixhQUFhLEVBQUUsRUFBRTtTQUNwQixDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXJDLE9BQU8sSUFBQSxxQkFBVSxFQUNiO1lBQ0ksSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFB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Q3hDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFrQjtRQUM1QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzFCLE9BQU8sSUFBQSxlQUFJLEVBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQTVRRCw4Q0E0UUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgUmVzdWx0LCBTdWNjZXNzLCBhbGxTdWNjZWVkLCBmYWlsLCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5cbmltcG9ydCB7IEV4dGVuc2lvblN1YnRhZyB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzL21vZGVsJztcbmltcG9ydCB7IFN1YnRhZ3MgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBWYWxpZGF0ZSB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIFBhcnNlclN0YXRlIHtcbiAgICByZWFkb25seSBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcbiAgICByZWFkb25seSB0YWc6IHN0cmluZztcbiAgICByZWFkb25seSBzdWJ0YWdzOiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBwYXJzZWRTdWJ0YWdzOiBTdWJ0YWdzO1xuICAgIG5leHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWdQYXJzZXIge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgQkNQLTQ3ICh7QGxpbmsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzU2NDYuaHRtbCB8IFJGQyA1NjQ2fSlcbiAgICAgKiBsYW5ndWFnZSB0YWcsIHRvIHByb2R1Y2UgYSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IFN1YnRhZ3N9IG9iamVjdCB3aGljaFxuICAgICAqIGJyZWFrcyBvdXQgZWFjaCBvZiB0aGUgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gdGFnIC0gVGhlIGBzdHJpbmdgIGxhbmd1YWdlIHRhZyB0byBiZSBwYXJzZWQuXG4gICAgICogQHBhcmFtIGlhbmEgLSBPcHRpb25hbCB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHJlZ2lzdHJpZXN9XG4gICAgICogdG8gYmUgdXNlZC5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgcmVzdWx0aW5nIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZSh0YWc6IHN0cmluZywgaWFuYT86IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgaWFuYSA9IGlhbmEgPz8gSWFuYS5EZWZhdWx0UmVnaXN0cmllcy5sYW5ndWFnZVJlZ2lzdHJpZXM7XG4gICAgICAgIGNvbnN0IHN0YXR1czogUGFyc2VyU3RhdGUgPSB7XG4gICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICBpYW5hLFxuICAgICAgICAgICAgc3VidGFnczogdGFnLnNwbGl0KCctJyksXG4gICAgICAgICAgICBwYXJzZWRTdWJ0YWdzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgc3RhdHVzLm5leHQgPSBzdGF0dXMuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgIHJldHVybiBhbGxTdWNjZWVkKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlR3JhbmRmYXRoZXJlZFRhZyhzdGF0dXMpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlUHJpbWFyeUxhbmd1YWdlKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VFeHRsYW5nKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VTY3JpcHQoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZVJlZ2lvbihzdGF0dXMpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlVmFyaWFudHMoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUV4dGVuc2lvbnMoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZVByaXZhdGVTdWJ0YWdzKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VUYWdFbmQoc3RhdHVzKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgKS5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdHVzLnBhcnNlZFN1YnRhZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBlbnRpcmUgdGFnIG1hdGNoZXMgYSByZWdpc3RlcmVkIGdyYW5kZmF0aGVyZWQgdGFnLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggdGhlIHVwZGF0ZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfVxuICAgICAqIGlmIGEgZ3JhbmRmYXRoZXJlZCB0YWcgaXMgZm91bmQsIG9yIGBTdWNjZXNzYCB3aXRoIHRoZSBzdXBwbGllZCBzdWJ0YWdzXG4gICAgICogaWYgbm8gbWF0Y2hpbmcgZ3JhbmRmYXRoZXJlZCB0YWcgaXMgZm91bmQuXG4gICAgICogQFxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlR3JhbmRmYXRoZXJlZFRhZyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBTdWNjZXNzPFN1YnRhZ3M+IHtcbiAgICAgICAgY29uc3QgZ3JhbmRmYXRoZXJlZCA9IHN0YXRlLmlhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRyeUdldChzdGF0ZS50YWcpO1xuICAgICAgICBpZiAoZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5ncmFuZGZhdGhlcmVkID0gc3RhdGUudGFnIGFzIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkdyYW5kZmF0aGVyZWRUYWc7XG4gICAgICAgICAgICAvLyB3ZSBjb25zdW1lZCB0aGUgd2hvbGUgdGhpbmdcbiAgICAgICAgICAgIHN0YXRlLnN1YnRhZ3Muc3BsaWNlKDAsIHN0YXRlLnN1YnRhZ3MubGVuZ3RoKTtcbiAgICAgICAgICAgIHN0YXRlLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBwcmltYXJ5IGxhbmd1YWdlIHN1YnRhZyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnLCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlUHJpbWFyeUxhbmd1YWdlKHN0YXRlOiBQYXJzZXJTdGF0ZSk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIC8vIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIGlzIHJlcXVpcmVkIHVubGVzcyB0aGUgZW50aXJlIHRhZyBpcyBncmFuZGZhdGhlcmVkIG9yIGNvbnNpc3RzXG4gICAgICAgIC8vIG9mIG9ubHkgcHJpdmF0ZSB0YWdzXG4gICAgICAgIGlmIChzdGF0ZS5pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UgPSBzdGF0ZS5uZXh0O1xuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICAgICAgfSBlbHNlIGlmIChWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgLy8ganVzdCByZXR1cm4gd2l0aCBubyBwcmltYXJ5IGxhbmd1YWdlIGFuZCB0aGUgcHJpdmF0ZSB0YWdcbiAgICAgICAgICAgIC8vIHBhcnNlciB3aWxsIGJlIGludm9rZWQgYnkgdGhlIHBhcmVudCBmbG93LlxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUudGFnfTogbm8gcHJpbWFyeSBsYW5ndWFnZSBzdWJ0YWdgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGV4dGxhbmcgc3VidGFnKHMpIG9mIGEgc3VwcGxpZWQgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfVxuICAgICAqIHVwZGF0ZWQgdG8gaW5jbHVkZSBleHRsYW5nIHN1YnRhZ3MgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZUV4dGxhbmcoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgZXh0bGFuZ3Mgc3VidGFnc1xuICAgICAgICB3aGlsZSAoc3RhdGUuaWFuYS5zdWJ0YWdzLmV4dGxhbmdzLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MgPSBbc3RhdGUubmV4dF07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MucHVzaChzdGF0ZS5uZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IHRvbyBtYW55IGV4dGxhbmcgc3VidGFnc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIHNjcmlwdCBzdWJ0YWcgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBzY3JpcHQgc3VidGFnIGlmIHByZXNlbnQsIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3JcbiAgICAgKiBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcGFyc2VTY3JpcHQoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgc2NyaXB0IHN1YnRhZ1xuICAgICAgICBpZiAoc3RhdGUuaWFuYS5zdWJ0YWdzLnNjcmlwdHMuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBzdGF0ZS5wYXJzZWRTdWJ0YWdzLnNjcmlwdCA9IHN0YXRlLm5leHQ7XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcmVnaW9uIHN1YnRhZyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHJlZ2lvbiBzdWJ0YWcgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZVJlZ2lvbihzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCByZWdpb24gc3VidGFnXG4gICAgICAgIGlmIChzdGF0ZS5pYW5hLnN1YnRhZ3MucmVnaW9ucy5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MucmVnaW9uID0gc3RhdGUubmV4dDtcbiAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSB2YXJpYW50IHN1YnRhZyhzKSBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHZhcmlhbnQgc3VidGFncyBpZiBwcmVzZW50LCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlVmFyaWFudHMoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgdmFyaWFudCBzdWJ0YWdzXG4gICAgICAgIHdoaWxlIChzdGF0ZS5pYW5hLnN1YnRhZ3MudmFyaWFudHMuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cyA9IFtzdGF0ZS5uZXh0XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGV4dGVuc2lvbiBzdWJ0YWcocykgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBleHRlbnNpb24gc3VidGFncyBpZiBwcmVzZW50LCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlRXh0ZW5zaW9ucyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCBleHRlbnNpb24gc3VidGFnc1xuICAgICAgICB3aGlsZSAoc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmIFZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpbmdsZXRvbiA9IHN0YXRlLm5leHQ7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXM6IEV4dGVuc2lvblN1YnRhZ1tdID0gW107XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgICAgICB3aGlsZSAoVmFsaWRhdGUuZXh0ZW5zaW9uU3VidGFnLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIVZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkgJiZcbiAgICAgICAgICAgICAgICAhVmFsaWRhdGUucHJpdmF0ZVVzZVByZWZpeC5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3N0YXRlLm5leHR9OiBtYWxmb3JtZWQgZXh0ZW5zaW9uIHN1YnRhZ2ApO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZXMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3N0YXRlLnRhZ306IGV4dGVuc2lvbiAnJHtzaW5nbGV0b259JyBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHN1YnRhZy5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXMuam9pbignLScpIGFzIEV4dGVuc2lvblN1YnRhZztcbiAgICAgICAgICAgIGlmIChzdGF0ZS5wYXJzZWRTdWJ0YWdzLmV4dGVuc2lvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0ZW5zaW9ucyA9IFt7IHNpbmdsZXRvbiwgdmFsdWUgfV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0ZW5zaW9ucy5wdXNoKHsgc2luZ2xldG9uLCB2YWx1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIHByaXZhdGUgdXNlIHN1YnRhZ3Mgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBwcml2YXRlLXVzZSBzdWJ0YWdzIGlmIHByZXNlbnQsIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3JcbiAgICAgKiBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcGFyc2VQcml2YXRlU3VidGFncyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCBwcml2YXRlIHVzZSBzdWJ0YWdzXG4gICAgICAgIHdoaWxlIChzdGF0ZS5uZXh0ICE9IHVuZGVmaW5lZCAmJiBWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcblxuICAgICAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgICAgIHN0YXRlLm5leHQgJiZcbiAgICAgICAgICAgICAgICAhVmFsaWRhdGUucHJpdmF0ZVVzZVByZWZpeC5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkgJiZcbiAgICAgICAgICAgICAgICBJYW5hLkxhbmd1YWdlU3VidGFncy5WYWxpZGF0ZS5leHRlbmRlZExhbmd1YWdlUmFuZ2UuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChzdGF0ZS5uZXh0KTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmICFWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3N0YXRlLm5leHR9OiBtYWxmb3JtZWQgcHJpdmF0ZS11c2Ugc3VidGFnYCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUudGFnfTogcHJpdmF0ZS11c2UgdGFnIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgc3VidGFnLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlcy5qb2luKCctJykgYXMgSWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0ZW5kZWRMYW5ndWFnZVJhbmdlO1xuICAgICAgICAgICAgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MucHJpdmF0ZVVzZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5wcml2YXRlVXNlID0gW3ZhbHVlXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5wcml2YXRlVXNlLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IHBhcnNlciBzdGF0ZX0gYXQgdGhlIGVuZCBvZiBhIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCBpZiB0aGUgdGFnIHdhcyBmdWxseSBjb25zdW1lZCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlsc1xuICAgICAqIGlmIHVuZXhwZWN0ZWQgc3VidGFncyByZW1haW4gdG8gYmUgcGFyc2VkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlVGFnRW5kKHN0YXRlOiBQYXJzZXJTdGF0ZSk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIGlmIChzdGF0ZS5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3N0YXRlLm5leHR9OiB1bmV4cGVjdGVkIHN1YnRhZ2ApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgIH1cbn1cbiJdfQ==
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWdQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWdQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQTJFO0FBSTNFLGlEQUEwQztBQWExQzs7R0FFRztBQUNILE1BQWEsaUJBQWlCO0lBQzFCLHVCQUF1QjtJQUN2QixnRUFBZ0U7SUFDaEUsZ0JBQXVCLENBQUM7SUFFeEI7Ozs7Ozs7Ozs7T0FVRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBVyxFQUFFLElBQThCO1FBQzNELHVCQUF1QjtRQUN2QixJQUFJLEdBQUcsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFnQjtZQUN4QixHQUFHO1lBQ0gsSUFBSTtZQUNKLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUN2QixhQUFhLEVBQUUsRUFBRTtTQUNwQixDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXJDLE9BQU8sSUFBQSxxQkFBVSxFQUNiO1lBQ0ksSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztTQUM1QixFQUNELE1BQU0sQ0FDVCxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUEsa0JBQU8sRUFBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ08sTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQWtCO1FBQ3RELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pFLElBQUksYUFBYSxFQUFFO1lBQ2YsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEdBQTRDLENBQUM7WUFDdkYsOEJBQThCO1lBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLEtBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNPLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFrQjtRQUNyRCx5RkFBeUY7UUFDekYsdUJBQXVCO1FBQ3ZCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNqRCxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZDO2FBQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDeEQsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZDO2FBQU0sSUFBSSx1QkFBUSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0QsMkRBQTJEO1lBQzNELDZDQUE2QztZQUM3QyxPQUFPLElBQUEsa0JBQU8sRUFBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLElBQUEsZUFBSSxFQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsOEJBQThCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWtCO1FBQzdDLDRCQUE0QjtRQUM1QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUM1QyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMvQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2hELEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakQ7aUJBQU07Z0JBQ0gsT0FBTyxJQUFBLGVBQUksRUFBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLDRCQUE0QixDQUFDLENBQUM7YUFDMUQ7WUFDRCxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEM7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ08sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFrQjtRQUM1Qyx5QkFBeUI7UUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyRCxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3hDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0QztRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWtCO1FBQzVDLHlCQUF5QjtRQUN6QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JELEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDeEMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3RDO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNPLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBa0I7UUFDOUMsMkJBQTJCO1FBQzNCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQzVDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DO2lCQUFNO2dCQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakQ7WUFDRCxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEM7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ08sTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQWtCO1FBQ2hELDZCQUE2QjtRQUM3QixPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLHVCQUFRLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyRixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzdCLE1BQU0sTUFBTSxHQUFzQixFQUFFLENBQUM7WUFDckMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRW5DLE9BQU8sdUJBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN0QztZQUNELElBQ0ksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO2dCQUN4QixDQUFDLHVCQUFRLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3JELENBQUMsdUJBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUNyRDtnQkFDRSxPQUFPLElBQUEsZUFBSSxFQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksOEJBQThCLENBQUMsQ0FBQzthQUM1RDtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixPQUFPLElBQUEsZUFBSSxFQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsZ0JBQWdCLFNBQVMsa0NBQWtDLENBQUMsQ0FBQzthQUN4RjtZQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFvQixDQUFDO1lBQ2xELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO2dCQUM5QyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDM0Q7aUJBQU07Z0JBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDN0Q7U0FDSjtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsS0FBa0I7UUFDcEQsK0JBQStCO1FBQy9CLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLElBQUksdUJBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9FLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztZQUM1QixLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFbkMsT0FBTyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4SCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEIsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3RDO1lBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDMUIsT0FBTyxJQUFBLGVBQUksRUFBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLGdDQUFnQyxDQUFDLENBQUM7YUFDOUQ7aUJBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUIsT0FBTyxJQUFBLGVBQUksRUFBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLGtEQUFrRCxDQUFDLENBQUM7YUFDL0U7WUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxNQUFzRCxDQUFDO1NBQzNGO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFrQjtRQUM1QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzFCLE9BQU8sSUFBQSxlQUFJLEVBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQW5RRCw4Q0FtUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgUmVzdWx0LCBTdWNjZXNzLCBhbGxTdWNjZWVkLCBmYWlsLCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5cbmltcG9ydCB7IEV4dGVuc2lvblN1YnRhZyB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzL21vZGVsJztcbmltcG9ydCB7IFN1YnRhZ3MgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBWYWxpZGF0ZSB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIFBhcnNlclN0YXRlIHtcbiAgICByZWFkb25seSBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcbiAgICByZWFkb25seSB0YWc6IHN0cmluZztcbiAgICByZWFkb25seSBzdWJ0YWdzOiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBwYXJzZWRTdWJ0YWdzOiBTdWJ0YWdzO1xuICAgIG5leHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWdQYXJzZXIge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgQkNQLTQ3ICh7QGxpbmsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzU2NDYuaHRtbCB8IFJGQyA1NjQ2fSlcbiAgICAgKiBsYW5ndWFnZSB0YWcsIHRvIHByb2R1Y2UgYSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IFN1YnRhZ3N9IG9iamVjdCB3aGljaFxuICAgICAqIGJyZWFrcyBvdXQgZWFjaCBvZiB0aGUgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gdGFnIC0gVGhlIGBzdHJpbmdgIGxhbmd1YWdlIHRhZyB0byBiZSBwYXJzZWQuXG4gICAgICogQHBhcmFtIGlhbmEgLSBPcHRpb25hbCB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHJlZ2lzdHJpZXN9XG4gICAgICogdG8gYmUgdXNlZC5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgcmVzdWx0aW5nIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZSh0YWc6IHN0cmluZywgaWFuYT86IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgaWFuYSA9IGlhbmEgPz8gSWFuYS5EZWZhdWx0UmVnaXN0cmllcy5sYW5ndWFnZVJlZ2lzdHJpZXM7XG4gICAgICAgIGNvbnN0IHN0YXR1czogUGFyc2VyU3RhdGUgPSB7XG4gICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICBpYW5hLFxuICAgICAgICAgICAgc3VidGFnczogdGFnLnNwbGl0KCctJyksXG4gICAgICAgICAgICBwYXJzZWRTdWJ0YWdzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgc3RhdHVzLm5leHQgPSBzdGF0dXMuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgIHJldHVybiBhbGxTdWNjZWVkKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlR3JhbmRmYXRoZXJlZFRhZyhzdGF0dXMpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlUHJpbWFyeUxhbmd1YWdlKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VFeHRsYW5nKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VTY3JpcHQoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZVJlZ2lvbihzdGF0dXMpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlVmFyaWFudHMoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUV4dGVuc2lvbnMoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZVByaXZhdGVTdWJ0YWdzKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VUYWdFbmQoc3RhdHVzKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgKS5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdHVzLnBhcnNlZFN1YnRhZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBlbnRpcmUgdGFnIG1hdGNoZXMgYSByZWdpc3RlcmVkIGdyYW5kZmF0aGVyZWQgdGFnLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggdGhlIHVwZGF0ZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfVxuICAgICAqIGlmIGEgZ3JhbmRmYXRoZXJlZCB0YWcgaXMgZm91bmQsIG9yIGBTdWNjZXNzYCB3aXRoIHRoZSBzdXBwbGllZCBzdWJ0YWdzXG4gICAgICogaWYgbm8gbWF0Y2hpbmcgZ3JhbmRmYXRoZXJlZCB0YWcgaXMgZm91bmQuXG4gICAgICogQFxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlR3JhbmRmYXRoZXJlZFRhZyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBTdWNjZXNzPFN1YnRhZ3M+IHtcbiAgICAgICAgY29uc3QgZ3JhbmRmYXRoZXJlZCA9IHN0YXRlLmlhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRyeUdldChzdGF0ZS50YWcpO1xuICAgICAgICBpZiAoZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5ncmFuZGZhdGhlcmVkID0gc3RhdGUudGFnIGFzIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkdyYW5kZmF0aGVyZWRUYWc7XG4gICAgICAgICAgICAvLyB3ZSBjb25zdW1lZCB0aGUgd2hvbGUgdGhpbmdcbiAgICAgICAgICAgIHN0YXRlLnN1YnRhZ3Muc3BsaWNlKDAsIHN0YXRlLnN1YnRhZ3MubGVuZ3RoKTtcbiAgICAgICAgICAgIHN0YXRlLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBwcmltYXJ5IGxhbmd1YWdlIHN1YnRhZyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnLCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlUHJpbWFyeUxhbmd1YWdlKHN0YXRlOiBQYXJzZXJTdGF0ZSk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIC8vIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIGlzIHJlcXVpcmVkIHVubGVzcyB0aGUgZW50aXJlIHRhZyBpcyBncmFuZGZhdGhlcmVkIG9yIGNvbnNpc3RzXG4gICAgICAgIC8vIG9mIG9ubHkgcHJpdmF0ZSB0YWdzXG4gICAgICAgIGlmIChzdGF0ZS5pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UgPSBzdGF0ZS5uZXh0O1xuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICAgICAgfSBlbHNlIGlmIChWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgLy8ganVzdCByZXR1cm4gd2l0aCBubyBwcmltYXJ5IGxhbmd1YWdlIGFuZCB0aGUgcHJpdmF0ZSB0YWdcbiAgICAgICAgICAgIC8vIHBhcnNlciB3aWxsIGJlIGludm9rZWQgYnkgdGhlIHBhcmVudCBmbG93LlxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUudGFnfTogbm8gcHJpbWFyeSBsYW5ndWFnZSBzdWJ0YWdgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGV4dGxhbmcgc3VidGFnKHMpIG9mIGEgc3VwcGxpZWQgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfVxuICAgICAqIHVwZGF0ZWQgdG8gaW5jbHVkZSBleHRsYW5nIHN1YnRhZ3MgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZUV4dGxhbmcoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgZXh0bGFuZ3Mgc3VidGFnc1xuICAgICAgICB3aGlsZSAoc3RhdGUuaWFuYS5zdWJ0YWdzLmV4dGxhbmdzLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MgPSBbc3RhdGUubmV4dF07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MucHVzaChzdGF0ZS5uZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IHRvbyBtYW55IGV4dGxhbmcgc3VidGFnc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIHNjcmlwdCBzdWJ0YWcgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBzY3JpcHQgc3VidGFnIGlmIHByZXNlbnQsIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3JcbiAgICAgKiBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcGFyc2VTY3JpcHQoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgc2NyaXB0IHN1YnRhZ1xuICAgICAgICBpZiAoc3RhdGUuaWFuYS5zdWJ0YWdzLnNjcmlwdHMuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBzdGF0ZS5wYXJzZWRTdWJ0YWdzLnNjcmlwdCA9IHN0YXRlLm5leHQ7XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcmVnaW9uIHN1YnRhZyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHJlZ2lvbiBzdWJ0YWcgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZVJlZ2lvbihzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCByZWdpb24gc3VidGFnXG4gICAgICAgIGlmIChzdGF0ZS5pYW5hLnN1YnRhZ3MucmVnaW9ucy5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MucmVnaW9uID0gc3RhdGUubmV4dDtcbiAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSB2YXJpYW50IHN1YnRhZyhzKSBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHZhcmlhbnQgc3VidGFncyBpZiBwcmVzZW50LCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlVmFyaWFudHMoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgdmFyaWFudCBzdWJ0YWdzXG4gICAgICAgIHdoaWxlIChzdGF0ZS5pYW5hLnN1YnRhZ3MudmFyaWFudHMuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cyA9IFtzdGF0ZS5uZXh0XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGV4dGVuc2lvbiBzdWJ0YWcocykgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBleHRlbnNpb24gc3VidGFncyBpZiBwcmVzZW50LCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlRXh0ZW5zaW9ucyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCBleHRlbnNpb24gc3VidGFnc1xuICAgICAgICB3aGlsZSAoc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmIFZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpbmdsZXRvbiA9IHN0YXRlLm5leHQ7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXM6IEV4dGVuc2lvblN1YnRhZ1tdID0gW107XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgICAgICB3aGlsZSAoVmFsaWRhdGUuZXh0ZW5zaW9uU3VidGFnLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIVZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkgJiZcbiAgICAgICAgICAgICAgICAhVmFsaWRhdGUucHJpdmF0ZVVzZVByZWZpeC5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3N0YXRlLm5leHR9OiBtYWxmb3JtZWQgZXh0ZW5zaW9uIHN1YnRhZ2ApO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZXMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3N0YXRlLnRhZ306IGV4dGVuc2lvbiAnJHtzaW5nbGV0b259JyBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHN1YnRhZy5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXMuam9pbignLScpIGFzIEV4dGVuc2lvblN1YnRhZztcbiAgICAgICAgICAgIGlmIChzdGF0ZS5wYXJzZWRTdWJ0YWdzLmV4dGVuc2lvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0ZW5zaW9ucyA9IFt7IHNpbmdsZXRvbiwgdmFsdWUgfV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0ZW5zaW9ucy5wdXNoKHsgc2luZ2xldG9uLCB2YWx1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIHByaXZhdGUgdXNlIHN1YnRhZ3Mgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBwcml2YXRlLXVzZSBzdWJ0YWdzIGlmIHByZXNlbnQsIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3JcbiAgICAgKiBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcGFyc2VQcml2YXRlU3VidGFncyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCBwcml2YXRlIHVzZSBzdWJ0YWdzXG4gICAgICAgIGlmIChzdGF0ZS5uZXh0ICE9IHVuZGVmaW5lZCAmJiBWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcblxuICAgICAgICAgICAgd2hpbGUgKHN0YXRlLm5leHQgJiYgc3RhdGUubmV4dC5sZW5ndGggPiAxICYmIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuZGVkTGFuZ3VhZ2VSYW5nZS5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChzdGF0ZS5uZXh0KTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IG1hbGZvcm1lZCBwcml2YXRlLXVzZSBzdWJ0YWdgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtzdGF0ZS50YWd9OiBwcml2YXRlLXVzZSB0YWcgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBzdWJ0YWcuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MucHJpdmF0ZVVzZSA9IHZhbHVlcyBhcyBJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRlbmRlZExhbmd1YWdlUmFuZ2VbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBwYXJzZXIgc3RhdGV9IGF0IHRoZSBlbmQgb2YgYSBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2AgaWYgdGhlIHRhZyB3YXMgZnVsbHkgY29uc3VtZWQsIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHNcbiAgICAgKiBpZiB1bmV4cGVjdGVkIHN1YnRhZ3MgcmVtYWluIHRvIGJlIHBhcnNlZC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZVRhZ0VuZChzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICBpZiAoc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbChgJHtzdGF0ZS5uZXh0fTogdW5leHBlY3RlZCBzdWJ0YWdgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG59XG4iXX0=
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Penalty for a mismatched value for some subtags.
3
+ * @public
4
+ */
5
+ export declare const subtagMismatchPenalty: {
6
+ private: number;
7
+ extension: number;
8
+ variant: number;
9
+ };
1
10
  /**
2
11
  * Common levels of match quality for a single language match.
3
12
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/common.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/common.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC"}
@@ -21,7 +21,16 @@
21
21
  * SOFTWARE.
22
22
  */
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.tagSimilarity = void 0;
24
+ exports.tagSimilarity = exports.subtagMismatchPenalty = void 0;
25
+ /**
26
+ * Penalty for a mismatched value for some subtags.
27
+ * @public
28
+ */
29
+ exports.subtagMismatchPenalty = {
30
+ private: 0.05,
31
+ extension: 0.04,
32
+ variant: 0.1,
33
+ };
25
34
  /**
26
35
  * Common levels of match quality for a single language match.
27
36
  * @public
@@ -30,13 +39,13 @@ exports.tagSimilarity = {
30
39
  exact: 1.0,
31
40
  variant: 0.9,
32
41
  region: 0.8,
33
- macroRegion: 0.7,
34
- neutralRegion: 0.6,
35
- preferredAffinity: 0.55,
36
- affinity: 0.5,
37
- preferredRegion: 0.4,
42
+ macroRegion: 0.65,
43
+ neutralRegion: 0.5,
44
+ preferredAffinity: 0.45,
45
+ affinity: 0.4,
46
+ preferredRegion: 0.35,
38
47
  sibling: 0.3,
39
- undetermined: 0.2,
48
+ undetermined: 0.1,
40
49
  none: 0,
41
50
  };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JjcDQ3L21hdGNoL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSDs7O0dBR0c7QUFDVSxRQUFBLGFBQWEsR0FBRztJQUN6QixLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSxHQUFHO0lBQ1osTUFBTSxFQUFFLEdBQUc7SUFDWCxXQUFXLEVBQUUsR0FBRztJQUNoQixhQUFhLEVBQUUsR0FBRztJQUNsQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsZUFBZSxFQUFFLEdBQUc7SUFDcEIsT0FBTyxFQUFFLEdBQUc7SUFDWixZQUFZLEVBQUUsR0FBRztJQUNqQixJQUFJLEVBQUUsQ0FBQztDQUNWLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBDb21tb24gbGV2ZWxzIG9mIG1hdGNoIHF1YWxpdHkgZm9yIGEgc2luZ2xlIGxhbmd1YWdlIG1hdGNoLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdGFnU2ltaWxhcml0eSA9IHtcbiAgICBleGFjdDogMS4wLFxuICAgIHZhcmlhbnQ6IDAuOSxcbiAgICByZWdpb246IDAuOCxcbiAgICBtYWNyb1JlZ2lvbjogMC43LFxuICAgIG5ldXRyYWxSZWdpb246IDAuNixcbiAgICBwcmVmZXJyZWRBZmZpbml0eTogMC41NSxcbiAgICBhZmZpbml0eTogMC41LFxuICAgIHByZWZlcnJlZFJlZ2lvbjogMC40LFxuICAgIHNpYmxpbmc6IDAuMyxcbiAgICB1bmRldGVybWluZWQ6IDAuMixcbiAgICBub25lOiAwLFxufTtcblxuLyoqXG4gKiBOdW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWFsaXR5IG9mIGEgbGFuZ3VhZ2UgbWF0Y2guXG4gKiBSYW5nZSBpcyAwIChubyBtYXRjaCkgdG8gMSAoZXhhY3QgbWF0Y2gpLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBUYWdTaW1pbGFyaXR5ID0ga2V5b2YgdHlwZW9mIHRhZ1NpbWlsYXJpdHk7XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JjcDQ3L21hdGNoL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSDs7O0dBR0c7QUFDVSxRQUFBLHFCQUFxQixHQUFHO0lBQ2pDLE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLElBQUk7SUFDZixPQUFPLEVBQUUsR0FBRztDQUNmLENBQUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLGFBQWEsR0FBRztJQUN6QixLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSxHQUFHO0lBQ1osTUFBTSxFQUFFLEdBQUc7SUFDWCxXQUFXLEVBQUUsSUFBSTtJQUNqQixhQUFhLEVBQUUsR0FBRztJQUNsQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsZUFBZSxFQUFFLElBQUk7SUFDckIsT0FBTyxFQUFFLEdBQUc7SUFDWixZQUFZLEVBQUUsR0FBRztJQUNqQixJQUFJLEVBQUUsQ0FBQztDQUNWLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBQZW5hbHR5IGZvciBhIG1pc21hdGNoZWQgdmFsdWUgZm9yIHNvbWUgc3VidGFncy5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN1YnRhZ01pc21hdGNoUGVuYWx0eSA9IHtcbiAgICBwcml2YXRlOiAwLjA1LFxuICAgIGV4dGVuc2lvbjogMC4wNCxcbiAgICB2YXJpYW50OiAwLjEsXG59O1xuXG4vKipcbiAqIENvbW1vbiBsZXZlbHMgb2YgbWF0Y2ggcXVhbGl0eSBmb3IgYSBzaW5nbGUgbGFuZ3VhZ2UgbWF0Y2guXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0YWdTaW1pbGFyaXR5ID0ge1xuICAgIGV4YWN0OiAxLjAsXG4gICAgdmFyaWFudDogMC45LFxuICAgIHJlZ2lvbjogMC44LFxuICAgIG1hY3JvUmVnaW9uOiAwLjY1LFxuICAgIG5ldXRyYWxSZWdpb246IDAuNSxcbiAgICBwcmVmZXJyZWRBZmZpbml0eTogMC40NSxcbiAgICBhZmZpbml0eTogMC40LFxuICAgIHByZWZlcnJlZFJlZ2lvbjogMC4zNSxcbiAgICBzaWJsaW5nOiAwLjMsXG4gICAgdW5kZXRlcm1pbmVkOiAwLjEsXG4gICAgbm9uZTogMCxcbn07XG5cbi8qKlxuICogTnVtZXJpYyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcXVhbGl0eSBvZiBhIGxhbmd1YWdlIG1hdGNoLlxuICogUmFuZ2UgaXMgMCAobm8gbWF0Y2gpIHRvIDEgKGV4YWN0IG1hdGNoKS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgVGFnU2ltaWxhcml0eSA9IGtleW9mIHR5cGVvZiB0YWdTaW1pbGFyaXR5O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalNormalizer.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/canonicalNormalizer.ts"],"names":[],"mappings":"AAyBA,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACtD,SAAgB,aAAa,EAAE,gBAAgB,CAAe;IAE9D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;IAOhF,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOjF,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAO5E,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAO5E,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOjF,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAI/F,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAIvF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAO/F,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAM9F"}
1
+ {"version":3,"file":"canonicalNormalizer.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/canonicalNormalizer.ts"],"names":[],"mappings":"AAyBA,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACtD,SAAgB,aAAa,EAAE,gBAAgB,CAAe;IAE9D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;IAOhF,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOjF,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAO5E,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAO5E,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOjF,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAI/F,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAIvF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAU/F,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAM9F"}
@@ -95,7 +95,10 @@ class CanonicalNormalizer extends baseNormalizer_1.TagNormalizerBase {
95
95
  }
96
96
  _processPrivateUseTags(subtags) {
97
97
  if (subtags.privateUse) {
98
- return (0, ts_utils_1.mapResults)(subtags.privateUse.map((pu) => Iana.LanguageSubtags.Validate.extendedLanguageRange.toCanonical(pu)));
98
+ const merged = subtags.privateUse.join('-');
99
+ return Iana.LanguageSubtags.Validate.extendedLanguageRange.toCanonical(merged).onSuccess((canon) => {
100
+ return (0, ts_utils_1.succeed)(canon.split('-'));
101
+ });
99
102
  }
100
103
  return (0, ts_utils_1.succeed)(subtags.privateUse);
101
104
  }
@@ -107,4 +110,4 @@ class CanonicalNormalizer extends baseNormalizer_1.TagNormalizerBase {
107
110
  }
108
111
  }
109
112
  exports.CanonicalNormalizer = CanonicalNormalizer;
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fub25pY2FsTm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9ub3JtYWxpemF0aW9uL2Nhbm9uaWNhbE5vcm1hbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4REFBZ0Q7QUFDaEQsaURBQW1DO0FBWW5DLDRDQUE0RDtBQUc1RCxxREFBcUQ7QUFFckQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGtDQUFpQjtJQUExRDs7UUFDb0Isa0JBQWEsR0FBcUIsV0FBVyxDQUFDO0lBMERsRSxDQUFDO0lBeERhLGdCQUFnQixDQUFDLE9BQWdCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzVFO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxJQUFBLHFCQUFVLEVBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlGO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVTLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUyxjQUFjLENBQUMsT0FBZ0I7UUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsZ0JBQWdCLENBQUMsT0FBZ0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU8sSUFBQSxxQkFBVSxFQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RjtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUywwQkFBMEIsQ0FBQyxTQUE2QjtRQUM5RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVTLDRCQUE0QixDQUFDLEtBQXNCO1FBQ3pELE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxPQUFnQjtRQUM3QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDcEIsT0FBTyxJQUFBLHFCQUFVLEVBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUg7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVTLHlCQUF5QixDQUFDLE9BQWdCO1FBQ2hELElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKO0FBM0RELGtEQTJEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBCY3A0N1N1YnRhZ3MgZnJvbSAnLi4vYmNwNDdTdWJ0YWdzJztcbmltcG9ydCAqIGFzIElhbmEgZnJvbSAnLi4vLi4vaWFuYSc7XG5cbmltcG9ydCB7XG4gICAgRXh0TGFuZ1N1YnRhZyxcbiAgICBFeHRlbmRlZExhbmd1YWdlUmFuZ2UsXG4gICAgR3JhbmRmYXRoZXJlZFRhZyxcbiAgICBMYW5ndWFnZVN1YnRhZyxcbiAgICBSZWdpb25TdWJ0YWcsXG4gICAgU2NyaXB0U3VidGFnLFxuICAgIFZhcmlhbnRTdWJ0YWcsXG59IGZyb20gJy4uLy4uL2lhbmEvbGFuZ3VhZ2Utc3VidGFncyc7XG5pbXBvcnQgeyBFeHRlbnNpb25TaW5nbGV0b24sIEV4dGVuc2lvblN1YnRhZyB9IGZyb20gJy4uL2JjcDQ3U3VidGFncy9tb2RlbCc7XG5pbXBvcnQgeyBSZXN1bHQsIG1hcFJlc3VsdHMsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IFN1YnRhZ3MgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnTm9ybWFsaXphdGlvbiB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IFRhZ05vcm1hbGl6ZXJCYXNlIH0gZnJvbSAnLi9iYXNlTm9ybWFsaXplcic7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBDYW5vbmljYWxOb3JtYWxpemVyIGV4dGVuZHMgVGFnTm9ybWFsaXplckJhc2Uge1xuICAgIHB1YmxpYyByZWFkb25seSBub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uID0gJ2Nhbm9uaWNhbCc7XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NMYW5ndWFnZShzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PExhbmd1YWdlU3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudG9DYW5vbmljYWwoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NFeHRsYW5ncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PEV4dExhbmdTdWJ0YWdbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy5leHRsYW5ncykge1xuICAgICAgICAgICAgcmV0dXJuIG1hcFJlc3VsdHMoc3VidGFncy5leHRsYW5ncy5tYXAoKGUpID0+IHRoaXMuX2lhbmEuc3VidGFncy5leHRsYW5ncy50b0Nhbm9uaWNhbChlKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzU2NyaXB0KHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnNjcmlwdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5zY3JpcHRzLnRvQ2Fub25pY2FsKHN1YnRhZ3Muc2NyaXB0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc1JlZ2lvbihzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFJlZ2lvblN1YnRhZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy5yZWdpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pYW5hLnN1YnRhZ3MucmVnaW9ucy50b0Nhbm9uaWNhbChzdWJ0YWdzLnJlZ2lvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NWYXJpYW50cyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFZhcmlhbnRTdWJ0YWdbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy52YXJpYW50cykge1xuICAgICAgICAgICAgcmV0dXJuIG1hcFJlc3VsdHMoc3VidGFncy52YXJpYW50cy5tYXAoKHYpID0+IHRoaXMuX2lhbmEuc3VidGFncy52YXJpYW50cy50b0Nhbm9uaWNhbCh2KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0ZW5zaW9uU2luZ2xldG9uKHNpbmdsZXRvbjogRXh0ZW5zaW9uU2luZ2xldG9uKTogUmVzdWx0PEV4dGVuc2lvblNpbmdsZXRvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faWFuYS5leHRlbnNpb25zLmV4dGVuc2lvbnMudG9DYW5vbmljYWwoc2luZ2xldG9uKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NFeHRlbnNpb25TdWJ0YWdWYWx1ZSh2YWx1ZTogRXh0ZW5zaW9uU3VidGFnKTogUmVzdWx0PEV4dGVuc2lvblN1YnRhZz4ge1xuICAgICAgICByZXR1cm4gQmNwNDdTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuc2lvblN1YnRhZy50b0Nhbm9uaWNhbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzUHJpdmF0ZVVzZVRhZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxFeHRlbmRlZExhbmd1YWdlUmFuZ2VbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy5wcml2YXRlVXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLnByaXZhdGVVc2UubWFwKChwdSkgPT4gSWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5kZWRMYW5ndWFnZVJhbmdlLnRvQ2Fub25pY2FsKHB1KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MucHJpdmF0ZVVzZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzR3JhbmRmYXRoZXJlZFRhZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxHcmFuZGZhdGhlcmVkVGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLmdyYW5kZmF0aGVyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pYW5hLnN1YnRhZ3MuZ3JhbmRmYXRoZXJlZC50b0Nhbm9uaWNhbChzdWJ0YWdzLmdyYW5kZmF0aGVyZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fub25pY2FsTm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9ub3JtYWxpemF0aW9uL2Nhbm9uaWNhbE5vcm1hbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4REFBZ0Q7QUFDaEQsaURBQW1DO0FBWW5DLDRDQUE0RDtBQUc1RCxxREFBcUQ7QUFFckQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGtDQUFpQjtJQUExRDs7UUFDb0Isa0JBQWEsR0FBcUIsV0FBVyxDQUFDO0lBNkRsRSxDQUFDO0lBM0RhLGdCQUFnQixDQUFDLE9BQWdCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzVFO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxJQUFBLHFCQUFVLEVBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlGO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVTLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUyxjQUFjLENBQUMsT0FBZ0I7UUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsZ0JBQWdCLENBQUMsT0FBZ0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU8sSUFBQSxxQkFBVSxFQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RjtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUywwQkFBMEIsQ0FBQyxTQUE2QjtRQUM5RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVTLDRCQUE0QixDQUFDLEtBQXNCO1FBQ3pELE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxPQUFnQjtRQUM3QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQy9GLE9BQU8sSUFBQSxrQkFBTyxFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUE0QixDQUFDLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMseUJBQXlCLENBQUMsT0FBZ0I7UUFDaEQsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDOUU7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUE5REQsa0RBOERDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIEJjcDQ3U3VidGFncyBmcm9tICcuLi9iY3A0N1N1YnRhZ3MnO1xuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi8uLi9pYW5hJztcblxuaW1wb3J0IHtcbiAgICBFeHRMYW5nU3VidGFnLFxuICAgIEV4dGVuZGVkTGFuZ3VhZ2VSYW5nZSxcbiAgICBHcmFuZGZhdGhlcmVkVGFnLFxuICAgIExhbmd1YWdlU3VidGFnLFxuICAgIFJlZ2lvblN1YnRhZyxcbiAgICBTY3JpcHRTdWJ0YWcsXG4gICAgVmFyaWFudFN1YnRhZyxcbn0gZnJvbSAnLi4vLi4vaWFuYS9sYW5ndWFnZS1zdWJ0YWdzJztcbmltcG9ydCB7IEV4dGVuc2lvblNpbmdsZXRvbiwgRXh0ZW5zaW9uU3VidGFnIH0gZnJvbSAnLi4vYmNwNDdTdWJ0YWdzL21vZGVsJztcbmltcG9ydCB7IFJlc3VsdCwgbWFwUmVzdWx0cywgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgU3VidGFncyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdOb3JtYWxpemF0aW9uIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnTm9ybWFsaXplckJhc2UgfSBmcm9tICcuL2Jhc2VOb3JtYWxpemVyJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIENhbm9uaWNhbE5vcm1hbGl6ZXIgZXh0ZW5kcyBUYWdOb3JtYWxpemVyQmFzZSB7XG4gICAgcHVibGljIHJlYWRvbmx5IG5vcm1hbGl6YXRpb246IFRhZ05vcm1hbGl6YXRpb24gPSAnY2Fub25pY2FsJztcblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0xhbmd1YWdlKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8TGFuZ3VhZ2VTdWJ0YWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faWFuYS5zdWJ0YWdzLmxhbmd1YWdlcy50b0Nhbm9uaWNhbChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0V4dGxhbmdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8RXh0TGFuZ1N1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLmV4dGxhbmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLmV4dGxhbmdzLm1hcCgoZSkgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLmV4dGxhbmdzLnRvQ2Fub25pY2FsKGUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NTY3JpcHQoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxTY3JpcHRTdWJ0YWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faWFuYS5zdWJ0YWdzLnNjcmlwdHMudG9DYW5vbmljYWwoc3VidGFncy5zY3JpcHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzUmVnaW9uKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8UmVnaW9uU3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5yZWdpb25zLnRvQ2Fub25pY2FsKHN1YnRhZ3MucmVnaW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc1ZhcmlhbnRzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8VmFyaWFudFN1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnZhcmlhbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLnZhcmlhbnRzLm1hcCgodikgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLnZhcmlhbnRzLnRvQ2Fub25pY2FsKHYpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NFeHRlbnNpb25TaW5nbGV0b24oc2luZ2xldG9uOiBFeHRlbnNpb25TaW5nbGV0b24pOiBSZXN1bHQ8RXh0ZW5zaW9uU2luZ2xldG9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pYW5hLmV4dGVuc2lvbnMuZXh0ZW5zaW9ucy50b0Nhbm9uaWNhbChzaW5nbGV0b24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0V4dGVuc2lvblN1YnRhZ1ZhbHVlKHZhbHVlOiBFeHRlbnNpb25TdWJ0YWcpOiBSZXN1bHQ8RXh0ZW5zaW9uU3VidGFnPiB7XG4gICAgICAgIHJldHVybiBCY3A0N1N1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5zaW9uU3VidGFnLnRvQ2Fub25pY2FsKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NQcml2YXRlVXNlVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PEV4dGVuZGVkTGFuZ3VhZ2VSYW5nZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaXZhdGVVc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHN1YnRhZ3MucHJpdmF0ZVVzZS5qb2luKCctJyk7XG4gICAgICAgICAgICByZXR1cm4gSWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5kZWRMYW5ndWFnZVJhbmdlLnRvQ2Fub25pY2FsKG1lcmdlZCkub25TdWNjZXNzKChjYW5vbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGNhbm9uLnNwbGl0KCctJykgYXMgRXh0ZW5kZWRMYW5ndWFnZVJhbmdlW10pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3VidGFncy5wcml2YXRlVXNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NHcmFuZGZhdGhlcmVkVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PEdyYW5kZmF0aGVyZWRUYWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRvQ2Fub25pY2FsKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"preferredTagNormalizer.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/preferredTagNormalizer.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,MAAM,EAA6B,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACtD,SAAgB,aAAa,EAAE,gBAAgB,CAAe;IAE9D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC;IAWrG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOtG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IAoBjG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IASjG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAStG,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAIrI,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;IAI7H,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAM1F,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAOpH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAOhH,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IA8B1E,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAStE,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IA0BlE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;CAa7D"}
1
+ {"version":3,"file":"preferredTagNormalizer.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/preferredTagNormalizer.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,MAAM,EAA6B,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACtD,SAAgB,aAAa,EAAE,gBAAgB,CAAe;IAE9D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC;IAWrG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOtG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IAoBjG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IASjG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAStG,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAIrI,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;IAI7H,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAM1F,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAUpH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAOhH,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IA8B1E,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAStE,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IA0BlE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;CAa7D"}
@@ -122,9 +122,12 @@ class PreferredNormalizer extends baseNormalizer_1.TagNormalizerBase {
122
122
  }
123
123
  _processPrivateUseTags(subtags) {
124
124
  if (subtags.privateUse) {
125
- return (0, ts_utils_1.mapResults)(subtags.privateUse.map((pu) => Iana.LanguageSubtags.Validate.extendedLanguageRange.toCanonical(pu)));
125
+ const merged = subtags.privateUse.join('-');
126
+ return Iana.LanguageSubtags.Validate.extendedLanguageRange.toCanonical(merged).onSuccess((canon) => {
127
+ return (0, ts_utils_1.succeed)(canon.split('-'));
128
+ });
126
129
  }
127
- return (0, ts_utils_1.succeed)(subtags.privateUse);
130
+ return (0, ts_utils_1.succeed)(undefined);
128
131
  }
129
132
  _processGrandfatheredTags(subtags) {
130
133
  if (subtags.grandfathered) {
@@ -203,4 +206,4 @@ class PreferredNormalizer extends baseNormalizer_1.TagNormalizerBase {
203
206
  }
204
207
  }
205
208
  exports.PreferredNormalizer = PreferredNormalizer;
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVycmVkVGFnTm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9ub3JtYWxpemF0aW9uL3ByZWZlcnJlZFRhZ05vcm1hbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4REFBZ0Q7QUFDaEQsaURBQW1DO0FBRW5DLHNDQUEyRTtBQUMzRSw0Q0FBa0U7QUFFbEUsNERBQXlEO0FBRXpELHFEQUFxRDtBQUNyRCx1Q0FBMkM7QUFFM0M7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGtDQUFpQjtJQUExRDs7UUFDb0Isa0JBQWEsR0FBcUIsV0FBVyxDQUFDO0lBb0tsRSxDQUFDO0lBbEthLGdCQUFnQixDQUFDLE9BQWdCOztRQUN2QyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDWCxPQUFPLElBQUEsZUFBSSxFQUFDLDRCQUE0QixPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQzthQUN2RTtZQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLE1BQUEsUUFBUSxDQUFDLGNBQWMsbUNBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLE9BQWdCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNsQixPQUFPLElBQUEscUJBQVUsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFB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QUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7YUFDRCxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUM7YUFDRCxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDSjtBQXJLRCxrREFxS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgQmNwNDdTdWJ0YWdzIGZyb20gJy4uL2JjcDQ3U3VidGFncyc7XG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25TdWJ0YWdWYWx1ZSwgU3VidGFncywgc3VidGFnc1RvU3RyaW5nIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IFJlc3VsdCwgZmFpbCwgbWFwUmVzdWx0cywgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBMYW5ndWFnZVRhZ1BhcnNlciB9IGZyb20gJy4uL2xhbmd1YWdlVGFnUGFyc2VyJztcbmltcG9ydCB7IFRhZ05vcm1hbGl6YXRpb24gfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdOb3JtYWxpemVyQmFzZSB9IGZyb20gJy4vYmFzZU5vcm1hbGl6ZXInO1xuaW1wb3J0IHsgc2FuaXRpemVKc29uIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFByZWZlcnJlZE5vcm1hbGl6ZXIgZXh0ZW5kcyBUYWdOb3JtYWxpemVyQmFzZSB7XG4gICAgcHVibGljIHJlYWRvbmx5IG5vcm1hbGl6YXRpb246IFRhZ05vcm1hbGl6YXRpb24gPSAncHJlZmVycmVkJztcblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0xhbmd1YWdlKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuTGFuZ3VhZ2VTdWJ0YWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKSB7XG4gICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudHJ5R2V0KHN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKTtcbiAgICAgICAgICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgaW52YWxpZCBsYW5ndWFnZSBzdWJ0YWcgXCIke3N1YnRhZ3MucHJpbWFyeUxhbmd1YWdlfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChsYW5ndWFnZS5wcmVmZXJyZWRWYWx1ZSA/PyBsYW5ndWFnZS5zdWJ0YWcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0bGFuZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRMYW5nU3VidGFnW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZXh0bGFuZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBSZXN1bHRzKHN1YnRhZ3MuZXh0bGFuZ3MubWFwKChlKSA9PiB0aGlzLl9pYW5hLnN1YnRhZ3MuZXh0bGFuZ3MudG9WYWxpZENhbm9uaWNhbChlKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzU2NyaXB0KHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSAmJiBzdWJ0YWdzLnNjcmlwdCkge1xuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLl9pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLnRyeUdldChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSk7XG4gICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIGludGVybmFsIGVycm9yIGRpZmZpY3VsdCB0byB0ZXN0XG4gICAgICAgICAgICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYGludmFsaWQgcHJpbWFyeSBsYW5ndWFnZSBzdWJ0YWcgXCIke3N1YnRhZ3MucHJpbWFyeUxhbmd1YWdlfS5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gdGhpcy5faWFuYS5zdWJ0YWdzLnNjcmlwdHMudG9WYWxpZENhbm9uaWNhbChzdWJ0YWdzLnNjcmlwdCkub3JEZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIXNjcmlwdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBpbnZhbGlkIHNjcmlwdCBzdWJ0YWcgXCIke3N1YnRhZ3Muc2NyaXB0fWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobGFuZ3VhZ2Uuc3VwcHJlc3NTY3JpcHQgIT09IHNjcmlwdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NSZWdpb24oc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5SZWdpb25TdWJ0YWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MucmVnaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faWFuYS5zdWJ0YWdzLnJlZ2lvbnMuZ2V0KHN1YnRhZ3MucmVnaW9uKS5vblN1Y2Nlc3MoKHJlZ2lvbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHJlZ2lvbi5wcmVmZXJyZWRWYWx1ZSA/PyByZWdpb24uc3VidGFnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzVmFyaWFudHMoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5WYXJpYW50U3VidGFnW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MudmFyaWFudHMpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBSZXN1bHRzKHN1YnRhZ3MudmFyaWFudHMubWFwKCh2KSA9PiB0aGlzLl9pYW5hLnN1YnRhZ3MudmFyaWFudHMudG9WYWxpZENhbm9uaWNhbCh2KSkpLm9uU3VjY2VzcygodikgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl92ZXJpZnlVbmlxdWUoJ3ZhcmlhbnQnLCB2LCAodikgPT4gdilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NFeHRlbnNpb25TaW5nbGV0b24oc2luZ2xldG9uOiBCY3A0N1N1YnRhZ3MuTW9kZWwuRXh0ZW5zaW9uU2luZ2xldG9uKTogUmVzdWx0PEJjcDQ3U3VidGFncy5Nb2RlbC5FeHRlbnNpb25TaW5nbGV0b24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuZXh0ZW5zaW9ucy5leHRlbnNpb25zLnRvVmFsaWRDYW5vbmljYWwoc2luZ2xldG9uKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NFeHRlbnNpb25TdWJ0YWdWYWx1ZSh2YWx1ZTogQmNwNDdTdWJ0YWdzLk1vZGVsLkV4dGVuc2lvblN1YnRhZyk6IFJlc3VsdDxCY3A0N1N1YnRhZ3MuTW9kZWwuRXh0ZW5zaW9uU3VidGFnPiB7XG4gICAgICAgIHJldHVybiBCY3A0N1N1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5zaW9uU3VidGFnLnRvQ2Fub25pY2FsKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NFeHRlbnNpb25zKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8RXh0ZW5zaW9uU3VidGFnVmFsdWVbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gc3VwZXIuX3Byb2Nlc3NFeHRlbnNpb25zKHN1YnRhZ3MpLm9uU3VjY2VzcygoZXh0ZW5zaW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcmlmeVVuaXF1ZSgnZXh0ZW5zaW9ucycsIGV4dGVuc2lvbnMsIChlKSA9PiBlLnNpbmdsZXRvbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc1ByaXZhdGVVc2VUYWdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0ZW5kZWRMYW5ndWFnZVJhbmdlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MucHJpdmF0ZVVzZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcFJlc3VsdHMoc3VidGFncy5wcml2YXRlVXNlLm1hcCgocHUpID0+IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuZGVkTGFuZ3VhZ2VSYW5nZS50b0Nhbm9uaWNhbChwdSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdWJ0YWdzLnByaXZhdGVVc2UpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0dyYW5kZmF0aGVyZWRUYWdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuR3JhbmRmYXRoZXJlZFRhZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy5ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faWFuYS5zdWJ0YWdzLmdyYW5kZmF0aGVyZWQudG9WYWxpZENhbm9uaWNhbChzdWJ0YWdzLmdyYW5kZmF0aGVyZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wb3N0VmFsaWRhdGVHcmFuZGZhdGhlcmVkVGFnKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICBpZiAoc3VidGFncy5ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faWFuYS5zdWJ0YWdzLmdyYW5kZmF0aGVyZWQuZ2V0KHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkub25TdWNjZXNzKChncmFuZGZhdGhlcmVkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGdyYW5kZmF0aGVyZWQucHJlZmVycmVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnUGFyc2VyLnBhcnNlKGdyYW5kZmF0aGVyZWQucHJlZmVycmVkVmFsdWUsIHRoaXMuX2lhbmEpXG4gICAgICAgICAgICAgICAgICAgICAgICAub25TdWNjZXNzKChnZlN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIHdvdWxkIHJlcXVpcmUgYSByZWdpc3RyeSBlcnJvciB0b28gaGFyZCB0byB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdmU3VidGFncy5ncmFuZGZhdGhlcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWw8U3VidGFncz4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcHJlZmVycmVkIHZhbHVlICR7Z3JhbmRmYXRoZXJlZC5wcmVmZXJyZWRWYWx1ZX0gb2YgZ3JhbmRmYXRoZXJlZCB0YWcgJHtzdWJ0YWdzLmdyYW5kZmF0aGVyZWR9IGlzIGFsc28gZ3JhbmRmYXRoZXJlZC5gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdWJ0YWdzKGdmU3VidGFncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uRmFpbHVyZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIHdvdWxkIHJlcXVpcmUgYSByZWdpc3RyeSBlcnJvciB0b28gaGFyZCB0byB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSB3b3VsZCByZXF1aXJlIGEgcmVnaXN0cnkgZXJyb3IgdG9vIGhhcmQgdG8gdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBncmFuZGZhdGhlcmVkIHRhZyBcIiR7c3VidGFncy5ncmFuZGZhdGhlcmVkfVwiIGhhcyBpbnZhbGlkIHByZWZlcnJlZCB2YWx1ZSBcIiR7Z3JhbmRmYXRoZXJlZC5wcmVmZXJyZWRWYWx1ZX1cIjpcXG4ke21lc3NhZ2V9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3VidGFncyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wb3N0VmFsaWRhdGVSZWR1bmRhbnRUYWcoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIGNvbnN0IHRhZyA9IHN1YnRhZ3NUb1N0cmluZyhzdWJ0YWdzKTtcbiAgICAgICAgY29uc3QgcmVkdW5kYW50ID0gdGhpcy5faWFuYS5zdWJ0YWdzLnJlZHVuZGFudC50cnlHZXRDYW5vbmljYWwodGFnKTtcbiAgICAgICAgaWYgKHJlZHVuZGFudD8ucHJlZmVycmVkVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBMYW5ndWFnZVRhZ1BhcnNlci5wYXJzZShyZWR1bmRhbnQucHJlZmVycmVkVmFsdWUsIHRoaXMuX2lhbmEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcG9zdFZhbGlkYXRlRXh0TGFuZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLmV4dGxhbmdzKSB7XG4gICAgICAgICAgICBpZiAoc3VidGFncy5leHRsYW5ncy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3VidGFncy5leHRsYW5ncy5qb2luKCctJyl9OiBtdWx0aXBsZSBleHRsYW5nIHN1YnRhZ3MgaXMgaW52YWxpZGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN1YnRhZ3MuZXh0bGFuZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gdGhpcy5faWFuYS5zdWJ0YWdzLmV4dGxhbmdzLnRyeUdldChzdWJ0YWdzLmV4dGxhbmdzWzBdKTtcbiAgICAgICAgICAgICAgICBpZiAocmVnaXN0cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ2lzdHJ5LnByZWZlcnJlZFZhbHVlICYmIHJlZ2lzdHJ5LnByZWZpeCA9PT0gLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2U/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZlcnJlZCA9IHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudHJ5R2V0KHJlZ2lzdHJ5LnByZWZlcnJlZFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmZXJyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FuaXRpemVKc29uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN1YnRhZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5TGFuZ3VhZ2U6IHByZWZlcnJlZC5zdWJ0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRsYW5nczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3VidGFncyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wb3N0VmFsaWRhdGUoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIHJldHVybiBzdXBlclxuICAgICAgICAgICAgLl9wb3N0VmFsaWRhdGUoc3VidGFncylcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zdFZhbGlkYXRlRXh0TGFuZ3Moc3VidGFncyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm9uU3VjY2Vzcygoc3VidGFncykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wb3N0VmFsaWRhdGVHcmFuZGZhdGhlcmVkVGFnKHN1YnRhZ3MpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zdFZhbGlkYXRlUmVkdW5kYW50VGFnKHN1YnRhZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVycmVkVGFnTm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9ub3JtYWxpemF0aW9uL3ByZWZlcnJlZFRhZ05vcm1hbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4REFBZ0Q7QUFDaEQsaURBQW1DO0FBRW5DLHNDQUEyRTtBQUMzRSw0Q0FBa0U7QUFFbEUsNERBQXlEO0FBRXpELHFEQUFxRDtBQUNyRCx1Q0FBMkM7QUFFM0M7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGtDQUFpQjtJQUExRDs7UUFDb0Isa0JBQWEsR0FBcUIsV0FBVyxDQUFDO0lBdUtsRSxDQUFDO0lBckthLGdCQUFnQixDQUFDLE9BQWdCOztRQUN2QyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDWCxPQUFPLElBQUEsZUFBSSxFQUFDLDRCQUE0QixPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQzthQUN2RTtZQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLE1BQUEsUUFBUSxDQUFDLGNBQWMsbUNBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLE9BQWdCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNsQixPQUFPLElBQUEscUJBQVUsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFB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QUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVMsYUFBYSxDQUFDLE9BQWdCO1FBQ3BDLE9BQU8sS0FBSzthQUNQLGFBQWEsQ0FBQyxPQUFPLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO2FBQ0QsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDO2FBQ0QsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0o7QUF4S0Qsa0RBd0tDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIEJjcDQ3U3VidGFncyBmcm9tICcuLi9iY3A0N1N1YnRhZ3MnO1xuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi8uLi9pYW5hJztcblxuaW1wb3J0IHsgRXh0ZW5zaW9uU3VidGFnVmFsdWUsIFN1YnRhZ3MsIHN1YnRhZ3NUb1N0cmluZyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBSZXN1bHQsIGZhaWwsIG1hcFJlc3VsdHMsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VUYWdQYXJzZXIgfSBmcm9tICcuLi9sYW5ndWFnZVRhZ1BhcnNlcic7XG5pbXBvcnQgeyBUYWdOb3JtYWxpemF0aW9uIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnTm9ybWFsaXplckJhc2UgfSBmcm9tICcuL2Jhc2VOb3JtYWxpemVyJztcbmltcG9ydCB7IHNhbml0aXplSnNvbiB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVmZXJyZWROb3JtYWxpemVyIGV4dGVuZHMgVGFnTm9ybWFsaXplckJhc2Uge1xuICAgIHB1YmxpYyByZWFkb25seSBub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uID0gJ3ByZWZlcnJlZCc7XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NMYW5ndWFnZShzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkxhbmd1YWdlU3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSkge1xuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLl9pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLnRyeUdldChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSk7XG4gICAgICAgICAgICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYGludmFsaWQgbGFuZ3VhZ2Ugc3VidGFnIFwiJHtzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQobGFuZ3VhZ2UucHJlZmVycmVkVmFsdWUgPz8gbGFuZ3VhZ2Uuc3VidGFnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0V4dGxhbmdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0TGFuZ1N1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLmV4dGxhbmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLmV4dGxhbmdzLm1hcCgoZSkgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLmV4dGxhbmdzLnRvVmFsaWRDYW5vbmljYWwoZSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc1NjcmlwdChzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlNjcmlwdFN1YnRhZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UgJiYgc3VidGFncy5zY3JpcHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5faWFuYS5zdWJ0YWdzLmxhbmd1YWdlcy50cnlHZXQoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSBpbnRlcm5hbCBlcnJvciBkaWZmaWN1bHQgdG8gdGVzdFxuICAgICAgICAgICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBpbnZhbGlkIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIFwiJHtzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZX0uYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuX2lhbmEuc3VidGFncy5zY3JpcHRzLnRvVmFsaWRDYW5vbmljYWwoc3VidGFncy5zY3JpcHQpLm9yRGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCFzY3JpcHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgaW52YWxpZCBzY3JpcHQgc3VidGFnIFwiJHtzdWJ0YWdzLnNjcmlwdH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxhbmd1YWdlLnN1cHByZXNzU2NyaXB0ICE9PSBzY3JpcHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzUmVnaW9uKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuUmVnaW9uU3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5yZWdpb25zLmdldChzdWJ0YWdzLnJlZ2lvbikub25TdWNjZXNzKChyZWdpb24pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChyZWdpb24ucHJlZmVycmVkVmFsdWUgPz8gcmVnaW9uLnN1YnRhZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc1ZhcmlhbnRzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFyaWFudFN1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnZhcmlhbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLnZhcmlhbnRzLm1hcCgodikgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLnZhcmlhbnRzLnRvVmFsaWRDYW5vbmljYWwodikpKS5vblN1Y2Nlc3MoKHYpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5fdmVyaWZ5VW5pcXVlKCd2YXJpYW50JywgdiwgKHYpID0+IHYpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0ZW5zaW9uU2luZ2xldG9uKHNpbmdsZXRvbjogQmNwNDdTdWJ0YWdzLk1vZGVsLkV4dGVuc2lvblNpbmdsZXRvbik6IFJlc3VsdDxCY3A0N1N1YnRhZ3MuTW9kZWwuRXh0ZW5zaW9uU2luZ2xldG9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pYW5hLmV4dGVuc2lvbnMuZXh0ZW5zaW9ucy50b1ZhbGlkQ2Fub25pY2FsKHNpbmdsZXRvbik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0ZW5zaW9uU3VidGFnVmFsdWUodmFsdWU6IEJjcDQ3U3VidGFncy5Nb2RlbC5FeHRlbnNpb25TdWJ0YWcpOiBSZXN1bHQ8QmNwNDdTdWJ0YWdzLk1vZGVsLkV4dGVuc2lvblN1YnRhZz4ge1xuICAgICAgICByZXR1cm4gQmNwNDdTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuc2lvblN1YnRhZy50b0Nhbm9uaWNhbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0ZW5zaW9ucyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PEV4dGVuc2lvblN1YnRhZ1ZhbHVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLl9wcm9jZXNzRXh0ZW5zaW9ucyhzdWJ0YWdzKS5vblN1Y2Nlc3MoKGV4dGVuc2lvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92ZXJpZnlVbmlxdWUoJ2V4dGVuc2lvbnMnLCBleHRlbnNpb25zLCAoZSkgPT4gZS5zaW5nbGV0b24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NQcml2YXRlVXNlVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkV4dGVuZGVkTGFuZ3VhZ2VSYW5nZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaXZhdGVVc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHN1YnRhZ3MucHJpdmF0ZVVzZS5qb2luKCctJyk7XG4gICAgICAgICAgICByZXR1cm4gSWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5kZWRMYW5ndWFnZVJhbmdlLnRvQ2Fub25pY2FsKG1lcmdlZCkub25TdWNjZXNzKChjYW5vbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGNhbm9uLnNwbGl0KCctJykgYXMgSWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0ZW5kZWRMYW5ndWFnZVJhbmdlW10pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NHcmFuZGZhdGhlcmVkVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkdyYW5kZmF0aGVyZWRUYWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRvVmFsaWRDYW5vbmljYWwoc3VidGFncy5ncmFuZGZhdGhlcmVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcG9zdFZhbGlkYXRlR3JhbmRmYXRoZXJlZFRhZyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLmdldChzdWJ0YWdzLmdyYW5kZmF0aGVyZWQpLm9uU3VjY2VzcygoZ3JhbmRmYXRoZXJlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChncmFuZGZhdGhlcmVkLnByZWZlcnJlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBMYW5ndWFnZVRhZ1BhcnNlci5wYXJzZShncmFuZGZhdGhlcmVkLnByZWZlcnJlZFZhbHVlLCB0aGlzLl9pYW5hKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uU3VjY2VzcygoZ2ZTdWJ0YWdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSB3b3VsZCByZXF1aXJlIGEgcmVnaXN0cnkgZXJyb3IgdG9vIGhhcmQgdG8gdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZlN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsPFN1YnRhZ3M+KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHByZWZlcnJlZCB2YWx1ZSAke2dyYW5kZmF0aGVyZWQucHJlZmVycmVkVmFsdWV9IG9mIGdyYW5kZmF0aGVyZWQgdGFnICR7c3VidGFncy5ncmFuZGZhdGhlcmVkfSBpcyBhbHNvIGdyYW5kZmF0aGVyZWQuYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3VidGFncyhnZlN1YnRhZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbkZhaWx1cmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSB3b3VsZCByZXF1aXJlIGEgcmVnaXN0cnkgZXJyb3IgdG9vIGhhcmQgdG8gdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IC0gd291bGQgcmVxdWlyZSBhIHJlZ2lzdHJ5IGVycm9yIHRvbyBoYXJkIHRvIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZ3JhbmRmYXRoZXJlZCB0YWcgXCIke3N1YnRhZ3MuZ3JhbmRmYXRoZXJlZH1cIiBoYXMgaW52YWxpZCBwcmVmZXJyZWQgdmFsdWUgXCIke2dyYW5kZmF0aGVyZWQucHJlZmVycmVkVmFsdWV9XCI6XFxuJHttZXNzYWdlfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChzdWJ0YWdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcG9zdFZhbGlkYXRlUmVkdW5kYW50VGFnKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICBjb25zdCB0YWcgPSBzdWJ0YWdzVG9TdHJpbmcoc3VidGFncyk7XG4gICAgICAgIGNvbnN0IHJlZHVuZGFudCA9IHRoaXMuX2lhbmEuc3VidGFncy5yZWR1bmRhbnQudHJ5R2V0Q2Fub25pY2FsKHRhZyk7XG4gICAgICAgIGlmIChyZWR1bmRhbnQ/LnByZWZlcnJlZFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWdQYXJzZXIucGFyc2UocmVkdW5kYW50LnByZWZlcnJlZFZhbHVlLCB0aGlzLl9pYW5hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdWJ0YWdzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Bvc3RWYWxpZGF0ZUV4dExhbmdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICBpZiAoc3VidGFncy5leHRsYW5ncykge1xuICAgICAgICAgICAgaWYgKHN1YnRhZ3MuZXh0bGFuZ3MubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3N1YnRhZ3MuZXh0bGFuZ3Muam9pbignLScpfTogbXVsdGlwbGUgZXh0bGFuZyBzdWJ0YWdzIGlzIGludmFsaWRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdWJ0YWdzLmV4dGxhbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWdpc3RyeSA9IHRoaXMuX2lhbmEuc3VidGFncy5leHRsYW5ncy50cnlHZXQoc3VidGFncy5leHRsYW5nc1swXSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lzdHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdpc3RyeS5wcmVmZXJyZWRWYWx1ZSAmJiByZWdpc3RyeS5wcmVmaXggPT09IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmZXJyZWQgPSB0aGlzLl9pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLnRyeUdldChyZWdpc3RyeS5wcmVmZXJyZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZmVycmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbml0aXplSnNvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zdWJ0YWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUxhbmd1YWdlOiBwcmVmZXJyZWQuc3VidGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0bGFuZ3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcG9zdFZhbGlkYXRlKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICByZXR1cm4gc3VwZXJcbiAgICAgICAgICAgIC5fcG9zdFZhbGlkYXRlKHN1YnRhZ3MpXG4gICAgICAgICAgICAub25TdWNjZXNzKChzdWJ0YWdzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3RWYWxpZGF0ZUV4dExhbmdzKHN1YnRhZ3MpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zdFZhbGlkYXRlR3JhbmRmYXRoZXJlZFRhZyhzdWJ0YWdzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAub25TdWNjZXNzKChzdWJ0YWdzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3RWYWxpZGF0ZVJlZHVuZGFudFRhZyhzdWJ0YWdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"isCanonical.d.ts","sourceRoot":"","sources":["../../../src/bcp47/validation/isCanonical.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IAC/C,QAAQ,EAAE,WAAW,CAAiB;IAE7C,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC;IAOnG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAUpG,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IAI/F,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IAI/F,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAUpG,SAAS,CAAC,wBAAwB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAI7F,SAAS,CAAC,0BAA0B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAIrF,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAUlH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAGjH"}
1
+ {"version":3,"file":"isCanonical.d.ts","sourceRoot":"","sources":["../../../src/bcp47/validation/isCanonical.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAA6B,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IAC/C,QAAQ,EAAE,WAAW,CAAiB;IAE7C,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC;IAOnG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAUpG,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IAI/F,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IAI/F,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAUpG,SAAS,CAAC,wBAAwB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAI7F,SAAS,CAAC,0BAA0B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAIrF,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAYlH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAGjH"}
@@ -89,7 +89,10 @@ class IsCanonicalValidator extends baseValidator_1.TagValidatorBase {
89
89
  }
90
90
  _checkPrivateUseTags(subtags) {
91
91
  if (subtags.privateUse) {
92
- return (0, ts_utils_1.allSucceed)(subtags.privateUse.map((pu) => Iana.LanguageSubtags.Validate.extendedLanguageRange.verifyIsCanonical(pu)), subtags.privateUse);
92
+ const result = Iana.LanguageSubtags.Validate.extendedLanguageRange.verifyIsCanonical(subtags.privateUse.join('-'));
93
+ if (result.isFailure()) {
94
+ return (0, ts_utils_1.fail)(result.message);
95
+ }
93
96
  }
94
97
  return (0, ts_utils_1.succeed)(subtags.privateUse);
95
98
  }
@@ -98,4 +101,4 @@ class IsCanonicalValidator extends baseValidator_1.TagValidatorBase {
98
101
  }
99
102
  }
100
103
  exports.IsCanonicalValidator = IsCanonicalValidator;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNDYW5vbmljYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmNwNDcvdmFsaWRhdGlvbi9pc0Nhbm9uaWNhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDhEQUFnRDtBQUNoRCxpREFBbUM7QUFHbkMsNENBQTREO0FBRzVELG1EQUFtRDtBQUduRDs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsZ0NBQWdCO0lBQTFEOztRQUNXLGFBQVEsR0FBZ0IsYUFBYSxDQUFDO0lBMERqRCxDQUFDO0lBeERhLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVTLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxJQUFBLHFCQUFVLEVBQ2IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1RSxPQUFPLENBQUMsUUFBUSxDQUNuQixDQUFDO1NBQ0w7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsWUFBWSxDQUFDLE9BQWdCO1FBQ25DLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFUyxZQUFZLENBQUMsT0FBZ0I7UUFDbkMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVTLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxJQUFBLHFCQUFVLEVBQ2IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1RSxPQUFPLENBQUMsUUFBUSxDQUNuQixDQUFDO1NBQ0w7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsd0JBQXdCLENBQUMsU0FBNkI7UUFDNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVTLDBCQUEwQixDQUFDLEtBQXNCO1FBQ3ZELE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVTLG9CQUFvQixDQUFDLE9BQWdCO1FBQzNDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPLElBQUEscUJBQVUsRUFDYixPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDekcsT0FBTyxDQUFDLFVBQVUsQ0FDckIsQ0FBQztTQUNMO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxPQUFnQjtRQUM5QyxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUNqSSxDQUFDO0NBQ0o7QUEzREQsb0RBMkRDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIEJjcDQ3U3VidGFncyBmcm9tICcuLi9iY3A0N1N1YnRhZ3MnO1xuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi8uLi9pYW5hJztcblxuaW1wb3J0IHsgRXh0ZW5zaW9uU2luZ2xldG9uLCBFeHRlbnNpb25TdWJ0YWcgfSBmcm9tICcuLi9iY3A0N1N1YnRhZ3MvbW9kZWwnO1xuaW1wb3J0IHsgUmVzdWx0LCBhbGxTdWNjZWVkLCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5cbmltcG9ydCB7IFN1YnRhZ3MgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnVmFsaWRhdG9yQmFzZSB9IGZyb20gJy4vYmFzZVZhbGlkYXRvcic7XG5pbXBvcnQgeyBUYWdWYWxpZGl0eSB9IGZyb20gJy4vY29tbW9uJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIElzQ2Fub25pY2FsVmFsaWRhdG9yIGV4dGVuZHMgVGFnVmFsaWRhdG9yQmFzZSB7XG4gICAgcHVibGljIHZhbGlkaXR5OiBUYWdWYWxpZGl0eSA9ICd3ZWxsLWZvcm1lZCc7XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrTGFuZ3VhZ2Uoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5MYW5ndWFnZVN1YnRhZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlhbmEuc3VidGFncy5sYW5ndWFnZXMudmVyaWZ5SXNDYW5vbmljYWwoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jaGVja0V4dGxhbmdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0TGFuZ1N1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLmV4dGxhbmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gYWxsU3VjY2VlZChcbiAgICAgICAgICAgICAgICBzdWJ0YWdzLmV4dGxhbmdzLm1hcCgoZSkgPT4gdGhpcy5pYW5hLnN1YnRhZ3MuZXh0bGFuZ3MudmVyaWZ5SXNDYW5vbmljYWwoZSkpLFxuICAgICAgICAgICAgICAgIHN1YnRhZ3MuZXh0bGFuZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrU2NyaXB0KHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBzdWJ0YWdzLnNjcmlwdCA/IHRoaXMuaWFuYS5zdWJ0YWdzLnNjcmlwdHMudmVyaWZ5SXNDYW5vbmljYWwoc3VidGFncy5zY3JpcHQpIDogc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2hlY2tSZWdpb24oc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5SZWdpb25TdWJ0YWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHN1YnRhZ3MucmVnaW9uID8gdGhpcy5pYW5hLnN1YnRhZ3MucmVnaW9ucy52ZXJpZnlJc0Nhbm9uaWNhbChzdWJ0YWdzLnJlZ2lvbikgOiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jaGVja1ZhcmlhbnRzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFyaWFudFN1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnZhcmlhbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYWxsU3VjY2VlZChcbiAgICAgICAgICAgICAgICBzdWJ0YWdzLnZhcmlhbnRzLm1hcCgodikgPT4gdGhpcy5pYW5hLnN1YnRhZ3MudmFyaWFudHMudmVyaWZ5SXNDYW5vbmljYWwodikpLFxuICAgICAgICAgICAgICAgIHN1YnRhZ3MudmFyaWFudHNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrRXh0ZW5zaW9uU2luZ2xldG9uKHNpbmdsZXRvbjogRXh0ZW5zaW9uU2luZ2xldG9uKTogUmVzdWx0PEV4dGVuc2lvblNpbmdsZXRvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pYW5hLmV4dGVuc2lvbnMuZXh0ZW5zaW9ucy52ZXJpZnlJc0Nhbm9uaWNhbChzaW5nbGV0b24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2hlY2tFeHRlbnNpb25TdWJ0YWdWYWx1ZSh2YWx1ZTogRXh0ZW5zaW9uU3VidGFnKTogUmVzdWx0PEV4dGVuc2lvblN1YnRhZz4ge1xuICAgICAgICByZXR1cm4gQmNwNDdTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuc2lvblN1YnRhZy52ZXJpZnlJc0Nhbm9uaWNhbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jaGVja1ByaXZhdGVVc2VUYWdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0ZW5kZWRMYW5ndWFnZVJhbmdlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MucHJpdmF0ZVVzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFsbFN1Y2NlZWQoXG4gICAgICAgICAgICAgICAgc3VidGFncy5wcml2YXRlVXNlLm1hcCgocHUpID0+IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuZGVkTGFuZ3VhZ2VSYW5nZS52ZXJpZnlJc0Nhbm9uaWNhbChwdSkpLFxuICAgICAgICAgICAgICAgIHN1YnRhZ3MucHJpdmF0ZVVzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdWJ0YWdzLnByaXZhdGVVc2UpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2hlY2tHcmFuZGZhdGhlcmVkVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkdyYW5kZmF0aGVyZWRUYWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCA/IHRoaXMuaWFuYS5zdWJ0YWdzLmdyYW5kZmF0aGVyZWQudmVyaWZ5SXNDYW5vbmljYWwoc3VidGFncy5ncmFuZGZhdGhlcmVkKSA6IHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG59XG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNDYW5vbmljYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmNwNDcvdmFsaWRhdGlvbi9pc0Nhbm9uaWNhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDhEQUFnRDtBQUNoRCxpREFBbUM7QUFHbkMsNENBQWtFO0FBR2xFLG1EQUFtRDtBQUduRDs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsZ0NBQWdCO0lBQTFEOztRQUNXLGFBQVEsR0FBZ0IsYUFBYSxDQUFDO0lBNERqRCxDQUFDO0lBMURhLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVTLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxJQUFBLHFCQUFVLEVBQ2IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1RSxPQUFPLENBQUMsUUFBUSxDQUNuQixDQUFDO1NBQ0w7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsWUFBWSxDQUFDLE9BQWdCO1FBQ25DLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFUyxZQUFZLENBQUMsT0FBZ0I7UUFDbkMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVTLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxJQUFBLHFCQUFVLEVBQ2IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1RSxPQUFPLENBQUMsUUFBUSxDQUNuQixDQUFDO1NBQ0w7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsd0JBQXdCLENBQUMsU0FBNkI7UUFDNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVTLDBCQUEwQixDQUFDLEtBQXNCO1FBQ3ZELE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVTLG9CQUFvQixDQUFDLE9BQWdCO1FBQzNDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FDaEYsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUErQyxDQUM3RSxDQUFDO1lBQ0YsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3BCLE9BQU8sSUFBQSxlQUFJLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQy9CO1NBQ0o7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVTLHVCQUF1QixDQUFDLE9BQWdCO1FBQzlDLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pJLENBQUM7Q0FDSjtBQTdERCxvREE2REMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgQmNwNDdTdWJ0YWdzIGZyb20gJy4uL2JjcDQ3U3VidGFncyc7XG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25TaW5nbGV0b24sIEV4dGVuc2lvblN1YnRhZyB9IGZyb20gJy4uL2JjcDQ3U3VidGFncy9tb2RlbCc7XG5pbXBvcnQgeyBSZXN1bHQsIGFsbFN1Y2NlZWQsIGZhaWwsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgU3VidGFncyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdWYWxpZGF0b3JCYXNlIH0gZnJvbSAnLi9iYXNlVmFsaWRhdG9yJztcbmltcG9ydCB7IFRhZ1ZhbGlkaXR5IH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgSXNDYW5vbmljYWxWYWxpZGF0b3IgZXh0ZW5kcyBUYWdWYWxpZGF0b3JCYXNlIHtcbiAgICBwdWJsaWMgdmFsaWRpdHk6IFRhZ1ZhbGlkaXR5ID0gJ3dlbGwtZm9ybWVkJztcblxuICAgIHByb3RlY3RlZCBfY2hlY2tMYW5ndWFnZShzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkxhbmd1YWdlU3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaWFuYS5zdWJ0YWdzLmxhbmd1YWdlcy52ZXJpZnlJc0Nhbm9uaWNhbChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrRXh0bGFuZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRMYW5nU3VidGFnW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZXh0bGFuZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBhbGxTdWNjZWVkKFxuICAgICAgICAgICAgICAgIHN1YnRhZ3MuZXh0bGFuZ3MubWFwKChlKSA9PiB0aGlzLmlhbmEuc3VidGFncy5leHRsYW5ncy52ZXJpZnlJc0Nhbm9uaWNhbChlKSksXG4gICAgICAgICAgICAgICAgc3VidGFncy5leHRsYW5nc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2hlY2tTY3JpcHQoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5TY3JpcHRTdWJ0YWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHN1YnRhZ3Muc2NyaXB0ID8gdGhpcy5pYW5hLnN1YnRhZ3Muc2NyaXB0cy52ZXJpZnlJc0Nhbm9uaWNhbChzdWJ0YWdzLnNjcmlwdCkgOiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jaGVja1JlZ2lvbihzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlJlZ2lvblN1YnRhZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gc3VidGFncy5yZWdpb24gPyB0aGlzLmlhbmEuc3VidGFncy5yZWdpb25zLnZlcmlmeUlzQ2Fub25pY2FsKHN1YnRhZ3MucmVnaW9uKSA6IHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrVmFyaWFudHMoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5WYXJpYW50U3VidGFnW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MudmFyaWFudHMpIHtcbiAgICAgICAgICAgIHJldHVybiBhbGxTdWNjZWVkKFxuICAgICAgICAgICAgICAgIHN1YnRhZ3MudmFyaWFudHMubWFwKCh2KSA9PiB0aGlzLmlhbmEuc3VidGFncy52YXJpYW50cy52ZXJpZnlJc0Nhbm9uaWNhbCh2KSksXG4gICAgICAgICAgICAgICAgc3VidGFncy52YXJpYW50c1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2hlY2tFeHRlbnNpb25TaW5nbGV0b24oc2luZ2xldG9uOiBFeHRlbnNpb25TaW5nbGV0b24pOiBSZXN1bHQ8RXh0ZW5zaW9uU2luZ2xldG9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlhbmEuZXh0ZW5zaW9ucy5leHRlbnNpb25zLnZlcmlmeUlzQ2Fub25pY2FsKHNpbmdsZXRvbik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jaGVja0V4dGVuc2lvblN1YnRhZ1ZhbHVlKHZhbHVlOiBFeHRlbnNpb25TdWJ0YWcpOiBSZXN1bHQ8RXh0ZW5zaW9uU3VidGFnPiB7XG4gICAgICAgIHJldHVybiBCY3A0N1N1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5zaW9uU3VidGFnLnZlcmlmeUlzQ2Fub25pY2FsKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrUHJpdmF0ZVVzZVRhZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRlbmRlZExhbmd1YWdlUmFuZ2VbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy5wcml2YXRlVXNlKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBJYW5hLkxhbmd1YWdlU3VidGFncy5WYWxpZGF0ZS5leHRlbmRlZExhbmd1YWdlUmFuZ2UudmVyaWZ5SXNDYW5vbmljYWwoXG4gICAgICAgICAgICAgICAgc3VidGFncy5wcml2YXRlVXNlLmpvaW4oJy0nKSBhcyBJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRlbmRlZExhbmd1YWdlUmFuZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MucHJpdmF0ZVVzZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jaGVja0dyYW5kZmF0aGVyZWRUYWdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuR3JhbmRmYXRoZXJlZFRhZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gc3VidGFncy5ncmFuZGZhdGhlcmVkID8gdGhpcy5pYW5hLnN1YnRhZ3MuZ3JhbmRmYXRoZXJlZC52ZXJpZnlJc0Nhbm9uaWNhbChzdWJ0YWdzLmdyYW5kZmF0aGVyZWQpIDogc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fgv/ts-bcp47",
3
- "version": "0.9.4",
3
+ "version": "0.9.6",
4
4
  "description": "BCP-47 Tag Utilities",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -9,6 +9,7 @@
9
9
  "build-docs": "$(npm bin)/api-documenter markdown --input-folder ./temp --output-folder docs",
10
10
  "build-all": "npm run build; npm run api-extractor; npm run build-docs",
11
11
  "clean": "rimraf dist",
12
+ "cspell": "cspell lint",
12
13
  "test": "jest",
13
14
  "test-handles": "jest --runInBand --detectOpenHandles",
14
15
  "clean-jest": "jest --clear-cache",
@@ -34,29 +35,29 @@
34
35
  "homepage": "https://github.com/ErikFortune/ts-bcp47#readme",
35
36
  "devDependencies": {
36
37
  "@fgv/ts-json": "1.9.0",
37
- "@fgv/ts-utils": "^1.9.1",
38
- "@fgv/ts-utils-jest": "^1.9.0",
39
- "@microsoft/api-documenter": "^7.19.28",
40
- "@microsoft/api-extractor": "^7.33.8",
41
- "@types/jest": "^29.2.6",
38
+ "@fgv/ts-utils": "^1.9.3",
39
+ "@fgv/ts-utils-jest": "^1.9.3",
40
+ "@microsoft/api-documenter": "^7.21.5",
41
+ "@microsoft/api-extractor": "^7.34.4",
42
+ "@types/jest": "^29.4.0",
42
43
  "@types/luxon": "^3.2.0",
43
- "@types/node": "^18.11.18",
44
- "@typescript-eslint/eslint-plugin": "^5.48.2",
45
- "@typescript-eslint/parser": "^5.48.2",
46
- "axios": "^1.2.3",
47
- "eslint": "^8.32.0",
44
+ "@types/node": "^18.14.2",
45
+ "@typescript-eslint/eslint-plugin": "^5.53.0",
46
+ "@typescript-eslint/parser": "^5.53.0",
47
+ "axios": "^1.3.4",
48
+ "eslint": "^8.35.0",
48
49
  "eslint-config-prettier": "^8.6.0",
49
50
  "eslint-config-standard": "^17.0.0",
50
51
  "eslint-plugin-import": "^2.27.5",
51
52
  "eslint-plugin-node": "^11.1.0",
52
53
  "eslint-plugin-prettier": "^4.2.1",
53
54
  "eslint-plugin-promise": "^6.1.1",
54
- "jest": "^29.3.1",
55
- "prettier": "^2.8.3",
56
- "rimraf": "^4.1.1",
55
+ "jest": "^29.4.3",
56
+ "prettier": "^2.8.4",
57
+ "rimraf": "^4.1.2",
57
58
  "ts-jest": "^29.0.5",
58
59
  "ts-node": "^10.9.1",
59
- "typescript": "^4.9.4"
60
+ "typescript": "^4.9.5"
60
61
  },
61
62
  "dependencies": {
62
63
  "luxon": "^3.2.1"