parse-server 7.1.0-alpha.3 → 7.1.0-alpha.5

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.
Files changed (193) hide show
  1. package/README.md +9 -10
  2. package/lib/AccountLockout.js +1 -1
  3. package/lib/Adapters/AdapterLoader.js +1 -1
  4. package/lib/Adapters/Analytics/AnalyticsAdapter.js +1 -1
  5. package/lib/Adapters/Auth/AuthAdapter.js +1 -1
  6. package/lib/Adapters/Auth/OAuth1Client.js +1 -1
  7. package/lib/Adapters/Auth/apple.js +1 -1
  8. package/lib/Adapters/Auth/facebook.js +1 -1
  9. package/lib/Adapters/Auth/gcenter.js +1 -1
  10. package/lib/Adapters/Auth/github.js +1 -1
  11. package/lib/Adapters/Auth/google.js +1 -1
  12. package/lib/Adapters/Auth/gpgames.js +1 -1
  13. package/lib/Adapters/Auth/httpsRequest.js +1 -1
  14. package/lib/Adapters/Auth/index.js +1 -1
  15. package/lib/Adapters/Auth/instagram.js +1 -1
  16. package/lib/Adapters/Auth/janraincapture.js +1 -1
  17. package/lib/Adapters/Auth/janrainengage.js +1 -1
  18. package/lib/Adapters/Auth/keycloak.js +1 -1
  19. package/lib/Adapters/Auth/ldap.js +1 -1
  20. package/lib/Adapters/Auth/line.js +1 -1
  21. package/lib/Adapters/Auth/linkedin.js +1 -1
  22. package/lib/Adapters/Auth/meetup.js +1 -1
  23. package/lib/Adapters/Auth/mfa.js +1 -1
  24. package/lib/Adapters/Auth/microsoft.js +1 -1
  25. package/lib/Adapters/Auth/oauth2.js +1 -1
  26. package/lib/Adapters/Auth/phantauth.js +1 -1
  27. package/lib/Adapters/Auth/qq.js +1 -1
  28. package/lib/Adapters/Auth/spotify.js +1 -1
  29. package/lib/Adapters/Auth/twitter.js +1 -1
  30. package/lib/Adapters/Auth/utils.js +1 -1
  31. package/lib/Adapters/Auth/vkontakte.js +1 -1
  32. package/lib/Adapters/Auth/wechat.js +1 -1
  33. package/lib/Adapters/Auth/weibo.js +1 -1
  34. package/lib/Adapters/Cache/CacheAdapter.js +1 -1
  35. package/lib/Adapters/Cache/InMemoryCache.js +1 -1
  36. package/lib/Adapters/Cache/InMemoryCacheAdapter.js +1 -1
  37. package/lib/Adapters/Cache/LRUCache.js +1 -1
  38. package/lib/Adapters/Cache/NullCacheAdapter.js +1 -1
  39. package/lib/Adapters/Cache/RedisCacheAdapter.js +1 -1
  40. package/lib/Adapters/Cache/SchemaCache.js +1 -1
  41. package/lib/Adapters/Email/MailAdapter.js +1 -1
  42. package/lib/Adapters/Files/FilesAdapter.js +1 -1
  43. package/lib/Adapters/Files/GridFSBucketAdapter.js +1 -1
  44. package/lib/Adapters/Files/GridStoreAdapter.js +1 -1
  45. package/lib/Adapters/Logger/LoggerAdapter.js +1 -1
  46. package/lib/Adapters/Logger/WinstonLogger.js +2 -2
  47. package/lib/Adapters/Logger/WinstonLoggerAdapter.js +1 -1
  48. package/lib/Adapters/MessageQueue/EventEmitterMQ.js +1 -1
  49. package/lib/Adapters/PubSub/EventEmitterPubSub.js +1 -1
  50. package/lib/Adapters/PubSub/PubSubAdapter.js +1 -1
  51. package/lib/Adapters/PubSub/RedisPubSub.js +2 -2
  52. package/lib/Adapters/Push/PushAdapter.js +1 -1
  53. package/lib/Adapters/Storage/Mongo/MongoCollection.js +1 -1
  54. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +2 -2
  55. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +2 -2
  56. package/lib/Adapters/Storage/Mongo/MongoTransform.js +2 -2
  57. package/lib/Adapters/Storage/Postgres/PostgresClient.js +1 -1
  58. package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +1 -1
  59. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +2 -2
  60. package/lib/Adapters/Storage/Postgres/sql/index.js +1 -1
  61. package/lib/Adapters/Storage/StorageAdapter.js +1 -1
  62. package/lib/Adapters/WebSocketServer/WSAdapter.js +1 -1
  63. package/lib/Adapters/WebSocketServer/WSSAdapter.js +1 -1
  64. package/lib/Auth.js +2 -2
  65. package/lib/ClientSDK.js +1 -1
  66. package/lib/Config.js +9 -1
  67. package/lib/Controllers/AdaptableController.js +1 -1
  68. package/lib/Controllers/AnalyticsController.js +1 -1
  69. package/lib/Controllers/CacheController.js +1 -1
  70. package/lib/Controllers/DatabaseController.js +3 -3
  71. package/lib/Controllers/FilesController.js +1 -1
  72. package/lib/Controllers/HooksController.js +2 -2
  73. package/lib/Controllers/LiveQueryController.js +1 -1
  74. package/lib/Controllers/LoggerController.js +1 -1
  75. package/lib/Controllers/ParseGraphQLController.js +2 -2
  76. package/lib/Controllers/PushController.js +1 -1
  77. package/lib/Controllers/SchemaController.js +2 -2
  78. package/lib/Controllers/UserController.js +2 -2
  79. package/lib/Controllers/index.js +2 -2
  80. package/lib/Controllers/types.js +1 -1
  81. package/lib/Deprecator/Deprecations.js +1 -1
  82. package/lib/Deprecator/Deprecator.js +1 -1
  83. package/lib/GraphQL/ParseGraphQLSchema.js +2 -2
  84. package/lib/GraphQL/ParseGraphQLServer.js +2 -2
  85. package/lib/GraphQL/helpers/objectsMutations.js +1 -1
  86. package/lib/GraphQL/helpers/objectsQueries.js +1 -1
  87. package/lib/GraphQL/loaders/defaultGraphQLMutations.js +2 -2
  88. package/lib/GraphQL/loaders/defaultGraphQLQueries.js +2 -2
  89. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +2 -2
  90. package/lib/GraphQL/loaders/defaultRelaySchema.js +3 -3
  91. package/lib/GraphQL/loaders/filesMutations.js +3 -3
  92. package/lib/GraphQL/loaders/functionsMutations.js +3 -3
  93. package/lib/GraphQL/loaders/parseClassMutations.js +3 -3
  94. package/lib/GraphQL/loaders/parseClassQueries.js +2 -2
  95. package/lib/GraphQL/loaders/parseClassTypes.js +3 -3
  96. package/lib/GraphQL/loaders/schemaDirectives.js +1 -1
  97. package/lib/GraphQL/loaders/schemaMutations.js +2 -2
  98. package/lib/GraphQL/loaders/schemaQueries.js +2 -2
  99. package/lib/GraphQL/loaders/schemaTypes.js +1 -1
  100. package/lib/GraphQL/loaders/usersMutations.js +3 -3
  101. package/lib/GraphQL/loaders/usersQueries.js +1 -1
  102. package/lib/GraphQL/parseGraphQLUtils.js +1 -1
  103. package/lib/GraphQL/transformers/className.js +1 -1
  104. package/lib/GraphQL/transformers/constraintType.js +2 -2
  105. package/lib/GraphQL/transformers/inputType.js +2 -2
  106. package/lib/GraphQL/transformers/mutation.js +3 -3
  107. package/lib/GraphQL/transformers/outputType.js +2 -2
  108. package/lib/GraphQL/transformers/query.js +2 -2
  109. package/lib/GraphQL/transformers/schemaFields.js +2 -2
  110. package/lib/KeyPromiseQueue.js +1 -1
  111. package/lib/LiveQuery/Client.js +1 -1
  112. package/lib/LiveQuery/Id.js +1 -1
  113. package/lib/LiveQuery/ParseCloudCodePublisher.js +1 -1
  114. package/lib/LiveQuery/ParseLiveQueryServer.js +1 -1
  115. package/lib/LiveQuery/ParsePubSub.js +1 -1
  116. package/lib/LiveQuery/ParseWebSocketServer.js +1 -1
  117. package/lib/LiveQuery/QueryTools.js +1 -1
  118. package/lib/LiveQuery/RequestSchema.js +1 -1
  119. package/lib/LiveQuery/SessionTokenCache.js +1 -1
  120. package/lib/LiveQuery/Subscription.js +1 -1
  121. package/lib/LiveQuery/equalObjects.js +1 -1
  122. package/lib/Options/Definitions.js +22 -7
  123. package/lib/Options/docs.js +1 -1
  124. package/lib/Options/index.js +1 -1
  125. package/lib/Options/parsers.js +1 -1
  126. package/lib/Page.js +1 -1
  127. package/lib/ParseMessageQueue.js +1 -1
  128. package/lib/ParseServer.js +51 -3
  129. package/lib/ParseServerRESTController.js +2 -2
  130. package/lib/PromiseRouter.js +1 -1
  131. package/lib/Push/PushQueue.js +1 -1
  132. package/lib/Push/PushWorker.js +2 -2
  133. package/lib/Push/utils.js +1 -1
  134. package/lib/RestQuery.js +1 -1
  135. package/lib/RestWrite.js +2 -2
  136. package/lib/Routers/AggregateRouter.js +2 -2
  137. package/lib/Routers/AnalyticsRouter.js +1 -1
  138. package/lib/Routers/AudiencesRouter.js +2 -2
  139. package/lib/Routers/ClassesRouter.js +1 -1
  140. package/lib/Routers/CloudCodeRouter.js +1 -1
  141. package/lib/Routers/FeaturesRouter.js +2 -2
  142. package/lib/Routers/FilesRouter.js +2 -2
  143. package/lib/Routers/FunctionsRouter.js +1 -1
  144. package/lib/Routers/GlobalConfigRouter.js +2 -2
  145. package/lib/Routers/GraphQLRouter.js +2 -2
  146. package/lib/Routers/HooksRouter.js +2 -2
  147. package/lib/Routers/IAPValidationRouter.js +1 -1
  148. package/lib/Routers/InstallationsRouter.js +1 -1
  149. package/lib/Routers/LogsRouter.js +2 -2
  150. package/lib/Routers/PagesRouter.js +1 -1
  151. package/lib/Routers/PublicAPIRouter.js +1 -1
  152. package/lib/Routers/PurgeRouter.js +2 -2
  153. package/lib/Routers/PushRouter.js +2 -2
  154. package/lib/Routers/RolesRouter.js +1 -1
  155. package/lib/Routers/SchemasRouter.js +2 -2
  156. package/lib/Routers/SecurityRouter.js +2 -2
  157. package/lib/Routers/SessionsRouter.js +1 -1
  158. package/lib/Routers/UsersRouter.js +2 -2
  159. package/lib/SchemaMigrations/DefinedSchemas.js +3 -3
  160. package/lib/SchemaMigrations/Migrations.js +1 -1
  161. package/lib/Security/Check.js +1 -1
  162. package/lib/Security/CheckGroup.js +1 -1
  163. package/lib/Security/CheckGroups/CheckGroupDatabase.js +1 -1
  164. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +1 -1
  165. package/lib/Security/CheckGroups/CheckGroups.js +1 -1
  166. package/lib/Security/CheckRunner.js +2 -2
  167. package/lib/SharedRest.js +1 -1
  168. package/lib/StatusHandler.js +2 -2
  169. package/lib/TestUtils.js +1 -1
  170. package/lib/Utils.js +1 -1
  171. package/lib/batch.js +1 -1
  172. package/lib/cache.js +1 -1
  173. package/lib/cli/definitions/parse-live-query-server.js +1 -1
  174. package/lib/cli/definitions/parse-server.js +1 -1
  175. package/lib/cli/parse-live-query-server.js +1 -1
  176. package/lib/cli/parse-server.js +1 -1
  177. package/lib/cli/utils/commander.js +1 -1
  178. package/lib/cli/utils/runner.js +1 -1
  179. package/lib/cloud-code/Parse.Cloud.js +3 -3
  180. package/lib/cloud-code/Parse.Server.js +1 -1
  181. package/lib/cryptoUtils.js +1 -1
  182. package/lib/defaults.js +1 -1
  183. package/lib/deprecated.js +1 -1
  184. package/lib/index.js +2 -2
  185. package/lib/logger.js +1 -1
  186. package/lib/middlewares.js +1 -1
  187. package/lib/password.js +1 -1
  188. package/lib/request.js +1 -1
  189. package/lib/requiredParameter.js +1 -1
  190. package/lib/rest.js +1 -1
  191. package/lib/triggers.js +2 -2
  192. package/lib/vendor/mongodbUrl.js +1 -1
  193. package/package.json +11 -11
@@ -641,4 +641,4 @@ function malformedContext(req, res) {
641
641
  error: 'Invalid object for context.'
642
642
  });
643
643
  }
