@wppconnect/server 2.4.0 → 2.4.2

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 (58) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/Dockerfile +2 -0
  3. package/dist/config/upload.js +1 -1
  4. package/dist/config.js +1 -1
  5. package/dist/controller/catalogController.js +1 -1
  6. package/dist/controller/communityController.js +1 -1
  7. package/dist/controller/deviceController.js +1 -1
  8. package/dist/controller/encryptController.js +1 -1
  9. package/dist/controller/groupController.js +1 -1
  10. package/dist/controller/labelsController.js +1 -1
  11. package/dist/controller/messageController.js +1 -1
  12. package/dist/controller/miscController.js +1 -1
  13. package/dist/controller/newsletterController.js +1 -1
  14. package/dist/controller/orderController.js +1 -1
  15. package/dist/controller/sessionController.js +1 -1
  16. package/dist/controller/statusController.js +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/mapper/index.js +2 -2
  19. package/dist/mapper/tagone-chat.js +1 -1
  20. package/dist/mapper/tagone-device.js +1 -1
  21. package/dist/mapper/tagone-message-document.js +1 -1
  22. package/dist/mapper/tagone-message-image.js +1 -1
  23. package/dist/mapper/tagone-message-location.js +1 -1
  24. package/dist/mapper/tagone-message-video.js +1 -1
  25. package/dist/mapper/tagone-message.js +1 -1
  26. package/dist/mapper/tagone-onack.js +1 -1
  27. package/dist/mapper/tagone-return.js +1 -1
  28. package/dist/middleware/auth.js +1 -1
  29. package/dist/middleware/healthCheck.js +1 -1
  30. package/dist/middleware/instrumentation.js +1 -1
  31. package/dist/middleware/statusConnection.js +1 -1
  32. package/dist/routes/index.js +2 -2
  33. package/dist/server.js +1 -1
  34. package/dist/swagger.js +1 -1
  35. package/dist/tests/util/bufferUtils.test.js +1 -1
  36. package/dist/types/ServerOptions.js +1 -1
  37. package/dist/types/WhatsAppServer.js +1 -1
  38. package/dist/types/express/index.d.js +1 -1
  39. package/dist/util/bucketAlreadyExists.js +1 -1
  40. package/dist/util/bufferutils.js +1 -1
  41. package/dist/util/chatWootClient.js +1 -1
  42. package/dist/util/createSessionUtil.js +1 -1
  43. package/dist/util/db/mongodb/db.js +1 -1
  44. package/dist/util/db/redis/db.js +1 -1
  45. package/dist/util/functions.js +1 -1
  46. package/dist/util/getAllTokens.js +1 -1
  47. package/dist/util/logger.js +1 -1
  48. package/dist/util/manageSession.js +1 -1
  49. package/dist/util/sessionUtil.js +1 -1
  50. package/dist/util/tokenStore/FileTokenStore/FileTokenStore.js +2 -2
  51. package/dist/util/tokenStore/factory.js +1 -1
  52. package/dist/util/tokenStore/fileTokenStory.js +1 -1
  53. package/dist/util/tokenStore/firebaseTokenStory.js +1 -1
  54. package/dist/util/tokenStore/model/token.js +1 -1
  55. package/dist/util/tokenStore/mongodbTokenStory.js +1 -1
  56. package/dist/util/tokenStore/redisTokenStory.js +1 -1
  57. package/dist/util/tokenStore/types.js +1 -1
  58. package/package.json +36 -36
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 2.4.2 (2024-03-28)
2
+
3
+ ### Bug Fixes
4
+
5
+ - Fixed DockerFile ([fed13ec](https://github.com/wppconnect-team/wppconnect-server/commit/fed13ece778462fa540bcfa55823863c7fe1bba0))
6
+
7
+ ## 2.4.1 (2024-03-12)
8
+
1
9
  # 2.4.0 (2024-01-26)
2
10
 
3
11
  ### Bug Fixes
package/Dockerfile CHANGED
@@ -2,6 +2,7 @@ FROM node:lts-alpine3.18 as base
2
2
  WORKDIR /usr/src/wpp-server
3
3
  ENV NODE_ENV=production PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
4
4
  COPY package.json ./
5
+ RUN yarn set version stable
5
6
  RUN yarn install --production --pure-lockfile && \
6
7
  yarn cache clean
7
8
 
@@ -9,6 +10,7 @@ FROM base as build
9
10
  WORKDIR /usr/src/wpp-server
10
11
  ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
11
12
  COPY package.json ./
13
+ RUN yarn set version stable
12
14
  RUN yarn install --production=false --pure-lockfile && \
13
15
  yarn cache clean
14
16
  COPY . .
@@ -29,4 +29,4 @@ var _path = _interopRequireDefault(require("path")); /*
29
29
  * See the License for the specific language governing permissions and
30
30
  * limitations under the License.
31
31
  */const storage = _multer.default.diskStorage({ destination: function (req, file, cb) {const __dirname = _path.default.resolve(_path.default.dirname(''));cb(null, _path.default.resolve(__dirname, 'uploads'));}, filename: function (req, file, cb) {const filename = `wppConnect-${Date.now()}-${file.originalname}`;cb(null, filename);} });const uploads = (0, _multer.default)({ storage: storage });var _default = exports.default = uploads;
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbXVsdGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcGF0aCIsInN0b3JhZ2UiLCJtdWx0ZXIiLCJkaXNrU3RvcmFnZSIsImRlc3RpbmF0aW9uIiwicmVxIiwiZmlsZSIsImNiIiwiX19kaXJuYW1lIiwicGF0aCIsInJlc29sdmUiLCJkaXJuYW1lIiwiZmlsZW5hbWUiLCJEYXRlIiwibm93Iiwib3JpZ2luYWxuYW1lIiwidXBsb2FkcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3VwbG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgbXVsdGVyIGZyb20gJ211bHRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3Qgc3RvcmFnZSA9IG11bHRlci5kaXNrU3RvcmFnZSh7XG4gIGRlc3RpbmF0aW9uOiBmdW5jdGlvbiAocmVxLCBmaWxlLCBjYikge1xuICAgIGNvbnN0IF9fZGlybmFtZSA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoJycpKTtcbiAgICBjYihudWxsLCBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAndXBsb2FkcycpKTtcbiAgfSxcbiAgZmlsZW5hbWU6IGZ1bmN0aW9uIChyZXEsIGZpbGUsIGNiKSB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBgd3BwQ29ubmVjdC0ke0RhdGUubm93KCl9LSR7ZmlsZS5vcmlnaW5hbG5hbWV9YDtcbiAgICBjYihudWxsLCBmaWxlbmFtZSk7XG4gIH0sXG59KTtcblxuY29uc3QgdXBsb2FkcyA9IG11bHRlcih7IHN0b3JhZ2U6IHN0b3JhZ2UgfSk7XG5leHBvcnQgZGVmYXVsdCB1cGxvYWRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUEsVUFBd0IsQ0FoQnhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUlBLE1BQU1FLE9BQU8sR0FBR0MsZUFBTSxDQUFDQyxXQUFXLENBQUMsRUFDakNDLFdBQVcsRUFBRSxTQUFBQSxDQUFVQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsRUFBRSxFQUFFLENBQ3BDLE1BQU1DLFNBQVMsR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUNELGFBQUksQ0FBQ0UsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ2hESixFQUFFLENBQUMsSUFBSSxFQUFFRSxhQUFJLENBQUNDLE9BQU8sQ0FBQ0YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQzlDLENBQUMsRUFDREksUUFBUSxFQUFFLFNBQUFBLENBQVVQLEdBQUcsRUFBRUMsSUFBSSxFQUFFQyxFQUFFLEVBQUUsQ0FDakMsTUFBTUssUUFBUSxHQUFJLGNBQWFDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUUsSUFBR1IsSUFBSSxDQUFDUyxZQUFhLEVBQUMsQ0FDaEVSLEVBQUUsQ0FBQyxJQUFJLEVBQUVLLFFBQVEsQ0FBQyxDQUNwQixDQUFDLENBQ0gsQ0FBQyxDQUFDLENBRUYsTUFBTUksT0FBTyxHQUFHLElBQUFkLGVBQU0sRUFBQyxFQUFFRCxPQUFPLEVBQUVBLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBZ0IsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FDOUJILE9BQU8ifQ==
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbXVsdGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcGF0aCIsInN0b3JhZ2UiLCJtdWx0ZXIiLCJkaXNrU3RvcmFnZSIsImRlc3RpbmF0aW9uIiwicmVxIiwiZmlsZSIsImNiIiwiX19kaXJuYW1lIiwicGF0aCIsInJlc29sdmUiLCJkaXJuYW1lIiwiZmlsZW5hbWUiLCJEYXRlIiwibm93Iiwib3JpZ2luYWxuYW1lIiwidXBsb2FkcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3VwbG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgbXVsdGVyIGZyb20gJ211bHRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3Qgc3RvcmFnZSA9IG11bHRlci5kaXNrU3RvcmFnZSh7XG4gIGRlc3RpbmF0aW9uOiBmdW5jdGlvbiAocmVxLCBmaWxlLCBjYikge1xuICAgIGNvbnN0IF9fZGlybmFtZSA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoJycpKTtcbiAgICBjYihudWxsLCBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAndXBsb2FkcycpKTtcbiAgfSxcbiAgZmlsZW5hbWU6IGZ1bmN0aW9uIChyZXEsIGZpbGUsIGNiKSB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBgd3BwQ29ubmVjdC0ke0RhdGUubm93KCl9LSR7ZmlsZS5vcmlnaW5hbG5hbWV9YDtcbiAgICBjYihudWxsLCBmaWxlbmFtZSk7XG4gIH0sXG59KTtcblxuY29uc3QgdXBsb2FkcyA9IG11bHRlcih7IHN0b3JhZ2U6IHN0b3JhZ2UgfSk7XG5leHBvcnQgZGVmYXVsdCB1cGxvYWRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUEsVUFBd0IsQ0FoQnhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUlBLE1BQU1FLE9BQU8sR0FBR0MsZUFBTSxDQUFDQyxXQUFXLENBQUMsRUFDakNDLFdBQVcsRUFBRSxTQUFBQSxDQUFVQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsRUFBRSxFQUFFLENBQ3BDLE1BQU1DLFNBQVMsR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUNELGFBQUksQ0FBQ0UsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ2hESixFQUFFLENBQUMsSUFBSSxFQUFFRSxhQUFJLENBQUNDLE9BQU8sQ0FBQ0YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQzlDLENBQUMsRUFDREksUUFBUSxFQUFFLFNBQUFBLENBQVVQLEdBQUcsRUFBRUMsSUFBSSxFQUFFQyxFQUFFLEVBQUUsQ0FDakMsTUFBTUssUUFBUSxHQUFJLGNBQWFDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUUsSUFBR1IsSUFBSSxDQUFDUyxZQUFhLEVBQUMsQ0FDaEVSLEVBQUUsQ0FBQyxJQUFJLEVBQUVLLFFBQVEsQ0FBQyxDQUNwQixDQUFDLENBQ0gsQ0FBQyxDQUFDLENBRUYsTUFBTUksT0FBTyxHQUFHLElBQUFkLGVBQU0sRUFBQyxFQUFFRCxPQUFPLEVBQUVBLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBZ0IsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FDOUJILE9BQU8iLCJpZ25vcmVMaXN0IjpbXX0=
package/dist/config.js CHANGED
@@ -103,4 +103,4 @@
103
103
  forcePathStyle: null
104
104
  }
105
105
  };
