Browse code

bump(github.com/openshift/origin-web-console): 247492a613162b594d88664baab8ec0fe479912b

OpenShift Bot authored on 2016/12/16 01:40:07
Showing 1 changed files
... ...
@@ -5327,6 +5327,17 @@ modalConfig:b
5327 5327
 });
5328 5328
 return c.result;
5329 5329
 },
5330
+confirmSaveLog:function(b) {
5331
+var c = a.open({
5332
+animation:!0,
5333
+templateUrl:"views/modals/confirm-save-log.html",
5334
+controller:"ConfirmSaveLogController",
5335
+resolve:{
5336
+object:b
5337
+}
5338
+});
5339
+return c.result;
5340
+},
5330 5341
 showJenkinsfileExamples:function() {
5331 5342
 a.open({
5332 5343
 animation:!0,
... ...
@@ -5342,6 +5353,39 @@ controller:"AboutComputeUnitsModalController"
5342 5342
 });
5343 5343
 }
5344 5344
 };
5345
+} ]), angular.module("openshiftConsole").factory("CLIHelp", [ "$filter", function(a) {
5346
+var b = a("annotation"), c = function(a, c) {
5347
+if (!a) return null;
5348
+var d, e, f;
5349
+switch (a.kind) {
5350
+case "Pod":
5351
+d = "oc logs " + a.metadata.name, c && (d += " -c " + c);
5352
+break;
5353
+
5354
+case "DeploymentConfig":
5355
+d = "oc logs dc/" + a.metadata.name;
5356
+break;
5357
+
5358
+case "ReplicationController":
5359
+e = b(a, "deploymentConfig"), f = b(a, "deploymentVersion"), d = e && f ? "oc logs --version " + f + " dc/" + e :"oc logs rc/" + a.metadata.name;
5360
+break;
5361
+
5362
+case "BuildConfig":
5363
+d = "oc logs bc/" + a.metadata.name;
5364
+break;
5365
+
5366
+case "Build":
5367
+e = b(a, "buildConfig"), f = b(a, "buildNumber"), d = "oc logs --version " + f + " bc/" + e;
5368
+break;
5369
+
5370
+default:
5371
+return null;
5372
+}
5373
+return d += " -n " + a.metadata.namespace;
5374
+};
5375
+return {
5376
+getLogsCommand:c
5377
+};
5345 5378
 } ]), angular.module("openshiftConsole").controller("ProjectsController", [ "$scope", "$filter", "$location", "$route", "$timeout", "AlertMessageService", "AuthService", "DataService", "KeywordService", "Logger", "ProjectsService", function(a, b, c, d, e, f, g, h, i, j, k) {
5346 5379
 var l, m, n = [], o = [];
5347 5380
 a.alerts = a.alerts || {}, a.loading = !0, a.showGetStarted = !1, a.canCreate = void 0, a.search = {
... ...
@@ -9896,6 +9940,12 @@ b.close("confirmScale");
9896 9896
 }, a.cancel = function() {
9897 9897
 b.dismiss("cancel");
9898 9898
 };
9899
+} ]), angular.module("openshiftConsole").controller("ConfirmSaveLogController", [ "$scope", "$uibModalInstance", "object", "CLIHelp", function(a, b, c, d) {
9900
+a.object = c, a.command = d.getLogsCommand(c), a.save = function() {
9901
+b.close("save");
9902
+}, a.cancel = function() {
9903
+b.dismiss("cancel");
9904
+};
9899 9905
 } ]), angular.module("openshiftConsole").controller("DeleteModalController", [ "$scope", "$uibModalInstance", function(a, b) {
9900 9906
 a["delete"] = function() {
9901 9907
 b.close("delete");
... ...
@@ -12780,15 +12830,15 @@ a.destroy();
12780 12780
 });
12781 12781
 }
12782 12782
 };
