transformalizer
Advanced tools
Comparing version 1.0.0-beta.0 to 1.0.0-beta.1
@@ -5,2 +5,12 @@ # Change Log | ||
<a name="1.0.0-beta.1"></a> | ||
# [1.0.0-beta.1](https://github.com/GaiamTV/transformalizer/compare/v1.0.0-beta.0...v1.0.0-beta.1) (2017-06-21) | ||
### Features | ||
* expose additional methods to improve modular use cases and testability ([1f425a7](https://github.com/GaiamTV/transformalizer/commit/1f425a7)) | ||
<a name="1.0.0-beta.0"></a> | ||
@@ -7,0 +17,0 @@ # [1.0.0-beta.0](https://github.com/GaiamTV/transformalizer/compare/v0.1.4...v1.0.0-beta.0) (2017-06-20) |
@@ -109,3 +109,2 @@ 'use strict'; | ||
include = args.include; | ||
// TODO define include | ||
@@ -482,7 +481,16 @@ if (Array.isArray(source)) { | ||
return { | ||
createInclude: createInclude, | ||
getAttributes: getAttributes, | ||
getId: getId, | ||
getRelationship: getRelationship, | ||
getRelationships: getRelationships, | ||
getType: getType, | ||
register: register, | ||
transform: transform | ||
transform: transform, | ||
transformData: transformData, | ||
transformRelationshipData: transformRelationshipData, | ||
transformSource: transformSource | ||
}; | ||
} | ||
module.exports = exports['default']; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi90cmFuc2Zvcm1hbGl6ZXIuanMiXSwibmFtZXMiOlsiY3JlYXRlVHJhbnNmb3JtYWxpemVyIiwiYmFzZU9wdGlvbnMiLCJyZWdpc3RyeSIsInJlZ2lzdGVyIiwibmFtZSIsInNjaGVtYSIsInNjaGVtYU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJvcHRzIiwiZG9jU2NoZW1hIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5jbHVkZSIsImNyZWF0ZUluY2x1ZGUiLCJkYXRhIiwidHJhbnNmb3JtU291cmNlIiwiaW5jbHVkZWQiLCJnZXQiLCJkb2N1bWVudCIsImpzb25hcGkiLCJ2ZXJzaW9uIiwidG9wTGV2ZWwiLCJmb3JFYWNoIiwicHJvcCIsInJlc3VsdCIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ0cmFuc2Zvcm1EYXRhIiwiX3R5cGUiLCJfaWQiLCJkYXRhU2NoZW1hIiwic3RhdGUiLCJwYXJhbXMiLCJ0eXBlIiwiZ2V0VHlwZSIsImlkIiwiZ2V0SWQiLCJhdHRyaWJ1dGVzIiwiZ2V0QXR0cmlidXRlcyIsInJlbGF0aW9uc2hpcHMiLCJnZXRSZWxhdGlvbnNoaXBzIiwibGlua3MiLCJnZXRMaW5rcyIsIm1ldGEiLCJnZXRNZXRhIiwicmVzb3VyY2UiLCJvdGhlcnMiLCJyZWxTY2hlbWEiLCJrZXlzIiwicmVkdWNlIiwibWVtbyIsImtleSIsImZuIiwicmVsYXRpb25zaGlwIiwiZ2V0UmVsYXRpb25zaGlwIiwiaW52YWxpZERhdGEiLCJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhIiwiaXRlbSIsImV4aXN0cyIsImFscmVhZHlJbmNsdWRlZCIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7a0JBYXdCQSxxQjs7QUFieEI7Ozs7QUFRQTs7Ozs7QUFLZSxTQUFTQSxxQkFBVCxHQUFpRDtBQUFBLE1BQWxCQyxXQUFrQix1RUFBSixFQUFJOztBQUM5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LGVBQU93QixnQkFBbUIxQixJQUFuQixTQUEyQkUsRUFBM0IsQ0FBUDtBQUNELE9BVkk7OztBQVlMOzs7OztBQUtBMUIsYUFqQkssbUJBaUJHb0MsUUFqQkgsRUFpQmE7QUFDaEJjLHdCQUFtQmQsU0FBU1osSUFBNUIsU0FBb0NZLFNBQVNWLEVBQTdDLElBQXFELElBQXJEO0FBQ0F0QixpQkFBUytDLElBQVQsQ0FBY2YsUUFBZDtBQUNELE9BcEJJOzs7QUFzQkw7Ozs7QUFJQS9CLFNBMUJLLGlCQTBCQztBQUNKLGVBQU9ELFFBQVA7QUFDRDtBQTVCSSxLQUFQO0FBOEJEOztBQUVELFNBQU87QUFDTGpCLHNCQURLO0FBRUxPO0FBRkssR0FBUDtBQUlEIiwiZmlsZSI6InRyYW5zZm9ybWFsaXplci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzRnVuY3Rpb24sXG4gIGlzT2JqZWN0LFxuICBpc1N0cmluZyxcbiAgVHJhbnNmb3JtRXJyb3IsXG4gIHZhbGlkYXRlU2NoZW1hLFxufSBmcm9tICcuL3V0aWxzJ1xuXG4vKipcbiAqIFRyYW5zZm9ybWFsaXplciBmYWN0b3J5IGZ1bmN0aW9uLlxuICogQHBhcmFtICB7T2JqZWN0fSBbYmFzZU9wdGlvbnM9e31dXG4gKiBAcmV0dXJuIHtPYmplY3R9IHRyYW5zZm9ybWFsaXplclxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1hbGl6ZXIoYmFzZU9wdGlvbnMgPSB7fSkge1xuICBjb25zdCByZWdpc3RyeSA9IHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MubmFtZSAtIHNjaGVtYSBuYW1lL2lkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5zY2hlbWEgLSBzY2hlbWEgZGVmaW5pdGlvblxuICAgKiBAcGFyYW0gIHtPYmplY3R9IFthcmdzLm9wdGlvbnM9e31dIC0gc2NoZW1hIG9wdGlvbnMgdG8gYmUgbWVyZ2VkIGluIHRvIHRyYW5zZm9ybSBvcHRpb25zXG4gICAqIEByZXR1cm4ge1VuZGVmaW5lZH1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyKHsgbmFtZSwgc2NoZW1hLCBvcHRpb25zOiBzY2hlbWFPcHRpb25zIH0pIHtcbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgXCJuYW1lXCIgUHJvcGVydHkgKG5vbiBzdHJpbmcpJylcbiAgICB9XG4gICAgcmVnaXN0cnlbbmFtZV0gPSB7XG4gICAgICBzY2hlbWE6IHZhbGlkYXRlU2NoZW1hKHsgbmFtZSwgc2NoZW1hIH0pLFxuICAgICAgb3B0aW9uczogc2NoZW1hT3B0aW9ucyxcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSByYXcgZGF0YSBpbnRvIGEgdmFsaWQgSlNPTiBBUEkgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5uYW1lIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgbmFtZVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gYSBzaW5nbGUgc291cmNlIG9iamVjdCBvciBhbiBhcmF5IG9mIHNvdXJjZSBvYmplY3RzXG4gICAqIEBwYXJhbSAge09iamVjdH0gW29wdGlvbnM9e31dIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRvY3VtZW50XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm0oeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSkge1xuICAgIGlmICghaXNTdHJpbmcobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCBcIm5hbWVcIiBQcm9wZXJ0eSAobm9uIHN0cmluZyknLCB7IG5hbWUsIHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KVxuICAgIH1cbiAgICBjb25zdCBkb2NTY2hlbWEgPSByZWdpc3RyeVtuYW1lXVxuICAgIGlmICghZG9jU2NoZW1hKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSlcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGJhc2VPcHRpb25zLCBvcHRzKVxuICAgIGNvbnN0IGluY2x1ZGUgPSBjcmVhdGVJbmNsdWRlKHsgc291cmNlLCBvcHRpb25zIH0pXG4gICAgY29uc3QgZGF0YSA9IHRyYW5zZm9ybVNvdXJjZSh7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zLCBpbmNsdWRlIH0pXG4gICAgY29uc3QgaW5jbHVkZWQgPSBpbmNsdWRlLmdldCgpXG4gICAgY29uc3QgZG9jdW1lbnQgPSB7XG4gICAgICBqc29uYXBpOiB7XG4gICAgICAgIHZlcnNpb246ICcxLjAnLFxuICAgICAgfSxcbiAgICB9XG4gICAgLy8gYWRkIHRvcCBsZXZlbCBwcm9wZXJ0aWVzIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHRvcExldmVsID0gWydsaW5rcycsICdtZXRhJ11cbiAgICB0b3BMZXZlbC5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBpZiAoZG9jU2NoZW1hLnNjaGVtYVtwcm9wXSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkb2NTY2hlbWEuc2NoZW1hW3Byb3BdKHsgc291cmNlLCBvcHRpb25zLCBkYXRhLCBpbmNsdWRlZCB9KVxuICAgICAgICBpZiAoaXNPYmplY3QocmVzdWx0KSkge1xuICAgICAgICAgIGRvY3VtZW50W3Byb3BdID0gcmVzdWx0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIGRvY3VtZW50LmRhdGEgPSBkYXRhXG4gICAgaWYgKGluY2x1ZGVkLmxlbmd0aCkge1xuICAgICAgZG9jdW1lbnQuaW5jbHVkZWQgPSBpbmNsdWRlZFxuICAgIH1cbiAgICByZXR1cm4gZG9jdW1lbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gc291cmNlIGludG8gdGhlIFwicHJpbWFyeSBkYXRhXCIgb2YgdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZG9jU2NoZW1hIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgdXNlZCBmb3IgdHJhbnNmb3JtaW5nIHRoZSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gc291cmNlIGRhdGFcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnMgLSBmdW5jdGlvbiBsZXZlbCBvcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlIC0gaW5jbHVkZSBvYmplY3RcbiAgICogQHJldHVybiB7T2JqZWN0fE9iamVjdFtdfVxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtU291cmNlKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zOiBvcHRzLCBpbmNsdWRlIH0gPSBhcmdzXG4gICAgLy8gVE9ETyBkZWZpbmUgaW5jbHVkZVxuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2UubWFwKGRhdGEgPT4gdHJhbnNmb3JtRGF0YSh7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zOiBvcHRzLCBkYXRhLCBpbmNsdWRlIH0pKVxuICAgIH1cbiAgICByZXR1cm4gdHJhbnNmb3JtRGF0YSh7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zOiBvcHRzLCBkYXRhOiBzb3VyY2UsIGluY2x1ZGUgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gYSBzaW5nbGUgc291cmNlIG9iamVjdCBpbnRvIGEgdmFsaWQgcmVzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kb2NTY2hlbWEgLSB0aGUgdG9wIGxldmVsIHNjaGVtYSB1c2VkIGZvciB0cmFuc2Zvcm1pbmcgdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2UgLSBzb3VyY2UgZGF0YVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9ucyAtIGZ1bmN0aW9uIGxldmVsIG9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGEgLSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmluY2x1ZGUgLSBpbmNsdWRlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IFthcmdzLl90eXBlXSAtIChmb3IgdXNlIGJ5IHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEpXG4gICAqIEBwYXJhbSAge1N0cmluZ30gW2FyZ3MuX2lkXSAtIChmb3IgdXNlIGJ5IHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEpXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoYXJncykge1xuICAgIGNvbnN0IHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGRhdGEsIGluY2x1ZGUsIF90eXBlLCBfaWQgfSA9IGFyZ3NcbiAgICAvLyBjYWxsIGRhdGFTY2hlbWEgaWYgZGVmaW5lZCBhbmQgc3dpdGNoIGNvbnRleHRzIGlmIG5lY2Vzc2FyeVxuICAgIGxldCBkYXRhU2NoZW1hID0gZG9jU2NoZW1hXG4gICAgaWYgKGlzRnVuY3Rpb24oZG9jU2NoZW1hLnNjaGVtYS5kYXRhLmRhdGFTY2hlbWEpKSB7XG4gICAgICBjb25zdCBuYW1lID0gZG9jU2NoZW1hLnNjaGVtYS5kYXRhLmRhdGFTY2hlbWEoeyBzb3VyY2UsIGRhdGEsIG9wdGlvbnMgfSlcbiAgICAgIGlmIChuYW1lICE9PSBkb2NTY2hlbWEubmFtZSkge1xuICAgICAgICBkYXRhU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICAgICAgaWYgKCFkYXRhU2NoZW1hKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIFNjaGVtYTogJHtuYW1lfWApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc3RhdGUgPSB7fVxuICAgIGNvbnN0IHBhcmFtcyA9IHsgZGF0YVNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhLCBzdGF0ZSB9XG4gICAgY29uc3QgdHlwZSA9IHBhcmFtcy50eXBlID0gX3R5cGUgfHwgZ2V0VHlwZShwYXJhbXMpXG4gICAgY29uc3QgaWQgPSBwYXJhbXMuaWQgPSBfaWQgfHwgZ2V0SWQocGFyYW1zKVxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBwYXJhbXMuYXR0cmlidXRlcyA9IGdldEF0dHJpYnV0ZXMocGFyYW1zKVxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBwYXJhbXMucmVsYXRpb25zaGlwcyA9IGdldFJlbGF0aW9uc2hpcHMoeyBpbmNsdWRlLCAuLi5wYXJhbXMgfSlcbiAgICBjb25zdCBsaW5rcyA9IHBhcmFtcy5saW5rcyA9IGdldExpbmtzKHBhcmFtcylcbiAgICBjb25zdCBtZXRhID0gcGFyYW1zLm1ldGEgPSBnZXRNZXRhKHBhcmFtcylcbiAgICAvLyBidWlsZCByZXN1bHRpbmcgcmVzb3VyY2VcbiAgICBjb25zdCByZXNvdXJjZSA9IHsgdHlwZSwgaWQgfVxuICAgIGlmIChpc09iamVjdChhdHRyaWJ1dGVzKSkge1xuICAgICAgcmVzb3VyY2UuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KHJlbGF0aW9uc2hpcHMpKSB7XG4gICAgICByZXNvdXJjZS5yZWxhdGlvbnNoaXBzID0gcmVsYXRpb25zaGlwc1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobWV0YSkpIHtcbiAgICAgIHJlc291cmNlLm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpc09iamVjdChsaW5rcykpIHtcbiAgICAgIHJlc291cmNlLmxpbmtzID0gbGlua3NcbiAgICB9XG4gICAgcmV0dXJuIHJlc291cmNlXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSB0eXBlIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEByZXR1cm4ge1N0cmluZ30gdHlwZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VHlwZShhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCB0eXBlID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS50eXBlKG90aGVycylcbiAgICBpZiAoIWlzU3RyaW5nKHR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoJ0ludmFsaWQgdHlwZScsIGFyZ3MpXG4gICAgfVxuICAgIHJldHVybiB0eXBlXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBpZCBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGlkXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRJZChhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCBpZCA9IGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEuaWQob3RoZXJzKVxuICAgIGlmICghaXNTdHJpbmcoaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoJ0ludmFsaWQgaWQnLCBhcmdzKVxuICAgIH1cbiAgICByZXR1cm4gaWRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGF0dHJpYnV0ZXMgb2JqZWN0IGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGF0dHJpYnV0ZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldEF0dHJpYnV0ZXMoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgaWYgKGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEuYXR0cmlidXRlcykge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEuYXR0cmlidXRlcyhvdGhlcnMpXG4gICAgICByZXR1cm4gYXR0cmlidXRlc1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSByZWxhdGlvbnNoaXBzIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmF0dHJpYnV0ZXNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmluY2x1ZGVcbiAgICogQHJldHVybiB7T2JqZWN0fSByZWxhdGlvbnNoaXBzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRSZWxhdGlvbnNoaXBzKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGNvbnN0IHJlbFNjaGVtYSA9IGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEucmVsYXRpb25zaGlwc1xuICAgIGlmIChyZWxTY2hlbWEpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZWxTY2hlbWEpXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0ga2V5cy5yZWR1Y2UoKG1lbW8sIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBmbiA9IHJlbFNjaGVtYVtrZXldXG4gICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IGdldFJlbGF0aW9uc2hpcCh7IGZuLCAuLi5vdGhlcnMgfSlcbiAgICAgICAgaWYgKGlzT2JqZWN0KHJlbGF0aW9uc2hpcCkpIHtcbiAgICAgICAgICBtZW1vW2tleV0gPSByZWxhdGlvbnNoaXBcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVtb1xuICAgICAgfSwge30pXG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHJlbGF0aW9uc2hpcHMpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVsYXRpb25zaGlwc1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSByZWxhdGlvbnNoaXAgb2JqZWN0IGZvciB0aGUgY3VycmVudCByZWxhdGlvbnNoaXAgb2YgdGhlXG4gICAqIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmZuXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5hdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gcmVsYXRpb25zaGlwXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRSZWxhdGlvbnNoaXAoYXJncykge1xuICAgIGNvbnN0IHsgZm4sIGluY2x1ZGUsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGNvbnN0IHJlc3VsdCA9IGZuKG90aGVycylcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgY29uc3QgeyBtZXRhLCBsaW5rcywgZGF0YSB9ID0gcmVzdWx0XG4gICAgY29uc3QgaW52YWxpZERhdGEgPSAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCdcbiAgICBpZiAoIWxpbmtzICYmICFtZXRhICYmIGludmFsaWREYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IHt9XG4gICAgaWYgKCFpbnZhbGlkRGF0YSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgcmVsYXRpb25zaGlwLmRhdGEgPSBkYXRhLm1hcChpdGVtID0+IHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEoe1xuICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgc291cmNlOiBhcmdzLnNvdXJjZSxcbiAgICAgICAgICBvcHRpb25zOiBhcmdzLm9wdGlvbnMsXG4gICAgICAgICAgaW5jbHVkZSxcbiAgICAgICAgfSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWxhdGlvbnNoaXAuZGF0YSA9IHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEoe1xuICAgICAgICAgIGl0ZW06IGRhdGEsXG4gICAgICAgICAgc291cmNlOiBhcmdzLnNvdXJjZSxcbiAgICAgICAgICBvcHRpb25zOiBhcmdzLm9wdGlvbnMsXG4gICAgICAgICAgaW5jbHVkZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZWxhdGlvbnNoaXAubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KGxpbmtzKSkge1xuICAgICAgcmVsYXRpb25zaGlwLmxpbmtzID0gbGlua3NcbiAgICB9XG4gICAgcmV0dXJuIHJlbGF0aW9uc2hpcFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF0YSBmb3IgdGhlIGN1cnJlbnQgcmVsYXRpb25zaGlwIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc291cmNlXG4gICAqIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLml0ZW0gLSB0aGUgY3VycmVudCBkYXRhIGl0ZW1cbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtGdW5jdGlvbn0gYXJncy5pbmNsdWRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gZGF0YVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YShhcmdzKSB7XG4gICAgY29uc3QgeyBpdGVtLCBzb3VyY2UsIG9wdGlvbnMsIGluY2x1ZGUgfSA9IGFyZ3NcbiAgICBjb25zdCB7IG5hbWUsIGRhdGEsIGluY2x1ZGVkLCBtZXRhIH0gPSBpdGVtXG4gICAgaWYgKCFpc1N0cmluZyhuYW1lKSB8fCAhcmVnaXN0cnlbbmFtZV0pIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcihgTWlzc2luZyBTY2hlbWE6ICR7bmFtZX1gLCBhcmdzKVxuICAgIH1cbiAgICBjb25zdCByZWxTY2hlbWEgPSByZWdpc3RyeVtuYW1lXVxuICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlKHsgZGF0YVNjaGVtYTogcmVsU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGRhdGEgfSlcbiAgICBjb25zdCBpZCA9IGdldElkKHsgZGF0YVNjaGVtYTogcmVsU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGRhdGEgfSlcbiAgICBjb25zdCByZXN1bHQgPSB7IHR5cGUsIGlkIH1cbiAgICBpZiAoaXNPYmplY3QobWV0YSkpIHtcbiAgICAgIHJlc3VsdC5tZXRhID0gbWV0YVxuICAgIH1cbiAgICBpZiAoaW5jbHVkZWQgPT09IHRydWUgJiYgIWluY2x1ZGUuZXhpc3RzKHsgdHlwZSwgaWQgfSkpIHtcbiAgICAgIGNvbnN0IHJlc291cmNlID0gdHJhbnNmb3JtRGF0YSh7XG4gICAgICAgIGRvY1NjaGVtYTogcmVsU2NoZW1hLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGluY2x1ZGUsXG4gICAgICAgIF90eXBlOiB0eXBlLFxuICAgICAgICBfaWQ6IGlkLFxuICAgICAgfSlcbiAgICAgIGluY2x1ZGUuaW5jbHVkZShyZXNvdXJjZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgbGlua3MgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5hdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5yZWxhdGlvbnNoaXBzXG4gICAqIEByZXR1cm4ge09iamVjdH0gbGlua3NcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldExpbmtzKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmxpbmtzKSB7XG4gICAgICByZXR1cm4gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5saW5rcyhvdGhlcnMpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIG1ldGEgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5hdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5yZWxhdGlvbnNoaXBzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5saW5rc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IG1ldGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldE1ldGEoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgaWYgKGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubWV0YSkge1xuICAgICAgcmV0dXJuIGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubWV0YShvdGhlcnMpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW5jbHVkZSBvYmplY3RcbiAgICogQHJldHVybiB7T2JqZWN0fSBpbmNsdWRlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVJbmNsdWRlKCkge1xuICAgIGNvbnN0IGluY2x1ZGVkID0gW11cbiAgICBjb25zdCBhbHJlYWR5SW5jbHVkZWQgPSB7fVxuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIGdpdmVuIHJlc291cmNlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWRcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhcmdzXG4gICAgICAgKiBAcGFyYW0ge1N0cmluZ30gYXJncy50eXBlXG4gICAgICAgKiBAcGFyYW0ge1N0cmluZ30gYXJncy5pZFxuICAgICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgZXhpc3RzKHsgdHlwZSwgaWQgfSkge1xuICAgICAgICByZXR1cm4gYWxyZWFkeUluY2x1ZGVkW2Ake3R5cGV9OiR7aWR9YF1cbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogQWRkIGFuIGluY2x1ZGVkIHJlc291cmNlIHRvIHRoZSBpbmNsdWRlZCBzZWN0aW9uIG9mIHRoZSBkb2N1bWVudFxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IHJlc291cmNlXG4gICAgICAgKiBAcmV0dXJuIHtVbmRlZmluZWR9XG4gICAgICAgKi9cbiAgICAgIGluY2x1ZGUocmVzb3VyY2UpIHtcbiAgICAgICAgYWxyZWFkeUluY2x1ZGVkW2Ake3Jlc291cmNlLnR5cGV9OiR7cmVzb3VyY2UuaWR9YF0gPSB0cnVlXG4gICAgICAgIGluY2x1ZGVkLnB1c2gocmVzb3VyY2UpXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFJldHVybiB0aGUgaW5jbHVkZWQgYXJyYXkgaW4gaXRzIGN1cnJlbnQgc3RhdGVcbiAgICAgICAqIEByZXR1cm4ge09iamVjdFtdfVxuICAgICAgICovXG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBpbmNsdWRlZFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHJlZ2lzdGVyLFxuICAgIHRyYW5zZm9ybSxcbiAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi90cmFuc2Zvcm1hbGl6ZXIuanMiXSwibmFtZXMiOlsiY3JlYXRlVHJhbnNmb3JtYWxpemVyIiwiYmFzZU9wdGlvbnMiLCJyZWdpc3RyeSIsInJlZ2lzdGVyIiwibmFtZSIsInNjaGVtYSIsInNjaGVtYU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJvcHRzIiwiZG9jU2NoZW1hIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5jbHVkZSIsImNyZWF0ZUluY2x1ZGUiLCJkYXRhIiwidHJhbnNmb3JtU291cmNlIiwiaW5jbHVkZWQiLCJnZXQiLCJkb2N1bWVudCIsImpzb25hcGkiLCJ2ZXJzaW9uIiwidG9wTGV2ZWwiLCJmb3JFYWNoIiwicHJvcCIsInJlc3VsdCIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ0cmFuc2Zvcm1EYXRhIiwiX3R5cGUiLCJfaWQiLCJkYXRhU2NoZW1hIiwic3RhdGUiLCJwYXJhbXMiLCJ0eXBlIiwiZ2V0VHlwZSIsImlkIiwiZ2V0SWQiLCJhdHRyaWJ1dGVzIiwiZ2V0QXR0cmlidXRlcyIsInJlbGF0aW9uc2hpcHMiLCJnZXRSZWxhdGlvbnNoaXBzIiwibGlua3MiLCJnZXRMaW5rcyIsIm1ldGEiLCJnZXRNZXRhIiwicmVzb3VyY2UiLCJvdGhlcnMiLCJyZWxTY2hlbWEiLCJrZXlzIiwicmVkdWNlIiwibWVtbyIsImtleSIsImZuIiwicmVsYXRpb25zaGlwIiwiZ2V0UmVsYXRpb25zaGlwIiwiaW52YWxpZERhdGEiLCJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhIiwiaXRlbSIsImV4aXN0cyIsImFscmVhZHlJbmNsdWRlZCIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7a0JBYXdCQSxxQjs7QUFieEI7Ozs7QUFRQTs7Ozs7QUFLZSxTQUFTQSxxQkFBVCxHQUFpRDtBQUFBLE1BQWxCQyxXQUFrQix1RUFBSixFQUFJOztBQUM5RCxNQUFNQyxXQUFXLEVBQWpCOztBQUVBOzs7Ozs7OztBQVFBLFdBQVNDLFFBQVQsT0FBNEQ7QUFBQSxRQUF4Q0MsSUFBd0MsUUFBeENBLElBQXdDO0FBQUEsUUFBbENDLE1BQWtDLFFBQWxDQSxNQUFrQztBQUFBLFFBQWpCQyxhQUFpQixRQUExQkMsT0FBMEI7O0FBQzFELFFBQUksQ0FBQyxxQkFBU0gsSUFBVCxDQUFMLEVBQXFCO0FBQ25CLFlBQU0sSUFBSUksS0FBSixDQUFVLHNDQUFWLENBQU47QUFDRDtBQUNETixhQUFTRSxJQUFULElBQWlCO0FBQ2ZDLGNBQVEsMkJBQWUsRUFBRUQsVUFBRixFQUFRQyxjQUFSLEVBQWYsQ0FETztBQUVmRSxlQUFTRDtBQUZNLEtBQWpCO0FBSUEsV0FBT0csU0FBUDtBQUNEOztBQUVEOzs7Ozs7OztBQVFBLFdBQVNDLFNBQVQsUUFBb0Q7QUFBQSxRQUEvQk4sSUFBK0IsU0FBL0JBLElBQStCO0FBQUEsUUFBekJPLE1BQXlCLFNBQXpCQSxNQUF5QjtBQUFBLFFBQVJDLElBQVEsU0FBakJMLE9BQWlCOztBQUNsRCxRQUFJLENBQUMscUJBQVNILElBQVQsQ0FBTCxFQUFxQjtBQUNuQixZQUFNLDBCQUFtQixzQ0FBbkIsRUFBMkQsRUFBRUEsVUFBRixFQUFRTyxjQUFSLEVBQWdCSixTQUFTSyxJQUF6QixFQUEzRCxDQUFOO0FBQ0Q7QUFDRCxRQUFNQyxZQUFZWCxTQUFTRSxJQUFULENBQWxCO0FBQ0EsUUFBSSxDQUFDUyxTQUFMLEVBQWdCO0FBQ2QsWUFBTSwrQ0FBc0NULElBQXRDLEVBQThDLEVBQUVBLFVBQUYsRUFBUU8sY0FBUixFQUFnQkosU0FBU0ssSUFBekIsRUFBOUMsQ0FBTjtBQUNEO0FBQ0QsUUFBTUwsVUFBVU8sT0FBT0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JkLFdBQWxCLEVBQStCVyxJQUEvQixDQUFoQjtBQUNBLFFBQU1JLFVBQVVDLGNBQWMsRUFBRU4sY0FBRixFQUFVSixnQkFBVixFQUFkLENBQWhCO0FBQ0EsUUFBTVcsT0FBT0MsZ0JBQWdCLEVBQUVOLG9CQUFGLEVBQWFGLGNBQWIsRUFBcUJKLGdCQUFyQixFQUE4QlMsZ0JBQTlCLEVBQWhCLENBQWI7QUFDQSxRQUFNSSxXQUFXSixRQUFRSyxHQUFSLEVBQWpCO0FBQ0EsUUFBTUMsV0FBVztBQUNmQyxlQUFTO0FBQ1BDLGlCQUFTO0FBREY7QUFJWDtBQUxpQixLQUFqQixDQU1BLElBQU1DLFdBQVcsQ0FBQyxPQUFELEVBQVUsTUFBVixDQUFqQjtBQUNBQSxhQUFTQyxPQUFULENBQWlCLFVBQUNDLElBQUQsRUFBVTtBQUN6QixVQUFJZCxVQUFVUixNQUFWLENBQWlCc0IsSUFBakIsQ0FBSixFQUE0QjtBQUMxQixZQUFNQyxTQUFTZixVQUFVUixNQUFWLENBQWlCc0IsSUFBakIsRUFBdUIsRUFBRWhCLGNBQUYsRUFBVUosZ0JBQVYsRUFBbUJXLFVBQW5CLEVBQXlCRSxrQkFBekIsRUFBdkIsQ0FBZjtBQUNBLFlBQUkscUJBQVNRLE1BQVQsQ0FBSixFQUFzQjtBQUNwQk4sbUJBQVNLLElBQVQsSUFBaUJDLE1BQWpCO0FBQ0Q7QUFDRjtBQUNGLEtBUEQ7QUFRQU4sYUFBU0osSUFBVCxHQUFnQkEsSUFBaEI7QUFDQSxRQUFJRSxTQUFTUyxNQUFiLEVBQXFCO0FBQ25CUCxlQUFTRixRQUFULEdBQW9CQSxRQUFwQjtBQUNEO0FBQ0QsV0FBT0UsUUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7QUFTQSxXQUFTSCxlQUFULENBQXlCVyxJQUF6QixFQUErQjtBQUFBLFFBQ3JCakIsU0FEcUIsR0FDeUJpQixJQUR6QixDQUNyQmpCLFNBRHFCO0FBQUEsUUFDVkYsTUFEVSxHQUN5Qm1CLElBRHpCLENBQ1ZuQixNQURVO0FBQUEsUUFDT0MsSUFEUCxHQUN5QmtCLElBRHpCLENBQ0Z2QixPQURFO0FBQUEsUUFDYVMsT0FEYixHQUN5QmMsSUFEekIsQ0FDYWQsT0FEYjs7QUFFN0IsUUFBSWUsTUFBTUMsT0FBTixDQUFjckIsTUFBZCxDQUFKLEVBQTJCO0FBQ3pCLGFBQU9BLE9BQU9zQixHQUFQLENBQVc7QUFBQSxlQUFRQyxjQUFjLEVBQUVyQixvQkFBRixFQUFhRixjQUFiLEVBQXFCSixTQUFTSyxJQUE5QixFQUFvQ00sVUFBcEMsRUFBMENGLGdCQUExQyxFQUFkLENBQVI7QUFBQSxPQUFYLENBQVA7QUFDRDtBQUNELFdBQU9rQixjQUFjLEVBQUVyQixvQkFBRixFQUFhRixjQUFiLEVBQXFCSixTQUFTSyxJQUE5QixFQUFvQ00sTUFBTVAsTUFBMUMsRUFBa0RLLGdCQUFsRCxFQUFkLENBQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7Ozs7O0FBWUEsV0FBU2tCLGFBQVQsQ0FBdUJKLElBQXZCLEVBQTZCO0FBQUEsUUFDbkJqQixTQURtQixHQUN1Q2lCLElBRHZDLENBQ25CakIsU0FEbUI7QUFBQSxRQUNSRixNQURRLEdBQ3VDbUIsSUFEdkMsQ0FDUm5CLE1BRFE7QUFBQSxRQUNBSixPQURBLEdBQ3VDdUIsSUFEdkMsQ0FDQXZCLE9BREE7QUFBQSxRQUNTVyxJQURULEdBQ3VDWSxJQUR2QyxDQUNTWixJQURUO0FBQUEsUUFDZUYsT0FEZixHQUN1Q2MsSUFEdkMsQ0FDZWQsT0FEZjtBQUFBLFFBQ3dCbUIsS0FEeEIsR0FDdUNMLElBRHZDLENBQ3dCSyxLQUR4QjtBQUFBLFFBQytCQyxHQUQvQixHQUN1Q04sSUFEdkMsQ0FDK0JNLEdBRC9CO0FBRTNCOztBQUNBLFFBQUlDLGFBQWF4QixTQUFqQjtBQUNBLFFBQUksdUJBQVdBLFVBQVVSLE1BQVYsQ0FBaUJhLElBQWpCLENBQXNCbUIsVUFBakMsQ0FBSixFQUFrRDtBQUNoRCxVQUFNakMsT0FBT1MsVUFBVVIsTUFBVixDQUFpQmEsSUFBakIsQ0FBc0JtQixVQUF0QixDQUFpQyxFQUFFMUIsY0FBRixFQUFVTyxVQUFWLEVBQWdCWCxnQkFBaEIsRUFBakMsQ0FBYjtBQUNBLFVBQUlILFNBQVNTLFVBQVVULElBQXZCLEVBQTZCO0FBQzNCaUMscUJBQWFuQyxTQUFTRSxJQUFULENBQWI7QUFDQSxZQUFJLENBQUNpQyxVQUFMLEVBQWlCO0FBQ2YsZ0JBQU0sSUFBSTdCLEtBQUosc0JBQTZCSixJQUE3QixDQUFOO0FBQ0Q7QUFDRjtBQUNGO0FBQ0QsUUFBTWtDLFFBQVEsRUFBZDtBQUNBLFFBQU1DLFNBQVMsRUFBRUYsc0JBQUYsRUFBYzFCLGNBQWQsRUFBc0JKLGdCQUF0QixFQUErQlcsVUFBL0IsRUFBcUNvQixZQUFyQyxFQUFmO0FBQ0EsUUFBTUUsT0FBT0QsT0FBT0MsSUFBUCxHQUFjTCxTQUFTTSxRQUFRRixNQUFSLENBQXBDO0FBQ0EsUUFBTUcsS0FBS0gsT0FBT0csRUFBUCxHQUFZTixPQUFPTyxNQUFNSixNQUFOLENBQTlCO0FBQ0EsUUFBTUssYUFBYUwsT0FBT0ssVUFBUCxHQUFvQkMsY0FBY04sTUFBZCxDQUF2QztBQUNBLFFBQU1PLGdCQUFnQlAsT0FBT08sYUFBUCxHQUF1QkMsNEJBQW1CL0IsZ0JBQW5CLElBQStCdUIsTUFBL0IsRUFBN0M7QUFDQSxRQUFNUyxRQUFRVCxPQUFPUyxLQUFQLEdBQWVDLFNBQVNWLE1BQVQsQ0FBN0I7QUFDQSxRQUFNVyxPQUFPWCxPQUFPVyxJQUFQLEdBQWNDLFFBQVFaLE1BQVIsQ0FBM0I7QUFDQTtBQUNBLFFBQU1hLFdBQVcsRUFBRVosVUFBRixFQUFRRSxNQUFSLEVBQWpCO0FBQ0EsUUFBSSxxQkFBU0UsVUFBVCxDQUFKLEVBQTBCO0FBQ3hCUSxlQUFTUixVQUFULEdBQXNCQSxVQUF0QjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0UsYUFBVCxDQUFKLEVBQTZCO0FBQzNCTSxlQUFTTixhQUFULEdBQXlCQSxhQUF6QjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0ksSUFBVCxDQUFKLEVBQW9CO0FBQ2xCRSxlQUFTRixJQUFULEdBQWdCQSxJQUFoQjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0YsS0FBVCxDQUFKLEVBQXFCO0FBQ25CSSxlQUFTSixLQUFULEdBQWlCQSxLQUFqQjtBQUNEO0FBQ0QsV0FBT0ksUUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7O0FBVUEsV0FBU1gsT0FBVCxDQUFpQlgsSUFBakIsRUFBdUI7QUFBQSxRQUNiTyxVQURhLEdBQ2FQLElBRGIsQ0FDYk8sVUFEYTtBQUFBLFFBQ0VnQixNQURGLDRCQUNhdkIsSUFEYjs7QUFFckIsUUFBTVUsT0FBT0gsV0FBV2hDLE1BQVgsQ0FBa0JhLElBQWxCLENBQXVCc0IsSUFBdkIsQ0FBNEJhLE1BQTVCLENBQWI7QUFDQSxRQUFJLENBQUMscUJBQVNiLElBQVQsQ0FBTCxFQUFxQjtBQUNuQixZQUFNLDBCQUFtQixjQUFuQixFQUFtQ1YsSUFBbkMsQ0FBTjtBQUNEO0FBQ0QsV0FBT1UsSUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7OztBQVdBLFdBQVNHLEtBQVQsQ0FBZWIsSUFBZixFQUFxQjtBQUFBLFFBQ1hPLFVBRFcsR0FDZVAsSUFEZixDQUNYTyxVQURXO0FBQUEsUUFDSWdCLE1BREosNEJBQ2V2QixJQURmOztBQUVuQixRQUFNWSxLQUFLTCxXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUJ3QixFQUF2QixDQUEwQlcsTUFBMUIsQ0FBWDtBQUNBLFFBQUksQ0FBQyxxQkFBU1gsRUFBVCxDQUFMLEVBQW1CO0FBQ2pCLFlBQU0sMEJBQW1CLFlBQW5CLEVBQWlDWixJQUFqQyxDQUFOO0FBQ0Q7QUFDRCxXQUFPWSxFQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7OztBQVlBLFdBQVNHLGFBQVQsQ0FBdUJmLElBQXZCLEVBQTZCO0FBQUEsUUFDbkJPLFVBRG1CLEdBQ09QLElBRFAsQ0FDbkJPLFVBRG1CO0FBQUEsUUFDSmdCLE1BREksNEJBQ092QixJQURQOztBQUUzQixRQUFJTyxXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUIwQixVQUEzQixFQUF1QztBQUNyQyxVQUFNQSxhQUFhUCxXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUIwQixVQUF2QixDQUFrQ1MsTUFBbEMsQ0FBbkI7QUFDQSxhQUFPVCxVQUFQO0FBQ0Q7QUFDRCxXQUFPbkMsU0FBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7OztBQWNBLFdBQVNzQyxnQkFBVCxDQUEwQmpCLElBQTFCLEVBQWdDO0FBQUEsUUFDdEJPLFVBRHNCLEdBQ0lQLElBREosQ0FDdEJPLFVBRHNCO0FBQUEsUUFDUGdCLE1BRE8sNEJBQ0l2QixJQURKOztBQUU5QixRQUFNd0IsWUFBWWpCLFdBQVdoQyxNQUFYLENBQWtCYSxJQUFsQixDQUF1QjRCLGFBQXpDO0FBQ0EsUUFBSVEsU0FBSixFQUFlO0FBQ2IsVUFBTUMsT0FBT3pDLE9BQU95QyxJQUFQLENBQVlELFNBQVosQ0FBYjtBQUNBLFVBQU1SLGdCQUFnQlMsS0FBS0MsTUFBTCxDQUFZLFVBQUNDLElBQUQsRUFBT0MsR0FBUCxFQUFlO0FBQy9DLFlBQU1DLEtBQUtMLFVBQVVJLEdBQVYsQ0FBWDtBQUNBLFlBQU1FLGVBQWVDLDJCQUFrQkYsTUFBbEIsSUFBeUJOLE1BQXpCLEVBQXJCO0FBQ0EsWUFBSSxxQkFBU08sWUFBVCxDQUFKLEVBQTRCO0FBQzFCSCxlQUFLQyxHQUFMLElBQVlFLFlBQVo7QUFDRDtBQUNELGVBQU9ILElBQVA7QUFDRCxPQVBxQixFQU9uQixFQVBtQixDQUF0QjtBQVFBLFVBQUksQ0FBQzNDLE9BQU95QyxJQUFQLENBQVlULGFBQVosRUFBMkJqQixNQUFoQyxFQUF3QztBQUN0QyxlQUFPcEIsU0FBUDtBQUNEO0FBQ0QsYUFBT3FDLGFBQVA7QUFDRDtBQUNELFdBQU9yQyxTQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztBQWVBLFdBQVNvRCxlQUFULENBQXlCL0IsSUFBekIsRUFBK0I7QUFBQSxRQUNyQjZCLEVBRHFCLEdBQ003QixJQUROLENBQ3JCNkIsRUFEcUI7QUFBQSxRQUNqQjNDLE9BRGlCLEdBQ01jLElBRE4sQ0FDakJkLE9BRGlCO0FBQUEsUUFDTHFDLE1BREssNEJBQ012QixJQUROOztBQUU3QixRQUFNRixTQUFTK0IsR0FBR04sTUFBSCxDQUFmO0FBQ0EsUUFBSSxDQUFDLHFCQUFTekIsTUFBVCxDQUFMLEVBQXVCO0FBQ3JCLGFBQU9uQixTQUFQO0FBQ0Q7QUFMNEIsUUFNckJ5QyxJQU5xQixHQU1DdEIsTUFORCxDQU1yQnNCLElBTnFCO0FBQUEsUUFNZkYsS0FOZSxHQU1DcEIsTUFORCxDQU1mb0IsS0FOZTtBQUFBLFFBTVI5QixJQU5RLEdBTUNVLE1BTkQsQ0FNUlYsSUFOUTs7QUFPN0IsUUFBTTRDLGNBQWMsQ0FBQzVDLElBQUQsSUFBUyxRQUFPQSxJQUFQLHlDQUFPQSxJQUFQLE9BQWdCLFFBQTdDO0FBQ0EsUUFBSSxDQUFDOEIsS0FBRCxJQUFVLENBQUNFLElBQVgsSUFBbUJZLFdBQXZCLEVBQW9DO0FBQ2xDLGFBQU9yRCxTQUFQO0FBQ0Q7QUFDRCxRQUFNbUQsZUFBZSxFQUFyQjtBQUNBLFFBQUksQ0FBQ0UsV0FBTCxFQUFrQjtBQUNoQixVQUFJL0IsTUFBTUMsT0FBTixDQUFjZCxJQUFkLENBQUosRUFBeUI7QUFDdkIwQyxxQkFBYTFDLElBQWIsR0FBb0JBLEtBQUtlLEdBQUwsQ0FBUztBQUFBLGlCQUFROEIsMEJBQTBCO0FBQzdEQyxzQkFENkQ7QUFFN0RyRCxvQkFBUW1CLEtBQUtuQixNQUZnRDtBQUc3REoscUJBQVN1QixLQUFLdkIsT0FIK0M7QUFJN0RTO0FBSjZELFdBQTFCLENBQVI7QUFBQSxTQUFULENBQXBCO0FBTUQsT0FQRCxNQU9PO0FBQ0w0QyxxQkFBYTFDLElBQWIsR0FBb0I2QywwQkFBMEI7QUFDNUNDLGdCQUFNOUMsSUFEc0M7QUFFNUNQLGtCQUFRbUIsS0FBS25CLE1BRitCO0FBRzVDSixtQkFBU3VCLEtBQUt2QixPQUg4QjtBQUk1Q1M7QUFKNEMsU0FBMUIsQ0FBcEI7QUFNRDtBQUNGO0FBQ0QsUUFBSSxxQkFBU2tDLElBQVQsQ0FBSixFQUFvQjtBQUNsQlUsbUJBQWFWLElBQWIsR0FBb0JBLElBQXBCO0FBQ0Q7QUFDRCxRQUFJLHFCQUFTRixLQUFULENBQUosRUFBcUI7QUFDbkJZLG1CQUFhWixLQUFiLEdBQXFCQSxLQUFyQjtBQUNEO0FBQ0QsV0FBT1ksWUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7OztBQVdBLFdBQVNHLHlCQUFULENBQW1DakMsSUFBbkMsRUFBeUM7QUFBQSxRQUMvQmtDLElBRCtCLEdBQ0lsQyxJQURKLENBQy9Ca0MsSUFEK0I7QUFBQSxRQUN6QnJELE1BRHlCLEdBQ0ltQixJQURKLENBQ3pCbkIsTUFEeUI7QUFBQSxRQUNqQkosT0FEaUIsR0FDSXVCLElBREosQ0FDakJ2QixPQURpQjtBQUFBLFFBQ1JTLE9BRFEsR0FDSWMsSUFESixDQUNSZCxPQURRO0FBQUEsUUFFL0JaLElBRitCLEdBRUE0RCxJQUZBLENBRS9CNUQsSUFGK0I7QUFBQSxRQUV6QmMsSUFGeUIsR0FFQThDLElBRkEsQ0FFekI5QyxJQUZ5QjtBQUFBLFFBRW5CRSxRQUZtQixHQUVBNEMsSUFGQSxDQUVuQjVDLFFBRm1CO0FBQUEsUUFFVDhCLElBRlMsR0FFQWMsSUFGQSxDQUVUZCxJQUZTOztBQUd2QyxRQUFJLENBQUMscUJBQVM5QyxJQUFULENBQUQsSUFBbUIsQ0FBQ0YsU0FBU0UsSUFBVCxDQUF4QixFQUF3QztBQUN0QyxZQUFNLCtDQUFzQ0EsSUFBdEMsRUFBOEMwQixJQUE5QyxDQUFOO0FBQ0Q7QUFDRCxRQUFNd0IsWUFBWXBELFNBQVNFLElBQVQsQ0FBbEI7QUFDQSxRQUFNb0MsT0FBT0MsUUFBUSxFQUFFSixZQUFZaUIsU0FBZCxFQUF5QjNDLGNBQXpCLEVBQWlDSixnQkFBakMsRUFBMENXLFVBQTFDLEVBQVIsQ0FBYjtBQUNBLFFBQU13QixLQUFLQyxNQUFNLEVBQUVOLFlBQVlpQixTQUFkLEVBQXlCM0MsY0FBekIsRUFBaUNKLGdCQUFqQyxFQUEwQ1csVUFBMUMsRUFBTixDQUFYO0FBQ0EsUUFBTVUsU0FBUyxFQUFFWSxVQUFGLEVBQVFFLE1BQVIsRUFBZjtBQUNBLFFBQUkscUJBQVNRLElBQVQsQ0FBSixFQUFvQjtBQUNsQnRCLGFBQU9zQixJQUFQLEdBQWNBLElBQWQ7QUFDRDtBQUNELFFBQUk5QixhQUFhLElBQWIsSUFBcUIsQ0FBQ0osUUFBUWlELE1BQVIsQ0FBZSxFQUFFekIsVUFBRixFQUFRRSxNQUFSLEVBQWYsQ0FBMUIsRUFBd0Q7QUFDdEQsVUFBTVUsV0FBV2xCLGNBQWM7QUFDN0JyQixtQkFBV3lDLFNBRGtCO0FBRTdCM0Msc0JBRjZCO0FBRzdCSix3QkFINkI7QUFJN0JXLGtCQUo2QjtBQUs3QkYsd0JBTDZCO0FBTTdCbUIsZUFBT0ssSUFOc0I7QUFPN0JKLGFBQUtNO0FBUHdCLE9BQWQsQ0FBakI7QUFTQTFCLGNBQVFBLE9BQVIsQ0FBZ0JvQyxRQUFoQjtBQUNEO0FBQ0QsV0FBT3hCLE1BQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7QUFjQSxXQUFTcUIsUUFBVCxDQUFrQm5CLElBQWxCLEVBQXdCO0FBQUEsUUFDZE8sVUFEYyxHQUNZUCxJQURaLENBQ2RPLFVBRGM7QUFBQSxRQUNDZ0IsTUFERCw0QkFDWXZCLElBRFo7O0FBRXRCLFFBQUlPLFdBQVdoQyxNQUFYLENBQWtCYSxJQUFsQixDQUF1QjhCLEtBQTNCLEVBQWtDO0FBQ2hDLGFBQU9YLFdBQVdoQyxNQUFYLENBQWtCYSxJQUFsQixDQUF1QjhCLEtBQXZCLENBQTZCSyxNQUE3QixDQUFQO0FBQ0Q7QUFDRCxXQUFPNUMsU0FBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxXQUFTMEMsT0FBVCxDQUFpQnJCLElBQWpCLEVBQXVCO0FBQUEsUUFDYk8sVUFEYSxHQUNhUCxJQURiLENBQ2JPLFVBRGE7QUFBQSxRQUNFZ0IsTUFERiw0QkFDYXZCLElBRGI7O0FBRXJCLFFBQUlPLFdBQVdoQyxNQUFYLENBQWtCYSxJQUFsQixDQUF1QmdDLElBQTNCLEVBQWlDO0FBQy9CLGFBQU9iLFdBQVdoQyxNQUFYLENBQWtCYSxJQUFsQixDQUF1QmdDLElBQXZCLENBQTRCRyxNQUE1QixDQUFQO0FBQ0Q7QUFDRCxXQUFPNUMsU0FBUDtBQUNEOztBQUVEOzs7OztBQUtBLFdBQVNRLGFBQVQsR0FBeUI7QUFDdkIsUUFBTUcsV0FBVyxFQUFqQjtBQUNBLFFBQU04QyxrQkFBa0IsRUFBeEI7QUFDQSxXQUFPO0FBQ0w7Ozs7Ozs7QUFPQUQsWUFSSyx5QkFRZ0I7QUFBQSxZQUFaekIsSUFBWSxTQUFaQSxJQUFZO0FBQUEsWUFBTkUsRUFBTSxTQUFOQSxFQUFNOztBQUNuQixlQUFPd0IsZ0JBQW1CMUIsSUFBbkIsU0FBMkJFLEVBQTNCLENBQVA7QUFDRCxPQVZJOzs7QUFZTDs7Ozs7QUFLQTFCLGFBakJLLG1CQWlCR29DLFFBakJILEVBaUJhO0FBQ2hCYyx3QkFBbUJkLFNBQVNaLElBQTVCLFNBQW9DWSxTQUFTVixFQUE3QyxJQUFxRCxJQUFyRDtBQUNBdEIsaUJBQVMrQyxJQUFULENBQWNmLFFBQWQ7QUFDRCxPQXBCSTs7O0FBc0JMOzs7O0FBSUEvQixTQTFCSyxpQkEwQkM7QUFDSixlQUFPRCxRQUFQO0FBQ0Q7QUE1QkksS0FBUDtBQThCRDs7QUFFRCxTQUFPO0FBQ0xILGdDQURLO0FBRUw0QixnQ0FGSztBQUdMRixnQkFISztBQUlMa0Isb0NBSks7QUFLTGQsc0NBTEs7QUFNTE4sb0JBTks7QUFPTHRDLHNCQVBLO0FBUUxPLHdCQVJLO0FBU0x3QixnQ0FUSztBQVVMNkIsd0RBVks7QUFXTDVDO0FBWEssR0FBUDtBQWFEIiwiZmlsZSI6InRyYW5zZm9ybWFsaXplci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzRnVuY3Rpb24sXG4gIGlzT2JqZWN0LFxuICBpc1N0cmluZyxcbiAgVHJhbnNmb3JtRXJyb3IsXG4gIHZhbGlkYXRlU2NoZW1hLFxufSBmcm9tICcuL3V0aWxzJ1xuXG4vKipcbiAqIFRyYW5zZm9ybWFsaXplciBmYWN0b3J5IGZ1bmN0aW9uLlxuICogQHBhcmFtICB7T2JqZWN0fSBbYmFzZU9wdGlvbnM9e31dXG4gKiBAcmV0dXJuIHtPYmplY3R9IHRyYW5zZm9ybWFsaXplclxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1hbGl6ZXIoYmFzZU9wdGlvbnMgPSB7fSkge1xuICBjb25zdCByZWdpc3RyeSA9IHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MubmFtZSAtIHNjaGVtYSBuYW1lL2lkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5zY2hlbWEgLSBzY2hlbWEgZGVmaW5pdGlvblxuICAgKiBAcGFyYW0gIHtPYmplY3R9IFthcmdzLm9wdGlvbnM9e31dIC0gc2NoZW1hIG9wdGlvbnMgdG8gYmUgbWVyZ2VkIGluIHRvIHRyYW5zZm9ybSBvcHRpb25zXG4gICAqIEByZXR1cm4ge1VuZGVmaW5lZH1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyKHsgbmFtZSwgc2NoZW1hLCBvcHRpb25zOiBzY2hlbWFPcHRpb25zIH0pIHtcbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgXCJuYW1lXCIgUHJvcGVydHkgKG5vbiBzdHJpbmcpJylcbiAgICB9XG4gICAgcmVnaXN0cnlbbmFtZV0gPSB7XG4gICAgICBzY2hlbWE6IHZhbGlkYXRlU2NoZW1hKHsgbmFtZSwgc2NoZW1hIH0pLFxuICAgICAgb3B0aW9uczogc2NoZW1hT3B0aW9ucyxcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSByYXcgZGF0YSBpbnRvIGEgdmFsaWQgSlNPTiBBUEkgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5uYW1lIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgbmFtZVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gYSBzaW5nbGUgc291cmNlIG9iamVjdCBvciBhbiBhcmF5IG9mIHNvdXJjZSBvYmplY3RzXG4gICAqIEBwYXJhbSAge09iamVjdH0gW29wdGlvbnM9e31dIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRvY3VtZW50XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm0oeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSkge1xuICAgIGlmICghaXNTdHJpbmcobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCBcIm5hbWVcIiBQcm9wZXJ0eSAobm9uIHN0cmluZyknLCB7IG5hbWUsIHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KVxuICAgIH1cbiAgICBjb25zdCBkb2NTY2hlbWEgPSByZWdpc3RyeVtuYW1lXVxuICAgIGlmICghZG9jU2NoZW1hKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSlcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGJhc2VPcHRpb25zLCBvcHRzKVxuICAgIGNvbnN0IGluY2x1ZGUgPSBjcmVhdGVJbmNsdWRlKHsgc291cmNlLCBvcHRpb25zIH0pXG4gICAgY29uc3QgZGF0YSA9IHRyYW5zZm9ybVNvdXJjZSh7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zLCBpbmNsdWRlIH0pXG4gICAgY29uc3QgaW5jbHVkZWQgPSBpbmNsdWRlLmdldCgpXG4gICAgY29uc3QgZG9jdW1lbnQgPSB7XG4gICAgICBqc29uYXBpOiB7XG4gICAgICAgIHZlcnNpb246ICcxLjAnLFxuICAgICAgfSxcbiAgICB9XG4gICAgLy8gYWRkIHRvcCBsZXZlbCBwcm9wZXJ0aWVzIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHRvcExldmVsID0gWydsaW5rcycsICdtZXRhJ11cbiAgICB0b3BMZXZlbC5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBpZiAoZG9jU2NoZW1hLnNjaGVtYVtwcm9wXSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkb2NTY2hlbWEuc2NoZW1hW3Byb3BdKHsgc291cmNlLCBvcHRpb25zLCBkYXRhLCBpbmNsdWRlZCB9KVxuICAgICAgICBpZiAoaXNPYmplY3QocmVzdWx0KSkge1xuICAgICAgICAgIGRvY3VtZW50W3Byb3BdID0gcmVzdWx0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIGRvY3VtZW50LmRhdGEgPSBkYXRhXG4gICAgaWYgKGluY2x1ZGVkLmxlbmd0aCkge1xuICAgICAgZG9jdW1lbnQuaW5jbHVkZWQgPSBpbmNsdWRlZFxuICAgIH1cbiAgICByZXR1cm4gZG9jdW1lbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gc291cmNlIGludG8gdGhlIFwicHJpbWFyeSBkYXRhXCIgb2YgdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZG9jU2NoZW1hIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgdXNlZCBmb3IgdHJhbnNmb3JtaW5nIHRoZSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gc291cmNlIGRhdGFcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnMgLSBmdW5jdGlvbiBsZXZlbCBvcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlIC0gaW5jbHVkZSBvYmplY3RcbiAgICogQHJldHVybiB7T2JqZWN0fE9iamVjdFtdfVxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtU291cmNlKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zOiBvcHRzLCBpbmNsdWRlIH0gPSBhcmdzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5tYXAoZGF0YSA9PiB0cmFuc2Zvcm1EYXRhKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGRhdGEsIGluY2x1ZGUgfSkpXG4gICAgfVxuICAgIHJldHVybiB0cmFuc2Zvcm1EYXRhKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGRhdGE6IHNvdXJjZSwgaW5jbHVkZSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIHNpbmdsZSBzb3VyY2Ugb2JqZWN0IGludG8gYSB2YWxpZCByZXNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRvY1NjaGVtYSAtIHRoZSB0b3AgbGV2ZWwgc2NoZW1hIHVzZWQgZm9yIHRyYW5zZm9ybWluZyB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZSAtIHNvdXJjZSBkYXRhXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YSAtIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZSAtIGluY2x1ZGUgb2JqZWN0XG4gICAqIEBwYXJhbSAge1N0cmluZ30gW2FyZ3MuX3R5cGVdIC0gKGZvciB1c2UgYnkgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSlcbiAgICogQHBhcmFtICB7U3RyaW5nfSBbYXJncy5faWRdIC0gKGZvciB1c2UgYnkgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSlcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShhcmdzKSB7XG4gICAgY29uc3QgeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgZGF0YSwgaW5jbHVkZSwgX3R5cGUsIF9pZCB9ID0gYXJnc1xuICAgIC8vIGNhbGwgZGF0YVNjaGVtYSBpZiBkZWZpbmVkIGFuZCBzd2l0Y2ggY29udGV4dHMgaWYgbmVjZXNzYXJ5XG4gICAgbGV0IGRhdGFTY2hlbWEgPSBkb2NTY2hlbWFcbiAgICBpZiAoaXNGdW5jdGlvbihkb2NTY2hlbWEuc2NoZW1hLmRhdGEuZGF0YVNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBkb2NTY2hlbWEuc2NoZW1hLmRhdGEuZGF0YVNjaGVtYSh7IHNvdXJjZSwgZGF0YSwgb3B0aW9ucyB9KVxuICAgICAgaWYgKG5hbWUgIT09IGRvY1NjaGVtYS5uYW1lKSB7XG4gICAgICAgIGRhdGFTY2hlbWEgPSByZWdpc3RyeVtuYW1lXVxuICAgICAgICBpZiAoIWRhdGFTY2hlbWEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzdGF0ZSA9IHt9XG4gICAgY29uc3QgcGFyYW1zID0geyBkYXRhU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGRhdGEsIHN0YXRlIH1cbiAgICBjb25zdCB0eXBlID0gcGFyYW1zLnR5cGUgPSBfdHlwZSB8fCBnZXRUeXBlKHBhcmFtcylcbiAgICBjb25zdCBpZCA9IHBhcmFtcy5pZCA9IF9pZCB8fCBnZXRJZChwYXJhbXMpXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHBhcmFtcy5hdHRyaWJ1dGVzID0gZ2V0QXR0cmlidXRlcyhwYXJhbXMpXG4gICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHBhcmFtcy5yZWxhdGlvbnNoaXBzID0gZ2V0UmVsYXRpb25zaGlwcyh7IGluY2x1ZGUsIC4uLnBhcmFtcyB9KVxuICAgIGNvbnN0IGxpbmtzID0gcGFyYW1zLmxpbmtzID0gZ2V0TGlua3MocGFyYW1zKVxuICAgIGNvbnN0IG1ldGEgPSBwYXJhbXMubWV0YSA9IGdldE1ldGEocGFyYW1zKVxuICAgIC8vIGJ1aWxkIHJlc3VsdGluZyByZXNvdXJjZVxuICAgIGNvbnN0IHJlc291cmNlID0geyB0eXBlLCBpZCB9XG4gICAgaWYgKGlzT2JqZWN0KGF0dHJpYnV0ZXMpKSB7XG4gICAgICByZXNvdXJjZS5hdHRyaWJ1dGVzID0gYXR0cmlidXRlc1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QocmVsYXRpb25zaGlwcykpIHtcbiAgICAgIHJlc291cmNlLnJlbGF0aW9uc2hpcHMgPSByZWxhdGlvbnNoaXBzXG4gICAgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVzb3VyY2UubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KGxpbmtzKSkge1xuICAgICAgcmVzb3VyY2UubGlua3MgPSBsaW5rc1xuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIHR5cGUgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHJldHVybiB7U3RyaW5nfSB0eXBlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRUeXBlKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGNvbnN0IHR5cGUgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLnR5cGUob3RoZXJzKVxuICAgIGlmICghaXNTdHJpbmcodHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCB0eXBlJywgYXJncylcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGlkIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEByZXR1cm4ge1N0cmluZ30gaWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldElkKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGNvbnN0IGlkID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5pZChvdGhlcnMpXG4gICAgaWYgKCFpc1N0cmluZyhpZCkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCBpZCcsIGFyZ3MpXG4gICAgfVxuICAgIHJldHVybiBpZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgYXR0cmlidXRlcyBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEByZXR1cm4ge09iamVjdH0gYXR0cmlidXRlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0QXR0cmlidXRlcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5hdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5hdHRyaWJ1dGVzKG90aGVycylcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIHJlbGF0aW9uc2hpcHMgb2JqZWN0IGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHJlbGF0aW9uc2hpcHNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFJlbGF0aW9uc2hpcHMoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgcmVsU2NoZW1hID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5yZWxhdGlvbnNoaXBzXG4gICAgaWYgKHJlbFNjaGVtYSkge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJlbFNjaGVtYSlcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBrZXlzLnJlZHVjZSgobWVtbywga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGZuID0gcmVsU2NoZW1hW2tleV1cbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gZ2V0UmVsYXRpb25zaGlwKHsgZm4sIC4uLm90aGVycyB9KVxuICAgICAgICBpZiAoaXNPYmplY3QocmVsYXRpb25zaGlwKSkge1xuICAgICAgICAgIG1lbW9ba2V5XSA9IHJlbGF0aW9uc2hpcFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW1vXG4gICAgICB9LCB7fSlcbiAgICAgIGlmICghT2JqZWN0LmtleXMocmVsYXRpb25zaGlwcykubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWxhdGlvbnNoaXBzXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIHJlbGF0aW9uc2hpcCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHJlbGF0aW9uc2hpcCBvZiB0aGVcbiAgICogY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZm5cbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmF0dHJpYnV0ZXNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmluY2x1ZGVcbiAgICogQHJldHVybiB7T2JqZWN0fSByZWxhdGlvbnNoaXBcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFJlbGF0aW9uc2hpcChhcmdzKSB7XG4gICAgY29uc3QgeyBmbiwgaW5jbHVkZSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgcmVzdWx0ID0gZm4ob3RoZXJzKVxuICAgIGlmICghaXNPYmplY3QocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCB7IG1ldGEsIGxpbmtzLCBkYXRhIH0gPSByZXN1bHRcbiAgICBjb25zdCBpbnZhbGlkRGF0YSA9ICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0J1xuICAgIGlmICghbGlua3MgJiYgIW1ldGEgJiYgaW52YWxpZERhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgY29uc3QgcmVsYXRpb25zaGlwID0ge31cbiAgICBpZiAoIWludmFsaWREYXRhKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICByZWxhdGlvbnNoaXAuZGF0YSA9IGRhdGEubWFwKGl0ZW0gPT4gdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSh7XG4gICAgICAgICAgaXRlbSxcbiAgICAgICAgICBzb3VyY2U6IGFyZ3Muc291cmNlLFxuICAgICAgICAgIG9wdGlvbnM6IGFyZ3Mub3B0aW9ucyxcbiAgICAgICAgICBpbmNsdWRlLFxuICAgICAgICB9KSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbGF0aW9uc2hpcC5kYXRhID0gdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSh7XG4gICAgICAgICAgaXRlbTogZGF0YSxcbiAgICAgICAgICBzb3VyY2U6IGFyZ3Muc291cmNlLFxuICAgICAgICAgIG9wdGlvbnM6IGFyZ3Mub3B0aW9ucyxcbiAgICAgICAgICBpbmNsdWRlLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobWV0YSkpIHtcbiAgICAgIHJlbGF0aW9uc2hpcC5tZXRhID0gbWV0YVxuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobGlua3MpKSB7XG4gICAgICByZWxhdGlvbnNoaXAubGlua3MgPSBsaW5rc1xuICAgIH1cbiAgICByZXR1cm4gcmVsYXRpb25zaGlwXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkYXRhIGZvciB0aGUgY3VycmVudCByZWxhdGlvbnNoaXAgb2JqZWN0IGZvciB0aGUgY3VycmVudCBzb3VyY2VcbiAgICogb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaXRlbSAtIHRoZSBjdXJyZW50IGRhdGEgaXRlbVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge0Z1bmN0aW9ufSBhcmdzLmluY2x1ZGVcbiAgICogQHJldHVybiB7T2JqZWN0fSBkYXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGl0ZW0sIHNvdXJjZSwgb3B0aW9ucywgaW5jbHVkZSB9ID0gYXJnc1xuICAgIGNvbnN0IHsgbmFtZSwgZGF0YSwgaW5jbHVkZWQsIG1ldGEgfSA9IGl0ZW1cbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpIHx8ICFyZWdpc3RyeVtuYW1lXSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKGBNaXNzaW5nIFNjaGVtYTogJHtuYW1lfWAsIGFyZ3MpXG4gICAgfVxuICAgIGNvbnN0IHJlbFNjaGVtYSA9IHJlZ2lzdHJ5W25hbWVdXG4gICAgY29uc3QgdHlwZSA9IGdldFR5cGUoeyBkYXRhU2NoZW1hOiByZWxTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgZGF0YSB9KVxuICAgIGNvbnN0IGlkID0gZ2V0SWQoeyBkYXRhU2NoZW1hOiByZWxTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgZGF0YSB9KVxuICAgIGNvbnN0IHJlc3VsdCA9IHsgdHlwZSwgaWQgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVzdWx0Lm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpbmNsdWRlZCA9PT0gdHJ1ZSAmJiAhaW5jbHVkZS5leGlzdHMoeyB0eXBlLCBpZCB9KSkge1xuICAgICAgY29uc3QgcmVzb3VyY2UgPSB0cmFuc2Zvcm1EYXRhKHtcbiAgICAgICAgZG9jU2NoZW1hOiByZWxTY2hlbWEsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgaW5jbHVkZSxcbiAgICAgICAgX3R5cGU6IHR5cGUsXG4gICAgICAgIF9pZDogaWQsXG4gICAgICB9KVxuICAgICAgaW5jbHVkZS5pbmNsdWRlKHJlc291cmNlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBsaW5rcyBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmF0dHJpYnV0ZXNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLnJlbGF0aW9uc2hpcHNcbiAgICogQHJldHVybiB7T2JqZWN0fSBsaW5rc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0TGlua3MoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgaWYgKGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubGlua3MpIHtcbiAgICAgIHJldHVybiBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmxpbmtzKG90aGVycylcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgbWV0YSBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmF0dHJpYnV0ZXNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLnJlbGF0aW9uc2hpcHNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmxpbmtzXG4gICAqIEByZXR1cm4ge09iamVjdH0gbWV0YVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0TWV0YShhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5tZXRhKSB7XG4gICAgICByZXR1cm4gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5tZXRhKG90aGVycylcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbmNsdWRlIG9iamVjdFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGluY2x1ZGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUluY2x1ZGUoKSB7XG4gICAgY29uc3QgaW5jbHVkZWQgPSBbXVxuICAgIGNvbnN0IGFscmVhZHlJbmNsdWRlZCA9IHt9XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qKlxuICAgICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gcmVzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBpbmNsdWRlZFxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IGFyZ3NcbiAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhcmdzLmlkXG4gICAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAgICovXG4gICAgICBleGlzdHMoeyB0eXBlLCBpZCB9KSB7XG4gICAgICAgIHJldHVybiBhbHJlYWR5SW5jbHVkZWRbYCR7dHlwZX06JHtpZH1gXVxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBBZGQgYW4gaW5jbHVkZWQgcmVzb3VyY2UgdG8gdGhlIGluY2x1ZGVkIHNlY3Rpb24gb2YgdGhlIGRvY3VtZW50XG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVzb3VyY2VcbiAgICAgICAqIEByZXR1cm4ge1VuZGVmaW5lZH1cbiAgICAgICAqL1xuICAgICAgaW5jbHVkZShyZXNvdXJjZSkge1xuICAgICAgICBhbHJlYWR5SW5jbHVkZWRbYCR7cmVzb3VyY2UudHlwZX06JHtyZXNvdXJjZS5pZH1gXSA9IHRydWVcbiAgICAgICAgaW5jbHVkZWQucHVzaChyZXNvdXJjZSlcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogUmV0dXJuIHRoZSBpbmNsdWRlZCBhcnJheSBpbiBpdHMgY3VycmVudCBzdGF0ZVxuICAgICAgICogQHJldHVybiB7T2JqZWN0W119XG4gICAgICAgKi9cbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGluY2x1ZGVkXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY3JlYXRlSW5jbHVkZSxcbiAgICBnZXRBdHRyaWJ1dGVzLFxuICAgIGdldElkLFxuICAgIGdldFJlbGF0aW9uc2hpcCxcbiAgICBnZXRSZWxhdGlvbnNoaXBzLFxuICAgIGdldFR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgdHJhbnNmb3JtLFxuICAgIHRyYW5zZm9ybURhdGEsXG4gICAgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSxcbiAgICB0cmFuc2Zvcm1Tb3VyY2UsXG4gIH1cbn1cbiJdfQ== |
{ | ||
"name": "transformalizer", | ||
"version": "1.0.0-beta.0", | ||
"version": "1.0.0-beta.1", | ||
"description": "a bare bones node module for building JSON API v1.0 compliant payloads", | ||
@@ -5,0 +5,0 @@ "main": "./dist/transformalizer.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
77286
585