106
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZWNyZXRLZXkiLCJob3N0IiwicG9ydCIsImRldmljZU5hbWUiLCJwb3dlcmVkQnkiLCJzdGFydEFsbFNlc3Npb24iLCJ0b2tlblN0b3JlVHlwZSIsIm1heExpc3RlbmVycyIsImN1c3RvbVVzZXJEYXRhRGlyIiwid2ViaG9vayIsInVybCIsImF1dG9Eb3dubG9hZCIsInVwbG9hZFMzIiwicmVhZE1lc3NhZ2UiLCJhbGxVbnJlYWRPblN0YXJ0IiwibGlzdGVuQWNrcyIsIm9uUHJlc2VuY2VDaGFuZ2VkIiwib25QYXJ0aWNpcGFudHNDaGFuZ2VkIiwib25SZWFjdGlvbk1lc3NhZ2UiLCJvblBvbGxSZXNwb25zZSIsIm9uUmV2b2tlZE1lc3NhZ2UiLCJvbkxhYmVsVXBkYXRlZCIsIm9uU2VsZk1lc3NhZ2UiLCJpZ25vcmUiLCJ3ZWJzb2NrZXQiLCJjaGF0d29vdCIsInNlbmRRckNvZGUiLCJzZW5kU3RhdHVzIiwiYXJjaGl2ZSIsImVuYWJsZSIsIndhaXRUaW1lIiwiZGF5c1RvQXJjaGl2ZSIsImxvZyIsImxldmVsIiwibG9nZ2VyIiwiY3JlYXRlT3B0aW9ucyIsImJyb3dzZXJBcmdzIiwibGlua1ByZXZpZXdBcGlTZXJ2ZXJzIiwibWFwcGVyIiwicHJlZml4IiwiZGIiLCJtb25nb2RiRGF0YWJhc2UiLCJtb25nb2RiQ29sbGVjdGlvbiIsIm1vbmdvZGJVc2VyIiwibW9uZ29kYlBhc3N3b3JkIiwibW9uZ29kYkhvc3QiLCJtb25nb0lzUmVtb3RlIiwibW9uZ29VUkxSZW1vdGUiLCJtb25nb2RiUG9ydCIsInJlZGlzSG9zdCIsInJlZGlzUG9ydCIsInJlZGlzUGFzc3dvcmQiLCJyZWRpc0RiIiwicmVkaXNQcmVmaXgiLCJhd3NfczMiLCJyZWdpb24iLCJhY2Nlc3Nfa2V5X2lkIiwic2VjcmV0X2tleSIsImRlZmF1bHRCdWNrZXROYW1lIiwiZW5kcG9pbnQiLCJmb3JjZVBhdGhTdHlsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBzZWNyZXRLZXk6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJyxcbiAgaG9zdDogJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICBwb3J0OiAnMjE0NjUnLFxuICBkZXZpY2VOYW1lOiAnV3BwQ29ubmVjdCcsXG4gIHBvd2VyZWRCeTogJ1dQUENvbm5lY3QtU2VydmVyJyxcbiAgc3RhcnRBbGxTZXNzaW9uOiB0cnVlLFxuICB0b2tlblN0b3JlVHlwZTogJ2ZpbGUnLFxuICBtYXhMaXN0ZW5lcnM6IDE1LFxuICBjdXN0b21Vc2VyRGF0YURpcjogJy4vdXNlckRhdGFEaXIvJyxcbiAgd2ViaG9vazoge1xuICAgIHVybDogbnVsbCxcbiAgICBhdXRvRG93bmxvYWQ6IHRydWUsXG4gICAgdXBsb2FkUzM6IGZhbHNlLFxuICAgIHJlYWRNZXNzYWdlOiB0cnVlLFxuICAgIGFsbFVucmVhZE9uU3RhcnQ6IGZhbHNlLFxuICAgIGxpc3RlbkFja3M6IHRydWUsXG4gICAgb25QcmVzZW5jZUNoYW5nZWQ6IHRydWUsXG4gICAgb25QYXJ0aWNpcGFudHNDaGFuZ2VkOiB0cnVlLFxuICAgIG9uUmVhY3Rpb25NZXNzYWdlOiB0cnVlLFxuICAgIG9uUG9sbFJlc3BvbnNlOiB0cnVlLFxuICAgIG9uUmV2b2tlZE1lc3NhZ2U6IHRydWUsXG4gICAgb25MYWJlbFVwZGF0ZWQ6IHRydWUsXG4gICAgb25TZWxmTWVzc2FnZTogZmFsc2UsXG4gICAgaWdub3JlOiBbJ3N0YXR1c0Bicm9hZGNhc3QnXSxcbiAgfSxcbiAgd2Vic29ja2V0OiB7XG4gICAgYXV0b0Rvd25sb2FkOiBmYWxzZSxcbiAgICB1cGxvYWRTMzogZmFsc2UsXG4gIH0sXG4gIGNoYXR3b290OiB7XG4gICAgc2VuZFFyQ29kZTogdHJ1ZSxcbiAgICBzZW5kU3RhdHVzOiB0cnVlLFxuICB9LFxuICBhcmNoaXZlOiB7XG4gICAgZW5hYmxlOiBmYWxzZSxcbiAgICB3YWl0VGltZTogMTAsXG4gICAgZGF5c1RvQXJjaGl2ZTogNDUsXG4gIH0sXG4gIGxvZzoge1xuICAgIGxldmVsOiAnc2lsbHknLCAvLyBCZWZvcmUgb3BlbiBhIGlzc3VlLCBjaGFuZ2UgbGV2ZWwgdG8gc2lsbHkgYW5kIHJldHJ5IGEgYWN0aW9uXG4gICAgbG9nZ2VyOiBbJ2NvbnNvbGUnLCAnZmlsZSddLFxuICB9LFxuICBjcmVhdGVPcHRpb25zOiB7XG4gICAgYnJvd3NlckFyZ3M6IFtcbiAgICAgICctLWRpc2FibGUtd2ViLXNlY3VyaXR5JyxcbiAgICAgICctLW5vLXNhbmRib3gnLFxuICAgICAgJy0tZGlzYWJsZS13ZWItc2VjdXJpdHknLFxuICAgICAgJy0tYWdncmVzc2l2ZS1jYWNoZS1kaXNjYXJkJyxcbiAgICAgICctLWRpc2FibGUtY2FjaGUnLFxuICAgICAgJy0tZGlzYWJsZS1hcHBsaWNhdGlvbi1jYWNoZScsXG4gICAgICAnLS1kaXNhYmxlLW9mZmxpbmUtbG9hZC1zdGFsZS1jYWNoZScsXG4gICAgICAnLS1kaXNrLWNhY2hlLXNpemU9MCcsXG4gICAgICAnLS1kaXNhYmxlLWJhY2tncm91bmQtbmV0d29ya2luZycsXG4gICAgICAnLS1kaXNhYmxlLWRlZmF1bHQtYXBwcycsXG4gICAgICAnLS1kaXNhYmxlLWV4dGVuc2lvbnMnLFxuICAgICAgJy0tZGlzYWJsZS1zeW5jJyxcbiAgICAgICctLWRpc2FibGUtdHJhbnNsYXRlJyxcbiAgICAgICctLWhpZGUtc2Nyb2xsYmFycycsXG4gICAgICAnLS1tZXRyaWNzLXJlY29yZGluZy1vbmx5JyxcbiAgICAgICctLW11dGUtYXVkaW8nLFxuICAgICAgJy0tbm8tZmlyc3QtcnVuJyxcbiAgICAgICctLXNhZmVicm93c2luZy1kaXNhYmxlLWF1dG8tdXBkYXRlJyxcbiAgICAgICctLWlnbm9yZS1jZXJ0aWZpY2F0ZS1lcnJvcnMnLFxuICAgICAgJy0taWdub3JlLXNzbC1lcnJvcnMnLFxuICAgICAgJy0taWdub3JlLWNlcnRpZmljYXRlLWVycm9ycy1zcGtpLWxpc3QnLFxuICAgIF0sXG4gICAgLyoqXG4gICAgICogRXhhbXBsZSBvZiBjb25maWd1cmluZyB0aGUgbGlua1ByZXZpZXcgZ2VuZXJhdG9yXG4gICAgICogSWYgeW91IHNldCB0aGlzIHRvICdudWxsJywgaXQgd2lsbCB1c2UgZ2xvYmFsIHNlcnZlcnM7IGhvd2V2ZXIsIHlvdSBoYXZlIHRoZSBvcHRpb24gdG8gZGVmaW5lIHlvdXIgb3duIHNlcnZlclxuICAgICAqIENsb25lIHRoZSByZXBvc2l0b3J5IGh0dHBzOi8vZ2l0aHViLmNvbS93cHBjb25uZWN0LXRlYW0vd2EtanMtYXBpLXNlcnZlciBhbmQgaG9zdCBpdCBvbiB5b3VyIHNlcnZlciB3aXRoIHNzbFxuICAgICAqXG4gICAgICogQ29uZmlndXJlIHRoZSBhdHRyaWJ1dGUgYXMgZm9sbG93czpcbiAgICAgKiBsaW5rUHJldmlld0FwaVNlcnZlcnM6IFsgJ2h0dHBzOi8vd3d3LnlvdXJzZXJ2ZXIuY29tL3dhLWpzLWFwaS1zZXJ2ZXInIF1cbiAgICAgKi9cbiAgICBsaW5rUHJldmlld0FwaVNlcnZlcnM6IG51bGwsXG4gIH0sXG4gIG1hcHBlcjoge1xuICAgIGVuYWJsZTogZmFsc2UsXG4gICAgcHJlZml4OiAndGFnb25lLScsXG4gIH0sXG4gIGRiOiB7XG4gICAgbW9uZ29kYkRhdGFiYXNlOiAndG9rZW5zJyxcbiAgICBtb25nb2RiQ29sbGVjdGlvbjogJycsXG4gICAgbW9uZ29kYlVzZXI6ICcnLFxuICAgIG1vbmdvZGJQYXNzd29yZDogJycsXG4gICAgbW9uZ29kYkhvc3Q6ICcnLFxuICAgIG1vbmdvSXNSZW1vdGU6IHRydWUsXG4gICAgbW9uZ29VUkxSZW1vdGU6ICcnLFxuICAgIG1vbmdvZGJQb3J0OiAyNzAxNyxcbiAgICByZWRpc0hvc3Q6ICdsb2NhbGhvc3QnLFxuICAgIHJlZGlzUG9ydDogNjM3OSxcbiAgICByZWRpc1Bhc3N3b3JkOiAnJyxcbiAgICByZWRpc0RiOiAwLFxuICAgIHJlZGlzUHJlZml4OiAnZG9ja2VyJyxcbiAgfSxcbiAgYXdzX3MzOiB7XG4gICAgcmVnaW9uOiAnc2EtZWFzdC0xJyxcbiAgICBhY2Nlc3Nfa2V5X2lkOiBudWxsLFxuICAgIHNlY3JldF9rZXk6IG51bGwsXG4gICAgZGVmYXVsdEJ1Y2tldE5hbWU6IG51bGwsXG4gICAgZW5kcG9pbnQ6IG51bGwsXG4gICAgZm9yY2VQYXRoU3R5bGU6IG51bGwsXG4gIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoicUlBQWU7RUFDYkEsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsSUFBSSxFQUFFLGtCQUFrQjtFQUN4QkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsVUFBVSxFQUFFLFlBQVk7RUFDeEJDLFNBQVMsRUFBRSxtQkFBbUI7RUFDOUJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxjQUFjLEVBQUUsTUFBTTtFQUN0QkMsWUFBWSxFQUFFLEVBQUU7RUFDaEJDLGlCQUFpQixFQUFFLGdCQUFnQjtFQUNuQ0MsT0FBTyxFQUFFO0lBQ1BDLEdBQUcsRUFBRSxJQUFJO0lBQ1RDLFlBQVksRUFBRSxJQUFJO0lBQ2xCQyxRQUFRLEVBQUUsS0FBSztJQUNmQyxXQUFXLEVBQUUsSUFBSTtJQUNqQkMsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QkMsVUFBVSxFQUFFLElBQUk7SUFDaEJDLGlCQUFpQixFQUFFLElBQUk7SUFDdkJDLHFCQUFxQixFQUFFLElBQUk7SUFDM0JDLGlCQUFpQixFQUFFLElBQUk7SUFDdkJDLGNBQWMsRUFBRSxJQUFJO0lBQ3BCQyxnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCQyxjQUFjLEVBQUUsSUFBSTtJQUNwQkMsYUFBYSxFQUFFLEtBQUs7SUFDcEJDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQjtFQUM3QixDQUFDO0VBQ0RDLFNBQVMsRUFBRTtJQUNUYixZQUFZLEVBQUUsS0FBSztJQUNuQkMsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEYSxRQUFRLEVBQUU7SUFDUkMsVUFBVSxFQUFFLElBQUk7SUFDaEJDLFVBQVUsRUFBRTtFQUNkLENBQUM7RUFDREMsT0FBTyxFQUFFO0lBQ1BDLE1BQU0sRUFBRSxLQUFLO0lBQ2JDLFFBQVEsRUFBRSxFQUFFO0lBQ1pDLGFBQWEsRUFBRTtFQUNqQixDQUFDO0VBQ0RDLEdBQUcsRUFBRTtJQUNIQyxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ2hCQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTTtFQUM1QixDQUFDO0VBQ0RDLGFBQWEsRUFBRTtJQUNiQyxXQUFXLEVBQUU7SUFDWCx3QkFBd0I7SUFDeEIsY0FBYztJQUNkLHdCQUF3QjtJQUN4Qiw0QkFBNEI7SUFDNUIsaUJBQWlCO0lBQ2pCLDZCQUE2QjtJQUM3QixvQ0FBb0M7SUFDcEMscUJBQXFCO0lBQ3JCLGlDQUFpQztJQUNqQyx3QkFBd0I7SUFDeEIsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLDBCQUEwQjtJQUMxQixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLG9DQUFvQztJQUNwQyw2QkFBNkI7SUFDN0IscUJBQXFCO0lBQ3JCLHVDQUF1QyxDQUN4Qzs7SUFDRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0lDLHFCQUFxQixFQUFFO0VBQ3pCLENBQUM7RUFDREMsTUFBTSxFQUFFO0lBQ05ULE1BQU0sRUFBRSxLQUFLO0lBQ2JVLE1BQU0sRUFBRTtFQUNWLENBQUM7RUFDREMsRUFBRSxFQUFFO0lBQ0ZDLGVBQWUsRUFBRSxRQUFRO0lBQ3pCQyxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCQyxXQUFXLEVBQUUsRUFBRTtJQUNmQyxlQUFlLEVBQUUsRUFBRTtJQUNuQkMsV0FBVyxFQUFFLEVBQUU7SUFDZkMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCQyxXQUFXLEVBQUUsS0FBSztJQUNsQkMsU0FBUyxFQUFFLFdBQVc7SUFDdEJDLFNBQVMsRUFBRSxJQUFJO0lBQ2ZDLGFBQWEsRUFBRSxFQUFFO0lBQ2pCQyxPQUFPLEVBQUUsQ0FBQztJQUNWQyxXQUFXLEVBQUU7RUFDZixDQUFDO0VBQ0RDLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsV0FBVztJQUNuQkMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLFVBQVUsRUFBRSxJQUFJO0lBQ2hCQyxpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxjQUFjLEVBQUU7RUFDbEI7QUFDRixDQUFDIn0=
106
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZWNyZXRLZXkiLCJob3N0IiwicG9ydCIsImRldmljZU5hbWUiLCJwb3dlcmVkQnkiLCJzdGFydEFsbFNlc3Npb24iLCJ0b2tlblN0b3JlVHlwZSIsIm1heExpc3RlbmVycyIsImN1c3RvbVVzZXJEYXRhRGlyIiwid2ViaG9vayIsInVybCIsImF1dG9Eb3dubG9hZCIsInVwbG9hZFMzIiwicmVhZE1lc3NhZ2UiLCJhbGxVbnJlYWRPblN0YXJ0IiwibGlzdGVuQWNrcyIsIm9uUHJlc2VuY2VDaGFuZ2VkIiwib25QYXJ0aWNpcGFudHNDaGFuZ2VkIiwib25SZWFjdGlvbk1lc3NhZ2UiLCJvblBvbGxSZXNwb25zZSIsIm9uUmV2b2tlZE1lc3NhZ2UiLCJvbkxhYmVsVXBkYXRlZCIsIm9uU2VsZk1lc3NhZ2UiLCJpZ25vcmUiLCJ3ZWJzb2NrZXQiLCJjaGF0d29vdCIsInNlbmRRckNvZGUiLCJzZW5kU3RhdHVzIiwiYXJjaGl2ZSIsImVuYWJsZSIsIndhaXRUaW1lIiwiZGF5c1RvQXJjaGl2ZSIsImxvZyIsImxldmVsIiwibG9nZ2VyIiwiY3JlYXRlT3B0aW9ucyIsImJyb3dzZXJBcmdzIiwibGlua1ByZXZpZXdBcGlTZXJ2ZXJzIiwibWFwcGVyIiwicHJlZml4IiwiZGIiLCJtb25nb2RiRGF0YWJhc2UiLCJtb25nb2RiQ29sbGVjdGlvbiIsIm1vbmdvZGJVc2VyIiwibW9uZ29kYlBhc3N3b3JkIiwibW9uZ29kYkhvc3QiLCJtb25nb0lzUmVtb3RlIiwibW9uZ29VUkxSZW1vdGUiLCJtb25nb2RiUG9ydCIsInJlZGlzSG9zdCIsInJlZGlzUG9ydCIsInJlZGlzUGFzc3dvcmQiLCJyZWRpc0RiIiwicmVkaXNQcmVmaXgiLCJhd3NfczMiLCJyZWdpb24iLCJhY2Nlc3Nfa2V5X2lkIiwic2VjcmV0X2tleSIsImRlZmF1bHRCdWNrZXROYW1lIiwiZW5kcG9pbnQiLCJmb3JjZVBhdGhTdHlsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBzZWNyZXRLZXk6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJyxcbiAgaG9zdDogJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICBwb3J0OiAnMjE0NjUnLFxuICBkZXZpY2VOYW1lOiAnV3BwQ29ubmVjdCcsXG4gIHBvd2VyZWRCeTogJ1dQUENvbm5lY3QtU2VydmVyJyxcbiAgc3RhcnRBbGxTZXNzaW9uOiB0cnVlLFxuICB0b2tlblN0b3JlVHlwZTogJ2ZpbGUnLFxuICBtYXhMaXN0ZW5lcnM6IDE1LFxuICBjdXN0b21Vc2VyRGF0YURpcjogJy4vdXNlckRhdGFEaXIvJyxcbiAgd2ViaG9vazoge1xuICAgIHVybDogbnVsbCxcbiAgICBhdXRvRG93bmxvYWQ6IHRydWUsXG4gICAgdXBsb2FkUzM6IGZhbHNlLFxuICAgIHJlYWRNZXNzYWdlOiB0cnVlLFxuICAgIGFsbFVucmVhZE9uU3RhcnQ6IGZhbHNlLFxuICAgIGxpc3RlbkFja3M6IHRydWUsXG4gICAgb25QcmVzZW5jZUNoYW5nZWQ6IHRydWUsXG4gICAgb25QYXJ0aWNpcGFudHNDaGFuZ2VkOiB0cnVlLFxuICAgIG9uUmVhY3Rpb25NZXNzYWdlOiB0cnVlLFxuICAgIG9uUG9sbFJlc3BvbnNlOiB0cnVlLFxuICAgIG9uUmV2b2tlZE1lc3NhZ2U6IHRydWUsXG4gICAgb25MYWJlbFVwZGF0ZWQ6IHRydWUsXG4gICAgb25TZWxmTWVzc2FnZTogZmFsc2UsXG4gICAgaWdub3JlOiBbJ3N0YXR1c0Bicm9hZGNhc3QnXSxcbiAgfSxcbiAgd2Vic29ja2V0OiB7XG4gICAgYXV0b0Rvd25sb2FkOiBmYWxzZSxcbiAgICB1cGxvYWRTMzogZmFsc2UsXG4gIH0sXG4gIGNoYXR3b290OiB7XG4gICAgc2VuZFFyQ29kZTogdHJ1ZSxcbiAgICBzZW5kU3RhdHVzOiB0cnVlLFxuICB9LFxuICBhcmNoaXZlOiB7XG4gICAgZW5hYmxlOiBmYWxzZSxcbiAgICB3YWl0VGltZTogMTAsXG4gICAgZGF5c1RvQXJjaGl2ZTogNDUsXG4gIH0sXG4gIGxvZzoge1xuICAgIGxldmVsOiAnc2lsbHknLCAvLyBCZWZvcmUgb3BlbiBhIGlzc3VlLCBjaGFuZ2UgbGV2ZWwgdG8gc2lsbHkgYW5kIHJldHJ5IGEgYWN0aW9uXG4gICAgbG9nZ2VyOiBbJ2NvbnNvbGUnLCAnZmlsZSddLFxuICB9LFxuICBjcmVhdGVPcHRpb25zOiB7XG4gICAgYnJvd3NlckFyZ3M6IFtcbiAgICAgICctLWRpc2FibGUtd2ViLXNlY3VyaXR5JyxcbiAgICAgICctLW5vLXNhbmRib3gnLFxuICAgICAgJy0tZGlzYWJsZS13ZWItc2VjdXJpdHknLFxuICAgICAgJy0tYWdncmVzc2l2ZS1jYWNoZS1kaXNjYXJkJyxcbiAgICAgICctLWRpc2FibGUtY2FjaGUnLFxuICAgICAgJy0tZGlzYWJsZS1hcHBsaWNhdGlvbi1jYWNoZScsXG4gICAgICAnLS1kaXNhYmxlLW9mZmxpbmUtbG9hZC1zdGFsZS1jYWNoZScsXG4gICAgICAnLS1kaXNrLWNhY2hlLXNpemU9MCcsXG4gICAgICAnLS1kaXNhYmxlLWJhY2tncm91bmQtbmV0d29ya2luZycsXG4gICAgICAnLS1kaXNhYmxlLWRlZmF1bHQtYXBwcycsXG4gICAgICAnLS1kaXNhYmxlLWV4dGVuc2lvbnMnLFxuICAgICAgJy0tZGlzYWJsZS1zeW5jJyxcbiAgICAgICctLWRpc2FibGUtdHJhbnNsYXRlJyxcbiAgICAgICctLWhpZGUtc2Nyb2xsYmFycycsXG4gICAgICAnLS1tZXRyaWNzLXJlY29yZGluZy1vbmx5JyxcbiAgICAgICctLW11dGUtYXVkaW8nLFxuICAgICAgJy0tbm8tZmlyc3QtcnVuJyxcbiAgICAgICctLXNhZmVicm93c2luZy1kaXNhYmxlLWF1dG8tdXBkYXRlJyxcbiAgICAgICctLWlnbm9yZS1jZXJ0aWZpY2F0ZS1lcnJvcnMnLFxuICAgICAgJy0taWdub3JlLXNzbC1lcnJvcnMnLFxuICAgICAgJy0taWdub3JlLWNlcnRpZmljYXRlLWVycm9ycy1zcGtpLWxpc3QnLFxuICAgIF0sXG4gICAgLyoqXG4gICAgICogRXhhbXBsZSBvZiBjb25maWd1cmluZyB0aGUgbGlua1ByZXZpZXcgZ2VuZXJhdG9yXG4gICAgICogSWYgeW91IHNldCB0aGlzIHRvICdudWxsJywgaXQgd2lsbCB1c2UgZ2xvYmFsIHNlcnZlcnM7IGhvd2V2ZXIsIHlvdSBoYXZlIHRoZSBvcHRpb24gdG8gZGVmaW5lIHlvdXIgb3duIHNlcnZlclxuICAgICAqIENsb25lIHRoZSByZXBvc2l0b3J5IGh0dHBzOi8vZ2l0aHViLmNvbS93cHBjb25uZWN0LXRlYW0vd2EtanMtYXBpLXNlcnZlciBhbmQgaG9zdCBpdCBvbiB5b3VyIHNlcnZlciB3aXRoIHNzbFxuICAgICAqXG4gICAgICogQ29uZmlndXJlIHRoZSBhdHRyaWJ1dGUgYXMgZm9sbG93czpcbiAgICAgKiBsaW5rUHJldmlld0FwaVNlcnZlcnM6IFsgJ2h0dHBzOi8vd3d3LnlvdXJzZXJ2ZXIuY29tL3dhLWpzLWFwaS1zZXJ2ZXInIF1cbiAgICAgKi9cbiAgICBsaW5rUHJldmlld0FwaVNlcnZlcnM6IG51bGwsXG4gIH0sXG4gIG1hcHBlcjoge1xuICAgIGVuYWJsZTogZmFsc2UsXG4gICAgcHJlZml4OiAndGFnb25lLScsXG4gIH0sXG4gIGRiOiB7XG4gICAgbW9uZ29kYkRhdGFiYXNlOiAndG9rZW5zJyxcbiAgICBtb25nb2RiQ29sbGVjdGlvbjogJycsXG4gICAgbW9uZ29kYlVzZXI6ICcnLFxuICAgIG1vbmdvZGJQYXNzd29yZDogJycsXG4gICAgbW9uZ29kYkhvc3Q6ICcnLFxuICAgIG1vbmdvSXNSZW1vdGU6IHRydWUsXG4gICAgbW9uZ29VUkxSZW1vdGU6ICcnLFxuICAgIG1vbmdvZGJQb3J0OiAyNzAxNyxcbiAgICByZWRpc0hvc3Q6ICdsb2NhbGhvc3QnLFxuICAgIHJlZGlzUG9ydDogNjM3OSxcbiAgICByZWRpc1Bhc3N3b3JkOiAnJyxcbiAgICByZWRpc0RiOiAwLFxuICAgIHJlZGlzUHJlZml4OiAnZG9ja2VyJyxcbiAgfSxcbiAgYXdzX3MzOiB7XG4gICAgcmVnaW9uOiAnc2EtZWFzdC0xJyxcbiAgICBhY2Nlc3Nfa2V5X2lkOiBudWxsLFxuICAgIHNlY3JldF9rZXk6IG51bGwsXG4gICAgZGVmYXVsdEJ1Y2tldE5hbWU6IG51bGwsXG4gICAgZW5kcG9pbnQ6IG51bGwsXG4gICAgZm9yY2VQYXRoU3R5bGU6IG51bGwsXG4gIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoicUlBQWU7RUFDYkEsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsSUFBSSxFQUFFLGtCQUFrQjtFQUN4QkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsVUFBVSxFQUFFLFlBQVk7RUFDeEJDLFNBQVMsRUFBRSxtQkFBbUI7RUFDOUJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxjQUFjLEVBQUUsTUFBTTtFQUN0QkMsWUFBWSxFQUFFLEVBQUU7RUFDaEJDLGlCQUFpQixFQUFFLGdCQUFnQjtFQUNuQ0MsT0FBTyxFQUFFO0lBQ1BDLEdBQUcsRUFBRSxJQUFJO0lBQ1RDLFlBQVksRUFBRSxJQUFJO0lBQ2xCQyxRQUFRLEVBQUUsS0FBSztJQUNmQyxXQUFXLEVBQUUsSUFBSTtJQUNqQkMsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QkMsVUFBVSxFQUFFLElBQUk7SUFDaEJDLGlCQUFpQixFQUFFLElBQUk7SUFDdkJDLHFCQUFxQixFQUFFLElBQUk7SUFDM0JDLGlCQUFpQixFQUFFLElBQUk7SUFDdkJDLGNBQWMsRUFBRSxJQUFJO0lBQ3BCQyxnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCQyxjQUFjLEVBQUUsSUFBSTtJQUNwQkMsYUFBYSxFQUFFLEtBQUs7SUFDcEJDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQjtFQUM3QixDQUFDO0VBQ0RDLFNBQVMsRUFBRTtJQUNUYixZQUFZLEVBQUUsS0FBSztJQUNuQkMsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEYSxRQUFRLEVBQUU7SUFDUkMsVUFBVSxFQUFFLElBQUk7SUFDaEJDLFVBQVUsRUFBRTtFQUNkLENBQUM7RUFDREMsT0FBTyxFQUFFO0lBQ1BDLE1BQU0sRUFBRSxLQUFLO0lBQ2JDLFFBQVEsRUFBRSxFQUFFO0lBQ1pDLGFBQWEsRUFBRTtFQUNqQixDQUFDO0VBQ0RDLEdBQUcsRUFBRTtJQUNIQyxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ2hCQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTTtFQUM1QixDQUFDO0VBQ0RDLGFBQWEsRUFBRTtJQUNiQyxXQUFXLEVBQUU7SUFDWCx3QkFBd0I7SUFDeEIsY0FBYztJQUNkLHdCQUF3QjtJQUN4Qiw0QkFBNEI7SUFDNUIsaUJBQWlCO0lBQ2pCLDZCQUE2QjtJQUM3QixvQ0FBb0M7SUFDcEMscUJBQXFCO0lBQ3JCLGlDQUFpQztJQUNqQyx3QkFBd0I7SUFDeEIsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLDBCQUEwQjtJQUMxQixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLG9DQUFvQztJQUNwQyw2QkFBNkI7SUFDN0IscUJBQXFCO0lBQ3JCLHVDQUF1QyxDQUN4Qzs7SUFDRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0lDLHFCQUFxQixFQUFFO0VBQ3pCLENBQUM7RUFDREMsTUFBTSxFQUFFO0lBQ05ULE1BQU0sRUFBRSxLQUFLO0lBQ2JVLE1BQU0sRUFBRTtFQUNWLENBQUM7RUFDREMsRUFBRSxFQUFFO0lBQ0ZDLGVBQWUsRUFBRSxRQUFRO0lBQ3pCQyxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCQyxXQUFXLEVBQUUsRUFBRTtJQUNmQyxlQUFlLEVBQUUsRUFBRTtJQUNuQkMsV0FBVyxFQUFFLEVBQUU7SUFDZkMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCQyxXQUFXLEVBQUUsS0FBSztJQUNsQkMsU0FBUyxFQUFFLFdBQVc7SUFDdEJDLFNBQVMsRUFBRSxJQUFJO0lBQ2ZDLGFBQWEsRUFBRSxFQUFFO0lBQ2pCQyxPQUFPLEVBQUUsQ0FBQztJQUNWQyxXQUFXLEVBQUU7RUFDZixDQUFDO0VBQ0RDLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsV0FBVztJQUNuQkMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLFVBQVUsRUFBRSxJQUFJO0lBQ2hCQyxpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxjQUFjLEVBQUU7RUFDbEI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -799,4 +799,4 @@ async function sendLinkCatalog(req, res) {
799
799
  });
