PageSourceSearch

https://thesarvo.com/confluence/s/cbd8a83641705fbbcff550f01702ecf6…/js/main,-_super/batch.js?locale=en-US

js thesarvo.com collected 2026-09-25 01:20:47 UTC 26,417 bytes, 452 lines download raw bytes

1WRMCB=function(e){var c=console;if(c&&c.log&&c.error){c.log('Error running batched script.');c.error(e);}}
2;
3try {
4/* module-key = 'confluence.extra.jira:help-dialog-extension', location = '/jira/help-dialog.js' */
5Confluence.KeyboardShortcuts&&Confluence.KeyboardShortcuts.Editor.push({context:"editor.actions",descKey:"Insert Jira Issue/Filter"+":",keys:[["Ctrl+Shift+J"]]});
6}catch(e){WRMCB(e)};
7;
8try {
9/* module-key = 'com.atlassian.confluence.plugins.confluence-mentions-plugin:help-dialog-extension', location = 'js/help-dialog.js' */
10AJS.toInit(function($) {
11    // Add the shortcut to the shortcuts dialog
12    Confluence.KeyboardShortcuts && Confluence.KeyboardShortcuts.Autoformat.push(
13        {
14            action: "@",
15            context: "autoformat.autocomplete",
16            description: "Mention"
17        });
18});
19}catch(e){WRMCB(e)};
20;
21try {
22/* module-key = 'com.atlassian.confluence.plugins.doctheme:splitter', location = 'doctheme/splitter-1.5.1/jquery.cookie.js' */
23/**
24 * Cookie plugin
25 *
26 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
27 * Dual licensed under the MIT and GPL licenses:
28 * http://www.opensource.org/licenses/mit-license.php
29 * http://www.gnu.org/licenses/gpl.html
30 *
31 */
32
33/**
34 * Create a cookie with the given name and value and other optional parameters.
35 *
36 * @example $.cookie('the_cookie', 'the_value');
37 * @desc Set the value of a cookie.
38 * @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});
39 * @desc Create a cookie with all available options.
40 * @example $.cookie('the_cookie', 'the_value');
41 * @desc Create a session cookie.
42 * @example $.cookie('the_cookie', null);
43 * @desc Delete a cookie by passing null as value.
44 *
45 * @param String name The name of the cookie.
46 * @param String value The value of the cookie.
47 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
48 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
49 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
50 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
51 *                             when the the browser exits.
52 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
53 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
54 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
55 *                        require a secure protocol (like HTTPS).
56 * @type undefined
57 *
58 * @name $.cookie
59 * @cat Plugins/Cookie
60 * @author Klaus Hartl/[email protected]
61 */
62
63/**
64 * Get the value of a cookie with the given name.
65 *
66 * @example $.cookie('the_cookie');
67 * @desc Get the value of a cookie.
68 *
69 * @param String name The name of the cookie.
70 * @return The value of the cookie.
71 * @type String
72 *
73 * @name $.cookie
74 * @cat Plugins/Cookie
75 * @author Klaus Hartl/[email protected]
76 */
77jQuery.cookie = function(name, value, options) {
78    if (typeof value != 'undefined') { // name and value given, set cookie
79        options = options || {};
80        if (value === null) {
81            value = '';
82            options.expires = -1;
83        }
84        var expires = '';
85        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
86            var date;
87            if (typeof options.expires == 'number') {
88                date = new Date();
89                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
90            } else {
91                date = options.expires;
92            }
93            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
94        }
95        var path = options.path ? '; path=' + options.path : '';
96        var domain = options.domain ? '; domain=' + options.domain : '';
97        var secure = options.secure ? '; secure' : '';
98        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
99    } else { // only name given, get cookie
100        var cookieValue = null;
101        if (document.cookie && document.cookie != '') {
102            var cookies = document.cookie.split(';');
103            for (var i = 0; i < cookies.length; i++) {
104                var cookie = jQuery.trim(cookies[i]);
105                // Does this cookie string begin with the name we want?
106                if (cookie.substring(0, name.length + 1) == (name + '=')) {
107                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
108                    break;
109                }
110            }
111        }
112        return cookieValue;
113    }
114};
115}catch(e){WRMCB(e)};
116;
117try {
118/* module-key = 'com.atlassian.confluence.plugins.doctheme:splitter', location = 'doctheme/splitter-1.5.1/splitter.js' */
119/*
120 * jQuery.splitter.js - two-pane splitter window plugin
121 *
122 * version 1.51 (2009/01/09) 
123 * 
124 * Dual licensed under the MIT and GPL licenses: 
125 *   http://www.opensource.org/licenses/mit-license.php 
126 *   http://www.gnu.org/licenses/gpl.html 
127 */
128
129/**
130 * The splitter() plugin implements a two-pane resizable splitter window.
131 * The selected elements in the jQuery object are converted to a splitter;
132 * each selected element should have two child elements, used for the panes
133 * of the splitter. The plugin adds a third child element for the splitbar.
134 * 
135 * For more details see: http://methvin.com/splitter/
136 *
137 *
138 * @example $('#MySplitter').splitter();
139 * @desc Create a vertical splitter with default settings 
140 *
141 * @example $('#MySplitter').splitter({type: 'h', accessKey: 'M'});
142 * @desc Create a horizontal splitter resizable via Alt+Shift+M
143 *
144 * @name splitter
145 * @type jQuery
146 * @param Object options Options for the splitter (not required)
147 * @cat Plugins/Splitter
148 * @return jQuery
149 * @author Dave Methvin ([email protected])
150 */
151 ;(function($){
152 
153 $.fn.splitter = function(args){
154	args = args || {};
155	return this.each(function() {
156		var zombie;		// left-behind splitbar for outline resizes
157		function startSplitMouse(evt) {
158			if ( opts.outline )
159				zombie = zombie || bar.clone(false).insertAfter(A);
160			panes.css("-webkit-user-select", "none");	// Safari selects A/B text on a move
161			bar.addClass(opts.activeClass);
162			A._posSplit = A[0][opts.pxSplit] - evt[opts.eventPos];
163			$(document)
164				.bind("mousemove", doSplitMouse)
165				.bind("mouseup", endSplitMouse);
166		}
167		function doSplitMouse(evt) {
168			var newPos = A._posSplit+evt[opts.eventPos];
169			if ( opts.outline ) {
170				newPos = Math.max(0, Math.min(newPos, splitter._DA - bar._DA));
171				bar.css(opts.origin, newPos);
172			} else 
173				resplit(newPos);
174		}
175		function endSplitMouse(evt) {
176			bar.removeClass(opts.activeClass);
177			var newPos = A._posSplit+evt[opts.eventPos];
178			if ( opts.outline ) {
179				zombie.remove(); zombie = null;
180				resplit(newPos);
181			}
182			panes.css("-webkit-user-select", "text");	// let Safari select text again
183			$(document)
184				.unbind("mousemove", doSplitMouse)
185				.unbind("mouseup", endSplitMouse);
186		}
187		function resplit(newPos) {
188			// Constrain new splitbar position to fit pane size limits
189			newPos = Math.max(A._min, splitter._DA - B._max, 
190					Math.min(newPos, A._max, splitter._DA - bar._DA - B._min));
191			// Resize/position the two panes
192			bar._DA = bar[0][opts.pxSplit];		// bar size may change during dock
193			bar.css(opts.origin, newPos).css(opts.fixed, splitter._DF);
194			A.css(opts.origin, 0).css(opts.split, newPos).css(opts.fixed,  splitter._DF);
195			B.css(opts.origin, newPos+bar._DA)
196				.css(opts.split, splitter._DA-bar._DA-newPos).css(opts.fixed,  splitter._DF);
197			// IE fires resize for us; all others pay cash
198			if ( !$.browser.msie )
199				panes.trigger("resize");
200		}
201		function dimSum(jq, dims) {
202			// Opera returns -1 for missing min/max width, turn into 0
203			var sum = 0;
204			for ( var i=1; i < arguments.length; i++ )
205				sum += Math.max(parseInt(jq.css(arguments[i])) || 0, 0);
206			return sum;
207		}
208		
209		// Determine settings based on incoming opts, element classes, and defaults
210		var vh = (args.splitHorizontal? 'h' : args.splitVertical? 'v' : args.type) || 'v';
211		var opts = $.extend({
212			activeClass: 'active',	// class name for active splitter
213			pxPerKey: 8,			// splitter px moved per keypress
214			tabIndex: 0,			// tab order indicator
215			accessKey: ''			// accessKey for splitbar
216		},{
217			v: {					// Vertical splitters:
218				keyLeft: 39, keyRight: 37, cursor: "e-resize",
219				splitbarClass: "vsplitbar", outlineClass: "voutline",
220				type: 'v', eventPos: "pageX", origin: "left",
221				split: "width",  pxSplit: "offsetWidth",  side1: "Left", side2: "Right",
222				fixed: "height", pxFixed: "offsetHeight", side3: "Top",  side4: "Bottom"
223			},
224			h: {					// Horizontal splitters:
225				keyTop: 40, keyBottom: 38,  cursor: "n-resize",
226				splitbarClass: "hsplitbar", outlineClass: "houtline",
227				type: 'h', eventPos: "pageY", origin: "top",
228				split: "height", pxSplit: "offsetHeight", side1: "Top",  side2: "Bottom",
229				fixed: "width",  pxFixed: "offsetWidth",  side3: "Left", side4: "Right"
230			}
231		}[vh], args);
232
233		// Create jQuery object closures for splitter and both panes
234		var splitter = $(this).css({position: "relative"});
235		var panes = $(">*", splitter[0]).css({
236			position: "absolute", 			// positioned inside splitter container
237			"z-index": "0",					// splitbar is positioned above
238			"-moz-outline-style": "none"	// don't show dotted outline
239		});
240		var A = $(panes[0]);		// left  or top
241		var B = $(panes[1]);		// right or bottom
242
243		// Focuser element, provides keyboard support; title is shown by Opera accessKeys
244		var focuser = $('<a href="javascript:void(0)"></a>')
245			.attr({accessKey: opts.accessKey, tabIndex: opts.tabIndex, title: opts.splitbarClass})
246			.bind($.browser.opera?"click":"focus", function(){ this.focus(); bar.addClass(opts.activeClass) })
247			.bind("keydown", function(e){
248				var key = e.which || e.keyCode;
249				var dir = key==opts["key"+opts.side1]? 1 : key==opts["key"+opts.side2]? -1 : 0;
250				if ( dir )
251					resplit(A[0][opts.pxSplit]+dir*opts.pxPerKey, false);
252			})
253			.bind("blur", function(){ bar.removeClass(opts.activeClass) });
254			
255		// Splitbar element, can be already in the doc or we create one
256		var bar = $(panes[2] || '<div></div>')
257			.insertAfter(A).css("z-index", "10").append(focuser)
258			.attr({"class": opts.splitbarClass, unselectable: "on"})
259			.css({position: "absolute",	"user-select": "none", "-webkit-user-select": "none",
260				"-khtml-user-select": "none", "-moz-user-select": "none"})
261			.bind("mousedown", startSplitMouse);
262		// Use our cursor unless the style specifies a non-default cursor
263		if ( /^(auto|default|)$/.test(bar.css("cursor")) )
264			bar.css("cursor", opts.cursor);
265
266		// Cache several dimensions for speed, rather than re-querying constantly
267		bar._DA = bar[0][opts.pxSplit];
268		splitter._PBF = $.boxModel? dimSum(splitter, "border"+opts.side3+"Width", "border"+opts.side4+"Width") : 0;
269		splitter._PBA = $.boxModel? dimSum(splitter, "border"+opts.side1+"Width", "border"+opts.side2+"Width") : 0;
270		A._pane = opts.side1;
271		B._pane = opts.side2;
272		$.each([A,B], function(){
273			this._min = opts["min"+this._pane] || dimSum(this, "min-"+opts.split);
274			this._max = opts["max"+this._pane] || dimSum(this, "max-"+opts.split) || 9999;
275			this._init = opts["size"+this._pane]===true ?
276				parseInt($.curCSS(this[0],opts.split)) : opts["size"+this._pane];
277		});
278		
279		// Determine initial position, get from cookie if specified
280		var initPos = A._init;
281		if ( !isNaN(B._init) )	// recalc initial B size as an offset from the top or left side
282			initPos = splitter[0][opts.pxSplit] - splitter._PBA - B._init - bar._DA;
283		if ( opts.cookie ) {
284			if ( !$.cookie )
285				alert('jQuery.splitter(): jQuery cookie plugin required');
286			var ckpos = parseInt($.cookie(opts.cookie));
287			if ( !isNaN(ckpos) )
288				initPos = ckpos;
289			$(window).bind("unload", function(){
290				var state = String(bar.css(opts.origin));	// current location of splitbar
291				$.cookie(opts.cookie, state, {expires: opts.cookieExpires || 365, 
292					path: opts.cookiePath || document.location.pathname});
293			});
294		}
295		if ( isNaN(initPos) )	// King Solomon's algorithm
296			initPos = Math.round((splitter[0][opts.pxSplit] - splitter._PBA - bar._DA)/2);
297
298        var resizeHandler = function(){
299            var top = splitter.offset().top;
300            var footer = $("#footer").height();
301            if (!footer)
302                footer = 24;
303            var wh = $(window).height()-footer;
304            splitter.css("height", Math.max(wh-top-splitter._hadjust, splitter._hmin)+"px");
305            if ( !$.browser.msie ) splitter.trigger("resize");
306        };
307        args.update = function (isBound) {
308            splitter._hadjust = dimSum(splitter, "borderTopWidth", "borderBottomWidth", "marginBottom");
309            splitter._hmin = Math.max(dimSum(splitter, "minHeight"), 20);
310            isBound && $(window).bind("resize", resizeHandler);
311            resizeHandler();
312        };
313		// Resize event propagation and splitter sizing
314		if ( opts.anchorToWindow ) {
315			// Account for margin or border on the splitter container and enforce min height
316            args.update(true);
317		}
318		else if ( opts.resizeToWidth && !$.browser.msie )
319			$(window).bind("resize", function(){
320				splitter.trigger("resize"); 
321			});
322
323		// Resize event handler; triggered immediately to set initial position
324		splitter.bind("resize", function(e, size){
325			// Custom events bubble in jQuery 1.3; don't Yo Dawg
326			if ( e.target != this ) return;
327			// Determine new width/height of splitter container
328			splitter._DF = splitter[0][opts.pxFixed] - splitter._PBF;
329			splitter._DA = splitter[0][opts.pxSplit] - splitter._PBA;
330			// Bail if splitter isn't visible or content isn't there yet
331			if ( splitter._DF <= 0 || splitter._DA <= 0 ) return;
332			// Re-divvy the adjustable dimension; maintain size of the preferred pane
333			resplit(!isNaN(size)? size : (!(opts.sizeRight||opts.sizeBottom)? A[0][opts.pxSplit] :
334				splitter._DA-B[0][opts.pxSplit]-bar._DA));
335		}).trigger("resize" , [initPos]);
336	});
337};
338})(jQuery);
339
340/*Places focus on the main content section of pages*/
341window.placeFocus = function () {
342
343    var mainSection = document.getElementById('splitter-content');
344    if(mainSection)
345    {
346        mainSection.focus();
347    }
348};
349
350}catch(e){WRMCB(e)};
351;
352try {
353/* module-key = 'com.atlassian.confluence.plugins.doctheme:splitter', location = 'doctheme/space-specific-quicknav.js' */
354jQuery(function($) {
355    var quickSearchQuery = $("#quick-search-query-hacked");
356    var siteSearchForm = quickSearchQuery.closest("form");
357    var spaceKey = $("fieldset input[name='spaceSearch']", siteSearchForm).val() === "true" ? $("#confluence-space-key").attr("content") : "";
358    
359    siteSearchForm.submit(function() {
360        var query = quickSearchQuery.val();
361        
362        if (query.search(/all:/gi) >= 0) {
363            quickSearchQuery.val($.trim(query.replace(/all:/gi, '')));
364        }
365    });
366
367    quickSearchQuery.quicksearch("/json/contentnamesearch.action", null, {
368        dropdownPlacement : function (dropDown) {
369            if (spaceKey) {
370                var searchFor = $("a.search-for", dropDown);
371                searchFor.attr("href", searchFor.attr("href") + "&where=" + encodeURIComponent(spaceKey));
372            }
373
374            siteSearchForm.find(".quick-nav-drop-down").append(dropDown);
375        },
376        makeParams : function(value) {
377            var params = { query : value };
378            
379            if (params.query.search(/all:/gi) >= 0) {
380                $("input[name='where']", siteSearchForm).val("");
381                params.query = $.trim(params.query.replace(/all:/gi, ''));
382                if (!params.query)
383                    params.query = "ALL";
384            } else if (spaceKey) {
385                params.spaceKey = spaceKey;
386            }
387
388            return params;
389        }
390    });
391
392});
393}catch(e){WRMCB(e)};
394;
395try {
396/* module-key = 'com.atlassian.confluence.plugins.confluence-dashboard:footer-analytics', location = '/js/confluence-dashboard/utils/footer-analytics.js' */
397define("confluence-dashboard/utils/footer-analytics",["jquery","ajs","confluence/meta"],function(e,a,t){"use strict";var n=i(e).default,o=i(a).default,c=i(t).default;function i(e){return e&&e.__esModule?e:{default:e}}o.toInit(function(){var e=c.get("page-id"),a=n("body").hasClass("dashboard");n("#footer").on("click","a",function(){o.trigger("analytics",{name:"confluence.footer.item.click",data:{pageId:e,isDashboard:a}})})})}),require(["confluence-dashboard/utils/footer-analytics"]);
398}catch(e){WRMCB(e)};
399;
400try {
401/* module-key = 'com.atlassian.auiplugin:split_aui.component.dialog2', location = 'aui.chunk.afb0455b22fe08f3d5f6--3bb4a4578cbbea02f437.js' */
402(window.__auiJsonp=window.__auiJsonp||[]).push([["aui.component.dialog2"],{"0+IH":function(t,e,i){"use strict";i.r(e),i.d(e,"dialog2",(function(){return p}));i("AehQ"),i("rWoL");var a=i("+x/D"),u=i("TmQU"),n=i("KloK"),o=i("jEnx"),c=i("6RZY"),l=i("+ay7"),s=i("Pjwx"),d={"aui-focus":"false","aui-blanketed":"true"};function f(t){var e;this._handlers=new WeakMap,this.$el=t?Object(a.default)(t):Object(a.default)('\n        <section role="dialog" class="aui-layer aui-dialog2 aui-dialog2-medium">\n            <header class="aui-dialog2-header">\n                <h2 class="aui-dialog2-header-main"></h2>\n                '.concat(s.CLOSE_BUTTON,'\n                </button>\n            </header>\n            <div class="aui-dialog2-content"></div>\n            <footer class="aui-dialog2-footer"></footer>\n        </section>')),e=this.$el,a.default.each(d,(function(t,i){var a="data-"+t;e[0].hasAttribute(a)||e.attr(a,i)}))}f.prototype.on=function(t,e){const i=this.$el;if(!this._handlers.get(e)){const a=function(t){t.target===i.get(0)&&e.apply(this,arguments)};Object(o.default)(i).on(t,a),this._handlers.set(e,a)}return this},f.prototype.off=function(t,e){const i=this.$el,a=this._handlers.get(e);return a&&(Object(o.default)(i).off(t,a),this._handlers.delete(e)),this},f.prototype.show=function(){return Object(o.default)(this.$el).show(),this},f.prototype.hide=function(){return Object(o.default)(this.$el).hide(),this},f.prototype.remove=function(){return Object(o.default)(this.$el).remove(),this},f.prototype.isVisible=function(){return Object(o.default)(this.$el).isVisible()};var h=Object(c.default)("dialog2",f),r=new Set;h.on=function(t,e){return r.has(e)||(o.default.on(t,".aui-dialog2",e),r.add(e)),this},h.off=function(t,e){return r.has(e)&&(o.default.off(t,".aui-dialog2",e),r.delete(e)),this},Object(a.default)(document).on("click keydown",".aui-dialog2-header ".concat(s.CLOSE_BUTTON_CLASS_SELECTOR),(function(t){("click"===t.type||t.keyCode===l.default.ENTER||t.keyCode===l.default.SPACE)&&(t.preventDefault(),h(Object(a.default)(t.target).closest(".aui-dialog2")).hide())})),h.on("show",(function(t,e){e.find(s.CLOSE_BUTTON_CLASS_SELECTOR).attr("tabindex",0),e.attr("tabindex",-1);var i=e[0].hasAttribute("data-aui-focus-selector")&&e.attr("data-aui-focus-selector");if(i){var a=e.find(i);if(a.length>0)return a.first().focus()}e.focus()})),h.on("hide",(function(t,e){var i=Object(o.default)(e);e.data("aui-remove-on-hide")&&i.remove()})),Object(u.default)("aui/dialog2",h),Object(n.default)("dialog2",h);var p=h}},[["0+IH","runtime","aui.splitchunk.vendors--894c8113d9","aui.splitchunk.0d131bcbf1","aui.splitchunk.fbbef27525","aui.splitchunk.444efc83be","aui.splitchunk.739b9ec8cc","aui.splitchunk.dd803a46b4","aui.splitchunk.994e478d48","aui.splitchunk.d7c46c2734","aui.splitchunk.e54c7c7304","aui.splitchunk.fb15cffa72","aui.splitchunk.f1e06f97a4","aui.splitchunk.479fe6ee76","aui.splitchunk.f673ef53ac","aui.splitchunk.8659b532c1","aui.splitchunk.5f851f97df","aui.splitchunk.d0110a864f","aui.splitchunk.afa5039e04","aui.splitchunk.bff3715233","aui.splitchunk.c750721820","aui.splitchunk.6d6f245ed3","aui.splitchunk.5b8c290363","aui.splitchunk.3d2cb1af14"]]]);
403}catch(e){WRMCB(e)};
404;
405try {
406/* module-key = 'confluence.web.resources:page-loading-indicator', location = '/includes/js/page-loading-indicator.js' */
407define("confluence/page-loading-indicator",["jquery","underscore","ajs","confluence/templates"],function(c,k,a,h){return function(b){function d(){return c(".confluence-page-loading-blanket",b)}function e(){return c(".confluence-loading-indicator",b)}return{show:function(){0===d().length&&c(b).append(h.pageLoadingIndicator());d().show();e().spin({lines:12,length:8,width:4,radius:10,trail:60,speed:1.5,color:"#F0F0F0"})},hide:function(){e().stop();d().hide()},showUntilResolved:function(c,b){var f=this.hide.bind(this);
408this.show();c.then(function(){f()},function(){b&&a.messages.error(".confluence-page-loading-errors",{body:b});f()})},showUntilDialogVisible:function(b,d){var f=d||"An error has occurred connecting to the server. Please try again.",g=this.hide.bind(this),e=c(".aui-dialog:visible"),h=c(".aui-dialog2:visible");!e.length&&!h.length&&this.show();b.then(function(){g()},function(){a.messages.error(".confluence-page-loading-errors",{body:f});g()});a.bind("show.dialog",function i(){a.unbind("show.dialog",i);g()});if(null!=a.dialog2&&
409void 0!=a.dialog2)a.dialog2.on("show",function j(){a.dialog2.off("show",j);g()})},destroy:function(){b.remove(".confluence-page-loading-blanket")}}}});require("confluence/module-exporter").exportModuleAsGlobal("confluence/page-loading-indicator","Confluence.PageLoadingIndicator");
410}catch(e){WRMCB(e)};
411;
412try {
413/* module-key = 'confluence.web.resources:page-loading-indicator', location = '/includes/soy/page-loading-indicator.soy' */
414// This file was automatically generated from page-loading-indicator.soy.
415// Please don't edit this file by hand.
416
417/**
418 * @fileoverview Templates in namespace Confluence.Templates.
419 */
420
421if (typeof Confluence == 'undefined') { var Confluence = {}; }
422if (typeof Confluence.Templates == 'undefined') { Confluence.Templates = {}; }
423
424
425Confluence.Templates.pageLoadingIndicator = function(opt_data, opt_ignored) {
426  return '<div class="confluence-page-loading-errors"></div><div class="confluence-page-loading-blanket aui-blanket" aria-hidden="false"><div class="confluence-loading-indicator"></div></div>';
427};
428if (goog.DEBUG) {
429  Confluence.Templates.pageLoadingIndicator.soyTemplateName = 'Confluence.Templates.pageLoadingIndicator';
430}
431
432}catch(e){WRMCB(e)};
433;
434try {
435/* module-key = 'confluence.web.resources:deferred-loaders', location = '/includes/js/deferred-dialog-loader.js' */
436define("confluence/deferred-dialog-loader",["underscore","jquery","ajs","confluence/page-loading-indicator","confluence/api/event"],function(c,d,i,j,b){return function(){var k=j(d("body")),f,g=!1,h=!1,e=function(){g&&h&&f&&(b.trigger(f),f=void 0)};b.bind("page.move.dialog.ready",function(){g=!0;e()});b.bind("blogpost.move.dialog.ready",function(){h=!0;e()});c.each({movePageDialogTools:{resource:"confluence.web.resources:page-move-resources",selector:"#action-move-page-dialog-link",event:"deferred.page-move.tools-menu"},
437movePageDialogEditor:{resource:"confluence.web.resources:page-move-resources",selector:"#rte-button-location",event:"deferred.page-move.editor"},moveBlogDialogTools:{resource:"confluence.web.resources:page-move-resources",selector:"#action-move-blogpost-dialog-link",event:"deferred.blog-move.tools-menu"},availableGadgetsHelp:{resource:"com.atlassian.confluence.plugins.gadgets:gadget-directory-resources",selector:"#gadget-directory-link",event:"deferred.available-gadgets.help-menu"},aboutConfluenceHelp:{resource:"confluence.web.resources:about",
438selector:"#confluence-about-link",event:"deferred.about-confluence.help-menu"}},function(a){d("body").on("click",a.selector,function(c){var d=a.resource+".requested",e=WRM.require("wr!"+a.resource);e.then(function(){"confluence.web.resources:page-move-resources"!==a.resource?b.trigger(a.event):g&&h?b.trigger(a.event):f=a.event});k.showUntilDialogVisible(e);i.Analytics?i.Analytics.triggerPrivacyPolicySafeEvent(d):b.trigger("analyticsEvent",{name:d});c.preventDefault()})})}});
439require("confluence/module-exporter").safeRequire("confluence/deferred-dialog-loader",function(c){require("ajs").toInit(c)});
440}catch(e){WRMCB(e)};
441;
442try {
443/* module-key = 'confluence.web.resources:deferred-loaders', location = '/includes/js/page-permissions-deferred-loader.js' */
444define("confluence/page-permissions-deferred-loader","confluence/dark-features confluence/legacy ajs confluence/page-loading-indicator jquery wrm".split(" "),function(b,a,c,d,e,f){var g=d(e("body"));return function(b){var a=f.require("wr!com.atlassian.confluence.plugins.confluence-page-restrictions-dialog:dialog-resources");a.then(function(){c.trigger("deferred.page.permissions")});g.showUntilDialogVisible(a,"There was an error loading the page restrictions. Please try again later.");b.preventDefault()}});
445require("confluence/module-exporter").safeRequire("confluence/page-permissions-deferred-loader",function(b){var a=require("ajs");a.toInit(function(c){c("body").on("click","#rte-button-restrictions,#action-page-permissions-link",b);a.bind("system-content-metadata.open-restrictions-dialog",b)})});
446}catch(e){WRMCB(e)};
447;
448try {
449/* module-key = 'confluence.web.resources:navigator-context', location = '/includes/js/api/navigator-context.js' */
450define("confluence/api/navigator-context",["confluence/meta","document"],function(g,b){var h=function(a){a=d(a);return"undefined"!==typeof a&&0!==a},d=function(a){a=g.get(a);if(!isNaN(a))return Number(a)},i=function(){return!!b.querySelector(".page.view")||!!b.querySelector(".blogpost.view")},e=function(){return!!b.querySelector(".page.edit")||!!b.querySelector(".blogpost.edit")}
450,f=function(){return g.get("content-type")},c=function(){return d("page-id")};return{getCurrent:function(){return e()&&
4510===c()&&h("draft-id")?{target:"contentcreate",context:{contentId:d("draft-id"),contentType:f()}}:e()&&!i()&&0!==c()?{target:"contentedit",context:{contentId:c(),contentType:f()}}:!e()&&i()&&h("page-id")?{target:"contentview",context:{contentId:c(),contentType:f()}}:{target:"unknown",context:{}}}}});
452}catch(e){WRMCB(e)};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.