UNPKG

patch-package

Version:

When forking just won't work, patch it.

37 lines 18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var PackageDetails_1 = require("./PackageDetails"); describe("getPackageDetailsFromPatchFilename", function () { it("parses old-style patch filenames", function () { expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types/banana:3.4.2-beta.2.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana\",\n \"isNested\": false,\n \"name\": \"@types/banana\",\n \"packageNames\": Array [\n \"@types/banana\",\n ],\n \"patchFilename\": \"@types/banana:3.4.2-beta.2.patch\",\n \"path\": \"node_modules/@types/banana\",\n \"pathSpecifier\": \"@types/banana\",\n \"version\": \"3.4.2-beta.2\",\n}\n"); expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana:0.4.2.patch")) .toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana\",\n \"isNested\": false,\n \"name\": \"banana\",\n \"packageNames\": Array [\n \"banana\",\n ],\n \"patchFilename\": \"banana:0.4.2.patch\",\n \"path\": \"node_modules/banana\",\n \"pathSpecifier\": \"banana\",\n \"version\": \"0.4.2\",\n}\n"); expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana+0.4.2.patch")) .toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana\",\n \"isNested\": false,\n \"name\": \"banana\",\n \"packageNames\": Array [\n \"banana\",\n ],\n \"patchFilename\": \"banana+0.4.2.patch\",\n \"path\": \"node_modules/banana\",\n \"pathSpecifier\": \"banana\",\n \"version\": \"0.4.2\",\n}\n"); expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana-0.4.2.patch")).toBe(null); expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana-0.4.2.patch")).toBe(null); }); it("parses new-style patch filenames", function () { expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana++apple+0.4.2.patch")) .toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana => apple\",\n \"isNested\": true,\n \"name\": \"apple\",\n \"packageNames\": Array [\n \"banana\",\n \"apple\",\n ],\n \"patchFilename\": \"banana++apple+0.4.2.patch\",\n \"path\": \"node_modules/banana/node_modules/apple\",\n \"pathSpecifier\": \"banana/apple\",\n \"version\": \"0.4.2\",\n}\n"); expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana++@types+apple++@mollusc+man+0.4.2-banana-tree.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana => @types/apple => @mollusc/man\",\n \"isNested\": true,\n \"name\": \"@mollusc/man\",\n \"packageNames\": Array [\n \"@types/banana\",\n \"@types/apple\",\n \"@mollusc/man\",\n ],\n \"patchFilename\": \"@types+banana++@types+apple++@mollusc+man+0.4.2-banana-tree.patch\",\n \"path\": \"node_modules/@types/banana/node_modules/@types/apple/node_modules/@mollusc/man\",\n \"pathSpecifier\": \"@types/banana/@types/apple/@mollusc/man\",\n \"version\": \"0.4.2-banana-tree\",\n}\n"); expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana.patch++hello+0.4.2-banana-tree.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana.patch => hello\",\n \"isNested\": true,\n \"name\": \"hello\",\n \"packageNames\": Array [\n \"@types/banana.patch\",\n \"hello\",\n ],\n \"patchFilename\": \"@types+banana.patch++hello+0.4.2-banana-tree.patch\",\n \"path\": \"node_modules/@types/banana.patch/node_modules/hello\",\n \"pathSpecifier\": \"@types/banana.patch/hello\",\n \"version\": \"0.4.2-banana-tree\",\n}\n"); }); }); describe("getPatchDetailsFromCliString", function () { it("handles a minimal package name", function () { expect(PackageDetails_1.getPatchDetailsFromCliString("patch-package")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"patch-package\",\n \"isNested\": false,\n \"name\": \"patch-package\",\n \"packageNames\": Array [\n \"patch-package\",\n ],\n \"path\": \"node_modules/patch-package\",\n \"pathSpecifier\": \"patch-package\",\n}\n"); }); it("handles a scoped package name", function () { expect(PackageDetails_1.getPatchDetailsFromCliString("@david/patch-package")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@david/patch-package\",\n \"isNested\": false,\n \"name\": \"@david/patch-package\",\n \"packageNames\": Array [\n \"@david/patch-package\",\n ],\n \"path\": \"node_modules/@david/patch-package\",\n \"pathSpecifier\": \"@david/patch-package\",\n}\n"); }); it("handles a nested package name", function () { expect(PackageDetails_1.getPatchDetailsFromCliString("david/patch-package")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"david => patch-package\",\n \"isNested\": true,\n \"name\": \"patch-package\",\n \"packageNames\": Array [\n \"david\",\n \"patch-package\",\n ],\n \"path\": \"node_modules/david/node_modules/patch-package\",\n \"pathSpecifier\": \"david/patch-package\",\n}\n"); }); it("handles a nested package name with scopes", function () { expect(PackageDetails_1.getPatchDetailsFromCliString("@david/patch-package/banana")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@david/patch-package => banana\",\n \"isNested\": true,\n \"name\": \"banana\",\n \"packageNames\": Array [\n \"@david/patch-package\",\n \"banana\",\n ],\n \"path\": \"node_modules/@david/patch-package/node_modules/banana\",\n \"pathSpecifier\": \"@david/patch-package/banana\",\n}\n"); expect(PackageDetails_1.getPatchDetailsFromCliString("@david/patch-package/@david/banana")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@david/patch-package => @david/banana\",\n \"isNested\": true,\n \"name\": \"@david/banana\",\n \"packageNames\": Array [\n \"@david/patch-package\",\n \"@david/banana\",\n ],\n \"path\": \"node_modules/@david/patch-package/node_modules/@david/banana\",\n \"pathSpecifier\": \"@david/patch-package/@david/banana\",\n}\n"); expect(PackageDetails_1.getPatchDetailsFromCliString("david/patch-package/@david/banana")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"david => patch-package => @david/banana\",\n \"isNested\": true,\n \"name\": \"@david/banana\",\n \"packageNames\": Array [\n \"david\",\n \"patch-package\",\n \"@david/banana\",\n ],\n \"path\": \"node_modules/david/node_modules/patch-package/node_modules/@david/banana\",\n \"pathSpecifier\": \"david/patch-package/@david/banana\",\n}\n"); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZURldGFpbHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QYWNrYWdlRGV0YWlscy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBR3lCO0FBRXpCLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRTtJQUM3QyxFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxDQUNKLG1EQUFrQyxDQUFDLGtDQUFrQyxDQUFDLENBQ3ZFLENBQUMscUJBQXFCLENBQUMsOFdBYTNCLENBQUMsQ0FBQTtRQUVFLE1BQU0sQ0FBQyxtREFBa0MsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQzdELHFCQUFxQixDQUFDLHNUQWE1QixDQUFDLENBQUE7UUFFRSxNQUFNLENBQUMsbURBQWtDLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUM3RCxxQkFBcUIsQ0FBQyxzVEFhNUIsQ0FBQyxDQUFBO1FBRUUsTUFBTSxDQUFDLG1EQUFrQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFM0UsTUFBTSxDQUNKLG1EQUFrQyxDQUFDLDJCQUEyQixDQUFDLENBQ2hFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2QsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxDQUFDLG1EQUFrQyxDQUFDLDJCQUEyQixDQUFDLENBQUM7YUFDcEUscUJBQXFCLENBQUMsNldBYzVCLENBQUMsQ0FBQTtRQUVFLE1BQU0sQ0FDSixtREFBa0MsQ0FDaEMsbUVBQW1FLENBQ3BFLENBQ0YsQ0FBQyxxQkFBcUIsQ0FBQyw4aUJBZTNCLENBQUMsQ0FBQTtRQUVFLE1BQU0sQ0FDSixtREFBa0MsQ0FDaEMsb0RBQW9ELENBQ3JELENBQ0YsQ0FBQyxxQkFBcUIsQ0FBQyxzY0FjM0IsQ0FBQyxDQUFBO0lBQ0EsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQTtBQUVGLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRTtJQUN2QyxFQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDbkMsTUFBTSxDQUFDLDZDQUE0QixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQ3pFLGdSQVdMLENBQ0ksQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLCtCQUErQixFQUFFO1FBQ2xDLE1BQU0sQ0FDSiw2Q0FBNEIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUNyRCxDQUFDLHFCQUFxQixDQUNyQixtVEFXTCxDQUNJLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywrQkFBK0IsRUFBRTtRQUNsQyxNQUFNLENBQ0osNkNBQTRCLENBQUMscUJBQXFCLENBQUMsQ0FDcEQsQ0FBQyxxQkFBcUIsQ0FDckIsaVVBWUwsQ0FDSSxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsMkNBQTJDLEVBQUU7UUFDOUMsTUFBTSxDQUNKLDZDQUE0QixDQUFDLDZCQUE2QixDQUFDLENBQzVELENBQUMscUJBQXFCLENBQ3JCLDBWQVlMLENBQ0ksQ0FBQTtRQUVELE1BQU0sQ0FDSiw2Q0FBNEIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUNuRSxDQUFDLHFCQUFxQixDQUNyQiw2WEFZTCxDQUNJLENBQUE7UUFFRCxNQUFNLENBQ0osNkNBQTRCLENBQUMsbUNBQW1DLENBQUMsQ0FDbEUsQ0FBQyxxQkFBcUIsQ0FDckIsbVpBYUwsQ0FDSSxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUsXG4gIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcsXG59IGZyb20gXCIuL1BhY2thZ2VEZXRhaWxzXCJcblxuZGVzY3JpYmUoXCJnZXRQYWNrYWdlRGV0YWlsc0Zyb21QYXRjaEZpbGVuYW1lXCIsICgpID0+IHtcbiAgaXQoXCJwYXJzZXMgb2xkLXN0eWxlIHBhdGNoIGZpbGVuYW1lc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcIkB0eXBlcy9iYW5hbmE6My40LjItYmV0YS4yLnBhdGNoXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hXCIsXG4gIFwiaXNOZXN0ZWRcIjogZmFsc2UsXG4gIFwibmFtZVwiOiBcIkB0eXBlcy9iYW5hbmFcIixcbiAgXCJwYWNrYWdlTmFtZXNcIjogQXJyYXkgW1xuICAgIFwiQHR5cGVzL2JhbmFuYVwiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJAdHlwZXMvYmFuYW5hOjMuNC4yLWJldGEuMi5wYXRjaFwiLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvQHR5cGVzL2JhbmFuYVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hXCIsXG4gIFwidmVyc2lvblwiOiBcIjMuNC4yLWJldGEuMlwiLFxufVxuYClcblxuICAgIGV4cGVjdChnZXRQYWNrYWdlRGV0YWlsc0Zyb21QYXRjaEZpbGVuYW1lKFwiYmFuYW5hOjAuNC4yLnBhdGNoXCIpKVxuICAgICAgLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hXCIsXG4gIFwiaXNOZXN0ZWRcIjogZmFsc2UsXG4gIFwibmFtZVwiOiBcImJhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJiYW5hbmFcIixcbiAgXSxcbiAgXCJwYXRjaEZpbGVuYW1lXCI6IFwiYmFuYW5hOjAuNC4yLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9iYW5hbmFcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yXCIsXG59XG5gKVxuXG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmErMC40LjIucGF0Y2hcIikpXG4gICAgICAudG9NYXRjaElubGluZVNuYXBzaG90KGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJiYW5hbmFcIixcbiAgXCJpc05lc3RlZFwiOiBmYWxzZSxcbiAgXCJuYW1lXCI6IFwiYmFuYW5hXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcImJhbmFuYVwiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJiYW5hbmErMC40LjIucGF0Y2hcIixcbiAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL2JhbmFuYVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJiYW5hbmFcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC40LjJcIixcbn1cbmApXG5cbiAgICBleHBlY3QoZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcImJhbmFuYS0wLjQuMi5wYXRjaFwiKSkudG9CZShudWxsKVxuXG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcIkB0eXBlcytiYW5hbmEtMC40LjIucGF0Y2hcIiksXG4gICAgKS50b0JlKG51bGwpXG4gIH0pXG5cbiAgaXQoXCJwYXJzZXMgbmV3LXN0eWxlIHBhdGNoIGZpbGVuYW1lc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmErK2FwcGxlKzAuNC4yLnBhdGNoXCIpKVxuICAgICAgLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hID0+IGFwcGxlXCIsXG4gIFwiaXNOZXN0ZWRcIjogdHJ1ZSxcbiAgXCJuYW1lXCI6IFwiYXBwbGVcIixcbiAgXCJwYWNrYWdlTmFtZXNcIjogQXJyYXkgW1xuICAgIFwiYmFuYW5hXCIsXG4gICAgXCJhcHBsZVwiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJiYW5hbmErK2FwcGxlKzAuNC4yLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9iYW5hbmEvbm9kZV9tb2R1bGVzL2FwcGxlXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcImJhbmFuYS9hcHBsZVwiLFxuICBcInZlcnNpb25cIjogXCIwLjQuMlwiLFxufVxuYClcblxuICAgIGV4cGVjdChcbiAgICAgIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXG4gICAgICAgIFwiQHR5cGVzK2JhbmFuYSsrQHR5cGVzK2FwcGxlKytAbW9sbHVzYyttYW4rMC40LjItYmFuYW5hLXRyZWUucGF0Y2hcIixcbiAgICAgICksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcIkB0eXBlcy9iYW5hbmEgPT4gQHR5cGVzL2FwcGxlID0+IEBtb2xsdXNjL21hblwiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcIkBtb2xsdXNjL21hblwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAdHlwZXMvYmFuYW5hXCIsXG4gICAgXCJAdHlwZXMvYXBwbGVcIixcbiAgICBcIkBtb2xsdXNjL21hblwiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJAdHlwZXMrYmFuYW5hKytAdHlwZXMrYXBwbGUrK0Btb2xsdXNjK21hbiswLjQuMi1iYW5hbmEtdHJlZS5wYXRjaFwiLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvQHR5cGVzL2JhbmFuYS9ub2RlX21vZHVsZXMvQHR5cGVzL2FwcGxlL25vZGVfbW9kdWxlcy9AbW9sbHVzYy9tYW5cIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiQHR5cGVzL2JhbmFuYS9AdHlwZXMvYXBwbGUvQG1vbGx1c2MvbWFuXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yLWJhbmFuYS10cmVlXCIsXG59XG5gKVxuXG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcbiAgICAgICAgXCJAdHlwZXMrYmFuYW5hLnBhdGNoKytoZWxsbyswLjQuMi1iYW5hbmEtdHJlZS5wYXRjaFwiLFxuICAgICAgKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiQHR5cGVzL2JhbmFuYS5wYXRjaCA9PiBoZWxsb1wiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcImhlbGxvXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcIkB0eXBlcy9iYW5hbmEucGF0Y2hcIixcbiAgICBcImhlbGxvXCIsXG4gIF0sXG4gIFwicGF0Y2hGaWxlbmFtZVwiOiBcIkB0eXBlcytiYW5hbmEucGF0Y2grK2hlbGxvKzAuNC4yLWJhbmFuYS10cmVlLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AdHlwZXMvYmFuYW5hLnBhdGNoL25vZGVfbW9kdWxlcy9oZWxsb1wiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hLnBhdGNoL2hlbGxvXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yLWJhbmFuYS10cmVlXCIsXG59XG5gKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nXCIsICgpID0+IHtcbiAgaXQoXCJoYW5kbGVzIGEgbWluaW1hbCBwYWNrYWdlIG5hbWVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nKFwicGF0Y2gtcGFja2FnZVwiKSkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcInBhdGNoLXBhY2thZ2VcIixcbiAgXCJpc05lc3RlZFwiOiBmYWxzZSxcbiAgXCJuYW1lXCI6IFwicGF0Y2gtcGFja2FnZVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJwYXRjaC1wYWNrYWdlXCIsXG4gIF0sXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9wYXRjaC1wYWNrYWdlXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcInBhdGNoLXBhY2thZ2VcIixcbn1cbmAsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyBhIHNjb3BlZCBwYWNrYWdlIG5hbWVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcoXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICBcImlzTmVzdGVkXCI6IGZhbHNlLFxuICBcIm5hbWVcIjogXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICBdLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvQGRhdmlkL3BhdGNoLXBhY2thZ2VcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiQGRhdmlkL3BhdGNoLXBhY2thZ2VcIixcbn1cbmAsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyBhIG5lc3RlZCBwYWNrYWdlIG5hbWVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcoXCJkYXZpZC9wYXRjaC1wYWNrYWdlXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcImRhdmlkID0+IHBhdGNoLXBhY2thZ2VcIixcbiAgXCJpc05lc3RlZFwiOiB0cnVlLFxuICBcIm5hbWVcIjogXCJwYXRjaC1wYWNrYWdlXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcImRhdmlkXCIsXG4gICAgXCJwYXRjaC1wYWNrYWdlXCIsXG4gIF0sXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9kYXZpZC9ub2RlX21vZHVsZXMvcGF0Y2gtcGFja2FnZVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJkYXZpZC9wYXRjaC1wYWNrYWdlXCIsXG59XG5gLFxuICAgIClcbiAgfSlcblxuICBpdChcImhhbmRsZXMgYSBuZXN0ZWQgcGFja2FnZSBuYW1lIHdpdGggc2NvcGVzXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nKFwiQGRhdmlkL3BhdGNoLXBhY2thZ2UvYmFuYW5hXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlID0+IGJhbmFuYVwiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcImJhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICAgIFwiYmFuYW5hXCIsXG4gIF0sXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AZGF2aWQvcGF0Y2gtcGFja2FnZS9ub2RlX21vZHVsZXMvYmFuYW5hXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlL2JhbmFuYVwiLFxufVxuYCxcbiAgICApXG5cbiAgICBleHBlY3QoXG4gICAgICBnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nKFwiQGRhdmlkL3BhdGNoLXBhY2thZ2UvQGRhdmlkL2JhbmFuYVwiKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJAZGF2aWQvcGF0Y2gtcGFja2FnZSA9PiBAZGF2aWQvYmFuYW5hXCIsXG4gIFwiaXNOZXN0ZWRcIjogdHJ1ZSxcbiAgXCJuYW1lXCI6IFwiQGRhdmlkL2JhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICAgIFwiQGRhdmlkL2JhbmFuYVwiLFxuICBdLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvQGRhdmlkL3BhdGNoLXBhY2thZ2Uvbm9kZV9tb2R1bGVzL0BkYXZpZC9iYW5hbmFcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiQGRhdmlkL3BhdGNoLXBhY2thZ2UvQGRhdmlkL2JhbmFuYVwiLFxufVxuYCxcbiAgICApXG5cbiAgICBleHBlY3QoXG4gICAgICBnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nKFwiZGF2aWQvcGF0Y2gtcGFja2FnZS9AZGF2aWQvYmFuYW5hXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcImRhdmlkID0+IHBhdGNoLXBhY2thZ2UgPT4gQGRhdmlkL2JhbmFuYVwiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcIkBkYXZpZC9iYW5hbmFcIixcbiAgXCJwYWNrYWdlTmFtZXNcIjogQXJyYXkgW1xuICAgIFwiZGF2aWRcIixcbiAgICBcInBhdGNoLXBhY2thZ2VcIixcbiAgICBcIkBkYXZpZC9iYW5hbmFcIixcbiAgXSxcbiAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL2RhdmlkL25vZGVfbW9kdWxlcy9wYXRjaC1wYWNrYWdlL25vZGVfbW9kdWxlcy9AZGF2aWQvYmFuYW5hXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcImRhdmlkL3BhdGNoLXBhY2thZ2UvQGRhdmlkL2JhbmFuYVwiLFxufVxuYCxcbiAgICApXG4gIH0pXG59KVxuIl19