12783
-} ]), angular.module("openshiftConsole").directive("logViewer", [ "$sce", "$timeout", "$window", "$filter", "AuthService", "APIService", "APIDiscovery", "DataService", "logLinks", "BREAKPOINTS", function(a, b, c, d, e, f, g, h, i, j) {
12784
-var k = $(window), l = function(a) {
12783
+} ]), angular.module("openshiftConsole").directive("logViewer", [ "$sce", "$timeout", "$window", "$filter", "AuthService", "APIService", "APIDiscovery", "DataService", "ModalsService", "logLinks", "BREAKPOINTS", function(a, b, c, d, e, f, g, h, i, j, k) {
12784
+var l = $(window), m = function(a) {
12785 12785
 return a.replace(/https?:\/\/[A-Za-z0-9._%+-]+\S*[^\s.;,(){}<>"\u201d\u2019]/gm, function(a) {
12786 12786
 return '<a href="' + a + '" target="_blank">' + a + "</a>";
12787 12787
 });
12788
-}, m = $('<tr class="log-line"><td class="log-line-number"></td><td class="log-line-text"></td></tr>').get(0), n = function(a, b) {
12789
-var c = m.cloneNode(!0);
12788
+}, n = $('<tr class="log-line"><td class="log-line-number"></td><td class="log-line-text"></td></tr>').get(0), o = function(a, b) {
12789
+var c = n.cloneNode(!0);
12790 12790
 c.firstChild.setAttribute("data-line-number", a);
12791
-var d = ansi_up.escape_for_html(b), e = ansi_up.ansi_to_html(d), f = l(e);
12791
+var d = ansi_up.escape_for_html(b), e = ansi_up.ansi_to_html(d), f = m(e);
12792 12792
 return c.lastChild.innerHTML = f, c;
12793 12793
 };
12794 12794
 return {
... ...
@@ -12808,63 +12858,63 @@ chromeless:"=?",
12808 12808
 empty:"=?",
12809 12809
 run:"=?"
12810 12810
 },
12811
-controller:[ "$scope", function(l) {
12812
-var m, o, p, q, r, s = document.documentElement;
12813
-l.logViewerID = _.uniqueId("log-viewer"), l.empty = !0;
12811
+controller:[ "$scope", function(i) {
12812
+var m, n, p, q, r, s = document.documentElement;
12813
+i.logViewerID = _.uniqueId("log-viewer"), i.empty = !0;
12814 12814
 var t, u;
12815
-"ReplicationController" === l.object.kind ? (t = "deploymentconfigs/log", u = d("annotation")(l.object, "deploymentConfig")) :(t = f.kindToResource(l.object.kind) + "/log", u = l.object.metadata.name);
12815
+"ReplicationController" === i.object.kind ? (t = "deploymentconfigs/log", u = d("annotation")(i.object, "deploymentConfig")) :(t = f.kindToResource(i.object.kind) + "/log", u = i.object.metadata.name);
12816 12816
 var v = function() {
12817
-q = window.innerWidth < j.screenSmMin && !l.fixedHeight ? null :o;
12817
+q = window.innerWidth < k.screenSmMin && !i.fixedHeight ? null :n;
12818 12818
 }, w = function() {
12819
-l.$apply(function() {
12819
+i.$apply(function() {
12820 12820
 var a = m.getBoundingClientRect();
12821
-l.fixedHeight ? l.showScrollLinks = a && a.height > l.fixedHeight :l.showScrollLinks = a && (a.top < 0 || a.bottom > s.clientHeight);
12821
+i.fixedHeight ? i.showScrollLinks = a && a.height > i.fixedHeight :i.showScrollLinks = a && (a.top < 0 || a.bottom > s.clientHeight);
12822 12822
 });
12823 12823
 }, x = !1, y = function() {
12824
-x ? x = !1 :l.$evalAsync(function() {
12825
-l.autoScrollActive = !1;
12824
+x ? x = !1 :i.$evalAsync(function() {
12825
+i.autoScrollActive = !1;
12826 12826
 });
12827 12827
 }, z = function() {
12828
-p.off("scroll", y), k.off("scroll", y), window.innerWidth <= j.screenSmMin && !l.fixedHeight ? k.on("scroll", y) :p.on("scroll", y);
12828
+p.off("scroll", y), l.off("scroll", y), window.innerWidth <= k.screenSmMin && !i.fixedHeight ? l.on("scroll", y) :p.on("scroll", y);
12829 12829
 }, A = function() {
12830
-l.fixedHeight || (window.innerWidth < j.screenSmMin && !l.fixedHeight ? r.removeClass("target-logger-node").affix({
12830
+i.fixedHeight || (window.innerWidth < k.screenSmMin && !i.fixedHeight ? r.removeClass("target-logger-node").affix({
12831 12831
 target:window,
12832 12832
 offset:{
12833
-top:l.followAffixTop || 0,
12834
-bottom:l.followAffixBottom || 0
12833
+top:i.followAffixTop || 0,
12834
+bottom:i.followAffixBottom || 0
12835 12835
 }
12836 12836
 }) :r.addClass("target-logger-node").affix({
12837 12837
 target:p,
12838 12838
 offset:{
12839
-top:l.followAffixTop || 0,
12840
-bottom:l.followAffixBottom || 0
12839
+top:i.followAffixTop || 0,
12840
+bottom:i.followAffixBottom || 0
12841 12841
 }
12842 12842
 }));
12843 12843
 }, B = function(a) {
12844
-var b = $("#" + l.logViewerID + " .log-view-output"), c = b.offset().top;
12844
+var b = $("#" + i.logViewerID + " .log-view-output"), c = b.offset().top;
12845 12845
 if (!(c < 0)) {
12846
-var d = $(".ellipsis-pulser").outerHeight(!0), e = l.fixedHeight ? l.fixedHeight :Math.floor($(window).height() - c - d);
12847
-l.chromeless || l.fixedHeight || (e -= 35), a ? b.animate({
12846
+var d = $(".ellipsis-pulser").outerHeight(!0), e = i.fixedHeight ? i.fixedHeight :Math.floor($(window).height() - c - d);
12847
+i.chromeless || i.fixedHeight || (e -= 35), a ? b.animate({
12848 12848
 "min-height":e + "px"
12849
-}, "fast") :b.css("min-height", e + "px"), l.fixedHeight && b.css("max-height", e);
12849
+}, "fast") :b.css("min-height", e + "px"), i.fixedHeight && b.css("max-height", e);
12850 12850
 }
12851 12851
 }, C = _.debounce(function() {
12852 12852
 B(!0), v(), z(), w(), A(), y();
12853 12853
 }, 100);
12854
-k.on("resize", C);
12854
+l.on("resize", C);
12855 12855
 var D, E = function() {
12856
-x = !0, i.scrollBottom(q);
12856
+x = !0, j.scrollBottom(q);
12857 12857
 }, F = function() {
12858
-l.autoScrollActive = !l.autoScrollActive, l.autoScrollActive && E();
12858
+i.autoScrollActive = !i.autoScrollActive, i.autoScrollActive && E();
12859 12859
 }, G = document.createDocumentFragment(), H = _.debounce(function() {
12860
-m.appendChild(G), G = document.createDocumentFragment(), l.autoScrollActive && E(), l.showScrollLinks || w();
12860
+m.appendChild(G), G = document.createDocumentFragment(), i.autoScrollActive && E(), i.showScrollLinks || w();
12861 12861
 }, 100, {
12862 12862
 maxWait:300
12863 12863
 }), I = function(a) {
12864 12864
 D && (D.stop(), D = null), a || (H.cancel(), m && (m.innerHTML = ""), G = document.createDocumentFragment());
12865 12865
 }, J = function() {
12866
-if (I(), l.run) {
12867
-angular.extend(l, {
12866
+if (I(), i.run) {
12867
+angular.extend(i, {
12868 12868
 loading:!0,
12869 12869
 autoScroll:!1,
12870 12870
 limitReached:!1,
... ...
@@ -12874,82 +12924,91 @@ var a = angular.extend({
12874 12874
 follow:!0,
12875 12875
 tailLines:5e3,
12876 12876
 limitBytes:10485760
12877
-}, l.options);
12878
-D = h.createStream(t, u, l.context, a);
12877
+}, i.options);
12878
+D = h.createStream(t, u, i.context, a);
12879 12879
 var c = 0, d = function(a) {
12880
-c++, G.appendChild(n(c, a)), H();
12880
+c++, G.appendChild(o(c, a)), H();
12881 12881
 };
12882 12882
 D.onMessage(function(b, e, f) {
12883
-l.$evalAsync(function() {
12884
-l.empty = !1, "logs" !== l.state && (l.state = "logs", setTimeout(B));
12885
-}), b && (a.limitBytes && f >= a.limitBytes && (l.$evalAsync(function() {
12886
-l.limitReached = !0, l.loading = !1;
12887
-}), I(!0)), d(b), !l.largeLog && c >= a.tailLines && l.$evalAsync(function() {
12888
-l.largeLog = !0;
12883
+i.$evalAsync(function() {
12884
+i.empty = !1, "logs" !== i.state && (i.state = "logs", setTimeout(B));
12885
+}), b && (a.limitBytes && f >= a.limitBytes && (i.$evalAsync(function() {
12886
+i.limitReached = !0, i.loading = !1;
12887
+}), I(!0)), d(b), !i.largeLog && c >= a.tailLines && i.$evalAsync(function() {
12888
+i.largeLog = !0;
12889 12889
 }));
12890 12890
 }), D.onClose(function() {
12891
-D = null, l.$evalAsync(function() {
12892
-l.autoScrollActive = !1, 0 !== c || l.emptyStateMessage || (l.state = "empty", l.emptyStateMessage = "The logs are no longer available or could not be loaded.");
12891
+D = null, i.$evalAsync(function() {
12892
+i.autoScrollActive = !1, 0 !== c || i.emptyStateMessage || (i.state = "empty", i.emptyStateMessage = "The logs are no longer available or could not be loaded.");
12893 12893
 }), b(function() {
12894
-l.loading = !1;
12894
+i.loading = !1;
12895 12895
 }, 100);
12896 12896
 }), D.onError(function() {
12897
-D = null, l.$evalAsync(function() {
12898
-angular.extend(l, {
12897
+D = null, i.$evalAsync(function() {
12898
+angular.extend(i, {
12899 12899
 loading:!1,
12900 12900
 autoScroll:!1
12901
-}), 0 === c ? (l.state = "empty", l.emptyStateMessage = "The logs are no longer available or could not be loaded.") :l.errorWhileRunning = !0;
12901
+}), 0 === c ? (i.state = "empty", i.emptyStateMessage = "The logs are no longer available or could not be loaded.") :i.errorWhileRunning = !0;
12902 12902
 });
12903 12903
 }), D.start();
12904 12904
 }
12905 12905
 };
12906 12906
 return g.getLoggingURL().then(function(b) {
12907
-var d = _.get(l.context, "project.metadata.name"), f = _.get(l.options, "container");
12908
-d && f && u && b && (angular.extend(l, {
12907
+var d = _.get(i.context, "project.metadata.name"), f = _.get(i.options, "container");
12908
+d && f && u && b && (angular.extend(i, {
12909 12909
 kibanaAuthUrl:a.trustAsResourceUrl(URI(b).segment("auth").segment("token").normalizePathname().toString()),
12910 12910
 access_token:e.UserStore().getToken()
12911
-}), l.$watchGroup([ "context.project.metadata.name", "options.container", "name" ], function() {
12912
-angular.extend(l, {
12913
-kibanaArchiveUrl:a.trustAsResourceUrl(i.archiveUri({
12914
-namespace:l.context.project.metadata.name,
12915
-namespaceUid:l.context.project.metadata.uid,
12911
+}), i.$watchGroup([ "context.project.metadata.name", "options.container", "name" ], function() {
12912
+angular.extend(i, {
12913
+kibanaArchiveUrl:a.trustAsResourceUrl(j.archiveUri({
12914
+namespace:i.context.project.metadata.name,
12915
+namespaceUid:i.context.project.metadata.uid,
12916 12916
 podname:u,
12917
-containername:l.options.container,
12917
+containername:i.options.container,
12918 12918
 backlink:URI.encode(c.location.href)
12919 12919
 }))
12920 12920
 });
12921 12921
 }));
12922 12922
 }), this.cacheScrollableNode = function(a) {
12923
-o = a, p = $(o);
12923
+n = a, p = $(n);
12924 12924
 }, this.cacheLogNode = function(a) {
12925 12925
 m = a;
12926 12926
 }, this.cacheAffixable = function(a) {
12927 12927
 r = $(a);
12928 12928
 }, this.start = function() {
12929 12929
 v(), z(), A();
12930
-}, angular.extend(l, {
12930
+}, angular.extend(i, {
12931 12931
 ready:!0,
12932 12932
 loading:!0,
12933 12933
 autoScroll:!1,
12934 12934
 state:!1,
12935 12935
 onScrollBottom:function() {
12936
-i.scrollBottom(q);
12936
+j.scrollBottom(q);
12937 12937
 },
12938 12938
 onScrollTop:function() {
12939
-l.autoScrollActive = !1, i.scrollTop(q);
12939
+i.autoScrollActive = !1, j.scrollTop(q);
12940 12940
 },
12941 12941
 toggleAutoScroll:F,
12942
-goChromeless:i.chromelessLink,
12942
+goChromeless:j.chromelessLink,
12943 12943
 restartLogs:J
12944
-}), l.$on("$destroy", function() {
12945
-I(), k.off("resize", C), k.off("scroll", y), p.off("scroll", y);
12946
-}), "deploymentconfigs/logs" !== t || u ? void l.$watchGroup([ "name", "options.container", "run" ], J) :(l.state = "empty", void (l.emptyStateMessage = "Logs are not available for this replication controller because it was not generated from a deployment configuration."));
12944
+}), i.$on("$destroy", function() {
12945
+I(), l.off("resize", C), l.off("scroll", y), p.off("scroll", y);
12946
+}), "deploymentconfigs/logs" !== t || u ? void i.$watchGroup([ "name", "options.container", "run" ], J) :(i.state = "empty", void (i.emptyStateMessage = "Logs are not available for this replication controller because it was not generated from a deployment configuration."));
12947 12947
 } ],
12948 12948
 require:"logViewer",
12949 12949
 link:function(a, c, d, e) {
12950 12950
 b(function() {
12951 12951
 e.cacheScrollableNode(document.getElementById(a.fixedHeight ? a.logViewerID + "-fixed-scrollable" :"container-main")), e.cacheLogNode(document.getElementById(a.logViewerID + "-logContent")), e.cacheAffixable(document.getElementById(a.logViewerID + "-affixedFollow")), e.start();
12952 12952
 }, 0);
12953
+var f = function() {
12954
+var b = $(c).find(".log-line-text").text(), d = _.get(a, "object.metadata.name", "openshift") + ".log", e = new Blob([ b ], {
12955
+type:"text/plain;charset=utf-8"
12956
+});
12957
+saveAs(e, d);
12958
+};
12959
+a.canSave = !!new Blob(), a.saveLog = function() {
12960
+return a.largeLog ? void i.confirmSaveLog(a.object).then(f) :void f();
12961
+};
12953 12962
 }
12954 12963
 };
12955 12964
 } ]), angular.module("openshiftConsole").directive("statusIcon", function() {
... ...
@@ -22923,10 +22982,15 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', []
22923 22923
     "</form>\n" +
22924 22924
     "<span ng-if=\"state && state !== 'empty'\" class=\"action-divider\">|</span>\n" +
22925 22925
     "</span>\n" +
22926
+    "<span ng-if=\"canSave && state && state !== 'empty'\">\n" +
22927
+    "<a href=\"\" ng-click=\"saveLog()\" role=\"button\">\n" +
22928
+    "Save\n" +
22929
+    "<i class=\"fa fa-download\"></i></a>\n" +
22930
+    "<span ng-if=\"state && state !== 'empty'\" class=\"action-divider\">|</span>\n" +
22931
+    "</span>\n" +
22926 22932
     "<a ng-if=\"state && state !== 'empty'\" href=\"\" ng-click=\"goChromeless(options, fullLogUrl)\" role=\"button\">\n" +
22927
-    "Expand Log\n" +
22928
-    "<i class=\"fa fa-external-link\"></i>\n" +
22929
-    "</a>\n" +
22933
+    "Expand\n" +
22934
+    "<i class=\"fa fa-external-link\"></i></a>\n" +
22930 22935
     "</div>\n" +
22931 22936
     "</div>\n" +
22932 22937
     "<div ng-if=\"largeLog\" class=\"alert alert-info log-size-warning\">\n" +
... ...
@@ -25615,6 +25679,27 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', []
25615 25615
   );
25616 25616
 
25617 25617
 
25618
+  $templateCache.put('views/modals/confirm-save-log.html',
25619
+    "<div class=\"modal-resource-action\">\n" +
25620
+    "<div class=\"modal-body\">\n" +
25621
+    "<h1>Save partial log for <strong>{{object.metadata.name}}</strong>?</h1>\n" +
25622
+    "<div class=\"mar-bottom-xl\">\n" +
25623
+    "The log might not be complete. Continuing will save only the content currently displayed.\n" +
25624
+    "<span ng-if=\"command\">To get the complete log, run the command</span>\n" +
25625
+    "</div>\n" +
25626
+    "<copy-to-clipboard ng-if=\"command\" display-wide=\"true\" clipboard-text=\"command\"></copy-to-clipboard>\n" +
25627
+    "<div class=\"mar-top-xl\">\n" +
25628
+    "Learn more about the <a href=\"command-line\" target=\"_blank\">command line tools</a>.\n" +
25629
+    "</div>\n" +
25630
+    "</div>\n" +
25631
+    "<div class=\"modal-footer\">\n" +
25632
+    "<button class=\"btn btn-lg btn-primary\" type=\"button\" ng-click=\"save()\">Save</button>\n" +
25633
+    "<button class=\"btn btn-lg btn-default\" type=\"button\" ng-click=\"cancel()\">Cancel</button>\n" +
25634
+    "</div>\n" +
25635
+    "</div>"
25636
+  );
25637
+
25638
+
25618 25639
   $templateCache.put('views/modals/confirm.html',
25619 25640
     "<div class=\"modal-resource-action\">\n" +
25620 25641
     "<div class=\"modal-body\">\n" +
... ...
@@ -84419,7 +84504,72 @@ encode:a.encode,
84419 84419
 urldecode:b.decode,
84420 84420
 urlencode:b.encode
84421 84421
 };
84422
-}());`)
84422
+}());
84423
+
84424
+var saveAs = saveAs || function(a) {
84425
+"use strict";
84426
+if (!("undefined" == typeof a || "undefined" != typeof navigator && /MSIE [1-9]\./.test(navigator.userAgent))) {
84427
+var b = a.document, c = function() {
84428
+return a.URL || a.webkitURL || a;
84429
+}, d = b.createElementNS("http://www.w3.org/1999/xhtml", "a"), e = "download" in d, f = function(a) {
84430
+var b = new MouseEvent("click");
84431
+a.dispatchEvent(b);
84432
+}, g = /constructor/i.test(a.HTMLElement) || a.safari, h = /CriOS\/[\d]+/.test(navigator.userAgent), i = function(b) {
84433
+(a.setImmediate || a.setTimeout)(function() {
84434
+throw b;
84435
+}, 0);
84436
+}, j = "application/octet-stream", k = 4e4, l = function(a) {
84437
+var b = function() {
84438
+"string" == typeof a ? c().revokeObjectURL(a) :a.remove();
84439
+};
84440
+setTimeout(b, k);
84441
+}, m = function(a, b, c) {
84442
+b = [].concat(b);
84443
+for (var d = b.length; d--; ) {
84444
+var e = a["on" + b[d]];
84445
+if ("function" == typeof e) try {
84446
+e.call(a, c || a);
84447
+} catch (f) {
84448
+i(f);
84449
+}
84450
+}
84451
+}, n = function(a) {
84452
+return /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type) ? new Blob([ String.fromCharCode(65279), a ], {
84453
+type:a.type
84454
+}) :a;
84455
+}, o = function(b, i, k) {
84456
+k || (b = n(b));
84457
+var o, p = this, q = b.type, r = q === j, s = function() {
84458
+m(p, "writestart progress write writeend".split(" "));
84459
+}, t = function() {
84460
+if ((h || r && g) && a.FileReader) {
84461
+var d = new FileReader();
84462
+return d.onloadend = function() {
84463
+var b = h ? d.result :d.result.replace(/^data:[^;]*;/, "data:attachment/file;"), c = a.open(b, "_blank");
84464
+c || (a.location.href = b), b = void 0, p.readyState = p.DONE, s();
84465
+}, d.readAsDataURL(b), void (p.readyState = p.INIT);
84466
+}
84467
+if (o || (o = c().createObjectURL(b)), r) a.location.href = o; else {
84468
+var e = a.open(o, "_blank");
84469
+e || (a.location.href = o);
84470
+}
84471
+p.readyState = p.DONE, s(), l(o);
84472
+};
84473
+return p.readyState = p.INIT, e ? (o = c().createObjectURL(b), void setTimeout(function() {
84474
+d.href = o, d.download = i, f(d), s(), l(o), p.readyState = p.DONE;
84475
+})) :void t();
84476
+}, p = o.prototype, q = function(a, b, c) {
84477
+return new o(a, b || a.name || "download", c);
84478
+};
84479
+return "undefined" != typeof navigator && navigator.msSaveOrOpenBlob ? function(a, b, c) {
84480
+return b = b || a.name || "download", c || (a = n(a)), navigator.msSaveOrOpenBlob(a, b);
84481
+} :(p.abort = function() {}, p.readyState = p.INIT = 0, p.WRITING = 1, p.DONE = 2, p.error = p.onwritestart = p.onprogress = p.onwrite = p.onabort = p.onerror = p.onwriteend = null, q);
84482
+}
84483
+}("undefined" != typeof self && self || "undefined" != typeof window && window || this.content);
84484
+
84485
+"undefined" != typeof module && module.exports ? module.exports.saveAs = saveAs :"undefined" != typeof define && null !== define && null !== define.amd && define("FileSaver.js", function() {
84486
+return saveAs;
84487
+});`)
84423 84488
 
84424 84489
 func scriptsVendorJsBytes() ([]byte, error) {
84425 84490
 	return _scriptsVendorJs, nil