PageSourceSearch

https://epay.maryville.edu/C21017_tsa/web/login.jsp?_ga=2.38803370.867605969.1689610591-885137803.1623179314

html maryville.edu collected 2026-09-24 08:37:04 UTC 23,067 bytes, 848 lines download raw bytes

1
2
3
4
5
6
7
8  
9
10
11
12
13<!DOCTYPE html>
14<html lang="en">
15<!-- SN  -->
16<!-- TouchNet Bill&#x2b;Payment Suite 9.5.1 HF 2 Build 4 &#x28; 08&#x2f;07&#x2f;2026 18&#x3a;27&#x3a;00 UTC &#x29; -->
17<head>
18  <!-- Required meta tags always come first -->
19  <meta charset="utf-8">
20
21  
22
23  <meta http-equiv="x-ua-compatible" content="ie=edge">
24  <meta name="description" content="TouchNet Information Systems, Inc. - Bill+Payment">
25
26  
27
28<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/C21017_tsa/web/images/apple-touch-icon-144-precomposed.png">
29<link rel="shortcut icon" href="/C21017_tsa/web/images/favicon.ico">
30
31<link rel="StyleSheet" href="/C21017_tsa/web/styles/ckeditor-contents.css" />
32<link rel="stylesheet" type="text/css" href="/C21017_tsa/web/lib/bootstrap/3.4.1/css/bootstrap.min.css" media="all" />
33<link rel="stylesheet" type="text/css" href="/C21017_tsa/web/lib/datatables/1.10.15/datatables.min.css" media="all" />
34<link rel="stylesheet" type="text/css" href="/C21017_tsa/web/styles/tbpmain.css" media="all" />
35<link rel="stylesheet" type="text/css" href="/C21017_tsa/web/styles/loading.css"/>
36
37
38<link rel="stylesheet" href="/C21017_tsa/web/lib/font-awesome/6.5.2/css/v4-shims.min.css"/>
39<link rel="stylesheet" href="/C21017_tsa/web/lib/font-awesome/6.5.2/css/fontawesome.min.css"/>
40<link rel="stylesheet" href="/C21017_tsa/web/lib/font-awesome/6.5.2/css/solid.min.css"/>
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56  <link rel="stylesheet" href="/C21017_tsa/web/styles/non-responsive.css" media="all"/>
57
58
59<!--
60Responsive licensed: false | Mobile device: false
61-->
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95<style>
96  /*
97  header colors
98  */
99  
100    header.pageHeader
101    {
102      background: #2c2a29;
103      border-color: #2c2a29;
104    }
105  
106  
107    header.pageHeader, .loginBox
108    {
109      color: #ffffff !important;
110    }
111  
112  
113    header.pageHeader a,
114    header.pageHeader button,
115    header.pageHeader input[type='button'],
116    .navbar-inverse .navbar-nav .loginBox a
117    {
118      color: #ffffff;
119    }
120  
121  
122    header.pageHeader a:hover,
123    header.pageHeader a:focus,
124    header.pageHeader button:hover,
125    header.pageHeader button:focus,
126    header.pageHeader input[type='button']:hover,
127    header.pageHeader input[type='button']:focus
128    {
129      color: #ffffff;
130    }
131  
132
133  /*
134  menu navigation colors
135  */
136  
137    .navbar-inverse
138    {
139      background: #c8102e;
140      border-color: #c8102e;
141    }
142  
143  
144  .navbar-inverse .navbar-nav>li>a,
145  .navbar-inverse .navbar-nav>li.open>a
146    {
147      color: #ffffff;
148    }
149  
150  
151    .navbar-inverse .navbar-nav>li>a:hover,
152    .navbar-inverse .navbar-nav>li>a:focus,
153    .navbar-inverse .navbar-nav>li>.active a,
154    .navbar-inverse .navbar-nav>li>.active a:hover,
155    .navbar-inverse .navbar-nav>li>.active a:focus,
156    .navbar-inverse .navbar-nav>li.open>a:hover,
157    .navbar-inverse .navbar-nav>li.open>a:focus,
158    .navbar-inverse .navbar-nav>li.open>.active a,
159    .navbar-inverse .navbar-nav>li.open>.active a:hover,
160    .navbar-inverse .navbar-nav>li.open>.active a:focus
161    {
162    
163      background: #555555;
164      border-color: #555555;
165    
166    
167      color: #fdb913;
168    
169    }
170  
171
172  /*
173  primary button colors
174  */
175  
176    .btn-primary,
177    .btn-primary:hover,
178    .btn-primary:focus,
179    .btn-primary.disabled:hover,
180    .btn-primary:disabled:hover
181    {
182      background: #c8102e;
183      border-color: #cccccc;
184    }
185  
186  
187    .btn-primary,
188    .btn-primary:hover,
189    .btn-primary:focus,
190    .btn-primary.disabled:hover,
191    .btn-primary:disabled:hover
192    {
193      color: #ffffff;
194    }
195  
196  
197    .btn-primary:active
198    {
199      background: #320a4d !important;
200      border-color: #cccccc !important;
201    }
202  
203  
204    .btn-primary:active
205    {
206      color: #ffffff !important;
207    }
208  
209
210  /*
211  secondary buttons colors
212  */
213  
214  .btn-default,
215  .btn-default:hover,
216  .btn-default:focus,
217  .btn-default.disabled:hover,
218  .btn-default:disabled:hover
219  {
220    background: #ffffff;
221    border-color: #cccccc;
222  }
223  
224  
225  .btn-default,
226  .btn-default:hover,
227  .btn-default:focus,
228  .btn-default.disabled:hover,
229  .btn-default:disabled:hover
230  {
231    color: #333333;
232  }
233  
234  
235  .btn-default:active
236  {
237    background: #e6e6e6 !important;
238    border-color: #cccccc !important;
239  }
240  
241  
242  .btn-default:active
243  {
244    color: #333333 !important;
245  }
246  
247
248  /*
249  footer colors
250  */
251  
252    .footer, .footer-content
253    {
254      background: #54585a;
255      border-color: #54585a;
256    }
257  
258  
259    .footer .footer-content
260    {
261      color: #cccccc;
262    }
263  
264  
265    .footer .footer-content a,
266    .footer .footer-content button,
267    .footer .footer-content input[type='button']
268    {
269      color: #cccccc;
270    }
271  
272  
273    .footer .footer-content a:hover,
274    .footer .footer-content a:focus,
275    .footer .footer-content button:hover,
276    .footer .footer-content button:focus,
277    .footer .footer-content input[type='button']:hover,
278    .footer .footer-content input[type='button']:focus
279    {
280      color: #cccccc;
281    }
282  
283
284  /*Express Payment widget colors*/
285  
286    .paymentOptionSelect, .paymentOptionSelect .h3
287    {
288    background-color: #d80000;
289    border-color: transparent;
290    }
291  
292  
293    .paymentOptionSelect, .paymentOptionSelect .h3
294    {
295     color: #ffffff;
296    }
297  
298</style>
299
300  
301
302<script type="text/javascript" src="/C21017_tsa/web/js/jquery/jquery-3.5.1.min.js"></script>
302
303<script type="text/javascript" src="/C21017_tsa/web/lib/tether/1.3.3/js/tether.min.js"></script>
303
304<script type="text/javascript" src="/C21017_tsa/web/lib/bootstrap/3.4.1/js/bootstrap.min.js"></script>
304
305<script type="text/javascript" src="/C21017_tsa/web/js/bootstrap-accessibility.js"></script>
305
306<script type="text/javascript" src="/C21017_tsa/web/js/extend.js"></script>
306
307<script type="text/javascript" src="/C21017_tsa/web/js/common.js"></script>
307
308<script type="text/javascript" src="/C21017_tsa/web/js/currency.js"></script>
308
309<script type="text/javascript" src="/C21017_tsa/web/js/toggle_lang.js"></script>
309
310<script type="text/javascript" src="/C21017_tsa/web/js/bootstrap-toast.js"></script>
310
311<script type="text/javascript" src="/C21017_tsa/web/js/bootstrap-modal/bootstrap-modals.js"></script>
311<script type="text/javascript" src="/C21017_tsa/web/js/bootstrap-modal/bootstrap-modals.i18n-en.js"></script>
311
312<script type="text/javascript" src="/C21017_tsa/web/js/jquery/jquery.timers.js"></script>
312
313<script type="text/javascript" src="/C21017_tsa/web/js/jquery/jquery.bootstrap.stackable.modals.js"></script>
313
314<script type="text/javascript" src="/C21017_tsa/web/js/spinner.js"></script>
314
315<script type="text/javascript" src="/C21017_tsa/web/js/please-wait.js"></script>
315
316<script type="text/javascript" src="/C21017_tsa/web/lib/datatables/1.10.15/datatables.min.js"></script>
316<script type="text/javascript" src="/C21017_tsa/web/lib/datatables/1.10.15/datatables.i18n-en.min.js"></script>
316
317<script type="text/javascript" src="/C21017_tsa/web/js/datatables-init.js"></script>
317
318<script type="text/javascript" src="/C21017_tsa/web/js/datatables-fixes.js"></script>
318
319<script type="text/javascript" src="/C21017_tsa/web/js/datatables-defaults.js"></script>
319
320<script type="text/javascript" src="/C21017_tsa/web/js/ajax-submit.js"></script>
320
321<script type="text/javascript" src="/C21017_tsa/web/js/apple_pay.js"></script>
321
322<script type="text/javascript" src="/C21017_tsa/web/js/polyfills.js"></script>
322
323<script type="text/javascript" src="/C21017_tsa/web/js/react/react.production.min.js"></script>
323
324<script type="text/javascript" src="/C21017_tsa/web/js/react/react-dom.production.min.js"></script>
324
325<script type="text/javascript" src="/C21017_tsa/web/js/password-complexity.js"></script>
325
326<script type="text/javascript" src="/C21017_tsa/web/js/banner-messages.js"></script>
326
327<script type="text/javascript" src="/C21017_tsa/web/js/agreement.js"></script>
327
328<script type="text/javascript" src="/C21017_tsa/web/js/messages.js"></script>
328
329<script type="text/javascript" src="/C21017_tsa/web/js/jquery/mask/jquery.mask.js"></script>
329
330
331
332
333
334
335
336
337
338
339<script nonce="">
340
341  
342
343</script>
343
344
345
346
347
348
349
350<script type="text/javascript" src="/C21017_tsa/web/js/formValidation.js"></script>
350
351
352
353
354
355
356
357
358
359
360
361
362
363  <title>Billing Center Login</title>
364
365  
366    
367    
367<script type="text/javascript" src="/C21017_tsa/web/js/jquery/jquery-3.5.1.min.js"></script>
367
368  
369</head>
370
371<body id="" class="">
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393<div id="skipNav">
394  <a id="skipNavigationToMainContent" class="sr-only sr-only-focusable" href="#skipNavigationToMainContent">
395    Skip to Main Content
396  </a>
397</div><!--used for skip navigation-->
398
399<div id="ariaLive" class="hidden">
400  <div id="mainLiveRegion" role="log" aria-live="assertive" aria-atomic="false" aria-relevant="text"></div>
401</div><!-- it is used for 508 compliance - this invisible field is for screen readers in situations when we update some area
402without having focus on it -->
403
404<script type="text/javascript" src="/C21017_tsa/web/js/skip_navigation.js"></script>
404
405<script nonce="">
406    $( function()
407    {
408      $( "a.payment-date-skip-navigator" ).skip_navigation_to( "#paymentDatePicker" );
409
410      var skipFocus = function( navOrContent )
411      {
412        var contentSelectorWrapper = ".container, .container-fluid";
413        var navSelectorWrapper = "nav";
414        var focusSelectors = [ "*[tabindex]:visible", "input:visible", "select:visible",
415                               "textarea:visible", "button:visible", "a:visible" ];
416
417        var focusToSelector = "";
418
419        if ( navOrContent === "nav" )
420        {
421          focusToSelector = navSelectorWrapper;
422        }
423        else if ( navOrContent === "content" )
424        {
425          focusToSelector = contentSelectorWrapper;
426        }
427
428        $( focusToSelector ).find( focusSelectors.join() ).first().focus();
429      };
430
431      var skipToNavClickHandler = function( event )
432      {
433        event.preventDefault();
434        skipFocus( "nav" );
435      };
436
437      var skipToContentClickHandler = function( event )
438      {
439        event.preventDefault();
440        skipFocus( "content" );
441      };
442
443      $( '#skipToNav' ).bind( "click", skipToNavClickHandler );
444      $( '#skipNav' ).bind( "click", skipToContentClickHandler );
445    } );
446</script>
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464  
465  <div class="printHeader">
466    <img id="printHeader" src="/C21017_tsa/web/images/printHeader.png" alt="Bill+Payment Header">
467  </div>
468
469  
470
471  
472
473  
474
475
476
477
478
479
480
481    <form name="Form1" action="&#x2f;C21017_tsa&#x2f;tapp" method="post">
482      
483      
484
485
486
487<input type="hidden" name="START_APP" value="true">
488<input type="hidden" name="JSP_TYPE" value="web">
489<input type="hidden" name="REDIRECT" value="true">
490<input type="hidden" name="SCHEME" value="https">
491<input type="hidden" name="SERVER" value="epay.maryville.edu">
492<input type="hidden" name="PORT" value="443">
493<input type="hidden" name="CTX_PATH" value="&#x2f;C21017_tsa">
494<input type="hidden" name="tapp-stoken" value="null" />
495
496      <input type="hidden" name="OnError" value="login.jsp">
497      <input type="hidden" name="Navigate" value="login.jsp">
498    
499      
500      
501        
502          <input type="hidden" name="_ga" value="2.38803370.867605969.1689610591-885137803.1623179314">
503        
504      
505    </form>
506
507    
507<script nonce="">
508      $( function()
509      {
510        setTimeout( function () {
511          
512            
513              document.Form1.submit();
514            
515            
516          
517        }, 0);
518      });
519    </script>
519
520
521  
522
523
524
525
526
527
528
529
530
531
532
533
534
535<div id="footerContainer"></div>
536
537<script nonce="">
538  $( function () {
539    const footerTemplatesData =
540    {"FOOTER":[]}?.
541    ['FOOTER'] ?? [];
542    const layoutTemplate = footerTemplatesData.find( template => template?.type === 'GENERAL' );
543    const brandingTemplate = footerTemplatesData.find( template => template?.type === 'BRANDING' );
544
545    if ( layoutTemplate && brandingTemplate )
546    {
547      renderFooter( layoutTemplate, brandingTemplate );
548    }
549    else
550    {
551      renderDefaultFooter();
552    }
553
554    function renderFooter( layoutTemplate, brandingTemplate )
555    {
556      const layoutTemplateDesignComponent = layoutTemplate.componentList
557          .find( component => component.type === 'FOOTER' ) ?? {};
558
559      const brandingTemplateDesignComponent = brandingTemplate.componentList
560          .find( component => component.type === 'FOOTER' ) ?? {};
561
562      const layoutTemplateProperties = layoutTemplateDesignComponent.propertyList ?? [];
563
564      const links = getSubpropertyList( layoutTemplateProperties, 'LINK_LIST' );
565      const linksHtml = getLinksHtml(
566          getSubpropertyList( links, 'LINK', 'privacyPolicy' ),
567          getSubpropertyList( links, 'LINK', 'accessibility' ) );
568
569      const copyright = layoutTemplateProperties.find( prop => prop.type === 'CONTENT' )?.value ?? '';
570
571      const logo = getSubpropertyList( layoutTemplateProperties, 'IMAGE' );
572      const logoPath = getPropertyValue( logo, 'path' );
573      const logoStoragePath = getPropertyValue( logo, 'storagePath' );
574      const logoUrl = getPropertyValue( logo, 'url' );
575      const logoAltText = getPropertyValue( logo, 'altText' );
576
577      const templateScope = layoutTemplate?.scope ?? '';
578
579      const logoHtml = getLogoHtml( logoPath, logoStoragePath, logoUrl, logoAltText, templateScope );
580
581      const brandingTemplateProperties = brandingTemplateDesignComponent.propertyList ?? [];
582
583      const fontFamily = getSubpropertyList( brandingTemplateProperties, 'FONT', 'body' )
584          ?.find( prop => prop.type === 'TEXT' )?.value ?? '';
585
586      const hyperlinks = getSubpropertyList( brandingTemplateProperties, 'FONT', 'hyperlinks' );
587
588      const DEFAULT_LINKS_COLOR = '#cccccc';
589      const DEFAULT_LINKS_DECORATION = 'none';
590      const DEFAULT_LINKS_COLOR_HOVER = '#cccccc';
591      const DEFAULT_LINKS_DECORATION_HOVER = 'none';
592
593      const hyperlinksColor = getPropertyValue( hyperlinks, 'color', DEFAULT_LINKS_COLOR );
594      const hyperlinksDecoration = getPropertyValue( hyperlinks, 'decoration', DEFAULT_LINKS_DECORATION );
595      const hyperlinksColorHover = getPropertyValue( hyperlinks, 'colorHover', DEFAULT_LINKS_COLOR_HOVER );
596      const hyperlinksDecorationHover = getPropertyValue( hyperlinks, 'decorationHover', DEFAULT_LINKS_DECORATION_HOVER );
597
598      const colorSchemeProperties = getSubpropertyList( brandingTemplateProperties, 'FONT',
599          'colorScheme' );
600
601      const DEFAULT_FONT_COLOR = '#cccccc';
602      const DEFAULT_BACKGROUND_COLOR = '#00467F';
603
604      const fontColor = getPropertyValue( colorSchemeProperties, 'color', DEFAULT_FONT_COLOR );
605      const backgroundColor = getPropertyValue( colorSchemeProperties, 'background', DEFAULT_BACKGROUND_COLOR );
606
607      const FOOTER_HTML_TEMPLATE = `
608<style>
609  .footer-template {
610    position: absolute;
611    bottom: 0;
612    width: 100%;
613    min-height: 55px;
614    max-height: 180px;
615  }
616
617  .footer-template .footer-template-content {
618    display: block;
619    line-height: 24px;
620    padding: 15px;
621    z-index: 3;
622    word-break: break-word;
623    font-size: 16px;
624    font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
625  }
626
627  .footer-template .footer-template-links {
628    font-variant: normal;
629    font-weight: 500;
630    padding-left: 10px;
631  }
632
633  .footer-template .footer-template-links .footer-link-delimiter {
634    font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
635    opacity: 0.5;
636    padding-left: 15px;
637    padding-right: 15px;
638  }
639
640  .footer-template .footer-template-brand {
641    display: flex;
642    align-items: flex-end;
643    flex-direction: column;
644    padding-left: 10px;
645    padding-right: 15px;
646  }
647
648  @media (max-width: 768px) {
649    .footer-template .footer-template-brand {
650        align-items: flex-start;
651    }
652  }
653
654  .footer-template .footer-template-copyright-text p {
655    margin: 0;
656  }
657
658  .footerLogo .img-responsive {
659    max-height: 200px;
660  }
661
662  .footer-template, .footer-template-content {
663    background: ${backgroundColor};
664    color: ${fontColor} !important;
665  }
666
667  .footer-template, .footer-template-links {
668    font-family: ${fontFamily};
669  }
670
671  .footer-template .footer-template-links a {
672    color: ${hyperlinksColor};
673    text-decoration: ${hyperlinksDecoration};
674  }
675
676  .footer-template .footer-template-links a:hover,
677  .footer-template .footer-template-links a:focus {
678    color: ${hyperlinksColorHover};
679    text-decoration: ${hyperlinksDecorationHover};
680  }
681</style>
682
683<footer class="footer-template">
684  <div class="container-fluid footer-template-content">
685    <div class="row">
686      <div class="col-md-6 col-xs-12">
687        <div class="footer-template-links">
688          <span>${linksHtml}</span>
689        </div>
690      </div>
691      <div class="col-md-6 col-xs-12">
692        <div class="footer-template-brand">
693          <span class="footerLogo">${logoHtml}</span>
694          <span class="footer-template-copyright-text">${copyright}</span>
695        </div>
696      </div>
697    </div>
698  </div>
699</footer>`;
700
701      $( '#footerContainer' )
702          .append( FOOTER_HTML_TEMPLATE );
703    }
704
705    function getPropertyValue( property, propertyName, defaultValue )
706    {
707      defaultValue = defaultValue ?? '';
708
709      return property.find( prop => prop.name === propertyName )?.value ?? defaultValue;
710    }
711
712    function getSubpropertyList( properties, type, name )
713    {
714      if ( type && name )
715      {
716        return properties.find( prop => prop.type === type && prop.name === name )?.subpropertyList ?? [];
717      }
718      else
719      {
720        return properties.find( prop => prop.type === type )?.subpropertyList ?? [];
721      }
722    }
723
724    function getLinksHtml( privacyPolicyLink, accessibilityLink )
725    {
726      const DEFAULT_PRIVACY_URL_ORDER = 1;
727      const DEFAULT_ACCESSIBILITY_URL_ORDER = 2;
728
729      const privacyPolicyLinkDisplayName = getPropertyValue( privacyPolicyLink, 'displayName' );
730      const privacyPolicyLinkUrl = getPropertyValue( privacyPolicyLink, 'url' );
731      let privacyPolicyLinkSortOrder = getPropertyValue( privacyPolicyLink, 'sortOrder', DEFAULT_PRIVACY_URL_ORDER );
732      privacyPolicyLinkSortOrder = isNaN( privacyPolicyLinkSortOrder ) ? DEFAULT_PRIVACY_URL_ORDER : Number( privacyPolicyLinkSortOrder );
733
734      const accessibilityLinkDisplayName = getPropertyValue( accessibilityLink, 'displayName' );
735      const accessibilityLinkUrl = getPropertyValue( accessibilityLink, 'url' );
736      let accessibilityLinkSortOrder = getPropertyValue( accessibilityLink, 'sortOrder', DEFAULT_ACCESSIBILITY_URL_ORDER );
737      accessibilityLinkSortOrder = isNaN( accessibilityLinkSortOrder ) ? DEFAULT_ACCESSIBILITY_URL_ORDER : Number( accessibilityLinkSortOrder );
738
739      const privacyPolicyUrlHtml =
740          privacyPolicyLinkDisplayName.length > 0 && privacyPolicyLinkUrl.length > 0 ?
741              ` <a target="_blank" href="${checkHttpProtocol( privacyPolicyLinkUrl )}">${privacyPolicyLinkDisplayName}
742        <span class="sr-only">Opens in new window</span></a>` : '';
743
744      const accessibilityPolicyUrlHtml =
745          accessibilityLinkDisplayName.length > 0 && accessibilityLinkUrl.length > 0 ?
746              ` <a target="_blank" href="${checkHttpProtocol( accessibilityLinkUrl )}">${accessibilityLinkDisplayName}
747        <span class="sr-only">Opens in new window</span></a>` : '';
748
749      const linkDelimiter = `<span class="footer-link-delimiter">|</span>`;
750
751      if ( !privacyPolicyUrlHtml )
752      {
753        return accessibilityPolicyUrlHtml;
754      }
755
756      if ( !accessibilityPolicyUrlHtml )
757      {
758        return privacyPolicyUrlHtml;
759      }
760
761      if ( privacyPolicyLinkSortOrder > accessibilityLinkSortOrder )
762      {
763        return accessibilityPolicyUrlHtml + linkDelimiter + privacyPolicyUrlHtml;
764      }
765      else
766      {
767        return privacyPolicyUrlHtml + linkDelimiter + accessibilityPolicyUrlHtml;
768      }
769    }
770
771    function checkHttpProtocol( url )
772    {
773      return url.startsWith( "https://" ) || url.startsWith( "http://" ) ? url : "//" + url;
774    }
775
776    function getLogoHtml( logoPath, logoStoragePath, logoUrl, logoAltText, templateScope )
777    {
778      const serverPath = '&#x2f;C21017_tsa&#x2f;';
779
780      const logoImageFullPath = templateScope === 'GLOBAL' ?
781          getUniversalTemplateImageFullPath( logoStoragePath, logoPath, serverPath )
782          :
783          serverPath +
784          'web&#x2f;images&#x2f;footers/'
785          + encodeURIComponent( logoPath );
786
787      if ( logoUrl && ( logoPath || logoStoragePath ) && logoAltText )
788      {
789        return `<a href="${logoUrl}" target="_blank">
790            <img class="img-responsive"
791                           src="${logoImageFullPath}"
792                           alt="${logoAltText}">
793          </a>`;
794      }
795      else if ( logoPath || logoStoragePath )
796      {
797        return `<img class="img-responsive"
798                           src="${logoImageFullPath}"
799                           alt="${logoAltText}">`;
800      }
801      else
802      {
803        return '';
804      }
805    }
806
807    function getUniversalTemplateImageFullPath( cloudStorageImagePath, sharedStorageImagePath, serverPath )
808    {
809      if ( cloudStorageImagePath )
810      {
811        return 'https://storage.googleapis.com/bkt-gousgnaig-tnet-ucomm-dts-universal-template-image/C21017/' + encodeURIComponent( cloudStorageImagePath );
812      }
813
814      return serverPath +
815          'web&#x2f;universal/'
816          + encodeURIComponent( sharedStorageImagePath );
817    }
818
819    function renderDefaultFooter()
820    {
821      const currentYear = new Date().getFullYear();
822      const DEFAULT_FOOTER_HTML =
823          `<footer class="footer">
824              <div class="container-fluid footer-content">
825                <div class="row">
826                  <div class="col-xs-12 footerLegal">
827                        <span>
828                                &copy; ${currentYear} TouchNet <sup>&reg;</sup>
829                        <i>A<strong> Global Payments </strong>Company</i><span class="px-1">|</span>All rights reserved.<span class="px-1">|</span>
830                        <a class="text-underline"
831                           href="https://www.touchnet.com/en/technology-solution-privacy-policy"
832                           target="_blank">Privacy Policy<span class="sr-only">Opens in new window</span>
833                        </a>
834                        </span>
835                      </div>
836                    </div>
837                </div>
838            </footer>`
839
840      $( '#footerContainer' )
841          .append( DEFAULT_FOOTER_HTML );
842    }
843  } );
844</script>
844
845
846</body>
847
848</html>

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.