800
800
  }
801
801
  }
802
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnVuY3Rpb25zIiwicmVxdWlyZSIsImdldFByb2R1Y3RzIiwicmVxIiwicmVzIiwicGhvbmUiLCJxbnQiLCJxdWVyeSIsInN0YXR1cyIsInNlbmQiLCJtZXNzYWdlIiwicmVzdWx0IiwiY2xpZW50IiwianNvbiIsInJlc3BvbnNlIiwiZXJyb3IiLCJnZXRQcm9kdWN0QnlJZCIsImlkIiwiZWRpdFByb2R1Y3QiLCJvcHRpb25zIiwiYm9keSIsImRlbFByb2R1Y3RzIiwiY2hhbmdlUHJvZHVjdEltYWdlIiwiYmFzZTY0IiwiYWRkUHJvZHVjdCIsIm5hbWUiLCJpbWFnZSIsImRlc2NyaXB0aW9uIiwicHJpY2UiLCJ1cmwiLCJyZXRhaWxlcklkIiwiY3VycmVuY3kiLCJjcmVhdGVQcm9kdWN0IiwiY29uc29sZSIsImxvZyIsImFkZFByb2R1Y3RJbWFnZSIsInJlbW92ZVByb2R1Y3RJbWFnZSIsImluZGV4IiwiZ2V0Q29sbGVjdGlvbnMiLCJtYXgiLCJjcmVhdGVDb2xsZWN0aW9uIiwicHJvZHVjdHMiLCJlZGl0Q29sbGVjdGlvbiIsImRlbGV0ZUNvbGxlY3Rpb24iLCJzZXRQcm9kdWN0VmlzaWJpbGl0eSIsInZhbHVlIiwidXBkYXRlQ2FydEVuYWJsZWQiLCJlbmFibGVkIiwic2VuZExpbmtDYXRhbG9nIiwicGhvbmVzIiwicmVzdWx0cyIsInNlc3Npb24iLCJnZXRXaWQiLCJjYXRhbG9nTGluayIsImNyZWF0ZUNhdGFsb2dMaW5rIiwic2VuZFRleHQiLCJ1c2VUZW1wbGF0ZUJ1dHRvbnMiLCJidXR0b25zIiwidGV4dCIsInB1c2giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jYXRhbG9nQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyBjcmVhdGVDYXRhbG9nTGluayB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByb2R1Y3RzKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkNhdGFsb2cgJiBCdXNzaW5lc3NcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInBob25lXCJdID0ge1xuICAgICAgaW46ICdxdWVyeScsXG4gICAgICBzY2hlbWE6ICc1NTIxOTk5OTk5OTk5JyxcbiAgICAgfVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wicW50XCJdID0ge1xuICAgICAgaW46ICdxdWVyeScsXG4gICAgICBzY2hlbWE6ICcxMCcsXG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIHFudCB9ID0gcmVxLnF1ZXJ5O1xuICBpZiAoIXBob25lKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOlxuICAgICAgICAnUGxlYXNlIHNlbmQgdGhlIGNvbnRhY3QgbnVtYmVyIHlvdSB3aXNoIHRvIHJldHVybiB0aGUgcHJvZHVjdHMuJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQ/LmdldFByb2R1Y3RzKFxuICAgICAgcGhvbmUgYXMgc3RyaW5nLFxuICAgICAgcW50IGFzIHVua25vd24gYXMgbnVtYmVyXG4gICAgKTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBnZXQgcHJvZHVjdHMnLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQcm9kdWN0QnlJZChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJwaG9uZVwiXSA9IHtcbiAgICAgIGluOiAncXVlcnknLFxuICAgICAgc2NoZW1hOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcImlkXCJdID0ge1xuICAgICAgaW46ICdxdWVyeScsXG4gICAgICBzY2hlbWE6ICcxMCcsXG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIGlkIH0gPSByZXEucXVlcnk7XG4gIGlmICghcGhvbmUgfHwgIWlkKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAnUGxlYXNlIHNlbmQgdGhlIGNvbnRhY3QgbnVtYmVyIGFuZCBwcm9kdWN0SWQuJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuZ2V0UHJvZHVjdEJ5SWQoXG4gICAgICBwaG9uZSBhcyBzdHJpbmcsXG4gICAgICBpZCBhcyBzdHJpbmdcbiAgICApO1xuICAgIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHQgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzXG4gICAgICAuc3RhdHVzKDUwMClcbiAgICAgIC5qc29uKHsgc3RhdHVzOiAnRXJyb3InLCBtZXNzYWdlOiAnRXJyb3Igb24gZ2V0IHByb2R1Y3QnLCBlcnJvcjogZXJyb3IgfSk7XG4gIH1cbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0UHJvZHVjdChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgdHlwZTogXCJvYmplY3RcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ05ldyBuYW1lIGZvciBwcm9kdWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQsIG9wdGlvbnMgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWlkIHx8ICFvcHRpb25zKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAncHJvZHVjdElkIG9yIG9wdGlvbnMgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LmVkaXRQcm9kdWN0KGlkLCBvcHRpb25zKTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBlZGl0IHByb2R1Y3QuJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsUHJvZHVjdHMocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWlkKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAncHJvZHVjdHMgSWQgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LmRlbFByb2R1Y3RzKGlkKTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBkZWxldGUgcHJvZHVjdC4nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGFuZ2VQcm9kdWN0SW1hZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICBcbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJzxwcm9kdWN0X2lkPicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDogJzxiYXNlNjRfc3RyaW5nPidcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7IGlkLCBiYXNlNjQgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWlkIHx8ICFiYXNlNjQpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdwcm9kdWN0SWQgYW5kIGJhc2U2NCB3YXMgbm90IGluZm9ybWVkJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuY2hhbmdlUHJvZHVjdEltYWdlKGlkLCBiYXNlNjQpO1xuICAgIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHQgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGNoYW5nZSBwcm9kdWN0IGltYWdlLicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFByb2R1Y3QocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWlsZXJJZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUHJvZHVjdCBuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6ICc8YmFzZTY0X3N0cmluZz4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIGZvciB5b3VyIHByb2R1Y3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogJzg4OTAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vbGlua19mb3JfeW91cl9wcm9kdWN0LmNvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbGVySWQ6ICdTS1UwMDEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogJ0JSTCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3Qge1xuICAgIG5hbWUsXG4gICAgaW1hZ2UsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgcHJpY2UsXG4gICAgdXJsLFxuICAgIHJldGFpbGVySWQsXG4gICAgY3VycmVuY3kgPSAnQlJMJyxcbiAgfSA9IHJlcS5ib2R5O1xuICBpZiAoIW5hbWUgfHwgIWltYWdlIHx8ICFwcmljZSlcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ25hbWUsIHByaWNlIGFuZCBpbWFnZSB3YXMgbm90IGluZm9ybWVkJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuY3JlYXRlUHJvZHVjdChcbiAgICAgIG5hbWUsXG4gICAgICBpbWFnZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgcHJpY2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHVybCxcbiAgICAgIHJldGFpbGVySWQsXG4gICAgICBjdXJyZW5jeVxuICAgICk7XG4gICAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IHJlc3VsdCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGFkZCBwcm9kdWN0LicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFByb2R1Y3RJbWFnZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQ6ICc8YmFzZTY0X3N0cmluZz4nXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBpZCwgYmFzZTY0IH0gPSByZXEuYm9keTtcbiAgaWYgKCFpZCB8fCAhYmFzZTY0KVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAncHJvZHVjdElkIGFuZCBiYXNlNjQgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LmFkZFByb2R1Y3RJbWFnZShpZCwgYmFzZTY0KTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBhZGQgcHJvZHVjdCBpbWFnZS4nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVQcm9kdWN0SW1hZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHsgdHlwZTogXCJudW1iZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogMVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQsIGluZGV4IH0gPSByZXEuYm9keTtcbiAgaWYgKCFpZCB8fCAhaW5kZXgpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdwcm9kdWN0SWQgYW5kIGluZGV4IGltYWdlIHdhcyBub3QgaW5mb3JtZWQnLFxuICAgIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxLmNsaWVudC5yZW1vdmVQcm9kdWN0SW1hZ2UoaWQsIGluZGV4KTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiByZW1vdmUgcHJvZHVjdCBpbWFnZS4nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDb2xsZWN0aW9ucyhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJwaG9uZVwiXSA9IHtcbiAgICAgIHNjaGVtYTogJzU1MjE5OTk5OTk5OTknXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInFudFwiXSA9IHtcbiAgICAgIHNjaGVtYTogJzEwJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJtYXhcIl0gPSB7XG4gICAgICBzY2hlbWE6ICcxMCdcbiAgICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgcW50LCBtYXggfSA9IHJlcS5xdWVyeTtcbiAgaWYgKCFwaG9uZSlcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ3Bob25lIHdhcyBub3QgaW5mb3JtZWQnLFxuICAgIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxLmNsaWVudC5nZXRDb2xsZWN0aW9ucyhcbiAgICAgIHBob25lIGFzIHN0cmluZyxcbiAgICAgIHFudCBhcyBzdHJpbmcsXG4gICAgICBtYXggYXMgc3RyaW5nXG4gICAgKTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBnZXQgY29sbGVjdGlvbnMuJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29sbGVjdGlvbihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NvbGxlY3Rpb24gbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzOiBbJzxpZF9wcm9kdWN0MT4nLCAnPGlkX3Byb2R1Y3QyPiddLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgbmFtZSwgcHJvZHVjdHMgfSA9IHJlcS5ib2R5O1xuICBpZiAoIW5hbWUgfHwgIXByb2R1Y3RzKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAnbmFtZSBvciBwcm9kdWN0cyB3YXMgbm90IGluZm9ybWVkJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuY3JlYXRlQ29sbGVjdGlvbihuYW1lLCBwcm9kdWN0cyk7XG4gICAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IHJlc3VsdCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gY3JlYXRlIGNvbGxlY3Rpb24uJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRpdENvbGxlY3Rpb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJzxwcm9kdWN0X2lkPicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnTmV3IG5hbWUgZm9yIGNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBpZCwgb3B0aW9ucyB9ID0gcmVxLmJvZHk7XG4gIGlmICghaWQgfHwgIW9wdGlvbnMpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdpZCBvciBvcHRpb25zIHdhcyBub3QgaW5mb3JtZWQnLFxuICAgIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxLmNsaWVudC5lZGl0Q29sbGVjdGlvbihpZCwgb3B0aW9ucyk7XG4gICAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IHJlc3VsdCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gZWRpdCBjb2xsZWN0aW9uLicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUNvbGxlY3Rpb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWlkKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAnaWQgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LmRlbGV0ZUNvbGxlY3Rpb24oaWQpO1xuICAgIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHQgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGRlbGV0ZSBjb2xsZWN0aW9uLicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldFByb2R1Y3RWaXNpYmlsaXR5KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkNhdGFsb2cgJiBCdXNzaW5lc3NcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcIm9ialwiXSA9IHtcbiAgICAgIGluOiAnYm9keScsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgJGlkOiAnPGlkX3Byb2R1Y3Q+JyxcbiAgICAgICAgJHZhbHVlOiBmYWxzZSxcbiAgICAgIH1cbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnPHByb2R1Y3RfaWQ+JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQsIHZhbHVlIH0gPSByZXEuYm9keTtcbiAgaWYgKCFpZCB8fCAhdmFsdWUpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdwcm9kdWN0IGlkIG9yIHZhbHVlIChmYWxzZSwgdHJ1ZSkgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LnNldFByb2R1Y3RWaXNpYmlsaXR5KGlkLCB2YWx1ZSk7XG4gICAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IHJlc3VsdCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gc2V0IHByb2R1Y3QgdmlzaWJpbGl0eS4nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVDYXJ0RW5hYmxlZChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7IGVuYWJsZWQgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWVuYWJsZWQpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdlbmFibGVkIChmYWxzZSwgdHJ1ZSkgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LnVwZGF0ZUNhcnRFbmFibGVkKGVuYWJsZWQpO1xuICAgIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHQgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHNldCBlbmFibGVkIGNhcnQuJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZExpbmtDYXRhbG9nKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgIHBob25lczogeyB0eXBlOiBcImFycmF5XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB7IHR5cGU6IFwic3RyaW5nXCIgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVzOiBbJzxhcnJheV9waG9uZV9pZCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZXMsIG1lc3NhZ2UgfSA9IHJlcS5ib2R5O1xuICBpZiAoIXBob25lcylcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ3Bob25lcyB3YXMgbm90IGluZm9ybWVkJyxcbiAgICB9KTtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICB0cnkge1xuICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCByZXEuY2xpZW50LmdldFdpZCgpO1xuICAgIGNvbnN0IGNhdGFsb2dMaW5rID0gY3JlYXRlQ2F0YWxvZ0xpbmsoc2Vzc2lvbik7XG4gICAgZm9yIChjb25zdCBwaG9uZSBvZiBwaG9uZXMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuc2VuZFRleHQoXG4gICAgICAgIHBob25lLFxuICAgICAgICBgJHttZXNzYWdlfSAke2NhdGFsb2dMaW5rfWAsXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VUZW1wbGF0ZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1cmw6IGNhdGFsb2dMaW5rLFxuICAgICAgICAgICAgICB0ZXh0OiAnQWJyaXIgY2F0w6Fsb2dvJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIChyZXN1bHRzIGFzIGFueSkucHVzaCh7IHBob25lLCBzdGF0dXM6IHJlc3VsdC5pZCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHRzIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBzZXQgZW5hYmxlZCBjYXJ0LicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBLHNCQUFzRCxDQWpCdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBS08sZUFBZUMsV0FBV0EsQ0FBQ0MsR0FBWSxFQUFFQyxHQUFhLEVBQUUsQ0FDN0Q7QUFDRjtBQUNBO0FBQ0E7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
802
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnVuY3Rpb25zIiwicmVxdWlyZSIsImdldFByb2R1Y3RzIiwicmVxIiwicmVzIiwicGhvbmUiLCJxbnQiLCJxdWVyeSIsInN0YXR1cyIsInNlbmQiLCJtZXNzYWdlIiwicmVzdWx0IiwiY2xpZW50IiwianNvbiIsInJlc3BvbnNlIiwiZXJyb3IiLCJnZXRQcm9kdWN0QnlJZCIsImlkIiwiZWRpdFByb2R1Y3QiLCJvcHRpb25zIiwiYm9keSIsImRlbFByb2R1Y3RzIiwiY2hhbmdlUHJvZHVjdEltYWdlIiwiYmFzZTY0IiwiYWRkUHJvZHVjdCIsIm5hbWUiLCJpbWFnZSIsImRlc2NyaXB0aW9uIiwicHJpY2UiLCJ1cmwiLCJyZXRhaWxlcklkIiwiY3VycmVuY3kiLCJjcmVhdGVQcm9kdWN0IiwiY29uc29sZSIsImxvZyIsImFkZFByb2R1Y3RJbWFnZSIsInJlbW92ZVByb2R1Y3RJbWFnZSIsImluZGV4IiwiZ2V0Q29sbGVjdGlvbnMiLCJtYXgiLCJjcmVhdGVDb2xsZWN0aW9uIiwicHJvZHVjdHMiLCJlZGl0Q29sbGVjdGlvbiIsImRlbGV0ZUNvbGxlY3Rpb24iLCJzZXRQcm9kdWN0VmlzaWJpbGl0eSIsInZhbHVlIiwidXBkYXRlQ2FydEVuYWJsZWQiLCJlbmFibGVkIiwic2VuZExpbmtDYXRhbG9nIiwicGhvbmVzIiwicmVzdWx0cyIsInNlc3Npb24iLCJnZXRXaWQiLCJjYXRhbG9nTGluayIsImNyZWF0ZUNhdGFsb2dMaW5rIiwic2VuZFRleHQiLCJ1c2VUZW1wbGF0ZUJ1dHRvbnMiLCJidXR0b25zIiwidGV4dCIsInB1c2giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jYXRhbG9nQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyBjcmVhdGVDYXRhbG9nTGluayB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByb2R1Y3RzKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkNhdGFsb2cgJiBCdXNzaW5lc3NcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInBob25lXCJdID0ge1xuICAgICAgaW46ICdxdWVyeScsXG4gICAgICBzY2hlbWE6ICc1NTIxOTk5OTk5OTk5JyxcbiAgICAgfVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wicW50XCJdID0ge1xuICAgICAgaW46ICdxdWVyeScsXG4gICAgICBzY2hlbWE6ICcxMCcsXG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIHFudCB9ID0gcmVxLnF1ZXJ5O1xuICBpZiAoIXBob25lKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOlxuICAgICAgICAnUGxlYXNlIHNlbmQgdGhlIGNvbnRhY3QgbnVtYmVyIHlvdSB3aXNoIHRvIHJldHVybiB0aGUgcHJvZHVjdHMuJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQ/LmdldFByb2R1Y3RzKFxuICAgICAgcGhvbmUgYXMgc3RyaW5nLFxuICAgICAgcW50IGFzIHVua25vd24gYXMgbnVtYmVyXG4gICAgKTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBnZXQgcHJvZHVjdHMnLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQcm9kdWN0QnlJZChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJwaG9uZVwiXSA9IHtcbiAgICAgIGluOiAncXVlcnknLFxuICAgICAgc2NoZW1hOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcImlkXCJdID0ge1xuICAgICAgaW46ICdxdWVyeScsXG4gICAgICBzY2hlbWE6ICcxMCcsXG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIGlkIH0gPSByZXEucXVlcnk7XG4gIGlmICghcGhvbmUgfHwgIWlkKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAnUGxlYXNlIHNlbmQgdGhlIGNvbnRhY3QgbnVtYmVyIGFuZCBwcm9kdWN0SWQuJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuZ2V0UHJvZHVjdEJ5SWQoXG4gICAgICBwaG9uZSBhcyBzdHJpbmcsXG4gICAgICBpZCBhcyBzdHJpbmdcbiAgICApO1xuICAgIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHQgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzXG4gICAgICAuc3RhdHVzKDUwMClcbiAgICAgIC5qc29uKHsgc3RhdHVzOiAnRXJyb3InLCBtZXNzYWdlOiAnRXJyb3Igb24gZ2V0IHByb2R1Y3QnLCBlcnJvcjogZXJyb3IgfSk7XG4gIH1cbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0UHJvZHVjdChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgdHlwZTogXCJvYmplY3RcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ05ldyBuYW1lIGZvciBwcm9kdWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQsIG9wdGlvbnMgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWlkIHx8ICFvcHRpb25zKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAncHJvZHVjdElkIG9yIG9wdGlvbnMgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LmVkaXRQcm9kdWN0KGlkLCBvcHRpb25zKTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBlZGl0IHByb2R1Y3QuJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsUHJvZHVjdHMocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWlkKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAncHJvZHVjdHMgSWQgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LmRlbFByb2R1Y3RzKGlkKTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBkZWxldGUgcHJvZHVjdC4nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGFuZ2VQcm9kdWN0SW1hZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICBcbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJzxwcm9kdWN0X2lkPicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDogJzxiYXNlNjRfc3RyaW5nPidcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7IGlkLCBiYXNlNjQgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWlkIHx8ICFiYXNlNjQpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdwcm9kdWN0SWQgYW5kIGJhc2U2NCB3YXMgbm90IGluZm9ybWVkJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuY2hhbmdlUHJvZHVjdEltYWdlKGlkLCBiYXNlNjQpO1xuICAgIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHQgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGNoYW5nZSBwcm9kdWN0IGltYWdlLicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFByb2R1Y3QocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWlsZXJJZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUHJvZHVjdCBuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6ICc8YmFzZTY0X3N0cmluZz4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIGZvciB5b3VyIHByb2R1Y3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogJzg4OTAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vbGlua19mb3JfeW91cl9wcm9kdWN0LmNvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbGVySWQ6ICdTS1UwMDEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogJ0JSTCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3Qge1xuICAgIG5hbWUsXG4gICAgaW1hZ2UsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgcHJpY2UsXG4gICAgdXJsLFxuICAgIHJldGFpbGVySWQsXG4gICAgY3VycmVuY3kgPSAnQlJMJyxcbiAgfSA9IHJlcS5ib2R5O1xuICBpZiAoIW5hbWUgfHwgIWltYWdlIHx8ICFwcmljZSlcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ25hbWUsIHByaWNlIGFuZCBpbWFnZSB3YXMgbm90IGluZm9ybWVkJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuY3JlYXRlUHJvZHVjdChcbiAgICAgIG5hbWUsXG4gICAgICBpbWFnZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgcHJpY2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHVybCxcbiAgICAgIHJldGFpbGVySWQsXG4gICAgICBjdXJyZW5jeVxuICAgICk7XG4gICAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IHJlc3VsdCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGFkZCBwcm9kdWN0LicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFByb2R1Y3RJbWFnZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQ6ICc8YmFzZTY0X3N0cmluZz4nXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBpZCwgYmFzZTY0IH0gPSByZXEuYm9keTtcbiAgaWYgKCFpZCB8fCAhYmFzZTY0KVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAncHJvZHVjdElkIGFuZCBiYXNlNjQgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LmFkZFByb2R1Y3RJbWFnZShpZCwgYmFzZTY0KTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBhZGQgcHJvZHVjdCBpbWFnZS4nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVQcm9kdWN0SW1hZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHsgdHlwZTogXCJudW1iZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogMVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQsIGluZGV4IH0gPSByZXEuYm9keTtcbiAgaWYgKCFpZCB8fCAhaW5kZXgpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdwcm9kdWN0SWQgYW5kIGluZGV4IGltYWdlIHdhcyBub3QgaW5mb3JtZWQnLFxuICAgIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxLmNsaWVudC5yZW1vdmVQcm9kdWN0SW1hZ2UoaWQsIGluZGV4KTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiByZW1vdmUgcHJvZHVjdCBpbWFnZS4nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDb2xsZWN0aW9ucyhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJwaG9uZVwiXSA9IHtcbiAgICAgIHNjaGVtYTogJzU1MjE5OTk5OTk5OTknXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInFudFwiXSA9IHtcbiAgICAgIHNjaGVtYTogJzEwJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJtYXhcIl0gPSB7XG4gICAgICBzY2hlbWE6ICcxMCdcbiAgICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgcW50LCBtYXggfSA9IHJlcS5xdWVyeTtcbiAgaWYgKCFwaG9uZSlcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ3Bob25lIHdhcyBub3QgaW5mb3JtZWQnLFxuICAgIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxLmNsaWVudC5nZXRDb2xsZWN0aW9ucyhcbiAgICAgIHBob25lIGFzIHN0cmluZyxcbiAgICAgIHFudCBhcyBzdHJpbmcsXG4gICAgICBtYXggYXMgc3RyaW5nXG4gICAgKTtcbiAgICByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzdWx0IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBnZXQgY29sbGVjdGlvbnMuJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29sbGVjdGlvbihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NvbGxlY3Rpb24gbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzOiBbJzxpZF9wcm9kdWN0MT4nLCAnPGlkX3Byb2R1Y3QyPiddLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgbmFtZSwgcHJvZHVjdHMgfSA9IHJlcS5ib2R5O1xuICBpZiAoIW5hbWUgfHwgIXByb2R1Y3RzKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAnbmFtZSBvciBwcm9kdWN0cyB3YXMgbm90IGluZm9ybWVkJyxcbiAgICB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuY3JlYXRlQ29sbGVjdGlvbihuYW1lLCBwcm9kdWN0cyk7XG4gICAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IHJlc3VsdCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gY3JlYXRlIGNvbGxlY3Rpb24uJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRpdENvbGxlY3Rpb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJzxwcm9kdWN0X2lkPicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnTmV3IG5hbWUgZm9yIGNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBpZCwgb3B0aW9ucyB9ID0gcmVxLmJvZHk7XG4gIGlmICghaWQgfHwgIW9wdGlvbnMpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdpZCBvciBvcHRpb25zIHdhcyBub3QgaW5mb3JtZWQnLFxuICAgIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxLmNsaWVudC5lZGl0Q29sbGVjdGlvbihpZCwgb3B0aW9ucyk7XG4gICAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IHJlc3VsdCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gZWRpdCBjb2xsZWN0aW9uLicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUNvbGxlY3Rpb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQ2F0YWxvZyAmIEJ1c3NpbmVzc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICc8cHJvZHVjdF9pZD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWlkKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAnaWQgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LmRlbGV0ZUNvbGxlY3Rpb24oaWQpO1xuICAgIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHQgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGRlbGV0ZSBjb2xsZWN0aW9uLicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldFByb2R1Y3RWaXNpYmlsaXR5KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkNhdGFsb2cgJiBCdXNzaW5lc3NcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcIm9ialwiXSA9IHtcbiAgICAgIGluOiAnYm9keScsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgJGlkOiAnPGlkX3Byb2R1Y3Q+JyxcbiAgICAgICAgJHZhbHVlOiBmYWxzZSxcbiAgICAgIH1cbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnPHByb2R1Y3RfaWQ+JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQsIHZhbHVlIH0gPSByZXEuYm9keTtcbiAgaWYgKCFpZCB8fCAhdmFsdWUpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdwcm9kdWN0IGlkIG9yIHZhbHVlIChmYWxzZSwgdHJ1ZSkgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LnNldFByb2R1Y3RWaXNpYmlsaXR5KGlkLCB2YWx1ZSk7XG4gICAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IHJlc3VsdCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gc2V0IHByb2R1Y3QgdmlzaWJpbGl0eS4nLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVDYXJ0RW5hYmxlZChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJDYXRhbG9nICYgQnVzc2luZXNzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7IGVuYWJsZWQgfSA9IHJlcS5ib2R5O1xuICBpZiAoIWVuYWJsZWQpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdlbmFibGVkIChmYWxzZSwgdHJ1ZSkgd2FzIG5vdCBpbmZvcm1lZCcsXG4gICAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXEuY2xpZW50LnVwZGF0ZUNhcnRFbmFibGVkKGVuYWJsZWQpO1xuICAgIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHQgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHNldCBlbmFibGVkIGNhcnQuJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZExpbmtDYXRhbG9nKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgIHBob25lczogeyB0eXBlOiBcImFycmF5XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB7IHR5cGU6IFwic3RyaW5nXCIgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVzOiBbJzxhcnJheV9waG9uZV9pZCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZXMsIG1lc3NhZ2UgfSA9IHJlcS5ib2R5O1xuICBpZiAoIXBob25lcylcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ3Bob25lcyB3YXMgbm90IGluZm9ybWVkJyxcbiAgICB9KTtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICB0cnkge1xuICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCByZXEuY2xpZW50LmdldFdpZCgpO1xuICAgIGNvbnN0IGNhdGFsb2dMaW5rID0gY3JlYXRlQ2F0YWxvZ0xpbmsoc2Vzc2lvbik7XG4gICAgZm9yIChjb25zdCBwaG9uZSBvZiBwaG9uZXMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcS5jbGllbnQuc2VuZFRleHQoXG4gICAgICAgIHBob25lLFxuICAgICAgICBgJHttZXNzYWdlfSAke2NhdGFsb2dMaW5rfWAsXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VUZW1wbGF0ZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1cmw6IGNhdGFsb2dMaW5rLFxuICAgICAgICAgICAgICB0ZXh0OiAnQWJyaXIgY2F0w6Fsb2dvJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIChyZXN1bHRzIGFzIGFueSkucHVzaCh7IHBob25lLCBzdGF0dXM6IHJlc3VsdC5pZCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXN1bHRzIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBzZXQgZW5hYmxlZCBjYXJ0LicsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBLHNCQUFzRCxDQWpCdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBS08sZUFBZUMsV0FBV0EsQ0FBQ0MsR0FBWSxFQUFFQyxHQUFhLEVBQUUsQ0FDN0Q7QUFDRjtBQUNBO0FBQ0E7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
@@ -349,4 +349,4 @@ async function getCommunityParticipants(req, res) {
349
349
  });