644
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2FjaGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ub2RlIiwiX0F1dGgiLCJfQ29uZmlnIiwiX0NsaWVudFNESyIsIl9sb2dnZXIiLCJfcmVzdCIsIl9Nb25nb1N0b3JhZ2VBZGFwdGVyIiwiX1Bvc3RncmVzU3RvcmFnZUFkYXB0ZXIiLCJfZXhwcmVzc1JhdGVMaW1pdCIsIl9EZWZpbml0aW9ucyIsIl9wYXRoVG9SZWdleHAiLCJfcmF0ZUxpbWl0UmVkaXMiLCJfcmVkaXMiLCJfbmV0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJERUZBVUxUX0FMTE9XRURfSEVBREVSUyIsImV4cG9ydHMiLCJnZXRNb3VudEZvclJlcXVlc3QiLCJyZXEiLCJtb3VudFBhdGhMZW5ndGgiLCJvcmlnaW5hbFVybCIsImxlbmd0aCIsInVybCIsIm1vdW50UGF0aCIsInNsaWNlIiwicHJvdG9jb2wiLCJnZXQiLCJnZXRCbG9ja0xpc3QiLCJpcFJhbmdlTGlzdCIsInN0b3JlIiwiYmxvY2tMaXN0IiwiQmxvY2tMaXN0IiwiZm9yRWFjaCIsImZ1bGxJcCIsInNldCIsImlwIiwibWFzayIsInNwbGl0IiwiYWRkQWRkcmVzcyIsImlzSVB2NCIsImFkZFN1Ym5ldCIsIk51bWJlciIsImNoZWNrSXAiLCJpbmNvbWluZ0lwSXNWNCIsInJlc3VsdCIsImNoZWNrIiwiaW5jbHVkZXMiLCJoYW5kbGVQYXJzZUhlYWRlcnMiLCJyZXMiLCJuZXh0IiwibW91bnQiLCJjb250ZXh0IiwiSlNPTiIsInBhcnNlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiZSIsIm1hbGZvcm1lZENvbnRleHQiLCJpbmZvIiwiYXBwSWQiLCJzZXNzaW9uVG9rZW4iLCJtYXN0ZXJLZXkiLCJtYWludGVuYW5jZUtleSIsImluc3RhbGxhdGlvbklkIiwiY2xpZW50S2V5IiwiamF2YXNjcmlwdEtleSIsImRvdE5ldEtleSIsInJlc3RBUElLZXkiLCJjbGllbnRWZXJzaW9uIiwiYmFzaWNBdXRoIiwiaHR0cEF1dGgiLCJiYXNpY0F1dGhBcHBJZCIsIkFwcENhY2hlIiwiYm9keSIsIl9ub0JvZHkiLCJmaWxlVmlhSlNPTiIsIkJ1ZmZlciIsImludmFsaWRSZXF1ZXN0IiwiX1Jldm9jYWJsZVNlc3Npb24iLCJfQXBwbGljYXRpb25JZCIsIl9KYXZhU2NyaXB0S2V5IiwiX0NsaWVudFZlcnNpb24iLCJfSW5zdGFsbGF0aW9uSWQiLCJfU2Vzc2lvblRva2VuIiwiX01hc3RlcktleSIsIl9jb250ZXh0IiwiX0NvbnRlbnRUeXBlIiwiaGVhZGVycyIsImNsaWVudFNESyIsIkNsaWVudFNESyIsImZyb21TdHJpbmciLCJmaWxlRGF0YSIsImJhc2U2NCIsImZyb20iLCJjbGllbnRJcCIsImdldENsaWVudElwIiwiY29uZmlnIiwiQ29uZmlnIiwic3RhdGUiLCJzdGF0dXMiLCJqc29uIiwiY29kZSIsIlBhcnNlIiwiRXJyb3IiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJlcnJvciIsImFwcCIsImlzTWFpbnRlbmFuY2UiLCJfcmVxJGNvbmZpZyIsIm1haW50ZW5hbmNlS2V5SXBzIiwibWFpbnRlbmFuY2VLZXlJcHNTdG9yZSIsImF1dGgiLCJBdXRoIiwibG9nIiwibG9nZ2VyQ29udHJvbGxlciIsImRlZmF1bHRMb2dnZXIiLCJpc01hc3RlciIsIm1hc3RlcktleUlwcyIsIm1hc3RlcktleUlwc1N0b3JlIiwiX3JlcSRjb25maWcyIiwibWVzc2FnZSIsImhhbmRsZVJhdGVMaW1pdCIsImlzUmVhZE9ubHlNYXN0ZXIiLCJyZWFkT25seU1hc3RlcktleSIsImlzUmVhZE9ubHkiLCJrZXlzIiwib25lS2V5Q29uZmlndXJlZCIsInNvbWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJvbmVLZXlNYXRjaGVzIiwidXNlckZyb21KV1QiLCJ1c2VyIiwicmF0ZUxpbWl0cyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJsaW1pdCIsInBhdGhFeHAiLCJSZWdFeHAiLCJwYXRoIiwidGVzdCIsImhhbmRsZXIiLCJlcnIiLCJDT05ORUNUSU9OX0ZBSUxFRCIsImhhbmRsZVBhcnNlU2Vzc2lvbiIsInJlcXVlc3RBdXRoIiwiaW5kZXhPZiIsImdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4iLCJnZXRBdXRoRm9yU2Vzc2lvblRva2VuIiwiVU5LTk9XTl9FUlJPUiIsImF1dGhvcml6YXRpb24iLCJoZWFkZXIiLCJhdXRoUHJlZml4IiwibWF0Y2giLCJ0b0xvd2VyQ2FzZSIsImVuY29kZWRBdXRoIiwic3Vic3RyaW5nIiwiY3JlZGVudGlhbHMiLCJkZWNvZGVCYXNlNjQiLCJqc0tleVByZWZpeCIsIm1hdGNoS2V5Iiwic3RyIiwiYWxsb3dDcm9zc0RvbWFpbiIsImFsbG93SGVhZGVycyIsImpvaW4iLCJiYXNlT3JpZ2lucyIsImFsbG93T3JpZ2luIiwicmVxdWVzdE9yaWdpbiIsIm9yaWdpbiIsImFsbG93T3JpZ2lucyIsIm1ldGhvZCIsInNlbmRTdGF0dXMiLCJhbGxvd01ldGhvZE92ZXJyaWRlIiwiX21ldGhvZCIsIm9yaWdpbmFsTWV0aG9kIiwiaGFuZGxlUGFyc2VFcnJvcnMiLCJlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyIiwiaHR0cFN0YXR1cyIsIk9CSkVDVF9OT1RfRk9VTkQiLCJwcm9jZXNzIiwiZW52IiwiVEVTVElORyIsInN0YWNrIiwiZW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImVuZCIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwicmVxdWVzdCIsInJlc29sdmUiLCJhZGRSYXRlTGltaXQiLCJyb3V0ZSIsImNsb3VkIiwiUmF0ZUxpbWl0T3B0aW9ucyIsInJlZGlzU3RvcmUiLCJjb25uZWN0aW9uUHJvbWlzZSIsInJlZGlzVXJsIiwiY2xpZW50IiwiY3JlYXRlQ2xpZW50IiwiaXNPcGVuIiwiY29ubmVjdCIsIl9jb25maWciLCJSZWRpc1N0b3JlIiwic2VuZENvbW1hbmQiLCJhcmdzIiwidHJhbnNmb3JtUGF0aCIsInJlcXVlc3RQYXRoIiwicHVzaCIsInBhdGhUb1JlZ2V4cCIsInJhdGVMaW1pdCIsIndpbmRvd01zIiwicmVxdWVzdFRpbWVXaW5kb3ciLCJtYXgiLCJyZXF1ZXN0Q291bnQiLCJlcnJvclJlc3BvbnNlTWVzc2FnZSIsInJlc3BvbnNlIiwib3B0aW9ucyIsInNraXAiLCJfcmVxdWVzdCRhdXRoIiwiaW5jbHVkZUludGVybmFsUmVxdWVzdHMiLCJpbmNsdWRlTWFzdGVyS2V5IiwicmVxdWVzdE1ldGhvZHMiLCJBcnJheSIsImlzQXJyYXkiLCJyZWdFeHAiLCJrZXlHZW5lcmF0b3IiLCJ6b25lIiwiU2VydmVyIiwiUmF0ZUxpbWl0Wm9uZSIsImdsb2JhbCIsInRva2VuIiwic2Vzc2lvbiIsIl9yZXF1ZXN0JGF1dGgyIiwiaWQiLCJwdXQiLCJwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kiLCJkYXRhYmFzZSIsImFkYXB0ZXIiLCJNb25nb1N0b3JhZ2VBZGFwdGVyIiwiUG9zdGdyZXNTdG9yYWdlQWRhcHRlciIsInJlcXVlc3RJZCIsInBhdGhzIiwidHRsIiwiaWRlbXBvdGVuY3lPcHRpb25zIiwicmVxUGF0aCIsInJlcGxhY2UiLCJyZWdleCIsImNoYXJBdCIsImV4cGlyeURhdGUiLCJEYXRlIiwic2V0U2Vjb25kcyIsImdldFNlY29uZHMiLCJyZXN0IiwiY3JlYXRlIiwibWFzdGVyIiwicmVxSWQiLCJleHBpcmUiLCJfZW5jb2RlIiwiY2F0Y2giLCJEVVBMSUNBVEVfVkFMVUUiLCJEVVBMSUNBVEVfUkVRVUVTVCIsIklOVkFMSURfSlNPTiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9taWRkbGV3YXJlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXBwQ2FjaGUgZnJvbSAnLi9jYWNoZSc7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgYXV0aCBmcm9tICcuL0F1dGgnO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuL0NvbmZpZyc7XG5pbXBvcnQgQ2xpZW50U0RLIGZyb20gJy4vQ2xpZW50U0RLJztcbmltcG9ydCBkZWZhdWx0TG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCByZXN0IGZyb20gJy4vcmVzdCc7XG5pbXBvcnQgTW9uZ29TdG9yYWdlQWRhcHRlciBmcm9tICcuL0FkYXB0ZXJzL1N0b3JhZ2UvTW9uZ28vTW9uZ29TdG9yYWdlQWRhcHRlcic7XG5pbXBvcnQgUG9zdGdyZXNTdG9yYWdlQWRhcHRlciBmcm9tICcuL0FkYXB0ZXJzL1N0b3JhZ2UvUG9zdGdyZXMvUG9zdGdyZXNTdG9yYWdlQWRhcHRlcic7XG5pbXBvcnQgcmF0ZUxpbWl0IGZyb20gJ2V4cHJlc3MtcmF0ZS1saW1pdCc7XG5pbXBvcnQgeyBSYXRlTGltaXRPcHRpb25zIH0gZnJvbSAnLi9PcHRpb25zL0RlZmluaXRpb25zJztcbmltcG9ydCB7IHBhdGhUb1JlZ2V4cCB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcbmltcG9ydCBSZWRpc1N0b3JlIGZyb20gJ3JhdGUtbGltaXQtcmVkaXMnO1xuaW1wb3J0IHsgY3JlYXRlQ2xpZW50IH0gZnJvbSAncmVkaXMnO1xuaW1wb3J0IHsgQmxvY2tMaXN0LCBpc0lQdjQgfSBmcm9tICduZXQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTExPV0VEX0hFQURFUlMgPVxuICAnWC1QYXJzZS1NYXN0ZXItS2V5LCBYLVBhcnNlLVJFU1QtQVBJLUtleSwgWC1QYXJzZS1KYXZhc2NyaXB0LUtleSwgWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCwgWC1QYXJzZS1DbGllbnQtVmVyc2lvbiwgWC1QYXJzZS1TZXNzaW9uLVRva2VuLCBYLVJlcXVlc3RlZC1XaXRoLCBYLVBhcnNlLVJldm9jYWJsZS1TZXNzaW9uLCBYLVBhcnNlLVJlcXVlc3QtSWQsIENvbnRlbnQtVHlwZSwgUHJhZ21hLCBDYWNoZS1Db250cm9sJztcblxuY29uc3QgZ2V0TW91bnRGb3JSZXF1ZXN0ID0gZnVuY3Rpb24gKHJlcSkge1xuICBjb25zdCBtb3VudFBhdGhMZW5ndGggPSByZXEub3JpZ2luYWxVcmwubGVuZ3RoIC0gcmVxLnVybC5sZW5ndGg7XG4gIGNvbnN0IG1vdW50UGF0aCA9IHJlcS5vcmlnaW5hbFVybC5zbGljZSgwLCBtb3VudFBhdGhMZW5ndGgpO1xuICByZXR1cm4gcmVxLnByb3RvY29sICsgJzovLycgKyByZXEuZ2V0KCdob3N0JykgKyBtb3VudFBhdGg7XG59O1xuXG5jb25zdCBnZXRCbG9ja0xpc3QgPSAoaXBSYW5nZUxpc3QsIHN0b3JlKSA9PiB7XG4gIGlmIChzdG9yZS5nZXQoJ2Jsb2NrTGlzdCcpKSByZXR1cm4gc3RvcmUuZ2V0KCdibG9ja0xpc3QnKTtcbiAgY29uc3QgYmxvY2tMaXN0ID0gbmV3IEJsb2NrTGlzdCgpO1xuICBpcFJhbmdlTGlzdC5mb3JFYWNoKGZ1bGxJcCA9PiB7XG4gICAgaWYgKGZ1bGxJcCA9PT0gJzo6LzAnIHx8IGZ1bGxJcCA9PT0gJzo6Jykge1xuICAgICAgc3RvcmUuc2V0KCdhbGxvd0FsbElwdjYnLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZ1bGxJcCA9PT0gJzAuMC4wLjAvMCcgfHwgZnVsbElwID09PSAnMC4wLjAuMCcpIHtcbiAgICAgIHN0b3JlLnNldCgnYWxsb3dBbGxJcHY0JywgdHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IFtpcCwgbWFza10gPSBmdWxsSXAuc3BsaXQoJy8nKTtcbiAgICBpZiAoIW1hc2spIHtcbiAgICAgIGJsb2NrTGlzdC5hZGRBZGRyZXNzKGlwLCBpc0lQdjQoaXApID8gJ2lwdjQnIDogJ2lwdjYnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmxvY2tMaXN0LmFkZFN1Ym5ldChpcCwgTnVtYmVyKG1hc2spLCBpc0lQdjQoaXApID8gJ2lwdjQnIDogJ2lwdjYnKTtcbiAgICB9XG4gIH0pO1xuICBzdG9yZS5zZXQoJ2Jsb2NrTGlzdCcsIGJsb2NrTGlzdCk7XG4gIHJldHVybiBibG9ja0xpc3Q7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJcCA9IChpcCwgaXBSYW5nZUxpc3QsIHN0b3JlKSA9PiB7XG4gIGNvbnN0IGluY29taW5nSXBJc1Y0ID0gaXNJUHY0KGlwKTtcbiAgY29uc3QgYmxvY2tMaXN0ID0gZ2V0QmxvY2tMaXN0KGlwUmFuZ2VMaXN0LCBzdG9yZSk7XG5cbiAgaWYgKHN0b3JlLmdldChpcCkpIHJldHVybiB0cnVlO1xuICBpZiAoc3RvcmUuZ2V0KCdhbGxvd0FsbElwdjQnKSAmJiBpbmNvbWluZ0lwSXNWNCkgcmV0dXJuIHRydWU7XG4gIGlmIChzdG9yZS5nZXQoJ2FsbG93QWxsSXB2NicpICYmICFpbmNvbWluZ0lwSXNWNCkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IHJlc3VsdCA9IGJsb2NrTGlzdC5jaGVjayhpcCwgaW5jb21pbmdJcElzVjQgPyAnaXB2NCcgOiAnaXB2NicpO1xuXG4gIC8vIElmIHRoZSBpcCBpcyBpbiB0aGUgbGlzdCwgd2Ugc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUgc3RvcmVcbiAgLy8gc28gd2UgaGF2ZSBhIG9wdGltaXplZCBwYXRoIGZvciB0aGUgbmV4dCByZXF1ZXN0XG4gIGlmIChpcFJhbmdlTGlzdC5pbmNsdWRlcyhpcCkgJiYgcmVzdWx0KSB7XG4gICAgc3RvcmUuc2V0KGlwLCByZXN1bHQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBDaGVja3MgdGhhdCB0aGUgcmVxdWVzdCBpcyBhdXRob3JpemVkIGZvciB0aGlzIGFwcCBhbmQgY2hlY2tzIHVzZXJcbi8vIGF1dGggdG9vLlxuLy8gVGhlIGJvZHlwYXJzZXIgc2hvdWxkIHJ1biBiZWZvcmUgdGhpcyBtaWRkbGV3YXJlLlxuLy8gQWRkcyBpbmZvIHRvIHRoZSByZXF1ZXN0OlxuLy8gcmVxLmNvbmZpZyAtIHRoZSBDb25maWcgZm9yIHRoaXMgYXBwXG4vLyByZXEuYXV0aCAtIHRoZSBBdXRoIGZvciB0aGlzIHJlcXVlc3RcbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVQYXJzZUhlYWRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgdmFyIG1vdW50ID0gZ2V0TW91bnRGb3JSZXF1ZXN0KHJlcSk7XG5cbiAgbGV0IGNvbnRleHQgPSB7fTtcbiAgaWYgKHJlcS5nZXQoJ1gtUGFyc2UtQ2xvdWQtQ29udGV4dCcpICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgY29udGV4dCA9IEpTT04ucGFyc2UocmVxLmdldCgnWC1QYXJzZS1DbG91ZC1Db250ZXh0JykpO1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjb250ZXh0KSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgICAgdGhyb3cgJ0NvbnRleHQgaXMgbm90IGFuIG9iamVjdCc7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG1hbGZvcm1lZENvbnRleHQocmVxLCByZXMpO1xuICAgIH1cbiAgfVxuICB2YXIgaW5mbyA9IHtcbiAgICBhcHBJZDogcmVxLmdldCgnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCcpLFxuICAgIHNlc3Npb25Ub2tlbjogcmVxLmdldCgnWC1QYXJzZS1TZXNzaW9uLVRva2VuJyksXG4gICAgbWFzdGVyS2V5OiByZXEuZ2V0KCdYLVBhcnNlLU1hc3Rlci1LZXknKSxcbiAgICBtYWludGVuYW5jZUtleTogcmVxLmdldCgnWC1QYXJzZS1NYWludGVuYW5jZS1LZXknKSxcbiAgICBpbnN0YWxsYXRpb25JZDogcmVxLmdldCgnWC1QYXJzZS1JbnN0YWxsYXRpb24tSWQnKSxcbiAgICBjbGllbnRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtQ2xpZW50LUtleScpLFxuICAgIGphdmFzY3JpcHRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtSmF2YXNjcmlwdC1LZXknKSxcbiAgICBkb3ROZXRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtV2luZG93cy1LZXknKSxcbiAgICByZXN0QVBJS2V5OiByZXEuZ2V0KCdYLVBhcnNlLVJFU1QtQVBJLUtleScpLFxuICAgIGNsaWVudFZlcnNpb246IHJlcS5nZXQoJ1gtUGFyc2UtQ2xpZW50LVZlcnNpb24nKSxcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICB9O1xuXG4gIHZhciBiYXNpY0F1dGggPSBodHRwQXV0aChyZXEpO1xuXG4gIGlmIChiYXNpY0F1dGgpIHtcbiAgICB2YXIgYmFzaWNBdXRoQXBwSWQgPSBiYXNpY0F1dGguYXBwSWQ7XG4gICAgaWYgKEFwcENhY2hlLmdldChiYXNpY0F1dGhBcHBJZCkpIHtcbiAgICAgIGluZm8uYXBwSWQgPSBiYXNpY0F1dGhBcHBJZDtcbiAgICAgIGluZm8ubWFzdGVyS2V5ID0gYmFzaWNBdXRoLm1hc3RlcktleSB8fCBpbmZvLm1hc3RlcktleTtcbiAgICAgIGluZm8uamF2YXNjcmlwdEtleSA9IGJhc2ljQXV0aC5qYXZhc2NyaXB0S2V5IHx8IGluZm8uamF2YXNjcmlwdEtleTtcbiAgICB9XG4gIH1cblxuICBpZiAocmVxLmJvZHkpIHtcbiAgICAvLyBVbml0eSBTREsgc2VuZHMgYSBfbm9Cb2R5IGtleSB3aGljaCBuZWVkcyB0byBiZSByZW1vdmVkLlxuICAgIC8vIFVuY2xlYXIgYXQgdGhpcyBwb2ludCBpZiBhY3Rpb24gbmVlZHMgdG8gYmUgdGFrZW4uXG4gICAgZGVsZXRlIHJlcS5ib2R5Ll9ub0JvZHk7XG4gIH1cblxuICB2YXIgZmlsZVZpYUpTT04gPSBmYWxzZTtcblxuICBpZiAoIWluZm8uYXBwSWQgfHwgIUFwcENhY2hlLmdldChpbmZvLmFwcElkKSkge1xuICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCB0aGUgYXBwIGlkIG9uIHRoZSBib2R5LlxuICAgIGlmIChyZXEuYm9keSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgLy8gVGhlIG9ubHkgY2hhbmNlIHRvIGZpbmQgdGhlIGFwcCBpZCBpcyBpZiB0aGlzIGlzIGEgZmlsZVxuICAgICAgLy8gdXBsb2FkIHRoYXQgYWN0dWFsbHkgaXMgYSBKU09OIGJvZHkuIFNvIHRyeSB0byBwYXJzZSBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJzZS1jb21tdW5pdHkvcGFyc2Utc2VydmVyL2lzc3Vlcy82NTg5XG4gICAgICAvLyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQgdGhlIGNsaWVudCBpcyB0cnlpbmcgdG8gdXBsb2FkIGEgZmlsZSBidXQgZm9yZ290XG4gICAgICAvLyB0byBwcm92aWRlIHgtcGFyc2UtYXBwLWlkIGluIGhlYWRlciBhbmQgcGFyc2UgYSBiaW5hcnkgZmlsZSB3aWxsIGZhaWxcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcS5ib2R5ID0gSlNPTi5wYXJzZShyZXEuYm9keSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBpbnZhbGlkUmVxdWVzdChyZXEsIHJlcyk7XG4gICAgICB9XG4gICAgICBmaWxlVmlhSlNPTiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlcS5ib2R5KSB7XG4gICAgICBkZWxldGUgcmVxLmJvZHkuX1Jldm9jYWJsZVNlc3Npb247XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcmVxLmJvZHkgJiZcbiAgICAgIHJlcS5ib2R5Ll9BcHBsaWNhdGlvbklkICYmXG4gICAgICBBcHBDYWNoZS5nZXQocmVxLmJvZHkuX0FwcGxpY2F0aW9uSWQpICYmXG4gICAgICAoIWluZm8ubWFzdGVyS2V5IHx8IEFwcENhY2hlLmdldChyZXEuYm9keS5fQXBwbGljYXRpb25JZCkubWFzdGVyS2V5ID09PSBpbmZvLm1hc3RlcktleSlcbiAgICApIHtcbiAgICAgIGluZm8uYXBwSWQgPSByZXEuYm9keS5fQXBwbGljYXRpb25JZDtcbiAgICAgIGluZm8uamF2YXNjcmlwdEtleSA9IHJlcS5ib2R5Ll9KYXZhU2NyaXB0S2V5IHx8ICcnO1xuICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9BcHBsaWNhdGlvbklkO1xuICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9KYXZhU2NyaXB0S2V5O1xuICAgICAgLy8gVE9ETzogdGVzdCB0aGF0IHRoZSBSRVNUIEFQSSBmb3JtYXRzIGdlbmVyYXRlZCBieSB0aGUgb3RoZXJcbiAgICAgIC8vIFNES3MgYXJlIGhhbmRsZWQgb2tcbiAgICAgIGlmIChyZXEuYm9keS5fQ2xpZW50VmVyc2lvbikge1xuICAgICAgICBpbmZvLmNsaWVudFZlcnNpb24gPSByZXEuYm9keS5fQ2xpZW50VmVyc2lvbjtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9DbGllbnRWZXJzaW9uO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5ib2R5Ll9JbnN0YWxsYXRpb25JZCkge1xuICAgICAgICBpbmZvLmluc3RhbGxhdGlvbklkID0gcmVxLmJvZHkuX0luc3RhbGxhdGlvbklkO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX0luc3RhbGxhdGlvbklkO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5ib2R5Ll9TZXNzaW9uVG9rZW4pIHtcbiAgICAgICAgaW5mby5zZXNzaW9uVG9rZW4gPSByZXEuYm9keS5fU2Vzc2lvblRva2VuO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX1Nlc3Npb25Ub2tlbjtcbiAgICAgIH1cbiAgICAgIGlmIChyZXEuYm9keS5fTWFzdGVyS2V5KSB7XG4gICAgICAgIGluZm8ubWFzdGVyS2V5ID0gcmVxLmJvZHkuX01hc3RlcktleTtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9NYXN0ZXJLZXk7XG4gICAgICB9XG4gICAgICBpZiAocmVxLmJvZHkuX2NvbnRleHQpIHtcbiAgICAgICAgaWYgKHJlcS5ib2R5Ll9jb250ZXh0IGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgaW5mby5jb250ZXh0ID0gcmVxLmJvZHkuX2NvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGluZm8uY29udGV4dCA9IEpTT04ucGFyc2UocmVxLmJvZHkuX2NvbnRleHQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbmZvLmNvbnRleHQpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICAgICAgICB0aHJvdyAnQ29udGV4dCBpcyBub3QgYW4gb2JqZWN0JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFsZm9ybWVkQ29udGV4dChyZXEsIHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSByZXEuYm9keS5fY29udGV4dDtcbiAgICAgIH1cbiAgICAgIGlmIChyZXEuYm9keS5fQ29udGVudFR5cGUpIHtcbiAgICAgICAgcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gcmVxLmJvZHkuX0NvbnRlbnRUeXBlO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX0NvbnRlbnRUeXBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlcXVlc3QocmVxLCByZXMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbmZvLnNlc3Npb25Ub2tlbiAmJiB0eXBlb2YgaW5mby5zZXNzaW9uVG9rZW4gIT09ICdzdHJpbmcnKSB7XG4gICAgaW5mby5zZXNzaW9uVG9rZW4gPSBpbmZvLnNlc3Npb25Ub2tlbi50b1N0cmluZygpO1xuICB9XG5cbiAgaWYgKGluZm8uY2xpZW50VmVyc2lvbikge1xuICAgIGluZm8uY2xpZW50U0RLID0gQ2xpZW50U0RLLmZyb21TdHJpbmcoaW5mby5jbGllbnRWZXJzaW9uKTtcbiAgfVxuXG4gIGlmIChmaWxlVmlhSlNPTikge1xuICAgIHJlcS5maWxlRGF0YSA9IHJlcS5ib2R5LmZpbGVEYXRhO1xuICAgIC8vIFdlIG5lZWQgdG8gcmVwb3B1bGF0ZSByZXEuYm9keSB3aXRoIGEgYnVmZmVyXG4gICAgdmFyIGJhc2U2NCA9IHJlcS5ib2R5LmJhc2U2NDtcbiAgICByZXEuYm9keSA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICB9XG5cbiAgY29uc3QgY2xpZW50SXAgPSBnZXRDbGllbnRJcChyZXEpO1xuICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KGluZm8uYXBwSWQsIG1vdW50KTtcbiAgaWYgKGNvbmZpZy5zdGF0ZSAmJiBjb25maWcuc3RhdGUgIT09ICdvaycpIHtcbiAgICByZXMuc3RhdHVzKDUwMCk7XG4gICAgcmVzLmpzb24oe1xuICAgICAgY29kZTogUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgZXJyb3I6IGBJbnZhbGlkIHNlcnZlciBzdGF0ZTogJHtjb25maWcuc3RhdGV9YCxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpbmZvLmFwcCA9IEFwcENhY2hlLmdldChpbmZvLmFwcElkKTtcbiAgcmVxLmNvbmZpZyA9IGNvbmZpZztcbiAgcmVxLmNvbmZpZy5oZWFkZXJzID0gcmVxLmhlYWRlcnMgfHwge307XG4gIHJlcS5jb25maWcuaXAgPSBjbGllbnRJcDtcbiAgcmVxLmluZm8gPSBpbmZvO1xuXG4gIGNvbnN0IGlzTWFpbnRlbmFuY2UgPVxuICAgIHJlcS5jb25maWcubWFpbnRlbmFuY2VLZXkgJiYgaW5mby5tYWludGVuYW5jZUtleSA9PT0gcmVxLmNvbmZpZy5tYWludGVuYW5jZUtleTtcbiAgaWYgKGlzTWFpbnRlbmFuY2UpIHtcbiAgICBpZiAoY2hlY2tJcChjbGllbnRJcCwgcmVxLmNvbmZpZy5tYWludGVuYW5jZUtleUlwcyB8fCBbXSwgcmVxLmNvbmZpZy5tYWludGVuYW5jZUtleUlwc1N0b3JlKSkge1xuICAgICAgcmVxLmF1dGggPSBuZXcgYXV0aC5BdXRoKHtcbiAgICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgICAgaXNNYWludGVuYW5jZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgbmV4dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBsb2cgPSByZXEuY29uZmlnPy5sb2dnZXJDb250cm9sbGVyIHx8IGRlZmF1bHRMb2dnZXI7XG4gICAgbG9nLmVycm9yKFxuICAgICAgYFJlcXVlc3QgdXNpbmcgbWFpbnRlbmFuY2Uga2V5IHJlamVjdGVkIGFzIHRoZSByZXF1ZXN0IElQIGFkZHJlc3MgJyR7Y2xpZW50SXB9JyBpcyBub3Qgc2V0IGluIFBhcnNlIFNlcnZlciBvcHRpb24gJ21haW50ZW5hbmNlS2V5SXBzJy5gXG4gICAgKTtcbiAgfVxuXG4gIGxldCBpc01hc3RlciA9IGluZm8ubWFzdGVyS2V5ID09PSByZXEuY29uZmlnLm1hc3RlcktleTtcblxuICBpZiAoaXNNYXN0ZXIgJiYgIWNoZWNrSXAoY2xpZW50SXAsIHJlcS5jb25maWcubWFzdGVyS2V5SXBzIHx8IFtdLCByZXEuY29uZmlnLm1hc3RlcktleUlwc1N0b3JlKSkge1xuICAgIGNvbnN0IGxvZyA9IHJlcS5jb25maWc/LmxvZ2dlckNvbnRyb2xsZXIgfHwgZGVmYXVsdExvZ2dlcjtcbiAgICBsb2cuZXJyb3IoXG4gICAgICBgUmVxdWVzdCB1c2luZyBtYXN0ZXIga2V5IHJlamVjdGVkIGFzIHRoZSByZXF1ZXN0IElQIGFkZHJlc3MgJyR7Y2xpZW50SXB9JyBpcyBub3Qgc2V0IGluIFBhcnNlIFNlcnZlciBvcHRpb24gJ21hc3RlcktleUlwcycuYFxuICAgICk7XG4gICAgaXNNYXN0ZXIgPSBmYWxzZTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgIGVycm9yLnN0YXR1cyA9IDQwMztcbiAgICBlcnJvci5tZXNzYWdlID0gYHVuYXV0aG9yaXplZGA7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBpZiAoaXNNYXN0ZXIpIHtcbiAgICByZXEuYXV0aCA9IG5ldyBhdXRoLkF1dGgoe1xuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBpc01hc3RlcjogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlUmF0ZUxpbWl0KHJlcSwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIHZhciBpc1JlYWRPbmx5TWFzdGVyID0gaW5mby5tYXN0ZXJLZXkgPT09IHJlcS5jb25maWcucmVhZE9ubHlNYXN0ZXJLZXk7XG4gIGlmIChcbiAgICB0eXBlb2YgcmVxLmNvbmZpZy5yZWFkT25seU1hc3RlcktleSAhPSAndW5kZWZpbmVkJyAmJlxuICAgIHJlcS5jb25maWcucmVhZE9ubHlNYXN0ZXJLZXkgJiZcbiAgICBpc1JlYWRPbmx5TWFzdGVyXG4gICkge1xuICAgIHJlcS5hdXRoID0gbmV3IGF1dGguQXV0aCh7XG4gICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgIGlzTWFzdGVyOiB0cnVlLFxuICAgICAgaXNSZWFkT25seTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlUmF0ZUxpbWl0KHJlcSwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIC8vIENsaWVudCBrZXlzIGFyZSBub3QgcmVxdWlyZWQgaW4gcGFyc2Utc2VydmVyLCBidXQgaWYgYW55IGhhdmUgYmVlbiBjb25maWd1cmVkIGluIHRoZSBzZXJ2ZXIsIHZhbGlkYXRlIHRoZW1cbiAgLy8gIHRvIHByZXNlcnZlIG9yaWdpbmFsIGJlaGF2aW9yLlxuICBjb25zdCBrZXlzID0gWydjbGllbnRLZXknLCAnamF2YXNjcmlwdEtleScsICdkb3ROZXRLZXknLCAncmVzdEFQSUtleSddO1xuICBjb25zdCBvbmVLZXlDb25maWd1cmVkID0ga2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcmVxLmNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQ7XG4gIH0pO1xuICBjb25zdCBvbmVLZXlNYXRjaGVzID0ga2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcmVxLmNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQgJiYgaW5mb1trZXldID09PSByZXEuY29uZmlnW2tleV07XG4gIH0pO1xuXG4gIGlmIChvbmVLZXlDb25maWd1cmVkICYmICFvbmVLZXlNYXRjaGVzKSB7XG4gICAgcmV0dXJuIGludmFsaWRSZXF1ZXN0KHJlcSwgcmVzKTtcbiAgfVxuXG4gIGlmIChyZXEudXJsID09ICcvbG9naW4nKSB7XG4gICAgZGVsZXRlIGluZm8uc2Vzc2lvblRva2VuO1xuICB9XG5cbiAgaWYgKHJlcS51c2VyRnJvbUpXVCkge1xuICAgIHJlcS5hdXRoID0gbmV3IGF1dGguQXV0aCh7XG4gICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgIHVzZXI6IHJlcS51c2VyRnJvbUpXVCxcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlUmF0ZUxpbWl0KHJlcSwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIGlmICghaW5mby5zZXNzaW9uVG9rZW4pIHtcbiAgICByZXEuYXV0aCA9IG5ldyBhdXRoLkF1dGgoe1xuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgfSk7XG4gIH1cbiAgaGFuZGxlUmF0ZUxpbWl0KHJlcSwgcmVzLCBuZXh0KTtcbn1cblxuY29uc3QgaGFuZGxlUmF0ZUxpbWl0ID0gYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gIGNvbnN0IHJhdGVMaW1pdHMgPSByZXEuY29uZmlnLnJhdGVMaW1pdHMgfHwgW107XG4gIHRyeSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICByYXRlTGltaXRzLm1hcChhc3luYyBsaW1pdCA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGhFeHAgPSBuZXcgUmVnRXhwKGxpbWl0LnBhdGgpO1xuICAgICAgICBpZiAocGF0aEV4cC50ZXN0KHJlcS51cmwpKSB7XG4gICAgICAgICAgYXdhaXQgbGltaXQuaGFuZGxlcihyZXEsIHJlcywgZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgaWYgKGVyci5jb2RlID09PSBQYXJzZS5FcnJvci5DT05ORUNUSU9OX0ZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXEuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgJ0FuIHVua25vd24gZXJyb3Igb2NjdXJlZCB3aGVuIGF0dGVtcHRpbmcgdG8gYXBwbHkgdGhlIHJhdGUgbGltaXRlcjogJyxcbiAgICAgICAgICAgICAgICBlcnJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNDI5KTtcbiAgICByZXMuanNvbih7IGNvZGU6IFBhcnNlLkVycm9yLkNPTk5FQ1RJT05fRkFJTEVELCBlcnJvcjogZXJyb3IubWVzc2FnZSB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgbmV4dCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVBhcnNlU2Vzc2lvbiA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGluZm8gPSByZXEuaW5mbztcbiAgICBpZiAocmVxLmF1dGggfHwgcmVxLnVybCA9PT0gJy9zZXNzaW9ucy9tZScpIHtcbiAgICAgIG5leHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHJlcXVlc3RBdXRoID0gbnVsbDtcbiAgICBpZiAoXG4gICAgICBpbmZvLnNlc3Npb25Ub2tlbiAmJlxuICAgICAgcmVxLnVybCA9PT0gJy91cGdyYWRlVG9SZXZvY2FibGVTZXNzaW9uJyAmJlxuICAgICAgaW5mby5zZXNzaW9uVG9rZW4uaW5kZXhPZigncjonKSAhPSAwXG4gICAgKSB7XG4gICAgICByZXF1ZXN0QXV0aCA9IGF3YWl0IGF1dGguZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbih7XG4gICAgICAgIGNvbmZpZzogcmVxLmNvbmZpZyxcbiAgICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgIHNlc3Npb25Ub2tlbjogaW5mby5zZXNzaW9uVG9rZW4sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdEF1dGggPSBhd2FpdCBhdXRoLmdldEF1dGhGb3JTZXNzaW9uVG9rZW4oe1xuICAgICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICAgIGluc3RhbGxhdGlvbklkOiBpbmZvLmluc3RhbGxhdGlvbklkLFxuICAgICAgICBzZXNzaW9uVG9rZW46IGluZm8uc2Vzc2lvblRva2VuLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJlcS5hdXRoID0gcmVxdWVzdEF1dGg7XG4gICAgbmV4dCgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVE9ETzogRGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGVycm9yIHNjZW5hcmlvLlxuICAgIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlci5lcnJvcignZXJyb3IgZ2V0dGluZyBhdXRoIGZvciBzZXNzaW9uVG9rZW4nLCBlcnJvcik7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlVOS05PV05fRVJST1IsIGVycm9yKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0Q2xpZW50SXAocmVxKSB7XG4gIHJldHVybiByZXEuaXA7XG59XG5cbmZ1bmN0aW9uIGh0dHBBdXRoKHJlcSkge1xuICBpZiAoIShyZXEucmVxIHx8IHJlcSkuaGVhZGVycy5hdXRob3JpemF0aW9uKSByZXR1cm47XG5cbiAgdmFyIGhlYWRlciA9IChyZXEucmVxIHx8IHJlcSkuaGVhZGVycy5hdXRob3JpemF0aW9uO1xuICB2YXIgYXBwSWQsIG1hc3RlcktleSwgamF2YXNjcmlwdEtleTtcblxuICAvLyBwYXJzZSBoZWFkZXJcbiAgdmFyIGF1dGhQcmVmaXggPSAnYmFzaWMgJztcblxuICB2YXIgbWF0Y2ggPSBoZWFkZXIudG9Mb3dlckNhc2UoKS5pbmRleE9mKGF1dGhQcmVmaXgpO1xuXG4gIGlmIChtYXRjaCA9PSAwKSB7XG4gICAgdmFyIGVuY29kZWRBdXRoID0gaGVhZGVyLnN1YnN0cmluZyhhdXRoUHJlZml4Lmxlbmd0aCwgaGVhZGVyLmxlbmd0aCk7XG4gICAgdmFyIGNyZWRlbnRpYWxzID0gZGVjb2RlQmFzZTY0KGVuY29kZWRBdXRoKS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKGNyZWRlbnRpYWxzLmxlbmd0aCA9PSAyKSB7XG4gICAgICBhcHBJZCA9IGNyZWRlbnRpYWxzWzBdO1xuICAgICAgdmFyIGtleSA9IGNyZWRlbnRpYWxzWzFdO1xuXG4gICAgICB2YXIganNLZXlQcmVmaXggPSAnamF2YXNjcmlwdC1rZXk9JztcblxuICAgICAgdmFyIG1hdGNoS2V5ID0ga2V5LmluZGV4T2YoanNLZXlQcmVmaXgpO1xuICAgICAgaWYgKG1hdGNoS2V5ID09IDApIHtcbiAgICAgICAgamF2YXNjcmlwdEtleSA9IGtleS5zdWJzdHJpbmcoanNLZXlQcmVmaXgubGVuZ3RoLCBrZXkubGVuZ3RoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hc3RlcktleSA9IGtleTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBhcHBJZDogYXBwSWQsIG1hc3RlcktleTogbWFzdGVyS2V5LCBqYXZhc2NyaXB0S2V5OiBqYXZhc2NyaXB0S2V5IH07XG59XG5cbmZ1bmN0aW9uIGRlY29kZUJhc2U2NChzdHIpIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxvd0Nyb3NzRG9tYWluKGFwcElkKSB7XG4gIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KGFwcElkLCBnZXRNb3VudEZvclJlcXVlc3QocmVxKSk7XG4gICAgbGV0IGFsbG93SGVhZGVycyA9IERFRkFVTFRfQUxMT1dFRF9IRUFERVJTO1xuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmFsbG93SGVhZGVycykge1xuICAgICAgYWxsb3dIZWFkZXJzICs9IGAsICR7Y29uZmlnLmFsbG93SGVhZGVycy5qb2luKCcsICcpfWA7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZU9yaWdpbnMgPVxuICAgICAgdHlwZW9mIGNvbmZpZz8uYWxsb3dPcmlnaW4gPT09ICdzdHJpbmcnID8gW2NvbmZpZy5hbGxvd09yaWdpbl0gOiBjb25maWc/LmFsbG93T3JpZ2luID8/IFsnKiddO1xuICAgIGNvbnN0IHJlcXVlc3RPcmlnaW4gPSByZXEuaGVhZGVycy5vcmlnaW47XG4gICAgY29uc3QgYWxsb3dPcmlnaW5zID1cbiAgICAgIHJlcXVlc3RPcmlnaW4gJiYgYmFzZU9yaWdpbnMuaW5jbHVkZXMocmVxdWVzdE9yaWdpbikgPyByZXF1ZXN0T3JpZ2luIDogYmFzZU9yaWdpbnNbMF07XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgYWxsb3dPcmlnaW5zKTtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCxQVVQsUE9TVCxERUxFVEUsT1BUSU9OUycpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCBhbGxvd0hlYWRlcnMpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzJywgJ1gtUGFyc2UtSm9iLVN0YXR1cy1JZCwgWC1QYXJzZS1QdXNoLVN0YXR1cy1JZCcpO1xuICAgIC8vIGludGVyY2VwdCBPUFRJT05TIG1ldGhvZFxuICAgIGlmICgnT1BUSU9OUycgPT0gcmVxLm1ldGhvZCkge1xuICAgICAgcmVzLnNlbmRTdGF0dXMoMjAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dCgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbG93TWV0aG9kT3ZlcnJpZGUocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKHJlcS5tZXRob2QgPT09ICdQT1NUJyAmJiByZXEuYm9keS5fbWV0aG9kKSB7XG4gICAgcmVxLm9yaWdpbmFsTWV0aG9kID0gcmVxLm1ldGhvZDtcbiAgICByZXEubWV0aG9kID0gcmVxLmJvZHkuX21ldGhvZDtcbiAgICBkZWxldGUgcmVxLmJvZHkuX21ldGhvZDtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVQYXJzZUVycm9ycyhlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGxvZyA9IChyZXEuY29uZmlnICYmIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlcikgfHwgZGVmYXVsdExvZ2dlcjtcbiAgaWYgKGVyciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgaWYgKHJlcS5jb25maWcgJiYgcmVxLmNvbmZpZy5lbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgIH1cbiAgICBsZXQgaHR0cFN0YXR1cztcbiAgICAvLyBUT0RPOiBmaWxsIG91dCB0aGlzIG1hcHBpbmdcbiAgICBzd2l0Y2ggKGVyci5jb2RlKSB7XG4gICAgICBjYXNlIFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUjpcbiAgICAgICAgaHR0cFN0YXR1cyA9IDUwMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQ6XG4gICAgICAgIGh0dHBTdGF0dXMgPSA0MDQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaHR0cFN0YXR1cyA9IDQwMDtcbiAgICB9XG4gICAgcmVzLnN0YXR1cyhodHRwU3RhdHVzKTtcbiAgICByZXMuanNvbih7IGNvZGU6IGVyci5jb2RlLCBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgbG9nLmVycm9yKCdQYXJzZSBlcnJvcjogJywgZXJyKTtcbiAgfSBlbHNlIGlmIChlcnIuc3RhdHVzICYmIGVyci5tZXNzYWdlKSB7XG4gICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzKTtcbiAgICByZXMuanNvbih7IGVycm9yOiBlcnIubWVzc2FnZSB9KTtcbiAgICBpZiAoIShwcm9jZXNzICYmIHByb2Nlc3MuZW52LlRFU1RJTkcpKSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxvZy5lcnJvcignVW5jYXVnaHQgaW50ZXJuYWwgc2VydmVyIGVycm9yLicsIGVyciwgZXJyLnN0YWNrKTtcbiAgICByZXMuc3RhdHVzKDUwMCk7XG4gICAgcmVzLmpzb24oe1xuICAgICAgY29kZTogUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgbWVzc2FnZTogJ0ludGVybmFsIHNlcnZlciBlcnJvci4nLFxuICAgIH0pO1xuICAgIGlmICghKHByb2Nlc3MgJiYgcHJvY2Vzcy5lbnYuVEVTVElORykpIHtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKCFyZXEuYXV0aC5pc01hc3Rlcikge1xuICAgIHJlcy5zdGF0dXMoNDAzKTtcbiAgICByZXMuZW5kKCd7XCJlcnJvclwiOlwidW5hdXRob3JpemVkOiBtYXN0ZXIga2V5IGlzIHJlcXVpcmVkXCJ9Jyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIG5leHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzKHJlcXVlc3QpIHtcbiAgaWYgKCFyZXF1ZXN0LmF1dGguaXNNYXN0ZXIpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgIGVycm9yLnN0YXR1cyA9IDQwMztcbiAgICBlcnJvci5tZXNzYWdlID0gJ3VuYXV0aG9yaXplZDogbWFzdGVyIGtleSBpcyByZXF1aXJlZCc7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5leHBvcnQgY29uc3QgYWRkUmF0ZUxpbWl0ID0gKHJvdXRlLCBjb25maWcsIGNsb3VkKSA9PiB7XG4gIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZyA9IENvbmZpZy5nZXQoY29uZmlnKTtcbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiByb3V0ZSkge1xuICAgIGlmICghUmF0ZUxpbWl0T3B0aW9uc1trZXldKSB7XG4gICAgICB0aHJvdyBgSW52YWxpZCByYXRlIGxpbWl0IG9wdGlvbiBcIiR7a2V5fVwiYDtcbiAgICB9XG4gIH1cbiAgaWYgKCFjb25maWcucmF0ZUxpbWl0cykge1xuICAgIGNvbmZpZy5yYXRlTGltaXRzID0gW107XG4gIH1cbiAgY29uc3QgcmVkaXNTdG9yZSA9IHtcbiAgICBjb25uZWN0aW9uUHJvbWlzZTogUHJvbWlzZS5yZXNvbHZlKCksXG4gICAgc3RvcmU6IG51bGwsXG4gIH07XG4gIGlmIChyb3V0ZS5yZWRpc1VybCkge1xuICAgIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUNsaWVudCh7XG4gICAgICB1cmw6IHJvdXRlLnJlZGlzVXJsLFxuICAgIH0pO1xuICAgIHJlZGlzU3RvcmUuY29ubmVjdGlvblByb21pc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoY2xpZW50LmlzT3Blbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBjbGllbnQuY29ubmVjdCgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBsb2cgPSBjb25maWc/LmxvZ2dlckNvbnRyb2xsZXIgfHwgZGVmYXVsdExvZ2dlcjtcbiAgICAgICAgbG9nLmVycm9yKGBDb3VsZCBub3QgY29ubmVjdCB0byByZWRpc1VSTCBpbiByYXRlIGxpbWl0OiAke2V9YCk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZWRpc1N0b3JlLmNvbm5lY3Rpb25Qcm9taXNlKCk7XG4gICAgcmVkaXNTdG9yZS5zdG9yZSA9IG5ldyBSZWRpc1N0b3JlKHtcbiAgICAgIHNlbmRDb21tYW5kOiBhc3luYyAoLi4uYXJncykgPT4ge1xuICAgICAgICBhd2FpdCByZWRpc1N0b3JlLmNvbm5lY3Rpb25Qcm9taXNlKCk7XG4gICAgICAgIHJldHVybiBjbGllbnQuc2VuZENvbW1hbmQoYXJncyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGxldCB0cmFuc2Zvcm1QYXRoID0gcm91dGUucmVxdWVzdFBhdGguc3BsaXQoJy8qJykuam9pbignLyguKiknKTtcbiAgaWYgKHRyYW5zZm9ybVBhdGggPT09ICcqJykge1xuICAgIHRyYW5zZm9ybVBhdGggPSAnKC4qKSc7XG4gIH1cbiAgY29uZmlnLnJhdGVMaW1pdHMucHVzaCh7XG4gICAgcGF0aDogcGF0aFRvUmVnZXhwKHRyYW5zZm9ybVBhdGgpLFxuICAgIGhhbmRsZXI6IHJhdGVMaW1pdCh7XG4gICAgICB3aW5kb3dNczogcm91dGUucmVxdWVzdFRpbWVXaW5kb3csXG4gICAgICBtYXg6IHJvdXRlLnJlcXVlc3RDb3VudCxcbiAgICAgIG1lc3NhZ2U6IHJvdXRlLmVycm9yUmVzcG9uc2VNZXNzYWdlIHx8IFJhdGVMaW1pdE9wdGlvbnMuZXJyb3JSZXNwb25zZU1lc3NhZ2UuZGVmYXVsdCxcbiAgICAgIGhhbmRsZXI6IChyZXF1ZXN0LCByZXNwb25zZSwgbmV4dCwgb3B0aW9ucykgPT4ge1xuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuQ09OTkVDVElPTl9GQUlMRUQsXG4gICAgICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHNraXA6IHJlcXVlc3QgPT4ge1xuICAgICAgICBpZiAocmVxdWVzdC5pcCA9PT0gJzEyNy4wLjAuMScgJiYgIXJvdXRlLmluY2x1ZGVJbnRlcm5hbFJlcXVlc3RzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlLmluY2x1ZGVNYXN0ZXJLZXkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlLnJlcXVlc3RNZXRob2RzKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm91dGUucmVxdWVzdE1ldGhvZHMpKSB7XG4gICAgICAgICAgICBpZiAoIXJvdXRlLnJlcXVlc3RNZXRob2RzLmluY2x1ZGVzKHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChyb3V0ZS5yZXF1ZXN0TWV0aG9kcyk7XG4gICAgICAgICAgICBpZiAoIXJlZ0V4cC50ZXN0KHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcXVlc3QuYXV0aD8uaXNNYXN0ZXI7XG4gICAgICB9LFxuICAgICAga2V5R2VuZXJhdG9yOiBhc3luYyByZXF1ZXN0ID0+IHtcbiAgICAgICAgaWYgKHJvdXRlLnpvbmUgPT09IFBhcnNlLlNlcnZlci5SYXRlTGltaXRab25lLmdsb2JhbCkge1xuICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZy5hcHBJZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0b2tlbiA9IHJlcXVlc3QuaW5mby5zZXNzaW9uVG9rZW47XG4gICAgICAgIGlmIChyb3V0ZS56b25lID09PSBQYXJzZS5TZXJ2ZXIuUmF0ZUxpbWl0Wm9uZS5zZXNzaW9uICYmIHRva2VuKSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyb3V0ZS56b25lID09PSBQYXJzZS5TZXJ2ZXIuUmF0ZUxpbWl0Wm9uZS51c2VyICYmIHRva2VuKSB7XG4gICAgICAgICAgaWYgKCFyZXF1ZXN0LmF1dGgpIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gaGFuZGxlUGFyc2VTZXNzaW9uKHJlcXVlc3QsIG51bGwsIHJlc29sdmUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlcXVlc3QuYXV0aD8udXNlcj8uaWQgJiYgcmVxdWVzdC56b25lID09PSAndXNlcicpIHtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmF1dGgudXNlci5pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcXVlc3QuY29uZmlnLmlwO1xuICAgICAgfSxcbiAgICAgIHN0b3JlOiByZWRpc1N0b3JlLnN0b3JlLFxuICAgIH0pLFxuICAgIGNsb3VkLFxuICB9KTtcbiAgQ29uZmlnLnB1dChjb25maWcpO1xufTtcblxuLyoqXG4gKiBEZWR1cGxpY2F0ZXMgYSByZXF1ZXN0IHRvIGVuc3VyZSBpZGVtcG90ZW5jeS4gRHVwbGljYXRlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgcmVxdWVzdCBJRFxuICogaW4gdGhlIHJlcXVlc3QgaGVhZGVyLiBJZiBhIHJlcXVlc3QgaGFzIG5vIHJlcXVlc3QgSUQsIGl0IGlzIGV4ZWN1dGVkIGFueXdheS5cbiAqIEBwYXJhbSB7Kn0gcmVxIFRoZSByZXF1ZXN0IHRvIGV2YWx1YXRlLlxuICogQHJldHVybnMgUHJvbWlzZTx7fT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeShyZXEpIHtcbiAgLy8gRW5hYmxlIGZlYXR1cmUgb25seSBmb3IgTW9uZ29EQlxuICBpZiAoXG4gICAgIShcbiAgICAgIHJlcS5jb25maWcuZGF0YWJhc2UuYWRhcHRlciBpbnN0YW5jZW9mIE1vbmdvU3RvcmFnZUFkYXB0ZXIgfHxcbiAgICAgIHJlcS5jb25maWcuZGF0YWJhc2UuYWRhcHRlciBpbnN0YW5jZW9mIFBvc3RncmVzU3RvcmFnZUFkYXB0ZXJcbiAgICApXG4gICkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuICAvLyBHZXQgcGFyYW1ldGVyc1xuICBjb25zdCBjb25maWcgPSByZXEuY29uZmlnO1xuICBjb25zdCByZXF1ZXN0SWQgPSAoKHJlcSB8fCB7fSkuaGVhZGVycyB8fCB7fSlbJ3gtcGFyc2UtcmVxdWVzdC1pZCddO1xuICBjb25zdCB7IHBhdGhzLCB0dGwgfSA9IGNvbmZpZy5pZGVtcG90ZW5jeU9wdGlvbnM7XG4gIGlmICghcmVxdWVzdElkIHx8ICFjb25maWcuaWRlbXBvdGVuY3lPcHRpb25zKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIC8vIFJlcXVlc3QgcGF0aCBtYXkgY29udGFpbiB0cmFpbGluZyBzbGFzaGVzLCBkZXBlbmRpbmcgb24gdGhlIG9yaWdpbmFsIHJlcXVlc3QsIHNvIHJlbW92ZVxuICAvLyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwZWNpZnkgcGF0aHMgaW4gdGhlIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgcmVxUGF0aCA9IHJlcS5wYXRoLnJlcGxhY2UoL15cXC98XFwvJC8sICcnKTtcbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgaWRlbXBvdGVuY3kgaXMgZW5hYmxlZCBmb3IgY3VycmVudCByZXF1ZXN0IHBhdGhcbiAgbGV0IG1hdGNoID0gZmFsc2U7XG4gIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgIC8vIEFzc3VtZSBvbmUgd2FudHMgYSBwYXRoIHRvIGFsd2F5cyBtYXRjaCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gcHJldmVudCBhbnkgbWlzdGFrZXNcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAocGF0aC5jaGFyQXQoMCkgPT09ICdeJyA/IHBhdGggOiAnXicgKyBwYXRoKTtcbiAgICBpZiAocmVxUGF0aC5tYXRjaChyZWdleCkpIHtcbiAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIC8vIFRyeSB0byBzdG9yZSByZXF1ZXN0XG4gIGNvbnN0IGV4cGlyeURhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldFNlY29uZHMobmV3IERhdGUoKS5nZXRTZWNvbmRzKCkgKyB0dGwpKTtcbiAgcmV0dXJuIHJlc3RcbiAgICAuY3JlYXRlKGNvbmZpZywgYXV0aC5tYXN0ZXIoY29uZmlnKSwgJ19JZGVtcG90ZW5jeScsIHtcbiAgICAgIHJlcUlkOiByZXF1ZXN0SWQsXG4gICAgICBleHBpcmU6IFBhcnNlLl9lbmNvZGUoZXhwaXJ5RGF0ZSksXG4gICAgfSlcbiAgICAuY2F0Y2goZSA9PiB7XG4gICAgICBpZiAoZS5jb2RlID09IFBhcnNlLkVycm9yLkRVUExJQ0FURV9WQUxVRSkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRFVQTElDQVRFX1JFUVVFU1QsICdEdXBsaWNhdGUgcmVxdWVzdCcpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaW52YWxpZFJlcXVlc3QocmVxLCByZXMpIHtcbiAgcmVzLnN0YXR1cyg0MDMpO1xuICByZXMuZW5kKCd7XCJlcnJvclwiOlwidW5hdXRob3JpemVkXCJ9Jyk7XG59XG5cbmZ1bmN0aW9uIG1hbGZvcm1lZENvbnRleHQocmVxLCByZXMpIHtcbiAgcmVzLnN0YXR1cyg0MDApO1xuICByZXMuanNvbih7IGNvZGU6IFBhcnNlLkVycm9yLklOVkFMSURfSlNPTiwgZXJyb3I6ICdJbnZhbGlkIG9iamVjdCBmb3IgY29udGV4dC4nIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxvQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsdUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGlCQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxZQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxlQUFBLEdBQUFiLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYSxNQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxJQUFBLEdBQUFkLE9BQUE7QUFBd0MsU0FBQUQsdUJBQUFnQixHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpDLE1BQU1HLHVCQUF1QixHQUFBQyxPQUFBLENBQUFELHVCQUFBLEdBQ2xDLCtPQUErTztBQUVqUCxNQUFNRSxrQkFBa0IsR0FBRyxTQUFBQSxDQUFVQyxHQUFHLEVBQUU7RUFDeEMsTUFBTUMsZUFBZSxHQUFHRCxHQUFHLENBQUNFLFdBQVcsQ0FBQ0MsTUFBTSxHQUFHSCxHQUFHLENBQUNJLEdBQUcsQ0FB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
644
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2FjaGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ub2RlIiwiX0F1dGgiLCJfQ29uZmlnIiwiX0NsaWVudFNESyIsIl9sb2dnZXIiLCJfcmVzdCIsIl9Nb25nb1N0b3JhZ2VBZGFwdGVyIiwiX1Bvc3RncmVzU3RvcmFnZUFkYXB0ZXIiLCJfZXhwcmVzc1JhdGVMaW1pdCIsIl9EZWZpbml0aW9ucyIsIl9wYXRoVG9SZWdleHAiLCJfcmF0ZUxpbWl0UmVkaXMiLCJfcmVkaXMiLCJfbmV0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJERUZBVUxUX0FMTE9XRURfSEVBREVSUyIsImV4cG9ydHMiLCJnZXRNb3VudEZvclJlcXVlc3QiLCJyZXEiLCJtb3VudFBhdGhMZW5ndGgiLCJvcmlnaW5hbFVybCIsImxlbmd0aCIsInVybCIsIm1vdW50UGF0aCIsInNsaWNlIiwicHJvdG9jb2wiLCJnZXQiLCJnZXRCbG9ja0xpc3QiLCJpcFJhbmdlTGlzdCIsInN0b3JlIiwiYmxvY2tMaXN0IiwiQmxvY2tMaXN0IiwiZm9yRWFjaCIsImZ1bGxJcCIsInNldCIsImlwIiwibWFzayIsInNwbGl0IiwiYWRkQWRkcmVzcyIsImlzSVB2NCIsImFkZFN1Ym5ldCIsIk51bWJlciIsImNoZWNrSXAiLCJpbmNvbWluZ0lwSXNWNCIsInJlc3VsdCIsImNoZWNrIiwiaW5jbHVkZXMiLCJoYW5kbGVQYXJzZUhlYWRlcnMiLCJyZXMiLCJuZXh0IiwibW91bnQiLCJjb250ZXh0IiwiSlNPTiIsInBhcnNlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiZSIsIm1hbGZvcm1lZENvbnRleHQiLCJpbmZvIiwiYXBwSWQiLCJzZXNzaW9uVG9rZW4iLCJtYXN0ZXJLZXkiLCJtYWludGVuYW5jZUtleSIsImluc3RhbGxhdGlvbklkIiwiY2xpZW50S2V5IiwiamF2YXNjcmlwdEtleSIsImRvdE5ldEtleSIsInJlc3RBUElLZXkiLCJjbGllbnRWZXJzaW9uIiwiYmFzaWNBdXRoIiwiaHR0cEF1dGgiLCJiYXNpY0F1dGhBcHBJZCIsIkFwcENhY2hlIiwiYm9keSIsIl9ub0JvZHkiLCJmaWxlVmlhSlNPTiIsIkJ1ZmZlciIsImludmFsaWRSZXF1ZXN0IiwiX1Jldm9jYWJsZVNlc3Npb24iLCJfQXBwbGljYXRpb25JZCIsIl9KYXZhU2NyaXB0S2V5IiwiX0NsaWVudFZlcnNpb24iLCJfSW5zdGFsbGF0aW9uSWQiLCJfU2Vzc2lvblRva2VuIiwiX01hc3RlcktleSIsIl9jb250ZXh0IiwiX0NvbnRlbnRUeXBlIiwiaGVhZGVycyIsImNsaWVudFNESyIsIkNsaWVudFNESyIsImZyb21TdHJpbmciLCJmaWxlRGF0YSIsImJhc2U2NCIsImZyb20iLCJjbGllbnRJcCIsImdldENsaWVudElwIiwiY29uZmlnIiwiQ29uZmlnIiwic3RhdGUiLCJzdGF0dXMiLCJqc29uIiwiY29kZSIsIlBhcnNlIiwiRXJyb3IiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJlcnJvciIsImFwcCIsImlzTWFpbnRlbmFuY2UiLCJfcmVxJGNvbmZpZyIsIm1haW50ZW5hbmNlS2V5SXBzIiwibWFpbnRlbmFuY2VLZXlJcHNTdG9yZSIsImF1dGgiLCJBdXRoIiwibG9nIiwibG9nZ2VyQ29udHJvbGxlciIsImRlZmF1bHRMb2dnZXIiLCJpc01hc3RlciIsIm1hc3RlcktleUlwcyIsIm1hc3RlcktleUlwc1N0b3JlIiwiX3JlcSRjb25maWcyIiwibWVzc2FnZSIsImhhbmRsZVJhdGVMaW1pdCIsImlzUmVhZE9ubHlNYXN0ZXIiLCJyZWFkT25seU1hc3RlcktleSIsImlzUmVhZE9ubHkiLCJrZXlzIiwib25lS2V5Q29uZmlndXJlZCIsInNvbWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJvbmVLZXlNYXRjaGVzIiwidXNlckZyb21KV1QiLCJ1c2VyIiwicmF0ZUxpbWl0cyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJsaW1pdCIsInBhdGhFeHAiLCJSZWdFeHAiLCJwYXRoIiwidGVzdCIsImhhbmRsZXIiLCJlcnIiLCJDT05ORUNUSU9OX0ZBSUxFRCIsImhhbmRsZVBhcnNlU2Vzc2lvbiIsInJlcXVlc3RBdXRoIiwiaW5kZXhPZiIsImdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4iLCJnZXRBdXRoRm9yU2Vzc2lvblRva2VuIiwiVU5LTk9XTl9FUlJPUiIsImF1dGhvcml6YXRpb24iLCJoZWFkZXIiLCJhdXRoUHJlZml4IiwibWF0Y2giLCJ0b0xvd2VyQ2FzZSIsImVuY29kZWRBdXRoIiwic3Vic3RyaW5nIiwiY3JlZGVudGlhbHMiLCJkZWNvZGVCYXNlNjQiLCJqc0tleVByZWZpeCIsIm1hdGNoS2V5Iiwic3RyIiwiYWxsb3dDcm9zc0RvbWFpbiIsImFsbG93SGVhZGVycyIsImpvaW4iLCJiYXNlT3JpZ2lucyIsImFsbG93T3JpZ2luIiwicmVxdWVzdE9yaWdpbiIsIm9yaWdpbiIsImFsbG93T3JpZ2lucyIsIm1ldGhvZCIsInNlbmRTdGF0dXMiLCJhbGxvd01ldGhvZE92ZXJyaWRlIiwiX21ldGhvZCIsIm9yaWdpbmFsTWV0aG9kIiwiaGFuZGxlUGFyc2VFcnJvcnMiLCJlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyIiwiaHR0cFN0YXR1cyIsIk9CSkVDVF9OT1RfRk9VTkQiLCJwcm9jZXNzIiwiZW52IiwiVEVTVElORyIsInN0YWNrIiwiZW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImVuZCIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwicmVxdWVzdCIsInJlc29sdmUiLCJhZGRSYXRlTGltaXQiLCJyb3V0ZSIsImNsb3VkIiwiUmF0ZUxpbWl0T3B0aW9ucyIsInJlZGlzU3RvcmUiLCJjb25uZWN0aW9uUHJvbWlzZSIsInJlZGlzVXJsIiwiY2xpZW50IiwiY3JlYXRlQ2xpZW50IiwiaXNPcGVuIiwiY29ubmVjdCIsIl9jb25maWciLCJSZWRpc1N0b3JlIiwic2VuZENvbW1hbmQiLCJhcmdzIiwidHJhbnNmb3JtUGF0aCIsInJlcXVlc3RQYXRoIiwicHVzaCIsInBhdGhUb1JlZ2V4cCIsInJhdGVMaW1pdCIsIndpbmRvd01zIiwicmVxdWVzdFRpbWVXaW5kb3ciLCJtYXgiLCJyZXF1ZXN0Q291bnQiLCJlcnJvclJlc3BvbnNlTWVzc2FnZSIsInJlc3BvbnNlIiwib3B0aW9ucyIsInNraXAiLCJfcmVxdWVzdCRhdXRoIiwiaW5jbHVkZUludGVybmFsUmVxdWVzdHMiLCJpbmNsdWRlTWFzdGVyS2V5IiwicmVxdWVzdE1ldGhvZHMiLCJBcnJheSIsImlzQXJyYXkiLCJyZWdFeHAiLCJrZXlHZW5lcmF0b3IiLCJ6b25lIiwiU2VydmVyIiwiUmF0ZUxpbWl0Wm9uZSIsImdsb2JhbCIsInRva2VuIiwic2Vzc2lvbiIsIl9yZXF1ZXN0JGF1dGgyIiwiaWQiLCJwdXQiLCJwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kiLCJkYXRhYmFzZSIsImFkYXB0ZXIiLCJNb25nb1N0b3JhZ2VBZGFwdGVyIiwiUG9zdGdyZXNTdG9yYWdlQWRhcHRlciIsInJlcXVlc3RJZCIsInBhdGhzIiwidHRsIiwiaWRlbXBvdGVuY3lPcHRpb25zIiwicmVxUGF0aCIsInJlcGxhY2UiLCJyZWdleCIsImNoYXJBdCIsImV4cGlyeURhdGUiLCJEYXRlIiwic2V0U2Vjb25kcyIsImdldFNlY29uZHMiLCJyZXN0IiwiY3JlYXRlIiwibWFzdGVyIiwicmVxSWQiLCJleHBpcmUiLCJfZW5jb2RlIiwiY2F0Y2giLCJEVVBMSUNBVEVfVkFMVUUiLCJEVVBMSUNBVEVfUkVRVUVTVCIsIklOVkFMSURfSlNPTiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9taWRkbGV3YXJlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXBwQ2FjaGUgZnJvbSAnLi9jYWNoZSc7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgYXV0aCBmcm9tICcuL0F1dGgnO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuL0NvbmZpZyc7XG5pbXBvcnQgQ2xpZW50U0RLIGZyb20gJy4vQ2xpZW50U0RLJztcbmltcG9ydCBkZWZhdWx0TG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCByZXN0IGZyb20gJy4vcmVzdCc7XG5pbXBvcnQgTW9uZ29TdG9yYWdlQWRhcHRlciBmcm9tICcuL0FkYXB0ZXJzL1N0b3JhZ2UvTW9uZ28vTW9uZ29TdG9yYWdlQWRhcHRlcic7XG5pbXBvcnQgUG9zdGdyZXNTdG9yYWdlQWRhcHRlciBmcm9tICcuL0FkYXB0ZXJzL1N0b3JhZ2UvUG9zdGdyZXMvUG9zdGdyZXNTdG9yYWdlQWRhcHRlcic7XG5pbXBvcnQgcmF0ZUxpbWl0IGZyb20gJ2V4cHJlc3MtcmF0ZS1saW1pdCc7XG5pbXBvcnQgeyBSYXRlTGltaXRPcHRpb25zIH0gZnJvbSAnLi9PcHRpb25zL0RlZmluaXRpb25zJztcbmltcG9ydCB7IHBhdGhUb1JlZ2V4cCB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcbmltcG9ydCBSZWRpc1N0b3JlIGZyb20gJ3JhdGUtbGltaXQtcmVkaXMnO1xuaW1wb3J0IHsgY3JlYXRlQ2xpZW50IH0gZnJvbSAncmVkaXMnO1xuaW1wb3J0IHsgQmxvY2tMaXN0LCBpc0lQdjQgfSBmcm9tICduZXQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTExPV0VEX0hFQURFUlMgPVxuICAnWC1QYXJzZS1NYXN0ZXItS2V5LCBYLVBhcnNlLVJFU1QtQVBJLUtleSwgWC1QYXJzZS1KYXZhc2NyaXB0LUtleSwgWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCwgWC1QYXJzZS1DbGllbnQtVmVyc2lvbiwgWC1QYXJzZS1TZXNzaW9uLVRva2VuLCBYLVJlcXVlc3RlZC1XaXRoLCBYLVBhcnNlLVJldm9jYWJsZS1TZXNzaW9uLCBYLVBhcnNlLVJlcXVlc3QtSWQsIENvbnRlbnQtVHlwZSwgUHJhZ21hLCBDYWNoZS1Db250cm9sJztcblxuY29uc3QgZ2V0TW91bnRGb3JSZXF1ZXN0ID0gZnVuY3Rpb24gKHJlcSkge1xuICBjb25zdCBtb3VudFBhdGhMZW5ndGggPSByZXEub3JpZ2luYWxVcmwubGVuZ3RoIC0gcmVxLnVybC5sZW5ndGg7XG4gIGNvbnN0IG1vdW50UGF0aCA9IHJlcS5vcmlnaW5hbFVybC5zbGljZSgwLCBtb3VudFBhdGhMZW5ndGgpO1xuICByZXR1cm4gcmVxLnByb3RvY29sICsgJzovLycgKyByZXEuZ2V0KCdob3N0JykgKyBtb3VudFBhdGg7XG59O1xuXG5jb25zdCBnZXRCbG9ja0xpc3QgPSAoaXBSYW5nZUxpc3QsIHN0b3JlKSA9PiB7XG4gIGlmIChzdG9yZS5nZXQoJ2Jsb2NrTGlzdCcpKSByZXR1cm4gc3RvcmUuZ2V0KCdibG9ja0xpc3QnKTtcbiAgY29uc3QgYmxvY2tMaXN0ID0gbmV3IEJsb2NrTGlzdCgpO1xuICBpcFJhbmdlTGlzdC5mb3JFYWNoKGZ1bGxJcCA9PiB7XG4gICAgaWYgKGZ1bGxJcCA9PT0gJzo6LzAnIHx8IGZ1bGxJcCA9PT0gJzo6Jykge1xuICAgICAgc3RvcmUuc2V0KCdhbGxvd0FsbElwdjYnLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZ1bGxJcCA9PT0gJzAuMC4wLjAvMCcgfHwgZnVsbElwID09PSAnMC4wLjAuMCcpIHtcbiAgICAgIHN0b3JlLnNldCgnYWxsb3dBbGxJcHY0JywgdHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IFtpcCwgbWFza10gPSBmdWxsSXAuc3BsaXQoJy8nKTtcbiAgICBpZiAoIW1hc2spIHtcbiAgICAgIGJsb2NrTGlzdC5hZGRBZGRyZXNzKGlwLCBpc0lQdjQoaXApID8gJ2lwdjQnIDogJ2lwdjYnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmxvY2tMaXN0LmFkZFN1Ym5ldChpcCwgTnVtYmVyKG1hc2spLCBpc0lQdjQoaXApID8gJ2lwdjQnIDogJ2lwdjYnKTtcbiAgICB9XG4gIH0pO1xuICBzdG9yZS5zZXQoJ2Jsb2NrTGlzdCcsIGJsb2NrTGlzdCk7XG4gIHJldHVybiBibG9ja0xpc3Q7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJcCA9IChpcCwgaXBSYW5nZUxpc3QsIHN0b3JlKSA9PiB7XG4gIGNvbnN0IGluY29taW5nSXBJc1Y0ID0gaXNJUHY0KGlwKTtcbiAgY29uc3QgYmxvY2tMaXN0ID0gZ2V0QmxvY2tMaXN0KGlwUmFuZ2VMaXN0LCBzdG9yZSk7XG5cbiAgaWYgKHN0b3JlLmdldChpcCkpIHJldHVybiB0cnVlO1xuICBpZiAoc3RvcmUuZ2V0KCdhbGxvd0FsbElwdjQnKSAmJiBpbmNvbWluZ0lwSXNWNCkgcmV0dXJuIHRydWU7XG4gIGlmIChzdG9yZS5nZXQoJ2FsbG93QWxsSXB2NicpICYmICFpbmNvbWluZ0lwSXNWNCkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IHJlc3VsdCA9IGJsb2NrTGlzdC5jaGVjayhpcCwgaW5jb21pbmdJcElzVjQgPyAnaXB2NCcgOiAnaXB2NicpO1xuXG4gIC8vIElmIHRoZSBpcCBpcyBpbiB0aGUgbGlzdCwgd2Ugc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUgc3RvcmVcbiAgLy8gc28gd2UgaGF2ZSBhIG9wdGltaXplZCBwYXRoIGZvciB0aGUgbmV4dCByZXF1ZXN0XG4gIGlmIChpcFJhbmdlTGlzdC5pbmNsdWRlcyhpcCkgJiYgcmVzdWx0KSB7XG4gICAgc3RvcmUuc2V0KGlwLCByZXN1bHQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBDaGVja3MgdGhhdCB0aGUgcmVxdWVzdCBpcyBhdXRob3JpemVkIGZvciB0aGlzIGFwcCBhbmQgY2hlY2tzIHVzZXJcbi8vIGF1dGggdG9vLlxuLy8gVGhlIGJvZHlwYXJzZXIgc2hvdWxkIHJ1biBiZWZvcmUgdGhpcyBtaWRkbGV3YXJlLlxuLy8gQWRkcyBpbmZvIHRvIHRoZSByZXF1ZXN0OlxuLy8gcmVxLmNvbmZpZyAtIHRoZSBDb25maWcgZm9yIHRoaXMgYXBwXG4vLyByZXEuYXV0aCAtIHRoZSBBdXRoIGZvciB0aGlzIHJlcXVlc3RcbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVQYXJzZUhlYWRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgdmFyIG1vdW50ID0gZ2V0TW91bnRGb3JSZXF1ZXN0KHJlcSk7XG5cbiAgbGV0IGNvbnRleHQgPSB7fTtcbiAgaWYgKHJlcS5nZXQoJ1gtUGFyc2UtQ2xvdWQtQ29udGV4dCcpICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgY29udGV4dCA9IEpTT04ucGFyc2UocmVxLmdldCgnWC1QYXJzZS1DbG91ZC1Db250ZXh0JykpO1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjb250ZXh0KSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgICAgdGhyb3cgJ0NvbnRleHQgaXMgbm90IGFuIG9iamVjdCc7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG1hbGZvcm1lZENvbnRleHQocmVxLCByZXMpO1xuICAgIH1cbiAgfVxuICB2YXIgaW5mbyA9IHtcbiAgICBhcHBJZDogcmVxLmdldCgnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCcpLFxuICAgIHNlc3Npb25Ub2tlbjogcmVxLmdldCgnWC1QYXJzZS1TZXNzaW9uLVRva2VuJyksXG4gICAgbWFzdGVyS2V5OiByZXEuZ2V0KCdYLVBhcnNlLU1hc3Rlci1LZXknKSxcbiAgICBtYWludGVuYW5jZUtleTogcmVxLmdldCgnWC1QYXJzZS1NYWludGVuYW5jZS1LZXknKSxcbiAgICBpbnN0YWxsYXRpb25JZDogcmVxLmdldCgnWC1QYXJzZS1JbnN0YWxsYXRpb24tSWQnKSxcbiAgICBjbGllbnRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtQ2xpZW50LUtleScpLFxuICAgIGphdmFzY3JpcHRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtSmF2YXNjcmlwdC1LZXknKSxcbiAgICBkb3ROZXRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtV2luZG93cy1LZXknKSxcbiAgICByZXN0QVBJS2V5OiByZXEuZ2V0KCdYLVBhcnNlLVJFU1QtQVBJLUtleScpLFxuICAgIGNsaWVudFZlcnNpb246IHJlcS5nZXQoJ1gtUGFyc2UtQ2xpZW50LVZlcnNpb24nKSxcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICB9O1xuXG4gIHZhciBiYXNpY0F1dGggPSBodHRwQXV0aChyZXEpO1xuXG4gIGlmIChiYXNpY0F1dGgpIHtcbiAgICB2YXIgYmFzaWNBdXRoQXBwSWQgPSBiYXNpY0F1dGguYXBwSWQ7XG4gICAgaWYgKEFwcENhY2hlLmdldChiYXNpY0F1dGhBcHBJZCkpIHtcbiAgICAgIGluZm8uYXBwSWQgPSBiYXNpY0F1dGhBcHBJZDtcbiAgICAgIGluZm8ubWFzdGVyS2V5ID0gYmFzaWNBdXRoLm1hc3RlcktleSB8fCBpbmZvLm1hc3RlcktleTtcbiAgICAgIGluZm8uamF2YXNjcmlwdEtleSA9IGJhc2ljQXV0aC5qYXZhc2NyaXB0S2V5IHx8IGluZm8uamF2YXNjcmlwdEtleTtcbiAgICB9XG4gIH1cblxuICBpZiAocmVxLmJvZHkpIHtcbiAgICAvLyBVbml0eSBTREsgc2VuZHMgYSBfbm9Cb2R5IGtleSB3aGljaCBuZWVkcyB0byBiZSByZW1vdmVkLlxuICAgIC8vIFVuY2xlYXIgYXQgdGhpcyBwb2ludCBpZiBhY3Rpb24gbmVlZHMgdG8gYmUgdGFrZW4uXG4gICAgZGVsZXRlIHJlcS5ib2R5Ll9ub0JvZHk7XG4gIH1cblxuICB2YXIgZmlsZVZpYUpTT04gPSBmYWxzZTtcblxuICBpZiAoIWluZm8uYXBwSWQgfHwgIUFwcENhY2hlLmdldChpbmZvLmFwcElkKSkge1xuICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCB0aGUgYXBwIGlkIG9uIHRoZSBib2R5LlxuICAgIGlmIChyZXEuYm9keSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgLy8gVGhlIG9ubHkgY2hhbmNlIHRvIGZpbmQgdGhlIGFwcCBpZCBpcyBpZiB0aGlzIGlzIGEgZmlsZVxuICAgICAgLy8gdXBsb2FkIHRoYXQgYWN0dWFsbHkgaXMgYSBKU09OIGJvZHkuIFNvIHRyeSB0byBwYXJzZSBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJzZS1jb21tdW5pdHkvcGFyc2Utc2VydmVyL2lzc3Vlcy82NTg5XG4gICAgICAvLyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQgdGhlIGNsaWVudCBpcyB0cnlpbmcgdG8gdXBsb2FkIGEgZmlsZSBidXQgZm9yZ290XG4gICAgICAvLyB0byBwcm92aWRlIHgtcGFyc2UtYXBwLWlkIGluIGhlYWRlciBhbmQgcGFyc2UgYSBiaW5hcnkgZmlsZSB3aWxsIGZhaWxcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcS5ib2R5ID0gSlNPTi5wYXJzZShyZXEuYm9keSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBpbnZhbGlkUmVxdWVzdChyZXEsIHJlcyk7XG4gICAgICB9XG4gICAgICBmaWxlVmlhSlNPTiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlcS5ib2R5KSB7XG4gICAgICBkZWxldGUgcmVxLmJvZHkuX1Jldm9jYWJsZVNlc3Npb247XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcmVxLmJvZHkgJiZcbiAgICAgIHJlcS5ib2R5Ll9BcHBsaWNhdGlvbklkICYmXG4gICAgICBBcHBDYWNoZS5nZXQocmVxLmJvZHkuX0FwcGxpY2F0aW9uSWQpICYmXG4gICAgICAoIWluZm8ubWFzdGVyS2V5IHx8IEFwcENhY2hlLmdldChyZXEuYm9keS5fQXBwbGljYXRpb25JZCkubWFzdGVyS2V5ID09PSBpbmZvLm1hc3RlcktleSlcbiAgICApIHtcbiAgICAgIGluZm8uYXBwSWQgPSByZXEuYm9keS5fQXBwbGljYXRpb25JZDtcbiAgICAgIGluZm8uamF2YXNjcmlwdEtleSA9IHJlcS5ib2R5Ll9KYXZhU2NyaXB0S2V5IHx8ICcnO1xuICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9BcHBsaWNhdGlvbklkO1xuICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9KYXZhU2NyaXB0S2V5O1xuICAgICAgLy8gVE9ETzogdGVzdCB0aGF0IHRoZSBSRVNUIEFQSSBmb3JtYXRzIGdlbmVyYXRlZCBieSB0aGUgb3RoZXJcbiAgICAgIC8vIFNES3MgYXJlIGhhbmRsZWQgb2tcbiAgICAgIGlmIChyZXEuYm9keS5fQ2xpZW50VmVyc2lvbikge1xuICAgICAgICBpbmZvLmNsaWVudFZlcnNpb24gPSByZXEuYm9keS5fQ2xpZW50VmVyc2lvbjtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9DbGllbnRWZXJzaW9uO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5ib2R5Ll9JbnN0YWxsYXRpb25JZCkge1xuICAgICAgICBpbmZvLmluc3RhbGxhdGlvbklkID0gcmVxLmJvZHkuX0luc3RhbGxhdGlvbklkO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX0luc3RhbGxhdGlvbklkO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5ib2R5Ll9TZXNzaW9uVG9rZW4pIHtcbiAgICAgICAgaW5mby5zZXNzaW9uVG9rZW4gPSByZXEuYm9keS5fU2Vzc2lvblRva2VuO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX1Nlc3Npb25Ub2tlbjtcbiAgICAgIH1cbiAgICAgIGlmIChyZXEuYm9keS5fTWFzdGVyS2V5KSB7XG4gICAgICAgIGluZm8ubWFzdGVyS2V5ID0gcmVxLmJvZHkuX01hc3RlcktleTtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9NYXN0ZXJLZXk7XG4gICAgICB9XG4gICAgICBpZiAocmVxLmJvZHkuX2NvbnRleHQpIHtcbiAgICAgICAgaWYgKHJlcS5ib2R5Ll9jb250ZXh0IGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgaW5mby5jb250ZXh0ID0gcmVxLmJvZHkuX2NvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGluZm8uY29udGV4dCA9IEpTT04ucGFyc2UocmVxLmJvZHkuX2NvbnRleHQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbmZvLmNvbnRleHQpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICAgICAgICB0aHJvdyAnQ29udGV4dCBpcyBub3QgYW4gb2JqZWN0JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFsZm9ybWVkQ29udGV4dChyZXEsIHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSByZXEuYm9keS5fY29udGV4dDtcbiAgICAgIH1cbiAgICAgIGlmIChyZXEuYm9keS5fQ29udGVudFR5cGUpIHtcbiAgICAgICAgcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gcmVxLmJvZHkuX0NvbnRlbnRUeXBlO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX0NvbnRlbnRUeXBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlcXVlc3QocmVxLCByZXMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbmZvLnNlc3Npb25Ub2tlbiAmJiB0eXBlb2YgaW5mby5zZXNzaW9uVG9rZW4gIT09ICdzdHJpbmcnKSB7XG4gICAgaW5mby5zZXNzaW9uVG9rZW4gPSBpbmZvLnNlc3Npb25Ub2tlbi50b1N0cmluZygpO1xuICB9XG5cbiAgaWYgKGluZm8uY2xpZW50VmVyc2lvbikge1xuICAgIGluZm8uY2xpZW50U0RLID0gQ2xpZW50U0RLLmZyb21TdHJpbmcoaW5mby5jbGllbnRWZXJzaW9uKTtcbiAgfVxuXG4gIGlmIChmaWxlVmlhSlNPTikge1xuICAgIHJlcS5maWxlRGF0YSA9IHJlcS5ib2R5LmZpbGVEYXRhO1xuICAgIC8vIFdlIG5lZWQgdG8gcmVwb3B1bGF0ZSByZXEuYm9keSB3aXRoIGEgYnVmZmVyXG4gICAgdmFyIGJhc2U2NCA9IHJlcS5ib2R5LmJhc2U2NDtcbiAgICByZXEuYm9keSA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICB9XG5cbiAgY29uc3QgY2xpZW50SXAgPSBnZXRDbGllbnRJcChyZXEpO1xuICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KGluZm8uYXBwSWQsIG1vdW50KTtcbiAgaWYgKGNvbmZpZy5zdGF0ZSAmJiBjb25maWcuc3RhdGUgIT09ICdvaycpIHtcbiAgICByZXMuc3RhdHVzKDUwMCk7XG4gICAgcmVzLmpzb24oe1xuICAgICAgY29kZTogUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgZXJyb3I6IGBJbnZhbGlkIHNlcnZlciBzdGF0ZTogJHtjb25maWcuc3RhdGV9YCxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpbmZvLmFwcCA9IEFwcENhY2hlLmdldChpbmZvLmFwcElkKTtcbiAgcmVxLmNvbmZpZyA9IGNvbmZpZztcbiAgcmVxLmNvbmZpZy5oZWFkZXJzID0gcmVxLmhlYWRlcnMgfHwge307XG4gIHJlcS5jb25maWcuaXAgPSBjbGllbnRJcDtcbiAgcmVxLmluZm8gPSBpbmZvO1xuXG4gIGNvbnN0IGlzTWFpbnRlbmFuY2UgPVxuICAgIHJlcS5jb25maWcubWFpbnRlbmFuY2VLZXkgJiYgaW5mby5tYWludGVuYW5jZUtleSA9PT0gcmVxLmNvbmZpZy5tYWludGVuYW5jZUtleTtcbiAgaWYgKGlzTWFpbnRlbmFuY2UpIHtcbiAgICBpZiAoY2hlY2tJcChjbGllbnRJcCwgcmVxLmNvbmZpZy5tYWludGVuYW5jZUtleUlwcyB8fCBbXSwgcmVxLmNvbmZpZy5tYWludGVuYW5jZUtleUlwc1N0b3JlKSkge1xuICAgICAgcmVxLmF1dGggPSBuZXcgYXV0aC5BdXRoKHtcbiAgICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgICAgaXNNYWludGVuYW5jZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgbmV4dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBsb2cgPSByZXEuY29uZmlnPy5sb2dnZXJDb250cm9sbGVyIHx8IGRlZmF1bHRMb2dnZXI7XG4gICAgbG9nLmVycm9yKFxuICAgICAgYFJlcXVlc3QgdXNpbmcgbWFpbnRlbmFuY2Uga2V5IHJlamVjdGVkIGFzIHRoZSByZXF1ZXN0IElQIGFkZHJlc3MgJyR7Y2xpZW50SXB9JyBpcyBub3Qgc2V0IGluIFBhcnNlIFNlcnZlciBvcHRpb24gJ21haW50ZW5hbmNlS2V5SXBzJy5gXG4gICAgKTtcbiAgfVxuXG4gIGxldCBpc01hc3RlciA9IGluZm8ubWFzdGVyS2V5ID09PSByZXEuY29uZmlnLm1hc3RlcktleTtcblxuICBpZiAoaXNNYXN0ZXIgJiYgIWNoZWNrSXAoY2xpZW50SXAsIHJlcS5jb25maWcubWFzdGVyS2V5SXBzIHx8IFtdLCByZXEuY29uZmlnLm1hc3RlcktleUlwc1N0b3JlKSkge1xuICAgIGNvbnN0IGxvZyA9IHJlcS5jb25maWc/LmxvZ2dlckNvbnRyb2xsZXIgfHwgZGVmYXVsdExvZ2dlcjtcbiAgICBsb2cuZXJyb3IoXG4gICAgICBgUmVxdWVzdCB1c2luZyBtYXN0ZXIga2V5IHJlamVjdGVkIGFzIHRoZSByZXF1ZXN0IElQIGFkZHJlc3MgJyR7Y2xpZW50SXB9JyBpcyBub3Qgc2V0IGluIFBhcnNlIFNlcnZlciBvcHRpb24gJ21hc3RlcktleUlwcycuYFxuICAgICk7XG4gICAgaXNNYXN0ZXIgPSBmYWxzZTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgIGVycm9yLnN0YXR1cyA9IDQwMztcbiAgICBlcnJvci5tZXNzYWdlID0gYHVuYXV0aG9yaXplZGA7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBpZiAoaXNNYXN0ZXIpIHtcbiAgICByZXEuYXV0aCA9IG5ldyBhdXRoLkF1dGgoe1xuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBpc01hc3RlcjogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlUmF0ZUxpbWl0KHJlcSwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIHZhciBpc1JlYWRPbmx5TWFzdGVyID0gaW5mby5tYXN0ZXJLZXkgPT09IHJlcS5jb25maWcucmVhZE9ubHlNYXN0ZXJLZXk7XG4gIGlmIChcbiAgICB0eXBlb2YgcmVxLmNvbmZpZy5yZWFkT25seU1hc3RlcktleSAhPSAndW5kZWZpbmVkJyAmJlxuICAgIHJlcS5jb25maWcucmVhZE9ubHlNYXN0ZXJLZXkgJiZcbiAgICBpc1JlYWRPbmx5TWFzdGVyXG4gICkge1xuICAgIHJlcS5hdXRoID0gbmV3IGF1dGguQXV0aCh7XG4gICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgIGlzTWFzdGVyOiB0cnVlLFxuICAgICAgaXNSZWFkT25seTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlUmF0ZUxpbWl0KHJlcSwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIC8vIENsaWVudCBrZXlzIGFyZSBub3QgcmVxdWlyZWQgaW4gcGFyc2Utc2VydmVyLCBidXQgaWYgYW55IGhhdmUgYmVlbiBjb25maWd1cmVkIGluIHRoZSBzZXJ2ZXIsIHZhbGlkYXRlIHRoZW1cbiAgLy8gIHRvIHByZXNlcnZlIG9yaWdpbmFsIGJlaGF2aW9yLlxuICBjb25zdCBrZXlzID0gWydjbGllbnRLZXknLCAnamF2YXNjcmlwdEtleScsICdkb3ROZXRLZXknLCAncmVzdEFQSUtleSddO1xuICBjb25zdCBvbmVLZXlDb25maWd1cmVkID0ga2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcmVxLmNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQ7XG4gIH0pO1xuICBjb25zdCBvbmVLZXlNYXRjaGVzID0ga2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcmVxLmNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQgJiYgaW5mb1trZXldID09PSByZXEuY29uZmlnW2tleV07XG4gIH0pO1xuXG4gIGlmIChvbmVLZXlDb25maWd1cmVkICYmICFvbmVLZXlNYXRjaGVzKSB7XG4gICAgcmV0dXJuIGludmFsaWRSZXF1ZXN0KHJlcSwgcmVzKTtcbiAgfVxuXG4gIGlmIChyZXEudXJsID09ICcvbG9naW4nKSB7XG4gICAgZGVsZXRlIGluZm8uc2Vzc2lvblRva2VuO1xuICB9XG5cbiAgaWYgKHJlcS51c2VyRnJvbUpXVCkge1xuICAgIHJlcS5hdXRoID0gbmV3IGF1dGguQXV0aCh7XG4gICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgIHVzZXI6IHJlcS51c2VyRnJvbUpXVCxcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlUmF0ZUxpbWl0KHJlcSwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIGlmICghaW5mby5zZXNzaW9uVG9rZW4pIHtcbiAgICByZXEuYXV0aCA9IG5ldyBhdXRoLkF1dGgoe1xuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgfSk7XG4gIH1cbiAgaGFuZGxlUmF0ZUxpbWl0KHJlcSwgcmVzLCBuZXh0KTtcbn1cblxuY29uc3QgaGFuZGxlUmF0ZUxpbWl0ID0gYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gIGNvbnN0IHJhdGVMaW1pdHMgPSByZXEuY29uZmlnLnJhdGVMaW1pdHMgfHwgW107XG4gIHRyeSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICByYXRlTGltaXRzLm1hcChhc3luYyBsaW1pdCA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGhFeHAgPSBuZXcgUmVnRXhwKGxpbWl0LnBhdGgpO1xuICAgICAgICBpZiAocGF0aEV4cC50ZXN0KHJlcS51cmwpKSB7XG4gICAgICAgICAgYXdhaXQgbGltaXQuaGFuZGxlcihyZXEsIHJlcywgZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgaWYgKGVyci5jb2RlID09PSBQYXJzZS5FcnJvci5DT05ORUNUSU9OX0ZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXEuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgJ0FuIHVua25vd24gZXJyb3Igb2NjdXJlZCB3aGVuIGF0dGVtcHRpbmcgdG8gYXBwbHkgdGhlIHJhdGUgbGltaXRlcjogJyxcbiAgICAgICAgICAgICAgICBlcnJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNDI5KTtcbiAgICByZXMuanNvbih7IGNvZGU6IFBhcnNlLkVycm9yLkNPTk5FQ1RJT05fRkFJTEVELCBlcnJvcjogZXJyb3IubWVzc2FnZSB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgbmV4dCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVBhcnNlU2Vzc2lvbiA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGluZm8gPSByZXEuaW5mbztcbiAgICBpZiAocmVxLmF1dGggfHwgcmVxLnVybCA9PT0gJy9zZXNzaW9ucy9tZScpIHtcbiAgICAgIG5leHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHJlcXVlc3RBdXRoID0gbnVsbDtcbiAgICBpZiAoXG4gICAgICBpbmZvLnNlc3Npb25Ub2tlbiAmJlxuICAgICAgcmVxLnVybCA9PT0gJy91cGdyYWRlVG9SZXZvY2FibGVTZXNzaW9uJyAmJlxuICAgICAgaW5mby5zZXNzaW9uVG9rZW4uaW5kZXhPZigncjonKSAhPSAwXG4gICAgKSB7XG4gICAgICByZXF1ZXN0QXV0aCA9IGF3YWl0IGF1dGguZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbih7XG4gICAgICAgIGNvbmZpZzogcmVxLmNvbmZpZyxcbiAgICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgIHNlc3Npb25Ub2tlbjogaW5mby5zZXNzaW9uVG9rZW4sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdEF1dGggPSBhd2FpdCBhdXRoLmdldEF1dGhGb3JTZXNzaW9uVG9rZW4oe1xuICAgICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICAgIGluc3RhbGxhdGlvbklkOiBpbmZvLmluc3RhbGxhdGlvbklkLFxuICAgICAgICBzZXNzaW9uVG9rZW46IGluZm8uc2Vzc2lvblRva2VuLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJlcS5hdXRoID0gcmVxdWVzdEF1dGg7XG4gICAgbmV4dCgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVE9ETzogRGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGVycm9yIHNjZW5hcmlvLlxuICAgIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlci5lcnJvcignZXJyb3IgZ2V0dGluZyBhdXRoIGZvciBzZXNzaW9uVG9rZW4nLCBlcnJvcik7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlVOS05PV05fRVJST1IsIGVycm9yKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0Q2xpZW50SXAocmVxKSB7XG4gIHJldHVybiByZXEuaXA7XG59XG5cbmZ1bmN0aW9uIGh0dHBBdXRoKHJlcSkge1xuICBpZiAoIShyZXEucmVxIHx8IHJlcSkuaGVhZGVycy5hdXRob3JpemF0aW9uKSByZXR1cm47XG5cbiAgdmFyIGhlYWRlciA9IChyZXEucmVxIHx8IHJlcSkuaGVhZGVycy5hdXRob3JpemF0aW9uO1xuICB2YXIgYXBwSWQsIG1hc3RlcktleSwgamF2YXNjcmlwdEtleTtcblxuICAvLyBwYXJzZSBoZWFkZXJcbiAgdmFyIGF1dGhQcmVmaXggPSAnYmFzaWMgJztcblxuICB2YXIgbWF0Y2ggPSBoZWFkZXIudG9Mb3dlckNhc2UoKS5pbmRleE9mKGF1dGhQcmVmaXgpO1xuXG4gIGlmIChtYXRjaCA9PSAwKSB7XG4gICAgdmFyIGVuY29kZWRBdXRoID0gaGVhZGVyLnN1YnN0cmluZyhhdXRoUHJlZml4Lmxlbmd0aCwgaGVhZGVyLmxlbmd0aCk7XG4gICAgdmFyIGNyZWRlbnRpYWxzID0gZGVjb2RlQmFzZTY0KGVuY29kZWRBdXRoKS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKGNyZWRlbnRpYWxzLmxlbmd0aCA9PSAyKSB7XG4gICAgICBhcHBJZCA9IGNyZWRlbnRpYWxzWzBdO1xuICAgICAgdmFyIGtleSA9IGNyZWRlbnRpYWxzWzFdO1xuXG4gICAgICB2YXIganNLZXlQcmVmaXggPSAnamF2YXNjcmlwdC1rZXk9JztcblxuICAgICAgdmFyIG1hdGNoS2V5ID0ga2V5LmluZGV4T2YoanNLZXlQcmVmaXgpO1xuICAgICAgaWYgKG1hdGNoS2V5ID09IDApIHtcbiAgICAgICAgamF2YXNjcmlwdEtleSA9IGtleS5zdWJzdHJpbmcoanNLZXlQcmVmaXgubGVuZ3RoLCBrZXkubGVuZ3RoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hc3RlcktleSA9IGtleTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBhcHBJZDogYXBwSWQsIG1hc3RlcktleTogbWFzdGVyS2V5LCBqYXZhc2NyaXB0S2V5OiBqYXZhc2NyaXB0S2V5IH07XG59XG5cbmZ1bmN0aW9uIGRlY29kZUJhc2U2NChzdHIpIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxvd0Nyb3NzRG9tYWluKGFwcElkKSB7XG4gIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KGFwcElkLCBnZXRNb3VudEZvclJlcXVlc3QocmVxKSk7XG4gICAgbGV0IGFsbG93SGVhZGVycyA9IERFRkFVTFRfQUxMT1dFRF9IRUFERVJTO1xuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmFsbG93SGVhZGVycykge1xuICAgICAgYWxsb3dIZWFkZXJzICs9IGAsICR7Y29uZmlnLmFsbG93SGVhZGVycy5qb2luKCcsICcpfWA7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZU9yaWdpbnMgPVxuICAgICAgdHlwZW9mIGNvbmZpZz8uYWxsb3dPcmlnaW4gPT09ICdzdHJpbmcnID8gW2NvbmZpZy5hbGxvd09yaWdpbl0gOiBjb25maWc/LmFsbG93T3JpZ2luID8/IFsnKiddO1xuICAgIGNvbnN0IHJlcXVlc3RPcmlnaW4gPSByZXEuaGVhZGVycy5vcmlnaW47XG4gICAgY29uc3QgYWxsb3dPcmlnaW5zID1cbiAgICAgIHJlcXVlc3RPcmlnaW4gJiYgYmFzZU9yaWdpbnMuaW5jbHVkZXMocmVxdWVzdE9yaWdpbikgPyByZXF1ZXN0T3JpZ2luIDogYmFzZU9yaWdpbnNbMF07XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgYWxsb3dPcmlnaW5zKTtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCxQVVQsUE9TVCxERUxFVEUsT1BUSU9OUycpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCBhbGxvd0hlYWRlcnMpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzJywgJ1gtUGFyc2UtSm9iLVN0YXR1cy1JZCwgWC1QYXJzZS1QdXNoLVN0YXR1cy1JZCcpO1xuICAgIC8vIGludGVyY2VwdCBPUFRJT05TIG1ldGhvZFxuICAgIGlmICgnT1BUSU9OUycgPT0gcmVxLm1ldGhvZCkge1xuICAgICAgcmVzLnNlbmRTdGF0dXMoMjAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dCgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbG93TWV0aG9kT3ZlcnJpZGUocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKHJlcS5tZXRob2QgPT09ICdQT1NUJyAmJiByZXEuYm9keS5fbWV0aG9kKSB7XG4gICAgcmVxLm9yaWdpbmFsTWV0aG9kID0gcmVxLm1ldGhvZDtcbiAgICByZXEubWV0aG9kID0gcmVxLmJvZHkuX21ldGhvZDtcbiAgICBkZWxldGUgcmVxLmJvZHkuX21ldGhvZDtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVQYXJzZUVycm9ycyhlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGxvZyA9IChyZXEuY29uZmlnICYmIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlcikgfHwgZGVmYXVsdExvZ2dlcjtcbiAgaWYgKGVyciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgaWYgKHJlcS5jb25maWcgJiYgcmVxLmNvbmZpZy5lbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgIH1cbiAgICBsZXQgaHR0cFN0YXR1cztcbiAgICAvLyBUT0RPOiBmaWxsIG91dCB0aGlzIG1hcHBpbmdcbiAgICBzd2l0Y2ggKGVyci5jb2RlKSB7XG4gICAgICBjYXNlIFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUjpcbiAgICAgICAgaHR0cFN0YXR1cyA9IDUwMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQ6XG4gICAgICAgIGh0dHBTdGF0dXMgPSA0MDQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaHR0cFN0YXR1cyA9IDQwMDtcbiAgICB9XG4gICAgcmVzLnN0YXR1cyhodHRwU3RhdHVzKTtcbiAgICByZXMuanNvbih7IGNvZGU6IGVyci5jb2RlLCBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgbG9nLmVycm9yKCdQYXJzZSBlcnJvcjogJywgZXJyKTtcbiAgfSBlbHNlIGlmIChlcnIuc3RhdHVzICYmIGVyci5tZXNzYWdlKSB7XG4gICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzKTtcbiAgICByZXMuanNvbih7IGVycm9yOiBlcnIubWVzc2FnZSB9KTtcbiAgICBpZiAoIShwcm9jZXNzICYmIHByb2Nlc3MuZW52LlRFU1RJTkcpKSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxvZy5lcnJvcignVW5jYXVnaHQgaW50ZXJuYWwgc2VydmVyIGVycm9yLicsIGVyciwgZXJyLnN0YWNrKTtcbiAgICByZXMuc3RhdHVzKDUwMCk7XG4gICAgcmVzLmpzb24oe1xuICAgICAgY29kZTogUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgbWVzc2FnZTogJ0ludGVybmFsIHNlcnZlciBlcnJvci4nLFxuICAgIH0pO1xuICAgIGlmICghKHByb2Nlc3MgJiYgcHJvY2Vzcy5lbnYuVEVTVElORykpIHtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKCFyZXEuYXV0aC5pc01hc3Rlcikge1xuICAgIHJlcy5zdGF0dXMoNDAzKTtcbiAgICByZXMuZW5kKCd7XCJlcnJvclwiOlwidW5hdXRob3JpemVkOiBtYXN0ZXIga2V5IGlzIHJlcXVpcmVkXCJ9Jyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIG5leHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzKHJlcXVlc3QpIHtcbiAgaWYgKCFyZXF1ZXN0LmF1dGguaXNNYXN0ZXIpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgIGVycm9yLnN0YXR1cyA9IDQwMztcbiAgICBlcnJvci5tZXNzYWdlID0gJ3VuYXV0aG9yaXplZDogbWFzdGVyIGtleSBpcyByZXF1aXJlZCc7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5leHBvcnQgY29uc3QgYWRkUmF0ZUxpbWl0ID0gKHJvdXRlLCBjb25maWcsIGNsb3VkKSA9PiB7XG4gIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZyA9IENvbmZpZy5nZXQoY29uZmlnKTtcbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiByb3V0ZSkge1xuICAgIGlmICghUmF0ZUxpbWl0T3B0aW9uc1trZXldKSB7XG4gICAgICB0aHJvdyBgSW52YWxpZCByYXRlIGxpbWl0IG9wdGlvbiBcIiR7a2V5fVwiYDtcbiAgICB9XG4gIH1cbiAgaWYgKCFjb25maWcucmF0ZUxpbWl0cykge1xuICAgIGNvbmZpZy5yYXRlTGltaXRzID0gW107XG4gIH1cbiAgY29uc3QgcmVkaXNTdG9yZSA9IHtcbiAgICBjb25uZWN0aW9uUHJvbWlzZTogUHJvbWlzZS5yZXNvbHZlKCksXG4gICAgc3RvcmU6IG51bGwsXG4gIH07XG4gIGlmIChyb3V0ZS5yZWRpc1VybCkge1xuICAgIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUNsaWVudCh7XG4gICAgICB1cmw6IHJvdXRlLnJlZGlzVXJsLFxuICAgIH0pO1xuICAgIHJlZGlzU3RvcmUuY29ubmVjdGlvblByb21pc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoY2xpZW50LmlzT3Blbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBjbGllbnQuY29ubmVjdCgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBsb2cgPSBjb25maWc/LmxvZ2dlckNvbnRyb2xsZXIgfHwgZGVmYXVsdExvZ2dlcjtcbiAgICAgICAgbG9nLmVycm9yKGBDb3VsZCBub3QgY29ubmVjdCB0byByZWRpc1VSTCBpbiByYXRlIGxpbWl0OiAke2V9YCk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZWRpc1N0b3JlLmNvbm5lY3Rpb25Qcm9taXNlKCk7XG4gICAgcmVkaXNTdG9yZS5zdG9yZSA9IG5ldyBSZWRpc1N0b3JlKHtcbiAgICAgIHNlbmRDb21tYW5kOiBhc3luYyAoLi4uYXJncykgPT4ge1xuICAgICAgICBhd2FpdCByZWRpc1N0b3JlLmNvbm5lY3Rpb25Qcm9taXNlKCk7XG4gICAgICAgIHJldHVybiBjbGllbnQuc2VuZENvbW1hbmQoYXJncyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGxldCB0cmFuc2Zvcm1QYXRoID0gcm91dGUucmVxdWVzdFBhdGguc3BsaXQoJy8qJykuam9pbignLyguKiknKTtcbiAgaWYgKHRyYW5zZm9ybVBhdGggPT09ICcqJykge1xuICAgIHRyYW5zZm9ybVBhdGggPSAnKC4qKSc7XG4gIH1cbiAgY29uZmlnLnJhdGVMaW1pdHMucHVzaCh7XG4gICAgcGF0aDogcGF0aFRvUmVnZXhwKHRyYW5zZm9ybVBhdGgpLFxuICAgIGhhbmRsZXI6IHJhdGVMaW1pdCh7XG4gICAgICB3aW5kb3dNczogcm91dGUucmVxdWVzdFRpbWVXaW5kb3csXG4gICAgICBtYXg6IHJvdXRlLnJlcXVlc3RDb3VudCxcbiAgICAgIG1lc3NhZ2U6IHJvdXRlLmVycm9yUmVzcG9uc2VNZXNzYWdlIHx8IFJhdGVMaW1pdE9wdGlvbnMuZXJyb3JSZXNwb25zZU1lc3NhZ2UuZGVmYXVsdCxcbiAgICAgIGhhbmRsZXI6IChyZXF1ZXN0LCByZXNwb25zZSwgbmV4dCwgb3B0aW9ucykgPT4ge1xuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuQ09OTkVDVElPTl9GQUlMRUQsXG4gICAgICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHNraXA6IHJlcXVlc3QgPT4ge1xuICAgICAgICBpZiAocmVxdWVzdC5pcCA9PT0gJzEyNy4wLjAuMScgJiYgIXJvdXRlLmluY2x1ZGVJbnRlcm5hbFJlcXVlc3RzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlLmluY2x1ZGVNYXN0ZXJLZXkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlLnJlcXVlc3RNZXRob2RzKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm91dGUucmVxdWVzdE1ldGhvZHMpKSB7XG4gICAgICAgICAgICBpZiAoIXJvdXRlLnJlcXVlc3RNZXRob2RzLmluY2x1ZGVzKHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChyb3V0ZS5yZXF1ZXN0TWV0aG9kcyk7XG4gICAgICAgICAgICBpZiAoIXJlZ0V4cC50ZXN0KHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcXVlc3QuYXV0aD8uaXNNYXN0ZXI7XG4gICAgICB9LFxuICAgICAga2V5R2VuZXJhdG9yOiBhc3luYyByZXF1ZXN0ID0+IHtcbiAgICAgICAgaWYgKHJvdXRlLnpvbmUgPT09IFBhcnNlLlNlcnZlci5SYXRlTGltaXRab25lLmdsb2JhbCkge1xuICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZy5hcHBJZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0b2tlbiA9IHJlcXVlc3QuaW5mby5zZXNzaW9uVG9rZW47XG4gICAgICAgIGlmIChyb3V0ZS56b25lID09PSBQYXJzZS5TZXJ2ZXIuUmF0ZUxpbWl0Wm9uZS5zZXNzaW9uICYmIHRva2VuKSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyb3V0ZS56b25lID09PSBQYXJzZS5TZXJ2ZXIuUmF0ZUxpbWl0Wm9uZS51c2VyICYmIHRva2VuKSB7XG4gICAgICAgICAgaWYgKCFyZXF1ZXN0LmF1dGgpIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gaGFuZGxlUGFyc2VTZXNzaW9uKHJlcXVlc3QsIG51bGwsIHJlc29sdmUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlcXVlc3QuYXV0aD8udXNlcj8uaWQgJiYgcmVxdWVzdC56b25lID09PSAndXNlcicpIHtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmF1dGgudXNlci5pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcXVlc3QuY29uZmlnLmlwO1xuICAgICAgfSxcbiAgICAgIHN0b3JlOiByZWRpc1N0b3JlLnN0b3JlLFxuICAgIH0pLFxuICAgIGNsb3VkLFxuICB9KTtcbiAgQ29uZmlnLnB1dChjb25maWcpO1xufTtcblxuLyoqXG4gKiBEZWR1cGxpY2F0ZXMgYSByZXF1ZXN0IHRvIGVuc3VyZSBpZGVtcG90ZW5jeS4gRHVwbGljYXRlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgcmVxdWVzdCBJRFxuICogaW4gdGhlIHJlcXVlc3QgaGVhZGVyLiBJZiBhIHJlcXVlc3QgaGFzIG5vIHJlcXVlc3QgSUQsIGl0IGlzIGV4ZWN1dGVkIGFueXdheS5cbiAqIEBwYXJhbSB7Kn0gcmVxIFRoZSByZXF1ZXN0IHRvIGV2YWx1YXRlLlxuICogQHJldHVybnMgUHJvbWlzZTx7fT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeShyZXEpIHtcbiAgLy8gRW5hYmxlIGZlYXR1cmUgb25seSBmb3IgTW9uZ29EQlxuICBpZiAoXG4gICAgIShcbiAgICAgIHJlcS5jb25maWcuZGF0YWJhc2UuYWRhcHRlciBpbnN0YW5jZW9mIE1vbmdvU3RvcmFnZUFkYXB0ZXIgfHxcbiAgICAgIHJlcS5jb25maWcuZGF0YWJhc2UuYWRhcHRlciBpbnN0YW5jZW9mIFBvc3RncmVzU3RvcmFnZUFkYXB0ZXJcbiAgICApXG4gICkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuICAvLyBHZXQgcGFyYW1ldGVyc1xuICBjb25zdCBjb25maWcgPSByZXEuY29uZmlnO1xuICBjb25zdCByZXF1ZXN0SWQgPSAoKHJlcSB8fCB7fSkuaGVhZGVycyB8fCB7fSlbJ3gtcGFyc2UtcmVxdWVzdC1pZCddO1xuICBjb25zdCB7IHBhdGhzLCB0dGwgfSA9IGNvbmZpZy5pZGVtcG90ZW5jeU9wdGlvbnM7XG4gIGlmICghcmVxdWVzdElkIHx8ICFjb25maWcuaWRlbXBvdGVuY3lPcHRpb25zKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIC8vIFJlcXVlc3QgcGF0aCBtYXkgY29udGFpbiB0cmFpbGluZyBzbGFzaGVzLCBkZXBlbmRpbmcgb24gdGhlIG9yaWdpbmFsIHJlcXVlc3QsIHNvIHJlbW92ZVxuICAvLyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwZWNpZnkgcGF0aHMgaW4gdGhlIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgcmVxUGF0aCA9IHJlcS5wYXRoLnJlcGxhY2UoL15cXC98XFwvJC8sICcnKTtcbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgaWRlbXBvdGVuY3kgaXMgZW5hYmxlZCBmb3IgY3VycmVudCByZXF1ZXN0IHBhdGhcbiAgbGV0IG1hdGNoID0gZmFsc2U7XG4gIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgIC8vIEFzc3VtZSBvbmUgd2FudHMgYSBwYXRoIHRvIGFsd2F5cyBtYXRjaCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gcHJldmVudCBhbnkgbWlzdGFrZXNcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAocGF0aC5jaGFyQXQoMCkgPT09ICdeJyA/IHBhdGggOiAnXicgKyBwYXRoKTtcbiAgICBpZiAocmVxUGF0aC5tYXRjaChyZWdleCkpIHtcbiAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIC8vIFRyeSB0byBzdG9yZSByZXF1ZXN0XG4gIGNvbnN0IGV4cGlyeURhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldFNlY29uZHMobmV3IERhdGUoKS5nZXRTZWNvbmRzKCkgKyB0dGwpKTtcbiAgcmV0dXJuIHJlc3RcbiAgICAuY3JlYXRlKGNvbmZpZywgYXV0aC5tYXN0ZXIoY29uZmlnKSwgJ19JZGVtcG90ZW5jeScsIHtcbiAgICAgIHJlcUlkOiByZXF1ZXN0SWQsXG4gICAgICBleHBpcmU6IFBhcnNlLl9lbmNvZGUoZXhwaXJ5RGF0ZSksXG4gICAgfSlcbiAgICAuY2F0Y2goZSA9PiB7XG4gICAgICBpZiAoZS5jb2RlID09IFBhcnNlLkVycm9yLkRVUExJQ0FURV9WQUxVRSkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRFVQTElDQVRFX1JFUVVFU1QsICdEdXBsaWNhdGUgcmVxdWVzdCcpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaW52YWxpZFJlcXVlc3QocmVxLCByZXMpIHtcbiAgcmVzLnN0YXR1cyg0MDMpO1xuICByZXMuZW5kKCd7XCJlcnJvclwiOlwidW5hdXRob3JpemVkXCJ9Jyk7XG59XG5cbmZ1bmN0aW9uIG1hbGZvcm1lZENvbnRleHQocmVxLCByZXMpIHtcbiAgcmVzLnN0YXR1cyg0MDApO1xuICByZXMuanNvbih7IGNvZGU6IFBhcnNlLkVycm9yLklOVkFMSURfSlNPTiwgZXJyb3I6ICdJbnZhbGlkIG9iamVjdCBmb3IgY29udGV4dC4nIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxvQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsdUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGlCQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxZQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxlQUFBLEdBQUFiLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYSxNQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxJQUFBLEdBQUFkLE9BQUE7QUFBd0MsU0FBQUQsdUJBQUFnQixHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpDLE1BQU1HLHVCQUF1QixHQUFBQyxPQUFBLENBQUFELHVCQUFBLEdBQ2xDLCtPQUErTztBQUVqUCxNQUFNRSxrQkFBa0IsR0FBRyxTQUFBQSxDQUFVQyxHQUFHLEVBQUU7RUFDeEMsTUFBTUMsZUFBZSxHQUFHRCxHQUFHLENBQUNFLFdBQVcsQ0FBQ0MsTUFBTSxHQUFHSCxHQUFHLENBQUNJLEdBQUcsQ0FB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
package/lib/password.js CHANGED
@@ -31,4 +31,4 @@ module.exports = {
31
31
  hash: hash,
32
32
  compare: compare
33
33
  };
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiY3J5cHQiLCJyZXF1aXJlIiwiX2JjcnlwdCIsImhhc2giLCJjb21wYXJlIiwidmVyaWZ5IiwiZSIsInBhc3N3b3JkIiwiaGFzaGVkUGFzc3dvcmQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvcGFzc3dvcmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG9vbHMgZm9yIGVuY3J5cHRpbmcgYW5kIGRlY3J5cHRpbmcgcGFzc3dvcmRzLlxuLy8gQmFzaWNhbGx5IHByb21pc2UtZnJpZW5kbHkgd3JhcHBlcnMgZm9yIGJjcnlwdC5cbnZhciBiY3J5cHQgPSByZXF1aXJlKCdiY3J5cHRqcycpO1xuXG50cnkge1xuICBjb25zdCBfYmNyeXB0ID0gcmVxdWlyZSgnQG5vZGUtcnMvYmNyeXB0Jyk7XG4gIGJjcnlwdCA9IHtcbiAgICBoYXNoOiBfYmNyeXB0Lmhhc2gsXG4gICAgY29tcGFyZTogX2JjcnlwdC52ZXJpZnksXG4gIH07XG59IGNhdGNoIChlKSB7XG4gIC8qICovXG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIGhhc2hlZCBwYXNzd29yZCBzdHJpbmcuXG5mdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gIHJldHVybiBiY3J5cHQuaGFzaChwYXNzd29yZCwgMTApO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSBmb3Igd2hldGhlciB0aGlzIHBhc3N3b3JkIGNvbXBhcmVzIHRvIGVxdWFsIHRoaXNcbi8vIGhhc2hlZCBwYXNzd29yZC5cbmZ1bmN0aW9uIGNvbXBhcmUocGFzc3dvcmQsIGhhc2hlZFBhc3N3b3JkKSB7XG4gIC8vIENhbm5vdCBiY3J5cHQgY29tcGFyZSB3aGVuIG9uZSBpcyB1bmRlZmluZWRcbiAgaWYgKCFwYXNzd29yZCB8fCAhaGFzaGVkUGFzc3dvcmQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfVxuICByZXR1cm4gYmNyeXB0LmNvbXBhcmUocGFzc3dvcmQsIGhhc2hlZFBhc3N3b3JkKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGhhc2g6IGhhc2gsXG4gIGNvbXBhcmU6IGNvbXBhcmUsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQSxJQUFJQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFFaEMsSUFBSTtFQUNGLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0VBQzFDRCxNQUFNLEdBQUc7SUFDUEcsSUFBSSxFQUFFRCxPQUFPLENBQUNDLElBQUk7SUFDbEJDLE9BQU8sRUFBRUYsT0FBTyxDQUFDRztFQUNuQixDQUFDO0FBQ0gsQ0FBQyxDQUFDLE9BQU9DLENBQUMsRUFBRTtFQUNWO0FBQUE7O0FBR0Y7QUFDQSxTQUFTSCxJQUFJQSxDQUFDSSxRQUFRLEVBQUU7RUFDdEIsT0FBT1AsTUFBTSxDQUFDRyxJQUFJLENBQUNJLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDbEM7O0FBRUE7QUFDQTtBQUNBLFNBQVNILE9BQU9BLENBQUNHLFFBQVEsRUFBRUMsY0FBYyxFQUFFO0VBQ3pDO0VBQ0EsSUFBSSxDQUFDRCxRQUFRLElBQUksQ0FBQ0MsY0FBYyxFQUFFO0lBQ2hDLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLEtBQUssQ0FBQztFQUMvQjtFQUNBLE9BQU9WLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDRyxRQUFRLEVBQUVDLGNBQWMsQ0FBQztBQUNqRDtBQUVBRyxNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmVCxJQUFJLEVBQUVBLElBQUk7RUFDVkMsT0FBTyxFQUFFQTtBQUNYLENBQUMifQ==
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiY3J5cHQiLCJyZXF1aXJlIiwiX2JjcnlwdCIsImhhc2giLCJjb21wYXJlIiwidmVyaWZ5IiwiZSIsInBhc3N3b3JkIiwiaGFzaGVkUGFzc3dvcmQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvcGFzc3dvcmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG9vbHMgZm9yIGVuY3J5cHRpbmcgYW5kIGRlY3J5cHRpbmcgcGFzc3dvcmRzLlxuLy8gQmFzaWNhbGx5IHByb21pc2UtZnJpZW5kbHkgd3JhcHBlcnMgZm9yIGJjcnlwdC5cbnZhciBiY3J5cHQgPSByZXF1aXJlKCdiY3J5cHRqcycpO1xuXG50cnkge1xuICBjb25zdCBfYmNyeXB0ID0gcmVxdWlyZSgnQG5vZGUtcnMvYmNyeXB0Jyk7XG4gIGJjcnlwdCA9IHtcbiAgICBoYXNoOiBfYmNyeXB0Lmhhc2gsXG4gICAgY29tcGFyZTogX2JjcnlwdC52ZXJpZnksXG4gIH07XG59IGNhdGNoIChlKSB7XG4gIC8qICovXG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIGhhc2hlZCBwYXNzd29yZCBzdHJpbmcuXG5mdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gIHJldHVybiBiY3J5cHQuaGFzaChwYXNzd29yZCwgMTApO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSBmb3Igd2hldGhlciB0aGlzIHBhc3N3b3JkIGNvbXBhcmVzIHRvIGVxdWFsIHRoaXNcbi8vIGhhc2hlZCBwYXNzd29yZC5cbmZ1bmN0aW9uIGNvbXBhcmUocGFzc3dvcmQsIGhhc2hlZFBhc3N3b3JkKSB7XG4gIC8vIENhbm5vdCBiY3J5cHQgY29tcGFyZSB3aGVuIG9uZSBpcyB1bmRlZmluZWRcbiAgaWYgKCFwYXNzd29yZCB8fCAhaGFzaGVkUGFzc3dvcmQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfVxuICByZXR1cm4gYmNyeXB0LmNvbXBhcmUocGFzc3dvcmQsIGhhc2hlZFBhc3N3b3JkKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGhhc2g6IGhhc2gsXG4gIGNvbXBhcmU6IGNvbXBhcmUsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQSxJQUFJQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFFaEMsSUFBSTtFQUNGLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0VBQzFDRCxNQUFNLEdBQUc7SUFDUEcsSUFBSSxFQUFFRCxPQUFPLENBQUNDLElBQUk7SUFDbEJDLE9BQU8sRUFBRUYsT0FBTyxDQUFDRztFQUNuQixDQUFDO0FBQ0gsQ0FBQyxDQUFDLE9BQU9DLENBQUMsRUFBRTtFQUNWO0FBQUE7O0FBR0Y7QUFDQSxTQUFTSCxJQUFJQSxDQUFDSSxRQUFRLEVBQUU7RUFDdEIsT0FBT1AsTUFBTSxDQUFDRyxJQUFJLENBQUNJLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDbEM7O0FBRUE7QUFDQTtBQUNBLFNBQVNILE9BQU9BLENBQUNHLFFBQVEsRUFBRUMsY0FBYyxFQUFFO0VBQ3pDO0VBQ0EsSUFBSSxDQUFDRCxRQUFRLElBQUksQ0FBQ0MsY0FBYyxFQUFFO0lBQ2hDLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLEtBQUssQ0FBQztFQUMvQjtFQUNBLE9BQU9WLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDRyxRQUFRLEVBQUVDLGNBQWMsQ0FBQztBQUNqRDtBQUVBRyxNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmVCxJQUFJLEVBQUVBLElBQUk7RUFDVkMsT0FBTyxFQUFFQTtBQUNYLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
package/lib/request.js CHANGED
@@ -172,4 +172,4 @@ function httpRequest(options) {
172
172
  module.exports = httpRequest;
173
173
  module.exports.encodeBody = encodeBody;
174
174
  module.exports.HTTPResponse = HTTPResponse;
175
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcXVlcnlzdHJpbmciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfZm9sbG93UmVkaXJlY3RzIiwiX3VybCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiSFRUUFJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJyZXNwb25zZSIsImJvZHkiLCJfdGV4dCIsIl9kYXRhIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsImhlYWRlcnMiLCJjb29raWVzIiwiQnVmZmVyIiwiaXNCdWZmZXIiLCJidWZmZXIiLCJnZXRUZXh0IiwidG9TdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0RGF0YSIsInBhcnNlIiwiZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiZW51bWVyYWJsZSIsImNsaWVudHMiLCJodHRwIiwiaHR0cHMiLCJtYWtlQ2FsbGJhY2siLCJyZXNvbHZlIiwicmVqZWN0IiwiY2h1bmtzIiwib24iLCJjaHVuayIsInB1c2giLCJjb25jYXQiLCJodHRwUmVzcG9uc2UiLCJlbmNvZGVCb2R5IiwiY29udGVudFR5cGVLZXlzIiwia2V5cyIsImZpbHRlciIsImtleSIsIm1hdGNoIiwibGVuZ3RoIiwicXVlcnlzdHJpbmciLCJsb2ciLCJlcnJvciIsImNvbnRlbnRUeXBlIiwiaHR0cFJlcXVlc3QiLCJvcHRpb25zIiwidXJsIiwiUHJvbWlzZSIsImFzc2lnbiIsInBhcmFtcyIsInFzIiwiY2xpZW50IiwicHJvdG9jb2wiLCJyZXF1ZXN0T3B0aW9ucyIsIm1ldGhvZCIsInBvcnQiLCJOdW1iZXIiLCJwYXRoIiwicGF0aG5hbWUiLCJob3N0bmFtZSIsImVuY29kaW5nIiwiZm9sbG93UmVkaXJlY3RzIiwiZm9yRWFjaCIsInNlYXJjaCIsInF1ZXJ5IiwiYXV0aCIsImFnZW50IiwicmVxIiwicmVxdWVzdCIsIndyaXRlIiwiZW5kIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXF1ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBxdWVyeXN0cmluZyBmcm9tICdxdWVyeXN0cmluZyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGh0dHAsIGh0dHBzIH0gZnJvbSAnZm9sbG93LXJlZGlyZWN0cyc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3VybCc7XG5cbmNsYXNzIEhUVFBSZXNwb25zZSB7XG4gIGNvbnN0cnVjdG9yKHJlc3BvbnNlLCBib2R5KSB7XG4gICAgbGV0IF90ZXh0LCBfZGF0YTtcbiAgICB0aGlzLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgdGhpcy5oZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVycyB8fCB7fTtcbiAgICB0aGlzLmNvb2tpZXMgPSB0aGlzLmhlYWRlcnNbJ3NldC1jb29raWUnXTtcblxuICAgIGlmICh0eXBlb2YgYm9keSA9PSAnc3RyaW5nJykge1xuICAgICAgX3RleHQgPSBib2R5O1xuICAgIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKGJvZHkpKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IGJvZHk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PSAnb2JqZWN0Jykge1xuICAgICAgX2RhdGEgPSBib2R5O1xuICAgIH1cblxuICAgIGNvbnN0IGdldFRleHQgPSAoKSA9PiB7XG4gICAgICBpZiAoIV90ZXh0ICYmIHRoaXMuYnVmZmVyKSB7XG4gICAgICAgIF90ZXh0ID0gdGhpcy5idWZmZXIudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFfdGV4dCAmJiBfZGF0YSkge1xuICAgICAgICBfdGV4dCA9IEpTT04uc3RyaW5naWZ5KF9kYXRhKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfdGV4dDtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0RGF0YSA9ICgpID0+IHtcbiAgICAgIGlmICghX2RhdGEpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBfZGF0YSA9IEpTT04ucGFyc2UoZ2V0VGV4dCgpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8qICovXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBfZGF0YTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdib2R5Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBib2R5O1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAndGV4dCcsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGdldFRleHQsXG4gICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2RhdGEnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBnZXREYXRhLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGNsaWVudHMgPSB7XG4gICdodHRwOic6IGh0dHAsXG4gICdodHRwczonOiBodHRwcyxcbn07XG5cbmZ1bmN0aW9uIG1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgIHJlc3BvbnNlLm9uKCdkYXRhJywgY2h1bmsgPT4ge1xuICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgIH0pO1xuICAgIHJlc3BvbnNlLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBib2R5ID0gQnVmZmVyLmNvbmNhdChjaHVua3MpO1xuICAgICAgY29uc3QgaHR0cFJlc3BvbnNlID0gbmV3IEhUVFBSZXNwb25zZShyZXNwb25zZSwgYm9keSk7XG5cbiAgICAgIC8vIENvbnNpZGVyIDwyMDAgJiYgPj0gNDAwIGFzIGVycm9yc1xuICAgICAgaWYgKGh0dHBSZXNwb25zZS5zdGF0dXMgPCAyMDAgfHwgaHR0cFJlc3BvbnNlLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChodHRwUmVzcG9uc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoaHR0cFJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXNwb25zZS5vbignZXJyb3InLCByZWplY3QpO1xuICB9O1xufVxuXG5jb25zdCBlbmNvZGVCb2R5ID0gZnVuY3Rpb24gKHsgYm9keSwgaGVhZGVycyA9IHt9IH0pIHtcbiAgaWYgKHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB7IGJvZHksIGhlYWRlcnMgfTtcbiAgfVxuICB2YXIgY29udGVudFR5cGVLZXlzID0gT2JqZWN0LmtleXMoaGVhZGVycykuZmlsdGVyKGtleSA9PiB7XG4gICAgcmV0dXJuIGtleS5tYXRjaCgvY29udGVudC10eXBlL2kpICE9IG51bGw7XG4gIH0pO1xuXG4gIGlmIChjb250ZW50VHlwZUtleXMubGVuZ3RoID09IDApIHtcbiAgICAvLyBubyBjb250ZW50IHR5cGVcbiAgICAvLyAgQXMgcGVyIGh0dHBzOi8vcGFyc2UuY29tL2RvY3MvY2xvdWRjb2RlL2d1aWRlI2Nsb3VkLWNvZGUtYWR2YW5jZWQtc2VuZGluZy1hLXBvc3QtcmVxdWVzdCB0aGUgZGVmYXVsdCBlbmNvZGluZyBpcyBzdXBwb3NlZGx5IHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuXG4gICAgYm9keSA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShib2R5KTtcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnO1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGNvbnRlbnRUeXBlS2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICBsb2cuZXJyb3IoJ1BhcnNlLkNsb3VkLmh0dHBSZXF1ZXN0JywgJ211bHRpcGxlIGNvbnRlbnQtdHlwZSBoZWFkZXJzIGFyZSBzZXQuJyk7XG4gICAgfVxuICAgIC8vIFRoZXJlIG1heWJlIG1hbnksIHdlJ2xsIGp1c3QgdGFrZSB0aGUgMXN0IG9uZVxuICAgIHZhciBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlS2V5c1swXTtcbiAgICBpZiAoaGVhZGVyc1tjb250ZW50VHlwZV0ubWF0Y2goL2FwcGxpY2F0aW9uXFwvanNvbi9pKSkge1xuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIH0gZWxzZSBpZiAoaGVhZGVyc1tjb250ZW50VHlwZV0ubWF0Y2goL2FwcGxpY2F0aW9uXFwveC13d3ctZm9ybS11cmxlbmNvZGVkL2kpKSB7XG4gICAgICBib2R5ID0gcXVlcnlzdHJpbmcuc3RyaW5naWZ5KGJvZHkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBib2R5LCBoZWFkZXJzIH07XG59O1xuXG5mdW5jdGlvbiBodHRwUmVxdWVzdChvcHRpb25zKSB7XG4gIGxldCB1cmw7XG4gIHRyeSB7XG4gICAgdXJsID0gcGFyc2Uob3B0aW9ucy51cmwpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICB9XG4gIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGVuY29kZUJvZHkob3B0aW9ucykpO1xuICAvLyBzdXBwb3J0IHBhcmFtcyBvcHRpb25zXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5wYXJhbXMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucy5xcyA9IG9wdGlvbnMucGFyYW1zO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLnBhcmFtcyA9PT0gJ3N0cmluZycpIHtcbiAgICBvcHRpb25zLnFzID0gcXVlcnlzdHJpbmcucGFyc2Uob3B0aW9ucy5wYXJhbXMpO1xuICB9XG4gIGNvbnN0IGNsaWVudCA9IGNsaWVudHNbdXJsLnByb3RvY29sXTtcbiAgaWYgKCFjbGllbnQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoYFVuc3VwcG9ydGVkIHByb3RvY29sICR7dXJsLnByb3RvY29sfWApO1xuICB9XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIG1ldGhvZDogb3B0aW9ucy5tZXRob2QsXG4gICAgcG9ydDogTnVtYmVyKHVybC5wb3J0KSxcbiAgICBwYXRoOiB1cmwucGF0aG5hbWUsXG4gICAgaG9zdG5hbWU6IHVybC5ob3N0bmFtZSxcbiAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgZW5jb2Rpbmc6IG51bGwsXG4gICAgZm9sbG93UmVkaXJlY3RzOiBvcHRpb25zLmZvbGxvd1JlZGlyZWN0cyA9PT0gdHJ1ZSxcbiAgfTtcbiAgaWYgKHJlcXVlc3RPcHRpb25zLmhlYWRlcnMpIHtcbiAgICBPYmplY3Qua2V5cyhyZXF1ZXN0T3B0aW9ucy5oZWFkZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHJlcXVlc3RPcHRpb25zLmhlYWRlcnNba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZGVsZXRlIHJlcXVlc3RPcHRpb25zLmhlYWRlcnNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBpZiAodXJsLnNlYXJjaCkge1xuICAgIG9wdGlvbnMucXMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLnFzLCBxdWVyeXN0cmluZy5wYXJzZSh1cmwucXVlcnkpKTtcbiAgfVxuICBpZiAodXJsLmF1dGgpIHtcbiAgICByZXF1ZXN0T3B0aW9ucy5hdXRoID0gdXJsLmF1dGg7XG4gIH1cbiAgaWYgKG9wdGlvbnMucXMpIHtcbiAgICByZXF1ZXN0T3B0aW9ucy5wYXRoICs9IGA/JHtxdWVyeXN0cmluZy5zdHJpbmdpZnkob3B0aW9ucy5xcyl9YDtcbiAgfVxuICBpZiAob3B0aW9ucy5hZ2VudCkge1xuICAgIHJlcXVlc3RPcHRpb25zLmFnZW50ID0gb3B0aW9ucy5hZ2VudDtcbiAgfVxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlcSA9IGNsaWVudC5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCBtYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgaWYgKG9wdGlvbnMuYm9keSkge1xuICAgICAgcmVxLndyaXRlKG9wdGlvbnMuYm9keSk7XG4gICAgfVxuICAgIHJlcS5vbignZXJyb3InLCBlcnJvciA9PiB7XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICAgIHJlcS5lbmQoKTtcbiAgfSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGh0dHBSZXF1ZXN0O1xubW9kdWxlLmV4cG9ydHMuZW5jb2RlQm9keSA9IGVuY29kZUJvZHk7XG5tb2R1bGUuZXhwb3J0cy5IVFRQUmVzcG9uc2UgPSBIVFRQUmVzcG9uc2U7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLElBQUEsR0FBQUgsT0FBQTtBQUE0QixTQUFBRCx1QkFBQUssR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUU1QixNQUFNRyxZQUFZLENBQUM7RUFDakJDLFdBQVdBLENBQUNDLFFBQVEsRUFBRUMsSUFBSSxFQUFFO0lBQzFCLElBQUlDLEtBQUssRUFBRUMsS0FBSztJQUNoQixJQUFJLENBQUNDLE1BQU0sR0FBR0osUUFBUSxDQUFDSyxVQUFVO0lBQ2pDLElBQUksQ0FBQ0MsT0FBTyxHQUFHTixRQUFRLENBQUNNLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDQyxPQUFPLEdBQUcsSUFBSSxDQUFDRCxPQUFPLENBQUMsWUFBWSxDQUFDO0lBRXpDLElBQUksT0FBT0wsSUFBSSxJQUFJLFFBQVEsRUFBRTtNQUMzQkMsS0FBSyxHQUFH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
175
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcXVlcnlzdHJpbmciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfZm9sbG93UmVkaXJlY3RzIiwiX3VybCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiSFRUUFJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJyZXNwb25zZSIsImJvZHkiLCJfdGV4dCIsIl9kYXRhIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsImhlYWRlcnMiLCJjb29raWVzIiwiQnVmZmVyIiwiaXNCdWZmZXIiLCJidWZmZXIiLCJnZXRUZXh0IiwidG9TdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0RGF0YSIsInBhcnNlIiwiZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiZW51bWVyYWJsZSIsImNsaWVudHMiLCJodHRwIiwiaHR0cHMiLCJtYWtlQ2FsbGJhY2siLCJyZXNvbHZlIiwicmVqZWN0IiwiY2h1bmtzIiwib24iLCJjaHVuayIsInB1c2giLCJjb25jYXQiLCJodHRwUmVzcG9uc2UiLCJlbmNvZGVCb2R5IiwiY29udGVudFR5cGVLZXlzIiwia2V5cyIsImZpbHRlciIsImtleSIsIm1hdGNoIiwibGVuZ3RoIiwicXVlcnlzdHJpbmciLCJsb2ciLCJlcnJvciIsImNvbnRlbnRUeXBlIiwiaHR0cFJlcXVlc3QiLCJvcHRpb25zIiwidXJsIiwiUHJvbWlzZSIsImFzc2lnbiIsInBhcmFtcyIsInFzIiwiY2xpZW50IiwicHJvdG9jb2wiLCJyZXF1ZXN0T3B0aW9ucyIsIm1ldGhvZCIsInBvcnQiLCJOdW1iZXIiLCJwYXRoIiwicGF0aG5hbWUiLCJob3N0bmFtZSIsImVuY29kaW5nIiwiZm9sbG93UmVkaXJlY3RzIiwiZm9yRWFjaCIsInNlYXJjaCIsInF1ZXJ5IiwiYXV0aCIsImFnZW50IiwicmVxIiwicmVxdWVzdCIsIndyaXRlIiwiZW5kIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXF1ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBxdWVyeXN0cmluZyBmcm9tICdxdWVyeXN0cmluZyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGh0dHAsIGh0dHBzIH0gZnJvbSAnZm9sbG93LXJlZGlyZWN0cyc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3VybCc7XG5cbmNsYXNzIEhUVFBSZXNwb25zZSB7XG4gIGNvbnN0cnVjdG9yKHJlc3BvbnNlLCBib2R5KSB7XG4gICAgbGV0IF90ZXh0LCBfZGF0YTtcbiAgICB0aGlzLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgdGhpcy5oZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVycyB8fCB7fTtcbiAgICB0aGlzLmNvb2tpZXMgPSB0aGlzLmhlYWRlcnNbJ3NldC1jb29raWUnXTtcblxuICAgIGlmICh0eXBlb2YgYm9keSA9PSAnc3RyaW5nJykge1xuICAgICAgX3RleHQgPSBib2R5O1xuICAgIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKGJvZHkpKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IGJvZHk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PSAnb2JqZWN0Jykge1xuICAgICAgX2RhdGEgPSBib2R5O1xuICAgIH1cblxuICAgIGNvbnN0IGdldFRleHQgPSAoKSA9PiB7XG4gICAgICBpZiAoIV90ZXh0ICYmIHRoaXMuYnVmZmVyKSB7XG4gICAgICAgIF90ZXh0ID0gdGhpcy5idWZmZXIudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFfdGV4dCAmJiBfZGF0YSkge1xuICAgICAgICBfdGV4dCA9IEpTT04uc3RyaW5naWZ5KF9kYXRhKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfdGV4dDtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0RGF0YSA9ICgpID0+IHtcbiAgICAgIGlmICghX2RhdGEpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBfZGF0YSA9IEpTT04ucGFyc2UoZ2V0VGV4dCgpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8qICovXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBfZGF0YTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdib2R5Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBib2R5O1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAndGV4dCcsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGdldFRleHQsXG4gICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2RhdGEnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBnZXREYXRhLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGNsaWVudHMgPSB7XG4gICdodHRwOic6IGh0dHAsXG4gICdodHRwczonOiBodHRwcyxcbn07XG5cbmZ1bmN0aW9uIG1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgIHJlc3BvbnNlLm9uKCdkYXRhJywgY2h1bmsgPT4ge1xuICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgIH0pO1xuICAgIHJlc3BvbnNlLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBib2R5ID0gQnVmZmVyLmNvbmNhdChjaHVua3MpO1xuICAgICAgY29uc3QgaHR0cFJlc3BvbnNlID0gbmV3IEhUVFBSZXNwb25zZShyZXNwb25zZSwgYm9keSk7XG5cbiAgICAgIC8vIENvbnNpZGVyIDwyMDAgJiYgPj0gNDAwIGFzIGVycm9yc1xuICAgICAgaWYgKGh0dHBSZXNwb25zZS5zdGF0dXMgPCAyMDAgfHwgaHR0cFJlc3BvbnNlLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChodHRwUmVzcG9uc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoaHR0cFJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXNwb25zZS5vbignZXJyb3InLCByZWplY3QpO1xuICB9O1xufVxuXG5jb25zdCBlbmNvZGVCb2R5ID0gZnVuY3Rpb24gKHsgYm9keSwgaGVhZGVycyA9IHt9IH0pIHtcbiAgaWYgKHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB7IGJvZHksIGhlYWRlcnMgfTtcbiAgfVxuICB2YXIgY29udGVudFR5cGVLZXlzID0gT2JqZWN0LmtleXMoaGVhZGVycykuZmlsdGVyKGtleSA9PiB7XG4gICAgcmV0dXJuIGtleS5tYXRjaCgvY29udGVudC10eXBlL2kpICE9IG51bGw7XG4gIH0pO1xuXG4gIGlmIChjb250ZW50VHlwZUtleXMubGVuZ3RoID09IDApIHtcbiAgICAvLyBubyBjb250ZW50IHR5cGVcbiAgICAvLyAgQXMgcGVyIGh0dHBzOi8vcGFyc2UuY29tL2RvY3MvY2xvdWRjb2RlL2d1aWRlI2Nsb3VkLWNvZGUtYWR2YW5jZWQtc2VuZGluZy1hLXBvc3QtcmVxdWVzdCB0aGUgZGVmYXVsdCBlbmNvZGluZyBpcyBzdXBwb3NlZGx5IHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuXG4gICAgYm9keSA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShib2R5KTtcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnO1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGNvbnRlbnRUeXBlS2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICBsb2cuZXJyb3IoJ1BhcnNlLkNsb3VkLmh0dHBSZXF1ZXN0JywgJ211bHRpcGxlIGNvbnRlbnQtdHlwZSBoZWFkZXJzIGFyZSBzZXQuJyk7XG4gICAgfVxuICAgIC8vIFRoZXJlIG1heWJlIG1hbnksIHdlJ2xsIGp1c3QgdGFrZSB0aGUgMXN0IG9uZVxuICAgIHZhciBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlS2V5c1swXTtcbiAgICBpZiAoaGVhZGVyc1tjb250ZW50VHlwZV0ubWF0Y2goL2FwcGxpY2F0aW9uXFwvanNvbi9pKSkge1xuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIH0gZWxzZSBpZiAoaGVhZGVyc1tjb250ZW50VHlwZV0ubWF0Y2goL2FwcGxpY2F0aW9uXFwveC13d3ctZm9ybS11cmxlbmNvZGVkL2kpKSB7XG4gICAgICBib2R5ID0gcXVlcnlzdHJpbmcuc3RyaW5naWZ5KGJvZHkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBib2R5LCBoZWFkZXJzIH07XG59O1xuXG5mdW5jdGlvbiBodHRwUmVxdWVzdChvcHRpb25zKSB7XG4gIGxldCB1cmw7XG4gIHRyeSB7XG4gICAgdXJsID0gcGFyc2Uob3B0aW9ucy51cmwpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICB9XG4gIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGVuY29kZUJvZHkob3B0aW9ucykpO1xuICAvLyBzdXBwb3J0IHBhcmFtcyBvcHRpb25zXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5wYXJhbXMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucy5xcyA9IG9wdGlvbnMucGFyYW1zO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLnBhcmFtcyA9PT0gJ3N0cmluZycpIHtcbiAgICBvcHRpb25zLnFzID0gcXVlcnlzdHJpbmcucGFyc2Uob3B0aW9ucy5wYXJhbXMpO1xuICB9XG4gIGNvbnN0IGNsaWVudCA9IGNsaWVudHNbdXJsLnByb3RvY29sXTtcbiAgaWYgKCFjbGllbnQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoYFVuc3VwcG9ydGVkIHByb3RvY29sICR7dXJsLnByb3RvY29sfWApO1xuICB9XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIG1ldGhvZDogb3B0aW9ucy5tZXRob2QsXG4gICAgcG9ydDogTnVtYmVyKHVybC5wb3J0KSxcbiAgICBwYXRoOiB1cmwucGF0aG5hbWUsXG4gICAgaG9zdG5hbWU6IHVybC5ob3N0bmFtZSxcbiAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgZW5jb2Rpbmc6IG51bGwsXG4gICAgZm9sbG93UmVkaXJlY3RzOiBvcHRpb25zLmZvbGxvd1JlZGlyZWN0cyA9PT0gdHJ1ZSxcbiAgfTtcbiAgaWYgKHJlcXVlc3RPcHRpb25zLmhlYWRlcnMpIHtcbiAgICBPYmplY3Qua2V5cyhyZXF1ZXN0T3B0aW9ucy5oZWFkZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHJlcXVlc3RPcHRpb25zLmhlYWRlcnNba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZGVsZXRlIHJlcXVlc3RPcHRpb25zLmhlYWRlcnNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBpZiAodXJsLnNlYXJjaCkge1xuICAgIG9wdGlvbnMucXMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLnFzLCBxdWVyeXN0cmluZy5wYXJzZSh1cmwucXVlcnkpKTtcbiAgfVxuICBpZiAodXJsLmF1dGgpIHtcbiAgICByZXF1ZXN0T3B0aW9ucy5hdXRoID0gdXJsLmF1dGg7XG4gIH1cbiAgaWYgKG9wdGlvbnMucXMpIHtcbiAgICByZXF1ZXN0T3B0aW9ucy5wYXRoICs9IGA/JHtxdWVyeXN0cmluZy5zdHJpbmdpZnkob3B0aW9ucy5xcyl9YDtcbiAgfVxuICBpZiAob3B0aW9ucy5hZ2VudCkge1xuICAgIHJlcXVlc3RPcHRpb25zLmFnZW50ID0gb3B0aW9ucy5hZ2VudDtcbiAgfVxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlcSA9IGNsaWVudC5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCBtYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgaWYgKG9wdGlvbnMuYm9keSkge1xuICAgICAgcmVxLndyaXRlKG9wdGlvbnMuYm9keSk7XG4gICAgfVxuICAgIHJlcS5vbignZXJyb3InLCBlcnJvciA9PiB7XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICAgIHJlcS5lbmQoKTtcbiAgfSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGh0dHBSZXF1ZXN0O1xubW9kdWxlLmV4cG9ydHMuZW5jb2RlQm9keSA9IGVuY29kZUJvZHk7XG5tb2R1bGUuZXhwb3J0cy5IVFRQUmVzcG9uc2UgPSBIVFRQUmVzcG9uc2U7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLElBQUEsR0FBQUgsT0FBQTtBQUE0QixTQUFBRCx1QkFBQUssR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUU1QixNQUFNRyxZQUFZLENBQUM7RUFDakJDLFdBQVdBLENBQUNDLFFBQVEsRUFBRUMsSUFBSSxFQUFFO0lBQzFCLElBQUlDLEtBQUssRUFBRUMsS0FBSztJQUNoQixJQUFJLENBQUNDLE1BQU0sR0FBR0osUUFBUSxDQUFDSyxVQUFVO0lBQ2pDLElBQUksQ0FBQ0MsT0FBTyxHQUFHTixRQUFRLENBQUNNLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDQyxPQUFPLEdBQUcsSUFBSSxDQUFDRCxPQUFPLENBQUMsWUFBWSxDQUFDO0lBRXpDLElBQUksT0FBT0wsSUFBSSxJQUFJLFFBQVEsRUFBRTtNQUMzQkMsS0FBSyxHQUFH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
@@ -8,4 +8,4 @@ var _default = errorMessage => {
8
8
  throw errorMessage;
9
9
  };
10
10
  exports.default = _default;
11
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlcnJvck1lc3NhZ2UiLCJleHBvcnRzIiwiZGVmYXVsdCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL3JlcXVpcmVkUGFyYW1ldGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZmxvdyAqL1xuZXhwb3J0IGRlZmF1bHQgKGVycm9yTWVzc2FnZTogc3RyaW5nKTogYW55ID0+IHtcbiAgdGhyb3cgZXJyb3JNZXNzYWdlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQ2dCQSxZQUFvQixJQUFVO0VBQzVDLE1BQU1BLFlBQVk7QUFDcEIsQ0FBQztBQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FBQUMsUUFBQSJ9
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlcnJvck1lc3NhZ2UiLCJleHBvcnRzIiwiZGVmYXVsdCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL3JlcXVpcmVkUGFyYW1ldGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZmxvdyAqL1xuZXhwb3J0IGRlZmF1bHQgKGVycm9yTWVzc2FnZTogc3RyaW5nKTogYW55ID0+IHtcbiAgdGhyb3cgZXJyb3JNZXNzYWdlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQ2dCQSxZQUFvQixJQUFVO0VBQzVDLE1BQU1BLFlBQVk7QUFDcEIsQ0FBQztBQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FBQUMsUUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
package/lib/rest.js CHANGED
@@ -189,4 +189,4 @@ module.exports = {
189
189
  get,
190
190
  update
191
191
  };
192
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJSZXN0UXVlcnkiLCJSZXN0V3JpdGUiLCJ0cmlnZ2VycyIsImVuZm9yY2VSb2xlU2VjdXJpdHkiLCJjaGVja1RyaWdnZXJzIiwiY2xhc3NOYW1lIiwiY29uZmlnIiwidHlwZXMiLCJzb21lIiwidHJpZ2dlclR5cGUiLCJnZXRUcmlnZ2VyIiwiVHlwZXMiLCJhcHBsaWNhdGlvbklkIiwiY2hlY2tMaXZlUXVlcnkiLCJsaXZlUXVlcnlDb250cm9sbGVyIiwiaGFzTGl2ZVF1ZXJ5IiwiZmluZCIsImF1dGgiLCJyZXN0V2hlcmUiLCJyZXN0T3B0aW9ucyIsImNsaWVudFNESyIsImNvbnRleHQiLCJxdWVyeSIsIm1ldGhvZCIsIk1ldGhvZCIsImV4ZWN1dGUiLCJnZXQiLCJvYmplY3RJZCIsImRlbCIsIkVycm9yIiwiSU5WQUxJRF9KU09OIiwiaXNVbmF1dGhlbnRpY2F0ZWQiLCJTRVNTSU9OX01JU1NJTkciLCJpbmZsYXRlZE9iamVjdCIsInNjaGVtYUNvbnRyb2xsZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJoYXNUcmlnZ2VycyIsIm9wIiwicmVzcG9uc2UiLCJyZXN1bHRzIiwibGVuZ3RoIiwiZmlyc3RSZXN1bHQiLCJpc01hc3RlciIsImlzTWFpbnRlbmFuY2UiLCJ1c2VyIiwiaWQiLCJJTlZBTElEX1NFU1NJT05fVE9LRU4iLCJjYWNoZUFkYXB0ZXIiLCJjYWNoZUNvbnRyb2xsZXIiLCJzZXNzaW9uVG9rZW4iLCJPYmplY3QiLCJmcm9tSlNPTiIsIm1heWJlUnVuVHJpZ2dlciIsImJlZm9yZURlbGV0ZSIsIk9CSkVDVF9OT1RfRk9VTkQiLCJnZXRVc2VyUm9sZXMiLCJkYXRhYmFzZSIsImxvYWRTY2hlbWEiLCJzIiwib3B0aW9ucyIsImFjbCIsInB1c2giLCJjb25jYXQiLCJ1c2VyUm9sZXMiLCJkZXN0cm95IiwicGVybXMiLCJnZXRDbGFzc0xldmVsUGVybWlzc2lvbnMiLCJvbkFmdGVyRGVsZXRlIiwiYWZ0ZXJEZWxldGUiLCJjYXRjaCIsImVycm9yIiwiaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvciIsImNyZWF0ZSIsInJlc3RPYmplY3QiLCJ3cml0ZSIsInVwZGF0ZSIsInJ1bkFmdGVyRmluZCIsInJ1bkJlZm9yZUZpbmQiLCJvcmlnaW5hbFJlc3RPYmplY3QiLCJjb2RlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjb250YWlucyBoZWxwZXJzIGZvciBydW5uaW5nIG9wZXJhdGlvbnMgaW4gUkVTVCBmb3JtYXQuXG4vLyBUaGUgZ29hbCBpcyB0aGF0IGhhbmRsZXJzIHRoYXQgZXhwbGljaXRseSBoYW5kbGUgYW4gZXhwcmVzcyByb3V0ZVxuLy8gc2hvdWxkIGp1c3QgYmUgc2hhbGxvdyB3cmFwcGVycyBhcm91bmQgdGhpbmdzIGluIHRoaXMgZmlsZSwgYnV0XG4vLyB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBleHBsaWNpdGx5IGRlcGVuZCBvbiB0aGUgcmVxdWVzdFxuLy8gb2JqZWN0LlxuLy8gVGhpcyBtZWFucyB0aGF0IG9uZSBvZiB0aGVzZSBoYW5kbGVycyBjYW4gc3VwcG9ydCBtdWx0aXBsZVxuLy8gcm91dGVzLiBUaGF0J3MgdXNlZnVsIGZvciB0aGUgcm91dGVzIHRoYXQgZG8gcmVhbGx5IHNpbWlsYXJcbi8vIHRoaW5ncy5cblxudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG52YXIgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbnZhciBSZXN0V3JpdGUgPSByZXF1aXJlKCcuL1Jlc3RXcml0ZScpO1xudmFyIHRyaWdnZXJzID0gcmVxdWlyZSgnLi90cmlnZ2VycycpO1xuY29uc3QgeyBlbmZvcmNlUm9sZVNlY3VyaXR5IH0gPSByZXF1aXJlKCcuL1NoYXJlZFJlc3QnKTtcblxuZnVuY3Rpb24gY2hlY2tUcmlnZ2VycyhjbGFzc05hbWUsIGNvbmZpZywgdHlwZXMpIHtcbiAgcmV0dXJuIHR5cGVzLnNvbWUodHJpZ2dlclR5cGUgPT4ge1xuICAgIHJldHVybiB0cmlnZ2Vycy5nZXRUcmlnZ2VyKGNsYXNzTmFtZSwgdHJpZ2dlcnMuVHlwZXNbdHJpZ2dlclR5cGVdLCBjb25maWcuYXBwbGljYXRpb25JZCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjaGVja0xpdmVRdWVyeShjbGFzc05hbWUsIGNvbmZpZykge1xuICByZXR1cm4gY29uZmlnLmxpdmVRdWVyeUNvbnRyb2xsZXIgJiYgY29uZmlnLmxpdmVRdWVyeUNvbnRyb2xsZXIuaGFzTGl2ZVF1ZXJ5KGNsYXNzTmFtZSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhbiBvYmplY3Qgd2l0aCBvcHRpb25hbCBrZXlzICdyZXN1bHRzJyBhbmQgJ2NvdW50Jy5cbmNvbnN0IGZpbmQgPSBhc3luYyAoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHJlc3RXaGVyZSwgcmVzdE9wdGlvbnMsIGNsaWVudFNESywgY29udGV4dCkgPT4ge1xuICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgfSk7XG4gIHJldHVybiBxdWVyeS5leGVjdXRlKCk7XG59O1xuXG4vLyBnZXQgaXMganVzdCBsaWtlIGZpbmQgYnV0IG9ubHkgcXVlcmllcyBhbiBvYmplY3RJZC5cbmNvbnN0IGdldCA9IGFzeW5jIChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgb2JqZWN0SWQsIHJlc3RPcHRpb25zLCBjbGllbnRTREssIGNvbnRleHQpID0+IHtcbiAgdmFyIHJlc3RXaGVyZSA9IHsgb2JqZWN0SWQgfTtcbiAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgfSk7XG4gIHJldHVybiBxdWVyeS5leGVjdXRlKCk7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGRvZXNuJ3QgcmVzb2x2ZSB0byBhbnkgdXNlZnVsIHZhbHVlLlxuZnVuY3Rpb24gZGVsKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCBvYmplY3RJZCwgY29udGV4dCkge1xuICBpZiAodHlwZW9mIG9iamVjdElkICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0pTT04sICdiYWQgb2JqZWN0SWQnKTtcbiAgfVxuXG4gIGlmIChjbGFzc05hbWUgPT09ICdfVXNlcicgJiYgYXV0aC5pc1VuYXV0aGVudGljYXRlZCgpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlNFU1NJT05fTUlTU0lORywgJ0luc3VmZmljaWVudCBhdXRoIHRvIGRlbGV0ZSB1c2VyJyk7XG4gIH1cblxuICBlbmZvcmNlUm9sZVNlY3VyaXR5KCdkZWxldGUnLCBjbGFzc05hbWUsIGF1dGgpO1xuXG4gIGxldCBpbmZsYXRlZE9iamVjdDtcbiAgbGV0IHNjaGVtYUNvbnRyb2xsZXI7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaGFzVHJpZ2dlcnMgPSBjaGVja1RyaWdnZXJzKGNsYXNzTmFtZSwgY29uZmlnLCBbJ2JlZm9yZURlbGV0ZScsICdhZnRlckRlbGV0ZSddKTtcbiAgICAgIGNvbnN0IGhhc0xpdmVRdWVyeSA9IGNoZWNrTGl2ZVF1ZXJ5KGNsYXNzTmFtZSwgY29uZmlnKTtcbiAgICAgIGlmIChoYXNUcmlnZ2VycyB8fCBoYXNMaXZlUXVlcnkgfHwgY2xhc3NOYW1lID09ICdfU2Vzc2lvbicpIHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIHJlc3RXaGVyZTogeyBvYmplY3RJZCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGUoeyBvcDogJ2RlbGV0ZScgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnJlc3VsdHMgJiYgcmVzcG9uc2UucmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0c1swXTtcbiAgICAgICAgICAgIGZpcnN0UmVzdWx0LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgICAgIGlmIChjbGFzc05hbWUgPT09ICdfU2Vzc2lvbicgJiYgIWF1dGguaXNNYXN0ZXIgJiYgIWF1dGguaXNNYWludGVuYW5jZSkge1xuICAgICAgICAgICAgICBpZiAoIWF1dGgudXNlciB8fCBmaXJzdFJlc3VsdC51c2VyLm9iamVjdElkICE9PSBhdXRoLnVzZXIuaWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWNoZUFkYXB0ZXIgPSBjb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgICAgICAgICAgY2FjaGVBZGFwdGVyLnVzZXIuZGVsKGZpcnN0UmVzdWx0LnNlc3Npb25Ub2tlbik7XG4gICAgICAgICAgICBpbmZsYXRlZE9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihmaXJzdFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlcnMubWF5YmVSdW5UcmlnZ2VyKFxuICAgICAgICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVEZWxldGUsXG4gICAgICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgICAgIGluZmxhdGVkT2JqZWN0LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnT2JqZWN0IG5vdCBmb3VuZCBmb3IgZGVsZXRlLicpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKCFhdXRoLmlzTWFzdGVyICYmICFhdXRoLmlzTWFpbnRlbmFuY2UpIHtcbiAgICAgICAgcmV0dXJuIGF1dGguZ2V0VXNlclJvbGVzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSlcbiAgICAudGhlbigoKSA9PiBjb25maWcuZGF0YWJhc2UubG9hZFNjaGVtYSgpKVxuICAgIC50aGVuKHMgPT4ge1xuICAgICAgc2NoZW1hQ29udHJvbGxlciA9IHM7XG4gICAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgICBpZiAoIWF1dGguaXNNYXN0ZXIgJiYgIWF1dGguaXNNYWludGVuYW5jZSkge1xuICAgICAgICBvcHRpb25zLmFjbCA9IFsnKiddO1xuICAgICAgICBpZiAoYXV0aC51c2VyKSB7XG4gICAgICAgICAgb3B0aW9ucy5hY2wucHVzaChhdXRoLnVzZXIuaWQpO1xuICAgICAgICAgIG9wdGlvbnMuYWNsID0gb3B0aW9ucy5hY2wuY29uY2F0KGF1dGgudXNlclJvbGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29uZmlnLmRhdGFiYXNlLmRlc3Ryb3koXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIG9iamVjdElkOiBvYmplY3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2NoZW1hQ29udHJvbGxlclxuICAgICAgKTtcbiAgICB9KVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIC8vIE5vdGlmeSBMaXZlUXVlcnkgc2VydmVyIGlmIHBvc3NpYmxlXG4gICAgICBjb25zdCBwZXJtcyA9IHNjaGVtYUNvbnRyb2xsZXIuZ2V0Q2xhc3NMZXZlbFBlcm1pc3Npb25zKGNsYXNzTmFtZSk7XG4gICAgICBjb25maWcubGl2ZVF1ZXJ5Q29udHJvbGxlci5vbkFmdGVyRGVsZXRlKGNsYXNzTmFtZSwgaW5mbGF0ZWRPYmplY3QsIG51bGwsIHBlcm1zKTtcbiAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRGVsZXRlLFxuICAgICAgICBhdXRoLFxuICAgICAgICBpbmZsYXRlZE9iamVjdCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgIH0pXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGhhbmRsZVNlc3Npb25NaXNzaW5nRXJyb3IoZXJyb3IsIGNsYXNzTmFtZSwgYXV0aCk7XG4gICAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIHtyZXNwb25zZSwgc3RhdHVzLCBsb2NhdGlvbn0gb2JqZWN0LlxuZnVuY3Rpb24gY3JlYXRlKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCByZXN0T2JqZWN0LCBjbGllbnRTREssIGNvbnRleHQpIHtcbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgnY3JlYXRlJywgY2xhc3NOYW1lLCBhdXRoKTtcbiAgdmFyIHdyaXRlID0gbmV3IFJlc3RXcml0ZShjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgbnVsbCwgcmVzdE9iamVjdCwgbnVsbCwgY2xpZW50U0RLLCBjb250ZXh0KTtcbiAgcmV0dXJuIHdyaXRlLmV4ZWN1dGUoKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBjb250YWlucyB0aGUgZmllbGRzIG9mIHRoZSB1cGRhdGUgdGhhdCB0aGVcbi8vIFJFU1QgQVBJIGlzIHN1cHBvc2VkIHRvIHJldHVybi5cbi8vIFVzdWFsbHksIHRoaXMgaXMganVzdCB1cGRhdGVkQXQuXG5mdW5jdGlvbiB1cGRhdGUoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHJlc3RXaGVyZSwgcmVzdE9iamVjdCwgY2xpZW50U0RLLCBjb250ZXh0KSB7XG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ3VwZGF0ZScsIGNsYXNzTmFtZSwgYXV0aCk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaGFzVHJpZ2dlcnMgPSBjaGVja1RyaWdnZXJzKGNsYXNzTmFtZSwgY29uZmlnLCBbJ2JlZm9yZVNhdmUnLCAnYWZ0ZXJTYXZlJ10pO1xuICAgICAgY29uc3QgaGFzTGl2ZVF1ZXJ5ID0gY2hlY2tMaXZlUXVlcnkoY2xhc3NOYW1lLCBjb25maWcpO1xuICAgICAgaWYgKGhhc1RyaWdnZXJzIHx8IGhhc0xpdmVRdWVyeSkge1xuICAgICAgICAvLyBEbyBub3QgdXNlIGZpbmQsIGFzIGl0IHJ1bnMgdGhlIGJlZm9yZSBmaW5kc1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcmVzdFdoZXJlLFxuICAgICAgICAgIHJ1bkFmdGVyRmluZDogZmFsc2UsXG4gICAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxdWVyeS5leGVjdXRlKHtcbiAgICAgICAgICBvcDogJ3VwZGF0ZScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfSlcbiAgICAudGhlbigoeyByZXN1bHRzIH0pID0+IHtcbiAgICAgIHZhciBvcmlnaW5hbFJlc3RPYmplY3Q7XG4gICAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICBvcmlnaW5hbFJlc3RPYmplY3QgPSByZXN1bHRzWzBdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBSZXN0V3JpdGUoXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICByZXN0V2hlcmUsXG4gICAgICAgIHJlc3RPYmplY3QsXG4gICAgICAgIG9yaWdpbmFsUmVzdE9iamVjdCxcbiAgICAgICAgY2xpZW50U0RLLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICAndXBkYXRlJ1xuICAgICAgKS5leGVjdXRlKCk7XG4gICAgfSlcbiAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoKSB7XG4gIC8vIElmIHdlJ3JlIHRyeWluZyB0byB1cGRhdGUgYSB1c2VyIHdpdGhvdXQgLyB3aXRoIGJhZCBzZXNzaW9uIHRva2VuXG4gIGlmIChcbiAgICBjbGFzc05hbWUgPT09ICdfVXNlcicgJiZcbiAgICBlcnJvci5jb2RlID09PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EICYmXG4gICAgIWF1dGguaXNNYXN0ZXIgJiZcbiAgICAhYXV0aC5pc01haW50ZW5hbmNlXG4gICkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5TRVNTSU9OX01JU1NJTkcsICdJbnN1ZmZpY2llbnQgYXV0aC4nKTtcbiAgfVxuICB0aHJvdyBlcnJvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNyZWF0ZSxcbiAgZGVsLFxuICBmaW5kLFxuICBnZXQsXG4gIHVwZGF0ZSxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0QsS0FBSztBQUV2QyxJQUFJRSxTQUFTLEdBQUdELE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEMsSUFBSUUsU0FBUyxHQUFHRixPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3RDLElBQUlHLFFBQVEsR0FBR0gsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUNwQyxNQUFNO0VBQUVJO0FBQW9CLENBQUMsR0FBR0osT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUV2RCxTQUFTSyxhQUFhQSxDQUFDQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFO0VBQy9DLE9BQU9BLEtBQUssQ0FBQ0MsSUFBSSxDQUFDQyxXQUFXLElBQUk7SUFDL0IsT0FBT1AsUUFBUSxDQUFDUSxVQUFVLENBQUNMLFNBQVMsRUFBRUgsUUFBUSxDQUFDUyxLQUFLLENBQUNGLFdBQVcsQ0FBQyxFQUFFSCxNQUFNLENBQUNNLGFBQWEsQ0FBQztFQUMxRixDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNDLGNBQWNBLENBQUNSLFNBQVMsRUFBRUMsTUFBTSxFQUFFO0VBQ3pDLE9BQU9BLE1BQU0sQ0FBQ1EsbUJB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
192
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJSZXN0UXVlcnkiLCJSZXN0V3JpdGUiLCJ0cmlnZ2VycyIsImVuZm9yY2VSb2xlU2VjdXJpdHkiLCJjaGVja1RyaWdnZXJzIiwiY2xhc3NOYW1lIiwiY29uZmlnIiwidHlwZXMiLCJzb21lIiwidHJpZ2dlclR5cGUiLCJnZXRUcmlnZ2VyIiwiVHlwZXMiLCJhcHBsaWNhdGlvbklkIiwiY2hlY2tMaXZlUXVlcnkiLCJsaXZlUXVlcnlDb250cm9sbGVyIiwiaGFzTGl2ZVF1ZXJ5IiwiZmluZCIsImF1dGgiLCJyZXN0V2hlcmUiLCJyZXN0T3B0aW9ucyIsImNsaWVudFNESyIsImNvbnRleHQiLCJxdWVyeSIsIm1ldGhvZCIsIk1ldGhvZCIsImV4ZWN1dGUiLCJnZXQiLCJvYmplY3RJZCIsImRlbCIsIkVycm9yIiwiSU5WQUxJRF9KU09OIiwiaXNVbmF1dGhlbnRpY2F0ZWQiLCJTRVNTSU9OX01JU1NJTkciLCJpbmZsYXRlZE9iamVjdCIsInNjaGVtYUNvbnRyb2xsZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJoYXNUcmlnZ2VycyIsIm9wIiwicmVzcG9uc2UiLCJyZXN1bHRzIiwibGVuZ3RoIiwiZmlyc3RSZXN1bHQiLCJpc01hc3RlciIsImlzTWFpbnRlbmFuY2UiLCJ1c2VyIiwiaWQiLCJJTlZBTElEX1NFU1NJT05fVE9LRU4iLCJjYWNoZUFkYXB0ZXIiLCJjYWNoZUNvbnRyb2xsZXIiLCJzZXNzaW9uVG9rZW4iLCJPYmplY3QiLCJmcm9tSlNPTiIsIm1heWJlUnVuVHJpZ2dlciIsImJlZm9yZURlbGV0ZSIsIk9CSkVDVF9OT1RfRk9VTkQiLCJnZXRVc2VyUm9sZXMiLCJkYXRhYmFzZSIsImxvYWRTY2hlbWEiLCJzIiwib3B0aW9ucyIsImFjbCIsInB1c2giLCJjb25jYXQiLCJ1c2VyUm9sZXMiLCJkZXN0cm95IiwicGVybXMiLCJnZXRDbGFzc0xldmVsUGVybWlzc2lvbnMiLCJvbkFmdGVyRGVsZXRlIiwiYWZ0ZXJEZWxldGUiLCJjYXRjaCIsImVycm9yIiwiaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvciIsImNyZWF0ZSIsInJlc3RPYmplY3QiLCJ3cml0ZSIsInVwZGF0ZSIsInJ1bkFmdGVyRmluZCIsInJ1bkJlZm9yZUZpbmQiLCJvcmlnaW5hbFJlc3RPYmplY3QiLCJjb2RlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjb250YWlucyBoZWxwZXJzIGZvciBydW5uaW5nIG9wZXJhdGlvbnMgaW4gUkVTVCBmb3JtYXQuXG4vLyBUaGUgZ29hbCBpcyB0aGF0IGhhbmRsZXJzIHRoYXQgZXhwbGljaXRseSBoYW5kbGUgYW4gZXhwcmVzcyByb3V0ZVxuLy8gc2hvdWxkIGp1c3QgYmUgc2hhbGxvdyB3cmFwcGVycyBhcm91bmQgdGhpbmdzIGluIHRoaXMgZmlsZSwgYnV0XG4vLyB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBleHBsaWNpdGx5IGRlcGVuZCBvbiB0aGUgcmVxdWVzdFxuLy8gb2JqZWN0LlxuLy8gVGhpcyBtZWFucyB0aGF0IG9uZSBvZiB0aGVzZSBoYW5kbGVycyBjYW4gc3VwcG9ydCBtdWx0aXBsZVxuLy8gcm91dGVzLiBUaGF0J3MgdXNlZnVsIGZvciB0aGUgcm91dGVzIHRoYXQgZG8gcmVhbGx5IHNpbWlsYXJcbi8vIHRoaW5ncy5cblxudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG52YXIgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbnZhciBSZXN0V3JpdGUgPSByZXF1aXJlKCcuL1Jlc3RXcml0ZScpO1xudmFyIHRyaWdnZXJzID0gcmVxdWlyZSgnLi90cmlnZ2VycycpO1xuY29uc3QgeyBlbmZvcmNlUm9sZVNlY3VyaXR5IH0gPSByZXF1aXJlKCcuL1NoYXJlZFJlc3QnKTtcblxuZnVuY3Rpb24gY2hlY2tUcmlnZ2VycyhjbGFzc05hbWUsIGNvbmZpZywgdHlwZXMpIHtcbiAgcmV0dXJuIHR5cGVzLnNvbWUodHJpZ2dlclR5cGUgPT4ge1xuICAgIHJldHVybiB0cmlnZ2Vycy5nZXRUcmlnZ2VyKGNsYXNzTmFtZSwgdHJpZ2dlcnMuVHlwZXNbdHJpZ2dlclR5cGVdLCBjb25maWcuYXBwbGljYXRpb25JZCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjaGVja0xpdmVRdWVyeShjbGFzc05hbWUsIGNvbmZpZykge1xuICByZXR1cm4gY29uZmlnLmxpdmVRdWVyeUNvbnRyb2xsZXIgJiYgY29uZmlnLmxpdmVRdWVyeUNvbnRyb2xsZXIuaGFzTGl2ZVF1ZXJ5KGNsYXNzTmFtZSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhbiBvYmplY3Qgd2l0aCBvcHRpb25hbCBrZXlzICdyZXN1bHRzJyBhbmQgJ2NvdW50Jy5cbmNvbnN0IGZpbmQgPSBhc3luYyAoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHJlc3RXaGVyZSwgcmVzdE9wdGlvbnMsIGNsaWVudFNESywgY29udGV4dCkgPT4ge1xuICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgfSk7XG4gIHJldHVybiBxdWVyeS5leGVjdXRlKCk7XG59O1xuXG4vLyBnZXQgaXMganVzdCBsaWtlIGZpbmQgYnV0IG9ubHkgcXVlcmllcyBhbiBvYmplY3RJZC5cbmNvbnN0IGdldCA9IGFzeW5jIChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgb2JqZWN0SWQsIHJlc3RPcHRpb25zLCBjbGllbnRTREssIGNvbnRleHQpID0+IHtcbiAgdmFyIHJlc3RXaGVyZSA9IHsgb2JqZWN0SWQgfTtcbiAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgfSk7XG4gIHJldHVybiBxdWVyeS5leGVjdXRlKCk7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGRvZXNuJ3QgcmVzb2x2ZSB0byBhbnkgdXNlZnVsIHZhbHVlLlxuZnVuY3Rpb24gZGVsKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCBvYmplY3RJZCwgY29udGV4dCkge1xuICBpZiAodHlwZW9mIG9iamVjdElkICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0pTT04sICdiYWQgb2JqZWN0SWQnKTtcbiAgfVxuXG4gIGlmIChjbGFzc05hbWUgPT09ICdfVXNlcicgJiYgYXV0aC5pc1VuYXV0aGVudGljYXRlZCgpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlNFU1NJT05fTUlTU0lORywgJ0luc3VmZmljaWVudCBhdXRoIHRvIGRlbGV0ZSB1c2VyJyk7XG4gIH1cblxuICBlbmZvcmNlUm9sZVNlY3VyaXR5KCdkZWxldGUnLCBjbGFzc05hbWUsIGF1dGgpO1xuXG4gIGxldCBpbmZsYXRlZE9iamVjdDtcbiAgbGV0IHNjaGVtYUNvbnRyb2xsZXI7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaGFzVHJpZ2dlcnMgPSBjaGVja1RyaWdnZXJzKGNsYXNzTmFtZSwgY29uZmlnLCBbJ2JlZm9yZURlbGV0ZScsICdhZnRlckRlbGV0ZSddKTtcbiAgICAgIGNvbnN0IGhhc0xpdmVRdWVyeSA9IGNoZWNrTGl2ZVF1ZXJ5KGNsYXNzTmFtZSwgY29uZmlnKTtcbiAgICAgIGlmIChoYXNUcmlnZ2VycyB8fCBoYXNMaXZlUXVlcnkgfHwgY2xhc3NOYW1lID09ICdfU2Vzc2lvbicpIHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIHJlc3RXaGVyZTogeyBvYmplY3RJZCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGUoeyBvcDogJ2RlbGV0ZScgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnJlc3VsdHMgJiYgcmVzcG9uc2UucmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0c1swXTtcbiAgICAgICAgICAgIGZpcnN0UmVzdWx0LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgICAgIGlmIChjbGFzc05hbWUgPT09ICdfU2Vzc2lvbicgJiYgIWF1dGguaXNNYXN0ZXIgJiYgIWF1dGguaXNNYWludGVuYW5jZSkge1xuICAgICAgICAgICAgICBpZiAoIWF1dGgudXNlciB8fCBmaXJzdFJlc3VsdC51c2VyLm9iamVjdElkICE9PSBhdXRoLnVzZXIuaWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWNoZUFkYXB0ZXIgPSBjb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgICAgICAgICAgY2FjaGVBZGFwdGVyLnVzZXIuZGVsKGZpcnN0UmVzdWx0LnNlc3Npb25Ub2tlbik7XG4gICAgICAgICAgICBpbmZsYXRlZE9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihmaXJzdFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlcnMubWF5YmVSdW5UcmlnZ2VyKFxuICAgICAgICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVEZWxldGUsXG4gICAgICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgICAgIGluZmxhdGVkT2JqZWN0LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnT2JqZWN0IG5vdCBmb3VuZCBmb3IgZGVsZXRlLicpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKCFhdXRoLmlzTWFzdGVyICYmICFhdXRoLmlzTWFpbnRlbmFuY2UpIHtcbiAgICAgICAgcmV0dXJuIGF1dGguZ2V0VXNlclJvbGVzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSlcbiAgICAudGhlbigoKSA9PiBjb25maWcuZGF0YWJhc2UubG9hZFNjaGVtYSgpKVxuICAgIC50aGVuKHMgPT4ge1xuICAgICAgc2NoZW1hQ29udHJvbGxlciA9IHM7XG4gICAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgICBpZiAoIWF1dGguaXNNYXN0ZXIgJiYgIWF1dGguaXNNYWludGVuYW5jZSkge1xuICAgICAgICBvcHRpb25zLmFjbCA9IFsnKiddO1xuICAgICAgICBpZiAoYXV0aC51c2VyKSB7XG4gICAgICAgICAgb3B0aW9ucy5hY2wucHVzaChhdXRoLnVzZXIuaWQpO1xuICAgICAgICAgIG9wdGlvbnMuYWNsID0gb3B0aW9ucy5hY2wuY29uY2F0KGF1dGgudXNlclJvbGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29uZmlnLmRhdGFiYXNlLmRlc3Ryb3koXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIG9iamVjdElkOiBvYmplY3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2NoZW1hQ29udHJvbGxlclxuICAgICAgKTtcbiAgICB9KVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIC8vIE5vdGlmeSBMaXZlUXVlcnkgc2VydmVyIGlmIHBvc3NpYmxlXG4gICAgICBjb25zdCBwZXJtcyA9IHNjaGVtYUNvbnRyb2xsZXIuZ2V0Q2xhc3NMZXZlbFBlcm1pc3Npb25zKGNsYXNzTmFtZSk7XG4gICAgICBjb25maWcubGl2ZVF1ZXJ5Q29udHJvbGxlci5vbkFmdGVyRGVsZXRlKGNsYXNzTmFtZSwgaW5mbGF0ZWRPYmplY3QsIG51bGwsIHBlcm1zKTtcbiAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRGVsZXRlLFxuICAgICAgICBhdXRoLFxuICAgICAgICBpbmZsYXRlZE9iamVjdCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgIH0pXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGhhbmRsZVNlc3Npb25NaXNzaW5nRXJyb3IoZXJyb3IsIGNsYXNzTmFtZSwgYXV0aCk7XG4gICAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIHtyZXNwb25zZSwgc3RhdHVzLCBsb2NhdGlvbn0gb2JqZWN0LlxuZnVuY3Rpb24gY3JlYXRlKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCByZXN0T2JqZWN0LCBjbGllbnRTREssIGNvbnRleHQpIHtcbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgnY3JlYXRlJywgY2xhc3NOYW1lLCBhdXRoKTtcbiAgdmFyIHdyaXRlID0gbmV3IFJlc3RXcml0ZShjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgbnVsbCwgcmVzdE9iamVjdCwgbnVsbCwgY2xpZW50U0RLLCBjb250ZXh0KTtcbiAgcmV0dXJuIHdyaXRlLmV4ZWN1dGUoKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBjb250YWlucyB0aGUgZmllbGRzIG9mIHRoZSB1cGRhdGUgdGhhdCB0aGVcbi8vIFJFU1QgQVBJIGlzIHN1cHBvc2VkIHRvIHJldHVybi5cbi8vIFVzdWFsbHksIHRoaXMgaXMganVzdCB1cGRhdGVkQXQuXG5mdW5jdGlvbiB1cGRhdGUoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHJlc3RXaGVyZSwgcmVzdE9iamVjdCwgY2xpZW50U0RLLCBjb250ZXh0KSB7XG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ3VwZGF0ZScsIGNsYXNzTmFtZSwgYXV0aCk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaGFzVHJpZ2dlcnMgPSBjaGVja1RyaWdnZXJzKGNsYXNzTmFtZSwgY29uZmlnLCBbJ2JlZm9yZVNhdmUnLCAnYWZ0ZXJTYXZlJ10pO1xuICAgICAgY29uc3QgaGFzTGl2ZVF1ZXJ5ID0gY2hlY2tMaXZlUXVlcnkoY2xhc3NOYW1lLCBjb25maWcpO1xuICAgICAgaWYgKGhhc1RyaWdnZXJzIHx8IGhhc0xpdmVRdWVyeSkge1xuICAgICAgICAvLyBEbyBub3QgdXNlIGZpbmQsIGFzIGl0IHJ1bnMgdGhlIGJlZm9yZSBmaW5kc1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcmVzdFdoZXJlLFxuICAgICAgICAgIHJ1bkFmdGVyRmluZDogZmFsc2UsXG4gICAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxdWVyeS5leGVjdXRlKHtcbiAgICAgICAgICBvcDogJ3VwZGF0ZScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfSlcbiAgICAudGhlbigoeyByZXN1bHRzIH0pID0+IHtcbiAgICAgIHZhciBvcmlnaW5hbFJlc3RPYmplY3Q7XG4gICAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICBvcmlnaW5hbFJlc3RPYmplY3QgPSByZXN1bHRzWzBdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBSZXN0V3JpdGUoXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICByZXN0V2hlcmUsXG4gICAgICAgIHJlc3RPYmplY3QsXG4gICAgICAgIG9yaWdpbmFsUmVzdE9iamVjdCxcbiAgICAgICAgY2xpZW50U0RLLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICAndXBkYXRlJ1xuICAgICAgKS5leGVjdXRlKCk7XG4gICAgfSlcbiAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoKSB7XG4gIC8vIElmIHdlJ3JlIHRyeWluZyB0byB1cGRhdGUgYSB1c2VyIHdpdGhvdXQgLyB3aXRoIGJhZCBzZXNzaW9uIHRva2VuXG4gIGlmIChcbiAgICBjbGFzc05hbWUgPT09ICdfVXNlcicgJiZcbiAgICBlcnJvci5jb2RlID09PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EICYmXG4gICAgIWF1dGguaXNNYXN0ZXIgJiZcbiAgICAhYXV0aC5pc01haW50ZW5hbmNlXG4gICkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5TRVNTSU9OX01JU1NJTkcsICdJbnN1ZmZpY2llbnQgYXV0aC4nKTtcbiAgfVxuICB0aHJvdyBlcnJvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNyZWF0ZSxcbiAgZGVsLFxuICBmaW5kLFxuICBnZXQsXG4gIHVwZGF0ZSxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0QsS0FBSztBQUV2QyxJQUFJRSxTQUFTLEdBQUdELE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEMsSUFBSUUsU0FBUyxHQUFHRixPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3RDLElBQUlHLFFBQVEsR0FBR0gsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUNwQyxNQUFNO0VBQUVJO0FBQW9CLENBQUMsR0FBR0osT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUV2RCxTQUFTSyxhQUFhQSxDQUFDQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFO0VBQy9DLE9BQU9BLEtBQUssQ0FBQ0MsSUFBSSxDQUFDQyxXQUFXLElBQUk7SUFDL0IsT0FBT1AsUUFBUSxDQUFDUSxVQUFVLENBQUNMLFNBQVMsRUFBRUgsUUFBUSxDQUFDUyxLQUFLLENBQUNGLFdBQVcsQ0FBQyxFQUFFSCxNQUFNLENBQUNNLGFBQWEsQ0FBQztFQUMxRixDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNDLGNBQWNBLENBQUNSLFNBQVMsRUFBRUMsTUFBTSxFQUFFO0VBQ3pDLE9BQU9BLE1BQU0sQ0FBQ1EsbUJB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