350
350
  }
351
351
  }
352
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb21tdW5pdHkiLCJyZXEiLCJyZXMiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJncm91cElkcyIsImJvZHkiLCJyZXNwb25zZSIsImNsaWVudCIsInN0YXR1cyIsImpzb24iLCJlcnJvciIsImxvZ2dlciIsIm1lc3NhZ2UiLCJkZWFjdGl2YXRlQ29tbXVuaXR5IiwiaWQiLCJhZGRTdWJncm91cHNDb21tdW5pdHkiLCJncm91cHNJZHMiLCJyZW1vdmVTdWJncm91cHNDb21tdW5pdHkiLCJkZW1vdGVDb21tdW5pdHlQYXJ0aWNpcGFudCIsInBhcnRpY2lwYW50c0lkIiwicHJvbW90ZUNvbW11bml0eVBhcnRpY2lwYW50IiwiZ2V0Q29tbXVuaXR5UGFydGljaXBhbnRzIiwicGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvY29tbXVuaXR5Q29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjMgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21tdW5pdHkocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJDb21tdW5pdHlcIl1cbiAgICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgICAgfV1cbiAgICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgICAgfVxuICAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgIGdyb3VwSWRzOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJNeSBjb21tdW5pdHkgbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRGVzY3JpcHRpb24gZm9yIHlvdXIgY29tbXVuaXR5XCIsXG4gICAgICAgICAgICAgICAgICBncm91cElkczogW1wiZ3JvdXBJZDFcIiwgXCJncm91cElkMlwiXSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgfVxuICAgICAqL1xuICBjb25zdCB7IG5hbWUsIGRlc2NyaXB0aW9uLCBncm91cElkcyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQuY3JlYXRlQ29tbXVuaXR5KFxuICAgICAgbmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZ3JvdXBJZHNcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHJlc3BvbnNlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGNyZWF0ZSBjb21tdW5pdHknLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWFjdGl2YXRlQ29tbXVuaXR5KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAgICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJDb21tdW5pdHlcIl1cbiAgICAgICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgICAgICB9XVxuICAgICAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgICAgICB9XG4gICAgICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCI8eW91X2NvbW11bml0eV9pZEBnLnVzPlwiLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgICAgKi9cbiAgY29uc3QgeyBpZCB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQuZGVhY3RpdmF0ZUNvbW11bml0eShpZCk7XG5cbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzcG9uc2UpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gZGVhY3RpdmF0ZSBjb21tdW5pdHknLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRTdWJncm91cHNDb21tdW5pdHkocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJDb21tdW5pdHlcIl1cbiAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgIH1dXG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgfVxuICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHNJZHM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjx5b3VfY29tbXVuaXR5X2lkQGcudXM+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzSWRzOiBbXCJncm91cDFJZEBnLnVzXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICovXG4gIGNvbnN0IHsgaWQsIGdyb3Vwc0lkcyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQuYWRkU3ViZ3JvdXBzQ29tbXVuaXR5KGlkLCBncm91cHNJZHMpO1xuXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHJlc3BvbnNlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGFkZCBzdWJncm91cCcsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZVN1Ymdyb3Vwc0NvbW11bml0eShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJDb21tdW5pdHlcIl1cbiAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgIH1dXG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgfVxuICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHNJZHM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjx5b3VfY29tbXVuaXR5X2lkQGcudXM+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzSWRzOiBbXCJncm91cDFJZEBnLnVzXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICovXG4gIGNvbnN0IHsgaWQsIGdyb3Vwc0lkcyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQucmVtb3ZlU3ViZ3JvdXBzQ29tbXVuaXR5KGlkLCBncm91cHNJZHMpO1xuXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHJlc3BvbnNlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHJlbW92ZSBzdWJncm91cCcsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbW90ZUNvbW11bml0eVBhcnRpY2lwYW50KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAjc3dhZ2dlci50YWdzID0gW1wiQ29tbXVuaXR5XCJdXG4gICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICB9XVxuICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgIH1cbiAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRzSWQ6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjx5b3VfY29tbXVuaXR5X2lkQGcudXM+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRzSWQ6IFtcImdyb3VwMUlkQGcudXNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgKi9cbiAgY29uc3QgeyBpZCwgcGFydGljaXBhbnRzSWQgfSA9IHJlcS5ib2R5O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXEuY2xpZW50LmRlbW90ZUNvbW11bml0eVBhcnRpY2lwYW50KFxuICAgICAgaWQsXG4gICAgICBwYXJ0aWNpcGFudHNJZFxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzcG9uc2UpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gZGVtb3RlIHBhcnRpY2lwYW50IG9mIGNvbW11bm90eScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb21vdGVDb21tdW5pdHlQYXJ0aWNpcGFudChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAgI3N3YWdnZXIudGFncyA9IFtcIkNvbW11bml0eVwiXVxuICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgfV1cbiAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICB9XG4gICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50c0lkOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCI8eW91X2NvbW11bml0eV9pZEBnLnVzPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50c0lkOiBbXCJncm91cDFJZEBnLnVzXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICovXG4gIGNvbnN0IHsgaWQsIHBhcnRpY2lwYW50c0lkIH0gPSByZXEuYm9keTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxLmNsaWVudC5wcm9tb3RlQ29tbXVuaXR5UGFydGljaXBhbnQoXG4gICAgICBpZCxcbiAgICAgIHBhcnRpY2lwYW50c0lkXG4gICAgKTtcblxuICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbihyZXNwb25zZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBkZW1vdGUgcGFydGljaXBhbnQgb2YgY29tbXVub3R5JyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29tbXVuaXR5UGFydGljaXBhbnRzKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAjc3dhZ2dlci50YWdzID0gW1wiQ29tbXVuaXR5XCJdXG4gICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICB9XVxuICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICB9XG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcImlkXCJdID0ge1xuICAgICAgICBzY2hlbWE6ICdjb21tdW5pdHlJZEBnLnVzJ1xuICAgIH1cbiAgICAqL1xuICBjb25zdCB7IGlkIH0gPSByZXEucGFyYW1zO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXEuY2xpZW50LmdldENvbW11bml0eVBhcnRpY2lwYW50cyhpZCk7XG5cbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzcG9uc2UpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gZ2V0IHBhcnRpY2lwYW50IG9mIGNvbW11bm90eScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IndkQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlPLGVBQWVBLGVBQWVBLENBQUNDLEdBQVksRUFBRUMsR0FBYSxFQUFFO0VBQ2pFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFdBQVcsRUFBRUMsUUFBUSxDQUFDLENBQUMsR0FBR0osR0FBRyxDQUFDSyxJQUFJOztFQUVoRCxJQUFJO0lBQ0YsTUFBTUMsUUFBUSxHQUFHLE1BQU1OLEdBQUcsQ0FBQ08sTUFBTSxDQUFDUixlQUFlO01BQy9DRyxJQUFJO01BQ0pDLFdBQVc7TUFDWEM7SUFDRixDQUFDOztJQUVELE9BQU9ILEdBQUcsQ0FBQ08sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUNILFFBQVEsQ0FBQztFQUN2QyxDQUFDLENBQUMsT0FBT0ksS0FBSyxFQUFFO0lBQ2RWLEdBQUcsQ0FBQ1csTUFBTSxDQUFDRCxLQUFLLENBQUNBLEtBQUss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
352
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb21tdW5pdHkiLCJyZXEiLCJyZXMiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJncm91cElkcyIsImJvZHkiLCJyZXNwb25zZSIsImNsaWVudCIsInN0YXR1cyIsImpzb24iLCJlcnJvciIsImxvZ2dlciIsIm1lc3NhZ2UiLCJkZWFjdGl2YXRlQ29tbXVuaXR5IiwiaWQiLCJhZGRTdWJncm91cHNDb21tdW5pdHkiLCJncm91cHNJZHMiLCJyZW1vdmVTdWJncm91cHNDb21tdW5pdHkiLCJkZW1vdGVDb21tdW5pdHlQYXJ0aWNpcGFudCIsInBhcnRpY2lwYW50c0lkIiwicHJvbW90ZUNvbW11bml0eVBhcnRpY2lwYW50IiwiZ2V0Q29tbXVuaXR5UGFydGljaXBhbnRzIiwicGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvY29tbXVuaXR5Q29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjMgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21tdW5pdHkocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJDb21tdW5pdHlcIl1cbiAgICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgICAgfV1cbiAgICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgICAgfVxuICAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgIGdyb3VwSWRzOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJNeSBjb21tdW5pdHkgbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRGVzY3JpcHRpb24gZm9yIHlvdXIgY29tbXVuaXR5XCIsXG4gICAgICAgICAgICAgICAgICBncm91cElkczogW1wiZ3JvdXBJZDFcIiwgXCJncm91cElkMlwiXSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgfVxuICAgICAqL1xuICBjb25zdCB7IG5hbWUsIGRlc2NyaXB0aW9uLCBncm91cElkcyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQuY3JlYXRlQ29tbXVuaXR5KFxuICAgICAgbmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZ3JvdXBJZHNcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHJlc3BvbnNlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGNyZWF0ZSBjb21tdW5pdHknLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWFjdGl2YXRlQ29tbXVuaXR5KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAgICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJDb21tdW5pdHlcIl1cbiAgICAgICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgICAgICB9XVxuICAgICAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgICAgICB9XG4gICAgICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCI8eW91X2NvbW11bml0eV9pZEBnLnVzPlwiLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgICAgKi9cbiAgY29uc3QgeyBpZCB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQuZGVhY3RpdmF0ZUNvbW11bml0eShpZCk7XG5cbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzcG9uc2UpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gZGVhY3RpdmF0ZSBjb21tdW5pdHknLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRTdWJncm91cHNDb21tdW5pdHkocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJDb21tdW5pdHlcIl1cbiAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgIH1dXG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgfVxuICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHNJZHM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjx5b3VfY29tbXVuaXR5X2lkQGcudXM+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzSWRzOiBbXCJncm91cDFJZEBnLnVzXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICovXG4gIGNvbnN0IHsgaWQsIGdyb3Vwc0lkcyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQuYWRkU3ViZ3JvdXBzQ29tbXVuaXR5KGlkLCBncm91cHNJZHMpO1xuXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHJlc3BvbnNlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGFkZCBzdWJncm91cCcsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZVN1Ymdyb3Vwc0NvbW11bml0eShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAgICNzd2FnZ2VyLnRhZ3MgPSBbXCJDb21tdW5pdHlcIl1cbiAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgIH1dXG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgfVxuICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHNJZHM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjx5b3VfY29tbXVuaXR5X2lkQGcudXM+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzSWRzOiBbXCJncm91cDFJZEBnLnVzXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICovXG4gIGNvbnN0IHsgaWQsIGdyb3Vwc0lkcyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQucmVtb3ZlU3ViZ3JvdXBzQ29tbXVuaXR5KGlkLCBncm91cHNJZHMpO1xuXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHJlc3BvbnNlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHJlbW92ZSBzdWJncm91cCcsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbW90ZUNvbW11bml0eVBhcnRpY2lwYW50KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAjc3dhZ2dlci50YWdzID0gW1wiQ29tbXVuaXR5XCJdXG4gICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICB9XVxuICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgIH1cbiAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRzSWQ6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjx5b3VfY29tbXVuaXR5X2lkQGcudXM+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRzSWQ6IFtcImdyb3VwMUlkQGcudXNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgKi9cbiAgY29uc3QgeyBpZCwgcGFydGljaXBhbnRzSWQgfSA9IHJlcS5ib2R5O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXEuY2xpZW50LmRlbW90ZUNvbW11bml0eVBhcnRpY2lwYW50KFxuICAgICAgaWQsXG4gICAgICBwYXJ0aWNpcGFudHNJZFxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzcG9uc2UpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gZGVtb3RlIHBhcnRpY2lwYW50IG9mIGNvbW11bm90eScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb21vdGVDb21tdW5pdHlQYXJ0aWNpcGFudChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAgI3N3YWdnZXIudGFncyA9IFtcIkNvbW11bml0eVwiXVxuICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgfV1cbiAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICB9XG4gICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50c0lkOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCI8eW91X2NvbW11bml0eV9pZEBnLnVzPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50c0lkOiBbXCJncm91cDFJZEBnLnVzXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICovXG4gIGNvbnN0IHsgaWQsIHBhcnRpY2lwYW50c0lkIH0gPSByZXEuYm9keTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxLmNsaWVudC5wcm9tb3RlQ29tbXVuaXR5UGFydGljaXBhbnQoXG4gICAgICBpZCxcbiAgICAgIHBhcnRpY2lwYW50c0lkXG4gICAgKTtcblxuICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbihyZXNwb25zZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBkZW1vdGUgcGFydGljaXBhbnQgb2YgY29tbXVub3R5JyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29tbXVuaXR5UGFydGljaXBhbnRzKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAjc3dhZ2dlci50YWdzID0gW1wiQ29tbXVuaXR5XCJdXG4gICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICB9XVxuICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICB9XG4gICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcImlkXCJdID0ge1xuICAgICAgICBzY2hlbWE6ICdjb21tdW5pdHlJZEBnLnVzJ1xuICAgIH1cbiAgICAqL1xuICBjb25zdCB7IGlkIH0gPSByZXEucGFyYW1zO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXEuY2xpZW50LmdldENvbW11bml0eVBhcnRpY2lwYW50cyhpZCk7XG5cbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24ocmVzcG9uc2UpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnRXJyb3Igb24gZ2V0IHBhcnRpY2lwYW50IG9mIGNvbW11bm90eScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IndkQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlPLGVBQWVBLGVBQWVBLENBQUNDLEdBQVksRUFBRUMsR0FBYSxFQUFFO0VBQ2pFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFdBQVcsRUFBRUMsUUFBUSxDQUFDLENBQUMsR0FBR0osR0FBRyxDQUFDSyxJQUFJOztFQUVoRCxJQUFJO0lBQ0YsTUFBTUMsUUFBUSxHQUFHLE1BQU1OLEdBQUcsQ0FBQ08sTUFBTSxDQUFDUixlQUFlO01BQy9DRyxJQUFJO01BQ0pDLFdBQVc7TUFDWEM7SUFDRixDQUFDOztJQUVELE9BQU9ILEdBQUcsQ0FBQ08sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUNILFFBQVEsQ0FBQztFQUN2QyxDQUFDLENBQUMsT0FBT0ksS0FBSyxFQUFFO0lBQ2RWLEdBQUcsQ0FBQ1csTUFBTSxDQUFDRCxLQUFLLENBQUNBLEtBQUssQ0FBQztJQUN2QixPQUFPVCxHQUFHLENBQUNPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDO01BQzFCRCxNQUFNLEVBQUUsT0FBTztNQUNmSSxPQUFPLEVBQUUsMkJBQTJCO01BQ3BDRixLQUFLLEVBQUVBO0lBQ1QsQ0FBQyxDQUFDO0VBQ0o7QUFDRjs7QUFFTyxlQUFlRyxtQkFBbUJBLENBQUNiLEdBQVksRUFBRUMsR0FBYSxFQUFFO0VBQ3JFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLE1BQU0sRUFBRWEsRUFBRSxDQUFDLENBQUMsR0FBR2QsR0FBRyxDQUFDSyxJQUFJOztFQUV2QixJQUFJO0lBQ0YsTUFBTUMsUUFBUSxHQUFHLE1BQU1OLEdBQUcsQ0FBQ08sTUFBTSxDQUFDTSxtQkFBbUIsQ0FBQ0MsRUFBRSxDQUFDOztJQUV6RCxPQUFPYixHQUFHLENBQUNPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRLENBQUM7RUFDdkMsQ0FBQyxDQUFDLE9BQU9JLEtBQUssRUFBRTtJQUNkVixHQUFHLENBQUNXLE1BQU0sQ0FBQ0QsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFDdkIsT0FBT1QsR0FBRyxDQUFDTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztNQUMxQkQsTUFBTSxFQUFFLE9BQU87TUFDZkksT0FBTyxFQUFFLCtCQUErQjtNQUN4Q0YsS0FBSyxFQUFFQTtJQUNULENBQUMsQ0FBQztFQUNKO0FBQ0Y7O0FBRU8sZUFBZUsscUJBQXFCQSxDQUFDZixHQUFZLEVBQUVDLEdBQWEsRUFBRTtFQUN2RTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsTUFBTSxFQUFFYSxFQUFFLEVBQUVFLFNBQVMsQ0FBQyxDQUFDLEdBQUdoQixHQUFHLENBQUNLLElBQUk7O0VBRWxDLElBQUk7SUFDRixNQUFNQyxRQUFRLEdBQUcsTUFBTU4sR0FBRyxDQUFDTyxNQUFNLENBQUNRLHFCQUFxQixDQUFDRCxFQUFFLEVBQUVFLFNBQVMsQ0FBQzs7SUFFdEUsT0FBT2YsR0FBRyxDQUFDTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQ0gsUUFBUSxDQUFDO0VBQ3ZDLENBQUMsQ0FBQyxPQUFPSSxLQUFLLEVBQUU7SUFDZFYsR0FBRyxDQUFDVyxNQUFNLENBQUNELEtBQUssQ0FBQ0EsS0FBSyxDQUFDO0lBQ3ZCLE9BQU9ULEdBQUcsQ0FBQ08sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUM7TUFDMUJELE1BQU0sRUFBRSxPQUFPO01BQ2ZJLE9BQU8sRUFBRSx1QkFBdUI7TUFDaENGLEtBQUssRUFBRUE7SUFDVCxDQUFDLENBQUM7RUFDSjtBQUNGOztBQUVPLGVBQWVPLHdCQUF3QkEsQ0FBQ2pCLEdBQVksRUFBRUMsR0FBYSxFQUFFO0VBQzFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxNQUFNLEVBQUVhLEVBQUUsRUFBRUUsU0FBUyxDQUFDLENBQUMsR0FBR2hCLEdBQUcsQ0FBQ0ssSUFBSTs7RUFFbEMsSUFBSTtJQUNGLE1BQU1DLFFBQVEsR0FBRyxNQUFNTixHQUFHLENBQUNPLE1BQU0sQ0FBQ1Usd0JBQXdCLENBQUNILEVBQUUsRUFBRUUsU0FBUyxDQUFDOztJQUV6RSxPQUFPZixHQUFHLENBQUNPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRLENBQUM7RUFDdkMsQ0FBQyxDQUFDLE9BQU9JLEtBQUssRUFBRTtJQUNkVixHQUFHLENBQUNXLE1BQU0sQ0FBQ0QsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFDdkIsT0FBT1QsR0FBRyxDQUFDTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztNQUMxQkQsTUFBTSxFQUFFLE9BQU87TUFDZkksT0FBTyxFQUFFLDBCQUEwQjtNQUNuQ0YsS0FBSyxFQUFFQTtJQUNULENBQUMsQ0FBQztFQUNKO0FBQ0Y7O0FBRU8sZUFBZVEsMEJBQTBCQSxDQUFDbEIsR0FBWSxFQUFFQyxHQUFhLEVBQUU7RUFDNUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLE1BQU0sRUFBRWEsRUFBRSxFQUFFSyxjQUFjLENBQUMsQ0FBQyxHQUFHbkIsR0FBRyxDQUFDSyxJQUFJOztFQUV2QyxJQUFJO0lBQ0YsTUFBTUMsUUFBUSxHQUFHLE1BQU1OLEdBQUcsQ0FBQ08sTUFBTSxDQUFDVywwQkFBMEI7TUFDMURKLEVBQUU7TUFDRks7SUFDRixDQUFDOztJQUVELE9BQU9sQixHQUFHLENBQUNPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRLENBQUM7RUFDdkMsQ0FBQyxDQUFDLE9BQU9JLEtBQUssRUFBRTtJQUNkVixHQUFHLENBQUNXLE1BQU0sQ0FBQ0QsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFDdkIsT0FBT1QsR0FBRyxDQUFDTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztNQUMxQkQsTUFBTSxFQUFFLE9BQU87TUFDZkksT0FBTyxFQUFFLDBDQUEwQztNQUNuREYsS0FBSyxFQUFFQTtJQUNULENBQUMsQ0FBQztFQUNKO0FBQ0Y7O0FBRU8sZUFBZVUsMkJBQTJCQSxDQUFDcEIsR0FBWSxFQUFFQyxHQUFhLEVBQUU7RUFDN0U7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLE1BQU0sRUFBRWEsRUFBRSxFQUFFSyxjQUFjLENBQUMsQ0FBQyxHQUFHbkIsR0FBRyxDQUFDSyxJQUFJOztFQUV2QyxJQUFJO0lBQ0YsTUFBTUMsUUFBUSxHQUFHLE1BQU1OLEdBQUcsQ0FBQ08sTUFBTSxDQUFDYSwyQkFBMkI7TUFDM0ROLEVBQUU7TUFDRks7SUFDRixDQUFDOztJQUVELE9BQU9sQixHQUFHLENBQUNPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRLENBQUM7RUFDdkMsQ0FBQyxDQUFDLE9BQU9JLEtBQUssRUFBRTtJQUNkVixHQUFHLENBQUNXLE1BQU0sQ0FBQ0QsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFDdkIsT0FBT1QsR0FBRyxDQUFDTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztNQUMxQkQsTUFBTSxFQUFFLE9BQU87TUFDZkksT0FBTyxFQUFFLDBDQUEwQztNQUNuREYsS0FBSyxFQUFFQTtJQUNULENBQUMsQ0FBQztFQUNKO0FBQ0Y7O0FBRU8sZUFBZVcsd0JBQXdCQSxDQUFDckIsR0FBWSxFQUFFQyxHQUFhLEVBQUU7RUFDMUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxNQUFNLEVBQUVhLEVBQUUsQ0FBQyxDQUFDLEdBQUdkLEdBQUcsQ0FBQ3NCLE1BQU07O0VBRXpCLElBQUk7SUFDRixNQUFNaEIsUUFBUSxHQUFHLE1BQU1OLEdBQUcsQ0FBQ08sTUFBTSxDQUFDYyx3QkFBd0IsQ0FBQ1AsRUFBRSxDQUFDOztJQUU5RCxPQUFPYixHQUFHLENBQUNPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRLENBQUM7RUFDdkMsQ0FBQyxDQUFDLE9BQU9JLEtBQUssRUFBRTtJQUNkVixHQUFHLENBQUNXLE1BQU0sQ0FBQ0QsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFDdkIsT0FBT1QsR0FBRyxDQUFDTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztNQUMxQkQsTUFBTSxFQUFFLE9BQU87TUFDZkksT0FBTyxFQUFFLHVDQUF1QztNQUNoREYsS0FBSyxFQUFFQTtJQUNULENBQUMsQ0FBQztFQUNKO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=