CINXE.COM

Loading...

<!DOCTYPE html> <!-- Build: 1.1.368.2 --> <!-- StateVersion: 2.1.1 --> <!-- DeploymentMode: Production --> <!-- CorrelationId: 8e307a11-f40f-4f48-9a7a-a6bdca4ee7f2 --> <!-- DataCenter: BL2 --> <!-- Slice: 001-000 --> <html lang="en-US"><head><link rel="icon" href="data:;base64,iVBORw0KGgo="><script data-script="jQuery" src="https://afiapps.b2clogin.com/static/bundles/jquery-bundle-1.10.2.min.js?slice=001-000&dc=BL2" nonce="z9FepLjW53qchLOom7JZ7Q=="></script><script data-container="true" nonce="z9FepLjW53qchLOom7JZ7Q==">var CP = {"list":[]}; var SA_FIELDS = {"AttributeFields":[{"UX_INPUT_TYPE":"TextBox","USER_INPUT_TYPE":"TextBox","IS_TEXT":true,"IS_EMAIL":false,"IS_PASSWORD":false,"IS_DATE":false,"IS_RADIO":false,"IS_DROP":false,"IS_TEXT_IN_PARAGRAPH":false,"IS_CHECK_MULTI":false,"IS_LINK":false,"VERIFY":false,"DN":"Username or email address","ID":"logonIdentifier","U_HELP":"Your username or email address.","DAY_PRE":"0","MONTH_PRE":"0","YEAR_PRE":"0","IS_REQ":true,"IS_RDO":false,"OPTIONS":[]},{"UX_INPUT_TYPE":"Password","USER_INPUT_TYPE":"Password","IS_TEXT":false,"IS_EMAIL":false,"IS_PASSWORD":true,"IS_DATE":false,"IS_RADIO":false,"IS_DROP":false,"IS_TEXT_IN_PARAGRAPH":false,"IS_CHECK_MULTI":false,"IS_LINK":false,"VERIFY":false,"DN":"Password","ID":"password","U_HELP":"Enter password","DAY_PRE":"0","MONTH_PRE":"0","YEAR_PRE":"0","IS_REQ":true,"IS_RDO":false,"OPTIONS":[]}]}; var CONTENT = {"remember_me":"Keep me signed in","invalid_password":"The password you entered is not in the expected format.","cancel_message":"The user has forgotten their password","requiredField_email":"Please enter your email","logonIdentifier_username":"Username","forgotpassword_link":"Forgot your password?","local_intro_email":"Sign in with your existing account","invalid_email":"Please enter a valid email address","createaccount_link":"Sign up now","unknown_error":"We are having trouble signing you in. Please try again later.","requiredField_username":"Please enter your user name","logonIdentifier_email":"Email Address","email_pattern":"^[a-zA-Z0-9.!#$%&amp;’&#39;*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$","requiredField_password":"Please enter your password","password":"Password","divider_title":"OR","createaccount_intro":"Don&#39;t have an account?","social_intro":"Sign in with your social account","button_signin":"Sign in","local_intro_username":"Sign in with your user name"}; var SETTINGS = {"remoteResource":"https://prd-aficalmjedi-aadb2c-as.azurewebsites.net/unifiedprod.html","retryLimit":3,"trimSpacesInPassword":true,"api":"CombinedSigninAndSignup","csrf":"T1RNQzRlTmkwekd0c3l3Q01TVjFLU3lUVlI3dm5Ya0Z5TzNjVEI5bkRWZ1pIaGVzZ3VuTnpMQ3RURVRtdklpM0FOcG1nZEx0R1U0MzE2VytMYmh3VkE9PTsyMDI1LTAzLTMwVDE1OjUzOjMzLjI4NDg3MzVaO3N2eEVERUUxNFdKU25rOUZLYXVMeWc9PTt7Ik9yY2hlc3RyYXRpb25TdGVwIjoxfQ==","transId":"StateProperties=eyJUSUQiOiI4ZTMwN2ExMS1mNDBmLTRmNDgtOWE3YS1hNmJkY2E0ZWU3ZjIifQ","pageViewId":"4f16ec46-1486-42e3-ba53-8d2fda22bb53","suppressElementCss":false,"isPageViewIdSentWithHeader":false,"allowAutoFocusOnPasswordField":true,"pageMode":1,"config":{"showSignupLink":"false","operatingMode":"Email","sendHintOnSignup":"False","forgotPasswordLinkLocation":"AfterLabel","includePasswordRequirements":"true","enableRememberMe":"true","announceVerCompleteMsg":"True"},"hosts":{"tenant":"/afiapps.onmicrosoft.com/B2C_1_afisignin","policy":"B2C_1_afisignin","static":"https://afiapps.b2clogin.com/static/"},"locale":{"lang":"en","country":"US"},"xhrSettings":{"retryEnabled":true,"retryMaxAttempts":3,"retryDelay":200,"retryExponent":2,"retryOn":["error","timeout"]}}; </script><script nonce="z9FepLjW53qchLOom7JZ7Q==">window.staticHost="https://afiapps.b2clogin.com/static";window.targetSlice="001-000";window.targetDc="BL2";window.initializationTimeout=30000;window.diagsAlways=true;window.maxTrace=1000</script><script id="element" data-script="element" nonce="z9FepLjW53qchLOom7JZ7Q==">/* inject:ief-diagnostics.js */ "use strict"; // Object for holding trace information // and timing var $trace = function(trace, time) { var _trace = trace; var _startTime = 0; var _time = time; var _timeElapsed = 0; // If the trace is being timed, // capture the start time if (_time === true) { _startTime = new Date().getTime(); } return { // Outputs the trace as object, // ending the timer if one was started // when trace creates toJson: function () { // If the trace was a timed trace if (_time) { var elapsed = new Date() - _startTime; _timeElapsed = elapsed; } return { // action ac: _trace, // actionStartTime in milliseconds. acST: Math.floor(_startTime / 1000), // actionDuration in milliseconds. acD: _timeElapsed }; }, // Appends the specified trace // to the existing trace info append: function(trace){ _trace += trace; } } }; var $diags = (function ($trace, settings) { // Array to hold trace diagnostics var _trace = []; var _initializationSuccessful = false; // Start a timer that will fire after 10s // and check if the initializationSuccessful flag // is true. If the initializationSuccessful flag // is not true by the time the timer fires, we send // back a response to the service indicating that // a load failure has occurred. This function has a dependency // on the Settings JSON. setTimeout(function () { if (!window.$diags.initializationSuccessful) { // Configure the default trace var trace = new $trace("T000", false); var diagnosticsCode = "UX001" var failedScript = ""; if (!window.jQuery || typeof $element === "undefined") { trace = new $trace("T025", false); var scriptLookup = !window.jQuery ? "jQuery" : "element"; // Get the script source using the data-script attribute var scriptNode = document.querySelectorAll('[data-script="' + scriptLookup + '"]'); failedScript = scriptNode[0].src || scriptLookup; trace.append(" - " + failedScript); diagnosticsCode = "UX002"; } window.$diags.trace(trace); window.$diags.sendDiagnostics(diagnosticsCode, failedScript); } }, window.initializationTimeout || 7000); return { VERSION: "2.0.0", // Export the flag initializationSuccessful: _initializationSuccessful, // Sends the specified info as diagnostics // information on the service sendDiagnostics: function (code, description, stack) { window.location.replace(this.toDiagnosticsPath(code, description, stack)); }, // Sends the specified info as diagnostics // information on the service asynchronously sendQuietDiagnostics: function (code, description, stack) { $.ajax({ url: this.toDiagnosticsPath(code, description, stack) }); }, // Convert diagnostics to a request path. toDiagnosticsPath: function (code, description, stack) { // Wrap the diagnostics in the version wrapper var diagsJson = this.toJson(code, stack); var path = settings.hosts.tenant + "/api/" + settings.api + "/error?code=" + code + "&diags=" + encodeURIComponent(diagsJson) + "&csrf_token=" + settings.csrf + "&tx=" + settings.transId + "&p=" + settings.hosts.policy; // Add any information to the path if (description) { path += "&desc=" + encodeURIComponent(description); } return path; }, // Returns the diagnostics trace // as json toJson: function (code, stack) { // Check the length of the trace to ensure that it is below the max trace var jsonTrace = JSON.stringify(_trace); var truncated = false; while (_trace.length !== 0 && jsonTrace.length > window.maxTrace) { // Remove the last element added to the trace, we are // most interested in the startup trace _trace.pop(); jsonTrace = JSON.stringify(_trace); truncated = true; } var baseDiagnostics = { "pageViewId": settings.pageViewId, "pageId": settings.api, "trace": _trace }; if (truncated) { baseDiagnostics.truncated = truncated; } // If an error add details to diagnostics if (code) { baseDiagnostics.code = code; } // Add any stack detail to the diagnostics // information if (stack) { baseDiagnostics.info = stack; } return JSON.stringify(baseDiagnostics); }, // Adds the trace information to the // trace stack trace: function (trace) { _trace.push(trace.toJson()); return; }, // Outputs the contents of the trace // to the console toConsole: function () { for (var i = 0, len = _trace.length; i < len; i++) { console.log(_trace[i]); } return; }, // Show the current stack trace traceStack: _trace } }($trace, SETTINGS)); // Listen to online and offline event and append it to the client side traces. (function () { var appendOnlineStatusToTrace = function() { var status = window.navigator !== undefined && window.navigator.onLine !== undefined ? (window.navigator.onLine ? "Online" : "Offline") : "NotSupported"; var trace = new $trace("T030", true); trace.append(status); $diags.trace(trace); } window.addEventListener('online', appendOnlineStatusToTrace); window.addEventListener('offline', appendOnlineStatusToTrace); }()); /* endinject */ /* inject:ief-sanitizer.js */ var $santizer = (function ($cors, settings) { // Processes the cross origin document, santizing // the content before setting as the document var _santize = function (input) { // If no sanitization needed, return input if (settings.pageMode === 1) { return input } return (function (trace) { try { return sanitizeHtml(input, SETTINGS.sanitizerPolicy); } catch (error) { trace.append(" - err:" + error.message); $diags.trace(trace); // Send diagnostics to the service $diags.sendDiagnostics("UX017", SETTINGS.remoteResource); } finally { $diags.trace(trace); } }(new $trace("T029", true))); }; // Export the santize function return { santize: _santize }; }($santizer, SETTINGS)); /* endinject */ /* inject:ief-initializer.js */ if (typeof navigator.cookieEnabled === "undefined") { document.cookie = "probe"; navigator.cookieEnabled = (document.cookie.indexOf("probe") !== -1) ? true : false; }; if (!navigator.cookieEnabled) document.getElementById('no_cookie').className = ''; if (typeof $diags !== 'undefined') $diags.initializationSuccessful = true; // Globals for indicating the various stages // of page readiness. // window.contentReady: indicates that the // cross origin document has been downloaded // and can be processed. // window.pageReady: indicates that the cross // origin content has been processed and DOM // updated, ready for initialization window.contentReady, window.pageReady = false; (function () { // Add the querySelectorAll polyfill for IE6 & IE7 if (!document.querySelectorAll) { console.log("Creating polyfill for querySelectorAll."); document.querySelectorAll = function (selector, maxCount) { var style = style = document.createStyleSheet() var all = document.all, l = all.length, i, resultSet = []; style.addRule(selector, "k:v"); for (i = 0; i < l; i += 1) { if (all[i].currentStyle.k === "v") { resultSet.push(all[i]); if (resultSet.length > Infinity) { break; } } } style.removeRule(0); return resultSet; } } // Add the trim polyfill for IE6 & IE7 if (!String.prototype.trim) { console.log("Creating polyfill for String.prototype.trim."); (function () { // Make sure we trim BOM and NBSP var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; String.prototype.trim = function () { return this.replace(rtrim, ''); }; })(); } }()); // Only kick off sript downloads and page // processing if the user agent supports // cookies and javascript if (navigator.cookieEnabled) { // Convert any undefined console functions to a noop. (function () { var method; var noop = function () { }; var methods = [ 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn' ]; var length = methods.length; var console = (window.console = window.console || {}); while (length--) { method = methods[length]; if (!console[method]) { console[method] = noop; } } }()); var $cors = (function ($cors, settings) { var _crossOriginDocument; // Processes the cross origin document, santizing // the content before setting as the document var _process = function () { (function (trace) { try { var $documentToProcess = _wrap$($santizer.santize(_crossOriginDocument)); // Add the metadata, links and styles to the head, before any other // processing as this means that any styles are loaded upfront $("head") .prepend($documentToProcess.find("meta")) .append($documentToProcess.find("link,style")); // Merge the element content into the customer // content (function (subTrace) { var api = $documentToProcess.find("#api"); var elementContent = $($element.getElementContent()).html(); // Get all existing attributes, before replacing var existingAttributes = api[0].attributes; api.replaceWith($(elementContent)[0].outerHTML); // Now add back the existing attributes // excluding the id attribute back onto // the api node. Grab the updated #api first. api = $documentToProcess.find("#api"); $.each(existingAttributes, function () { if (this.name !== "id") { api.attr(this.name, this.value); } }); $diags.trace(subTrace); }(new $trace("T004", true))); // Replace the title $("title").replaceWith($documentToProcess.find("title")); // If the favicon contains an empty href, set // href a base64 image of an empty png. This avoid the // favicon request coming back to I2E resulting in the 404s var faviconLink = "link[rel^='icon']", favicon = $documentToProcess.find(faviconLink), defaultIcon = "data:;base64,iVBORw0KGgo="; if (favicon && favicon[0]) { if (favicon[0].attributes["href"] === undefined) { favicon[0].attributes["href"].value = defaultIcon; } // Remove default favicon $("head").find(faviconLink).remove(); } setTimeout(function () { // Append the script, noscript and any no header // elements to the body. When using the .not() we operate // on the child nodes of the wrapper so that we don't append // the wrapper div itself to the body. $("body") .append($($documentToProcess).children().not("title,meta,link,style,script,noscript,#text,#comment")) .append($documentToProcess.find("script,noscript")); window.bodyReady = true; }, 0); // Make sure screen reader to announce the page name, also prevent reading "table". $("table[class=panel_layout]").attr({ "aria-label": document.title }); // Update the global flag indicating that the cross origin // document has now been set window.pageReady = true; } catch (error) { trace.append(" - err:" + error.message); } finally { $diags.trace(trace); } }(new $trace("T019", true))); }; // Wraps the content in a div and returns // as a jQuery object suitable for DOM // operations var _wrap$ = function (content) { return $("<div>" + content + "</div>"); }; // So as the this script has loaded, attempt // to get the cross origin document (function getCrossOriginDocument() { (function (trace) { var usingXhr = !window.XDomainRequest; var requestor = usingXhr ? new XMLHttpRequest() : new XDomainRequest(); var remoteResource = SETTINGS.remoteResource; // If the resource being fetched is from the I2E static service, // add the slice/dc query string if (remoteResource.indexOf(window.staticHost) === 0) { var initialPrepend = remoteResource.indexOf("?") === -1 ? "?" : "&"; remoteResource += initialPrepend + "slice=" + window.targetSlice; remoteResource += "&dc=" + window.targetDc; } requestor.open("GET", remoteResource); // Wire up the event handlers requestor.onload = function () { if (!usingXhr || usingXhr && requestor.status === 200) { _crossOriginDocument = requestor.responseText; // Update the global flag to indicate that the cross // origin content has been now been downloaded window.contentReady = true; // Add remote resource URL to indicate if UI is customized on client side. trace.append(' - URL:' + remoteResource); $diags.trace(trace); return; } // If the resource hasn't been found if (requestor.status === 404) { var errorTrace = new $trace("T028", false); $diags.trace(errorTrace); $diags.trace(trace); // Send diagnostics to the service $diags.sendDiagnostics("UX005", SETTINGS.remoteResource); } return; } // On error gets fired when there is not network or an issue connecting to // the host requestor.onerror = function () { // We don't get a status back from XDomainRequest, either get // sent to onload or onerror as is the case here var status = 0; if (usingXhr) { status = requestor.status; } var errorTrace = new $trace("T027", false); $diags.trace(errorTrace); $diags.trace(trace); // Send diagnostics to the service $diags.sendDiagnostics("UX004", SETTINGS.remoteResource); return; } // Handle timeout fetching the cross-origin resource requestor.timeout = function () { // On timeout we retry this.tryCount++; if (this.tryCount <= this.retryLimit) { // Try again getCrossOriginDocument(); return; } var timeoutTrace = new $trace("T026", false); $diags.trace(timeoutTrace); $diags.trace(trace); // Send diagnostics to the service $diags.sendDiagnostics("UX003", SETTINGS.remoteResource); return; } // Required by XDomainRequest, but don't do anthing with this requestor.onprogress = function () { } // Set the request timeout to match the initializtion timeout -0.2s, // so that we explicitly catch timeout issues with remote resources requestor.timeout = (window.initializationTimeout || 7000) - 200; // Send the request requestor.send(); }(new $trace("T021", true))); }()); // Export the process function return { process: _process }; }($cors, SETTINGS)); // Wait for jQuery to load (function defer() { if (window.jQuery && typeof $element !== "undefined") { // We need to wait on the remote // content before we can update the DOM. // Script is ready when the script // download is complete, not execution // of the script. (function waitOnContentReady() { if (window.contentReady) { // Cross origin content can // now be processed, which if successful // sets the window.pageReady flag $cors.process(); setTimeout(function () { if (window.pageReady && window.bodyReady) { // Now wait for body and page are ready. // This ensures that any initialization // that requires visible elements such as focus work // as intended $element.initialize(); // Put focus on #page_loaded_msg to trigger the screen reader to read. $("#page_loaded_msg").focus(); // Update the initialization flag to prevent diganostics // phoning home $diags.initializationSuccessful = true; } }, 0); } else { setTimeout(waitOnContentReady, 0); }; }()); } else { setTimeout(function () { defer() }, 50); } })(); } /* endinject */ /* inject:handlebars.runtime-4.0.12.min.js */ /**! @license handlebars v4.0.12 Copyright (C) 2011-2017 by Yehuda Katz Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ !function (a, b) { "object" == typeof exports && "object" == typeof module ? module.exports = b() : "function" == typeof define && define.amd ? define([], b) : "object" == typeof exports ? exports.Handlebars = b() : a.Handlebars = b() }(this, function () { return function (a) { function b(d) { if (c[d]) return c[d].exports; var e = c[d] = { exports: {}, id: d, loaded: !1 }; return a[d].call(e.exports, e, e.exports, b), e.loaded = !0, e.exports } var c = {}; return b.m = a, b.c = c, b.p = "", b(0) }([function (a, b, c) { "use strict"; function d() { var a = new h.HandlebarsEnvironment; return n.extend(a, h), a.SafeString = j["default"], a.Exception = l["default"], a.Utils = n, a.escapeExpression = n.escapeExpression, a.VM = p, a.template = function (b) { return p.template(b, a) }, a } var e = c(1)["default"], f = c(2)["default"]; b.__esModule = !0; var g = c(3), h = e(g), i = c(20), j = f(i), k = c(5), l = f(k), m = c(4), n = e(m), o = c(21), p = e(o), q = c(33), r = f(q), s = d(); s.create = d, r["default"](s), s["default"] = s, b["default"] = s, a.exports = b["default"] }, function (a, b) { "use strict"; b["default"] = function (a) { if (a && a.__esModule) return a; var b = {}; if (null != a) for (var c in a) Object.prototype.hasOwnProperty.call(a, c) && (b[c] = a[c]); return b["default"] = a, b }, b.__esModule = !0 }, function (a, b) { "use strict"; b["default"] = function (a) { return a && a.__esModule ? a : { "default": a } }, b.__esModule = !0 }, function (a, b, c) { "use strict"; function d(a, b, c) { this.helpers = a || {}, this.partials = b || {}, this.decorators = c || {}, i.registerDefaultHelpers(this), j.registerDefaultDecorators(this) } var e = c(2)["default"]; b.__esModule = !0, b.HandlebarsEnvironment = d; var f = c(4), g = c(5), h = e(g), i = c(9), j = c(17), k = c(19), l = e(k), m = "4.0.12"; b.VERSION = m; var n = 7; b.COMPILER_REVISION = n; var o = { 1: "<= 1.0.rc.2", 2: "== 1.0.0-rc.3", 3: "== 1.0.0-rc.4", 4: "== 1.x.x", 5: "== 2.0.0-alpha.x", 6: ">= 2.0.0-beta.1", 7: ">= 4.0.0" }; b.REVISION_CHANGES = o; var p = "[object Object]"; d.prototype = { constructor: d, logger: l["default"], log: l["default"].log, registerHelper: function (a, b) { if (f.toString.call(a) === p) { if (b) throw new h["default"]("Arg not supported with multiple helpers"); f.extend(this.helpers, a) } else this.helpers[a] = b }, unregisterHelper: function (a) { delete this.helpers[a] }, registerPartial: function (a, b) { if (f.toString.call(a) === p) f.extend(this.partials, a); else { if ("undefined" == typeof b) throw new h["default"]('Attempting to register a partial called "' + a + '" as undefined'); this.partials[a] = b } }, unregisterPartial: function (a) { delete this.partials[a] }, registerDecorator: function (a, b) { if (f.toString.call(a) === p) { if (b) throw new h["default"]("Arg not supported with multiple decorators"); f.extend(this.decorators, a) } else this.decorators[a] = b }, unregisterDecorator: function (a) { delete this.decorators[a] } }; var q = l["default"].log; b.log = q, b.createFrame = f.createFrame, b.logger = l["default"] }, function (a, b) { "use strict"; function c(a) { return k[a] } function d(a) { for (var b = 1; b < arguments.length; b++)for (var c in arguments[b]) Object.prototype.hasOwnProperty.call(arguments[b], c) && (a[c] = arguments[b][c]); return a } function e(a, b) { for (var c = 0, d = a.length; c < d; c++)if (a[c] === b) return c; return -1 } function f(a) { if ("string" != typeof a) { if (a && a.toHTML) return a.toHTML(); if (null == a) return ""; if (!a) return a + ""; a = "" + a } return m.test(a) ? a.replace(l, c) : a } function g(a) { return !a && 0 !== a || !(!p(a) || 0 !== a.length) } function h(a) { var b = d({}, a); return b._parent = a, b } function i(a, b) { return a.path = b, a } function j(a, b) { return (a ? a + "." : "") + b } b.__esModule = !0, b.extend = d, b.indexOf = e, b.escapeExpression = f, b.isEmpty = g, b.createFrame = h, b.blockParams = i, b.appendContextPath = j; var k = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#x27;", "`": "&#x60;", "=": "&#x3D;" }, l = /[&<>"'`=]/g, m = /[&<>"'`=]/, n = Object.prototype.toString; b.toString = n; var o = function (a) { return "function" == typeof a }; o(/x/) && (b.isFunction = o = function (a) { return "function" == typeof a && "[object Function]" === n.call(a) }), b.isFunction = o; var p = Array.isArray || function (a) { return !(!a || "object" != typeof a) && "[object Array]" === n.call(a) }; b.isArray = p }, function (a, b, c) { "use strict"; function d(a, b) { var c = b && b.loc, g = void 0, h = void 0; c && (g = c.start.line, h = c.start.column, a += " - " + g + ":" + h); for (var i = Error.prototype.constructor.call(this, a), j = 0; j < f.length; j++)this[f[j]] = i[f[j]]; Error.captureStackTrace && Error.captureStackTrace(this, d); try { c && (this.lineNumber = g, e ? Object.defineProperty(this, "column", { value: h, enumerable: !0 }) : this.column = h) } catch (k) { } } var e = c(6)["default"]; b.__esModule = !0; var f = ["description", "fileName", "lineNumber", "message", "name", "number", "stack"]; d.prototype = new Error, b["default"] = d, a.exports = b["default"] }, function (a, b, c) { a.exports = { "default": c(7), __esModule: !0 } }, function (a, b, c) { var d = c(8); a.exports = function (a, b, c) { return d.setDesc(a, b, c) } }, function (a, b) { var c = Object; a.exports = { create: c.create, getProto: c.getPrototypeOf, isEnum: {}.propertyIsEnumerable, getDesc: c.getOwnPropertyDescriptor, setDesc: c.defineProperty, setDescs: c.defineProperties, getKeys: c.keys, getNames: c.getOwnPropertyNames, getSymbols: c.getOwnPropertySymbols, each: [].forEach } }, function (a, b, c) { "use strict"; function d(a) { g["default"](a), i["default"](a), k["default"](a), m["default"](a), o["default"](a), q["default"](a), s["default"](a) } var e = c(2)["default"]; b.__esModule = !0, b.registerDefaultHelpers = d; var f = c(10), g = e(f), h = c(11), i = e(h), j = c(12), k = e(j), l = c(13), m = e(l), n = c(14), o = e(n), p = c(15), q = e(p), r = c(16), s = e(r) }, function (a, b, c) { "use strict"; b.__esModule = !0; var d = c(4); b["default"] = function (a) { a.registerHelper("blockHelperMissing", function (b, c) { var e = c.inverse, f = c.fn; if (b === !0) return f(this); if (b === !1 || null == b) return e(this); if (d.isArray(b)) return b.length > 0 ? (c.ids && (c.ids = [c.name]), a.helpers.each(b, c)) : e(this); if (c.data && c.ids) { var g = d.createFrame(c.data); g.contextPath = d.appendContextPath(c.data.contextPath, c.name), c = { data: g } } return f(b, c) }) }, a.exports = b["default"] }, function (a, b, c) { "use strict"; var d = c(2)["default"]; b.__esModule = !0; var e = c(4), f = c(5), g = d(f); b["default"] = function (a) { a.registerHelper("each", function (a, b) { function c(b, c, f) { j && (j.key = b, j.index = c, j.first = 0 === c, j.last = !!f, k && (j.contextPath = k + b)), i += d(a[b], { data: j, blockParams: e.blockParams([a[b], b], [k + b, null]) }) } if (!b) throw new g["default"]("Must pass iterator to #each"); var d = b.fn, f = b.inverse, h = 0, i = "", j = void 0, k = void 0; if (b.data && b.ids && (k = e.appendContextPath(b.data.contextPath, b.ids[0]) + "."), e.isFunction(a) && (a = a.call(this)), b.data && (j = e.createFrame(b.data)), a && "object" == typeof a) if (e.isArray(a)) for (var l = a.length; h < l; h++)h in a && c(h, h, h === a.length - 1); else { var m = void 0; for (var n in a) a.hasOwnProperty(n) && (void 0 !== m && c(m, h - 1), m = n, h++); void 0 !== m && c(m, h - 1, !0) } return 0 === h && (i = f(this)), i }) }, a.exports = b["default"] }, function (a, b, c) { "use strict"; var d = c(2)["default"]; b.__esModule = !0; var e = c(5), f = d(e); b["default"] = function (a) { a.registerHelper("helperMissing", function () { if (1 !== arguments.length) throw new f["default"]('Missing helper: "' + arguments[arguments.length - 1].name + '"') }) }, a.exports = b["default"] }, function (a, b, c) { "use strict"; b.__esModule = !0; var d = c(4); b["default"] = function (a) { a.registerHelper("if", function (a, b) { return d.isFunction(a) && (a = a.call(this)), !b.hash.includeZero && !a || d.isEmpty(a) ? b.inverse(this) : b.fn(this) }), a.registerHelper("unless", function (b, c) { return a.helpers["if"].call(this, b, { fn: c.inverse, inverse: c.fn, hash: c.hash }) }) }, a.exports = b["default"] }, function (a, b) { "use strict"; b.__esModule = !0, b["default"] = function (a) { a.registerHelper("log", function () { for (var b = [void 0], c = arguments[arguments.length - 1], d = 0; d < arguments.length - 1; d++)b.push(arguments[d]); var e = 1; null != c.hash.level ? e = c.hash.level : c.data && null != c.data.level && (e = c.data.level), b[0] = e, a.log.apply(a, b) }) }, a.exports = b["default"] }, function (a, b) { "use strict"; b.__esModule = !0, b["default"] = function (a) { a.registerHelper("lookup", function (a, b) { return a && a[b] }) }, a.exports = b["default"] }, function (a, b, c) { "use strict"; b.__esModule = !0; var d = c(4); b["default"] = function (a) { a.registerHelper("with", function (a, b) { d.isFunction(a) && (a = a.call(this)); var c = b.fn; if (d.isEmpty(a)) return b.inverse(this); var e = b.data; return b.data && b.ids && (e = d.createFrame(b.data), e.contextPath = d.appendContextPath(b.data.contextPath, b.ids[0])), c(a, { data: e, blockParams: d.blockParams([a], [e && e.contextPath]) }) }) }, a.exports = b["default"] }, function (a, b, c) { "use strict"; function d(a) { g["default"](a) } var e = c(2)["default"]; b.__esModule = !0, b.registerDefaultDecorators = d; var f = c(18), g = e(f) }, function (a, b, c) { "use strict"; b.__esModule = !0; var d = c(4); b["default"] = function (a) { a.registerDecorator("inline", function (a, b, c, e) { var f = a; return b.partials || (b.partials = {}, f = function (e, f) { var g = c.partials; c.partials = d.extend({}, g, b.partials); var h = a(e, f); return c.partials = g, h }), b.partials[e.args[0]] = e.fn, f }) }, a.exports = b["default"] }, function (a, b, c) { "use strict"; b.__esModule = !0; var d = c(4), e = { methodMap: ["debug", "info", "warn", "error"], level: "info", lookupLevel: function (a) { if ("string" == typeof a) { var b = d.indexOf(e.methodMap, a.toLowerCase()); a = b >= 0 ? b : parseInt(a, 10) } return a }, log: function (a) { if (a = e.lookupLevel(a), "undefined" != typeof console && e.lookupLevel(e.level) <= a) { var b = e.methodMap[a]; console[b] || (b = "log"); for (var c = arguments.length, d = Array(c > 1 ? c - 1 : 0), f = 1; f < c; f++)d[f - 1] = arguments[f]; console[b].apply(console, d) } } }; b["default"] = e, a.exports = b["default"] }, function (a, b) { "use strict"; function c(a) { this.string = a } b.__esModule = !0, c.prototype.toString = c.prototype.toHTML = function () { return "" + this.string }, b["default"] = c, a.exports = b["default"] }, function (a, b, c) { "use strict"; function d(a) { var b = a && a[0] || 1, c = s.COMPILER_REVISION; if (b !== c) { if (b < c) { var d = s.REVISION_CHANGES[c], e = s.REVISION_CHANGES[b]; throw new r["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version (" + d + ") or downgrade your runtime to an older version (" + e + ").") } throw new r["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version (" + a[1] + ").") } } function e(a, b) { function c(c, d, e) { e.hash && (d = p.extend({}, d, e.hash), e.ids && (e.ids[0] = !0)), c = b.VM.resolvePartial.call(this, c, d, e); var f = b.VM.invokePartial.call(this, c, d, e); if (null == f && b.compile && (e.partials[e.name] = b.compile(c, a.compilerOptions, b), f = e.partials[e.name](d, e)), null != f) { if (e.indent) { for (var g = f.split("\n"), h = 0, i = g.length; h < i && (g[h] || h + 1 !== i); h++)g[h] = e.indent + g[h]; f = g.join("\n") } return f } throw new r["default"]("The partial " + e.name + " could not be compiled when running in runtime-only mode") } function d(b) { function c(b) { return "" + a.main(e, b, e.helpers, e.partials, g, i, h) } var f = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1], g = f.data; d._setup(f), !f.partial && a.useData && (g = j(b, g)); var h = void 0, i = a.useBlockParams ? [] : void 0; return a.useDepths && (h = f.depths ? b != f.depths[0] ? [b].concat(f.depths) : f.depths : [b]), (c = k(a.main, c, e, f.depths || [], g, i))(b, f) } if (!b) throw new r["default"]("No environment passed to template"); if (!a || !a.main) throw new r["default"]("Unknown template object: " + typeof a); a.main.decorator = a.main_d, b.VM.checkRevision(a.compiler); var e = { strict: function (a, b) { if (!(b in a)) throw new r["default"]('"' + b + '" not defined in ' + a); return a[b] }, lookup: function (a, b) { for (var c = a.length, d = 0; d < c; d++)if (a[d] && null != a[d][b]) return a[d][b] }, lambda: function (a, b) { return "function" == typeof a ? a.call(b) : a }, escapeExpression: p.escapeExpression, invokePartial: c, fn: function (b) { var c = a[b]; return c.decorator = a[b + "_d"], c }, programs: [], program: function (a, b, c, d, e) { var g = this.programs[a], h = this.fn(a); return b || e || d || c ? g = f(this, a, h, b, c, d, e) : g || (g = this.programs[a] = f(this, a, h)), g }, data: function (a, b) { for (; a && b--;)a = a._parent; return a }, merge: function (a, b) { var c = a || b; return a && b && a !== b && (c = p.extend({}, b, a)), c }, nullContext: l({}), noop: b.VM.noop, compilerInfo: a.compiler }; return d.isTop = !0, d._setup = function (c) { c.partial ? (e.helpers = c.helpers, e.partials = c.partials, e.decorators = c.decorators) : (e.helpers = e.merge(c.helpers, b.helpers), a.usePartial && (e.partials = e.merge(c.partials, b.partials)), (a.usePartial || a.useDecorators) && (e.decorators = e.merge(c.decorators, b.decorators))) }, d._child = function (b, c, d, g) { if (a.useBlockParams && !d) throw new r["default"]("must pass block params"); if (a.useDepths && !g) throw new r["default"]("must pass parent depths"); return f(e, b, a[b], c, 0, d, g) }, d } function f(a, b, c, d, e, f, g) { function h(b) { var e = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1], h = g; return !g || b == g[0] || b === a.nullContext && null === g[0] || (h = [b].concat(g)), c(a, b, a.helpers, a.partials, e.data || d, f && [e.blockParams].concat(f), h) } return h = k(c, h, a, g, d, f), h.program = b, h.depth = g ? g.length : 0, h.blockParams = e || 0, h } function g(a, b, c) { return a ? a.call || c.name || (c.name = a, a = c.partials[a]) : a = "@partial-block" === c.name ? c.data["partial-block"] : c.partials[c.name], a } function h(a, b, c) { var d = c.data && c.data["partial-block"]; c.partial = !0, c.ids && (c.data.contextPath = c.ids[0] || c.data.contextPath); var e = void 0; if (c.fn && c.fn !== i && !function () { c.data = s.createFrame(c.data); var a = c.fn; e = c.data["partial-block"] = function (b) { var c = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1]; return c.data = s.createFrame(c.data), c.data["partial-block"] = d, a(b, c) }, a.partials && (c.partials = p.extend({}, c.partials, a.partials)) }(), void 0 === a && e && (a = e), void 0 === a) throw new r["default"]("The partial " + c.name + " could not be found"); if (a instanceof Function) return a(b, c) } function i() { return "" } function j(a, b) { return b && "root" in b || (b = b ? s.createFrame(b) : {}, b.root = a), b } function k(a, b, c, d, e, f) { if (a.decorator) { var g = {}; b = a.decorator(b, g, c, d && d[0], e, f, d), p.extend(b, g) } return b } var l = c(22)["default"], m = c(1)["default"], n = c(2)["default"]; b.__esModule = !0, b.checkRevision = d, b.template = e, b.wrapProgram = f, b.resolvePartial = g, b.invokePartial = h, b.noop = i; var o = c(4), p = m(o), q = c(5), r = n(q), s = c(3) }, function (a, b, c) { a.exports = { "default": c(23), __esModule: !0 } }, function (a, b, c) { c(24), a.exports = c(29).Object.seal }, function (a, b, c) { var d = c(25); c(26)("seal", function (a) { return function (b) { return a && d(b) ? a(b) : b } }) }, function (a, b) { a.exports = function (a) { return "object" == typeof a ? null !== a : "function" == typeof a } }, function (a, b, c) { var d = c(27), e = c(29), f = c(32); a.exports = function (a, b) { var c = (e.Object || {})[a] || Object[a], g = {}; g[a] = b(c), d(d.S + d.F * f(function () { c(1) }), "Object", g) } }, function (a, b, c) { var d = c(28), e = c(29), f = c(30), g = "prototype", h = function (a, b, c) { var i, j, k, l = a & h.F, m = a & h.G, n = a & h.S, o = a & h.P, p = a & h.B, q = a & h.W, r = m ? e : e[b] || (e[b] = {}), s = m ? d : n ? d[b] : (d[b] || {})[g]; m && (c = b); for (i in c) j = !l && s && i in s, j && i in r || (k = j ? s[i] : c[i], r[i] = m && "function" != typeof s[i] ? c[i] : p && j ? f(k, d) : q && s[i] == k ? function (a) { var b = function (b) { return this instanceof a ? new a(b) : a(b) }; return b[g] = a[g], b }(k) : o && "function" == typeof k ? f(Function.call, k) : k, o && ((r[g] || (r[g] = {}))[i] = k)) }; h.F = 1, h.G = 2, h.S = 4, h.P = 8, h.B = 16, h.W = 32, a.exports = h }, function (a, b) { var c = a.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = c) }, function (a, b) { var c = a.exports = { version: "1.2.6" }; "number" == typeof __e && (__e = c) }, function (a, b, c) { var d = c(31); a.exports = function (a, b, c) { if (d(a), void 0 === b) return a; switch (c) { case 1: return function (c) { return a.call(b, c) }; case 2: return function (c, d) { return a.call(b, c, d) }; case 3: return function (c, d, e) { return a.call(b, c, d, e) } }return function () { return a.apply(b, arguments) } } }, function (a, b) { a.exports = function (a) { if ("function" != typeof a) throw TypeError(a + " is not a function!"); return a } }, function (a, b) { a.exports = function (a) { try { return !!a() } catch (b) { return !0 } } }, function (a, b) { (function (c) { "use strict"; b.__esModule = !0, b["default"] = function (a) { var b = "undefined" != typeof c ? c : window, d = b.Handlebars; a.noConflict = function () { return b.Handlebars === a && (b.Handlebars = d), a } }, a.exports = b["default"] }).call(b, function () { return this }()) }]) }); /* endinject */ /* inject:ief-core.js */ "use strict"; var $i2e = (function (content, settings) { return { VERSION: "2.0.0", // Sends a response to the server using window.location.replace // Note: Can only be executed once per page // @parameter {string} the URL to redirect to redirectToServer: function (path) { // Prevent this method from being executed again. This is done to help prevent additional redirects while the first // redirect is in progress (such as what would happen if a button was pressed twice quickly) this.redirectToServer = function () { }; $diags.trace(new $trace("T002", false)); var link = this.getRedirectLink(path); $(document).ready(function () { // Check if diagnostics are being returned on success if (window.diagsAlways) { link += "&diags=" + encodeURIComponent($diags.toJson()); } window.location.replace(link); }); }, // Returns a path that can be used in an href or by the redirectToServer function // @parameter {string} the URL to redirect to getRedirectLink: function (path) { path = path + ((path.indexOf("?") === -1) ? "?" : "&") + "csrf_token=" + settings.csrf + "&tx=" + settings.transId; // Check if we have metrics if (window.Metrics !== undefined) { path += "&metrics=" + encodeURIComponent(window.Metrics.serialize()); } return settings.hosts.tenant + "/api/" + settings.api + "/" + path + "&p=" + settings.hosts.policy; }, // Sends the data to the CPIM service for verification and storage // @parameter {string} the URL encoded form data entered by the user // @parameter {string} the path to include after the API definition in the URL // @parameter {object} an optional local settings object to build the request from sendData: function (data, path, localSettings) { // Use global settings if localSettings was not provided localSettings = localSettings !== undefined ? localSettings : settings; var url = localSettings.hosts.tenant + "/" + localSettings.api + (path !== undefined ? "/" + path : "") + "?tx=" + localSettings.transId + "&p=" + localSettings.hosts.policy; var headers = { "X-CSRF-TOKEN": settings.csrf }; if (settings.isPageViewIdSentWithHeader) { headers["x-ms-cpim-pageviewid"] = settings.pageViewId; } return $.ajax({ type: "POST", dataType: "json", headers: headers, timeout: localSettings.config.timeout || 90000, url: url, cache: false, data: data }); }, // Sends the data to the CPIM service for verification and storage // @parameter {string} the URL encoded form data entered by the user // @parameter {function} the function to call on success // @parameter {function} the function to call on error // @parameter {function} the function to call when request complete // @parameter {string} the path to include after the API definition in the URL // @parameter {object} an optional local settings object to build the request from sendDataWithRetry: function (data, onSuccess, onError, onComplete, path, localSettings) { // Use global settings if localSettings was not provided localSettings = localSettings !== undefined ? localSettings : settings; var url = localSettings.hosts.tenant + "/" + localSettings.api + (path !== undefined ? "/" + path : "") + "?tx=" + localSettings.transId + "&p=" + localSettings.hosts.policy; var headers = { "X-CSRF-TOKEN": settings.csrf }; if (settings.isPageViewIdSentWithHeader) { headers["x-ms-cpim-pageviewid"] = settings.pageViewId; } return $.ajax({ type: "POST", dataType: "json", headers: headers, retryMaxAttempts: localSettings.xhrSettings.retryMaxAttempts || 3, retryDelay: localSettings.xhrSettings.retryDelay || 200, retryExponent: localSettings.xhrSettings.retryExponent || 2, retryEnabled: localSettings.xhrSettings.retryEnabled || false, retryOn: localSettings.xhrSettings.retryOn || [], retryAttempt: 0, timeout: localSettings.config.timeout || 90000, url: url, cache: false, data: data, success: onSuccess, error: function (xhr, textStatus, errorThrown) { // Check if retry is enabled and if the error is a re-tryable error, // if not call the onError if (this.retryEnabled === false || this.retryOn.indexOf(textStatus) === -1) onError(xhr, textStatus, errorThrown); // Check if the agent is online, and if not // setup the retry var isOnline = (window.navigator !== undefined && window.navigator.onLine !== undefined) ? window.navigator.onLine : true; // Trace the online status attempt var onlineTrace = new $trace("T030", false); onlineTrace.append(isOnline ? "Online" : "Offline"); $diags.trace(onlineTrace); if (isOnline === false) { // If there are still attempts left if (this.retryAttempt < this.retryMaxAttempts) { // Prepare the settings for subsequent // attempts; this.retryAttempt++; // bump the attempt count this.retryDelay = this.retryAttempt === 1 ? this.retryDelay : this.retryDelay * this.retryExponent; // Trace the retry attempt var retryTrace = new $trace("T031", false); retryTrace.append(" '" + textStatus + ": ' - retryAttempt: " + this.retryAttempt + " - retryDelay: " + this.retryDelay + " - retryExponent:" + this.retryExponent); $diags.trace(retryTrace); // Now set up the delay before retrying setTimeout(function (ajaxContext) { return $.ajax(ajaxContext); }, this.retryDelay, this); } else { // Run out of attempts, handover to the onError $diags.trace(new $trace("T032", false)); onError(xhr, textStatus, errorThrown); } } }, complete: onComplete }); }, // Complies the template and binds to the specified // data, returning the bound template generateServiceContent: function (templateName, data) { //var compiled = Handlebars.compile(template); var template = Handlebars.templates[templateName]; return template(data); }, // Inserts the service content to the page // using the api div as the anchor point insertServiceContent: function (serviceContent){ var $serviceContent = $(serviceContent); var api = $("#api"); // Get all existing attributes var existingAttributes = api[0].attributes; api.replaceWith($serviceContent.html()); // Now add back the existing attributes // excluding the id attribute $.each(existingAttributes, function () { if (this.name !== "id") { $("#api").attr(this.name, this.value); } }); }, // Returns the text from page CONTENT using the specified key lookupLanguage: function (key) { return content[key]; }, // Uses the static content url from settings to // bind the host to the provided path bindHost: function (path) { return settings.hosts.static + path; } } }(CONTENT, SETTINGS)); /* endinject */ /* inject:ief-handlebar-helpers.js */ "use strict"; (function (content, settings) { // Register handlebars helpers // Langauge helper Handlebars.registerHelper('getContent', function (contentName) { return new Handlebars.SafeString(content[contentName]); }); // Url helper Handlebars.registerHelper('getHostQualfiedUrl', function (path) { return settings.hosts.static + path; }); // Block helper for outputing a template block if the specified setting is true Handlebars.registerHelper('isSettingTrue', function (settingName, options) { var value = settings.config[settingName]; if (value && value.toLowerCase() === 'true') { return options.fn(this); } return null; }); // Block helper for outputing a template block if the specified setting is equal to the specified // value of if not present the default Handlebars.registerHelper('isSettingEqual', function (settingName, equals, defaultValue, options) { var value = settings.config[settingName] || defaultValue; var eqArray = equals.split(','); var arrayLength = eqArray.length; for (var i = 0; i < arrayLength; i++) { if (eqArray[i] && eqArray[i].toLowerCase() === value.toLowerCase()) { return options.fn(this); } } return null; }); // Block helper for outputing a template block if the collection only contains a single item Handlebars.registerHelper('isSingle', function (collection, options) { if (collection.length === 1) { return options.fn(this); } return null; }); // Block helper for outputing a template block if the collection only contains a single item Handlebars.registerHelper('isMultiple', function (collection, options) { if (collection.length > 1) { return options.fn(this); } return null; }); // Block helper for outputing an array Handlebars.registerHelper('getCountryDialingCodeOptionList', function () { var optionHtmlElements = document.createElement("div"); var localeCountry = settings.locale.country; var elem = document.createElement('textarea'); elem.innerHTML = $i2e.lookupLanguage("countryList"); var processingList = JSON.parse(elem.value); // Iterate through the isolocalized.countryByLang as this ensures that // countries appear in the correct alphabetical order. for (var entry in processingList) { // Get the dialing code from the data var dialingCode = $isoData.countryByIso[entry]["dc"]; var option = document.createElement("option"); option.setAttribute("value", "+" + dialingCode); if (localeCountry === entry) { option.selected = true; } // Set the country name as text to avoid xss unwanted executions option.innerText = processingList[entry] + (dialingCode ? " (+" + dialingCode + ")" : "") optionHtmlElements.appendChild(option); } return optionHtmlElements.innerHTML; }); }(CONTENT, SETTINGS)); /* endinject */ /* inject:ief-modal.js */ /* endinject */ /* inject:element */ // Note: This is the SSP with KMSI. "use strict"; /* inject:handlebar */ this.Handlebars=this.Handlebars||{},this.Handlebars.templates=this.Handlebars.templates||{},this.Handlebars.templates.unifiedssp=Handlebars.template({1:function(n,t,e,l,a){var r,i=null!=t?t:n.nullContext||{},o=e.helperMissing;return' <div class="social" aria-label="'+(null!=(r=(e.getContent||t&&t.getContent||o).call(i,"social_intro",{name:"getContent",hash:{},data:a}))?r:"")+'" role="form">\r\n <div class="intro">\r\n <h2>'+(null!=(r=(e.getContent||t&&t.getContent||o).call(i,"social_intro",{name:"getContent",hash:{},data:a}))?r:"")+'</h2>\r\n </div>\r\n <div class="options">\r\n'+(null!=(r=e.each.call(i,null!=t?t.list:t,{name:"each",hash:{},fn:n.program(2,a,0),inverse:n.noop,data:a}))?r:"")+" </div>\r\n </div>\r\n\r\n"+(null!=(r=e.if.call(i,null!=t?t.AttributeFields:t,{name:"if",hash:{},fn:n.program(7,a,0),inverse:n.noop,data:a}))?r:"")},2:function(n,t,e,l,a){var r;return" <div>\r\n"+(null!=(r=e.if.call(null!=t?t:n.nullContext||{},a&&a.first,{name:"if",hash:{},fn:n.program(3,a,0),inverse:n.program(5,a,0),data:a}))?r:"")+" </div>\r\n"},3:function(n,t,e,l,a){var r,i=n.lambda;return' <button class="accountButton firstButton" id="'+(null!=(r=i(null!=t?t.id:t,t))?r:"")+'" tabindex="1">'+(null!=(r=i(null!=t?t.description:t,t))?r:"")+"</button>\r\n"},5:function(n,t,e,l,a){var r,i=n.lambda;return' <button class="accountButton" id="'+(null!=(r=i(null!=t?t.id:t,t))?r:"")+'" tabindex="1">'+(null!=(r=i(null!=t?t.description:t,t))?r:"")+"</button>\r\n"},7:function(n,t,e,l,a){var r;return' <div class="divider">\r\n <h2>'+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"divider_title",{name:"getContent",hash:{},data:a}))?r:"")+"</h2>\r\n </div>\r\n"},9:function(n,t,e,l,a){var r,i=null!=t?t:n.nullContext||{},o=e.helperMissing,s=n.lambda;return(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"operatingMode","Email","Email",{name:"isSettingEqual",hash:{},fn:n.program(10,a,0),inverse:n.noop,data:a}))?r:"")+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"operatingMode","Username","Username",{name:"isSettingEqual",hash:{},fn:n.program(12,a,0),inverse:n.noop,data:a}))?r:"")+' <div class="intro">\r\n <h2>\r\n'+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"operatingMode","Email","Email",{name:"isSettingEqual",hash:{},fn:n.program(14,a,0),inverse:n.noop,data:a}))?r:"")+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"operatingMode","Username","Username",{name:"isSettingEqual",hash:{},fn:n.program(16,a,0),inverse:n.noop,data:a}))?r:"")+' </h2>\r\n </div>\r\n <div class="error pageLevel" aria-hidden="true">\r\n <p role="alert"></p>\r\n </div>\r\n <div class="entry">\r\n <div class="entry-item">\r\n <label for="'+(null!=(r=s(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[0]:r)?r.ID:r,t))?r:"")+'">\r\n'+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"operatingMode","Email","Email",{name:"isSettingEqual",hash:{},fn:n.program(18,a,0),inverse:n.noop,data:a}))?r:"")+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"operatingMode","Username","Username",{name:"isSettingEqual",hash:{},fn:n.program(20,a,0),inverse:n.noop,data:a}))?r:"")+' </label>\r\n <div class="error itemLevel" aria-hidden="true">\r\n <p role="alert" tabindex="1"></p>\r\n </div>\r\n'+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"operatingMode","Email","Email",{name:"isSettingEqual",hash:{},fn:n.program(22,a,0),inverse:n.noop,data:a}))?r:"")+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"operatingMode","Username","Username",{name:"isSettingEqual",hash:{},fn:n.program(24,a,0),inverse:n.noop,data:a}))?r:"")+' </div>\r\n <div class="entry-item">\r\n <div class="password-label">\r\n <label for="'+(null!=(r=s(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[1]:r)?r.ID:r,t))?r:"")+'">'+(null!=(r=(e.getContent||t&&t.getContent||o).call(i,"password",{name:"getContent",hash:{},data:a}))?r:"")+"</label>\r\n"+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"forgotPasswordLinkLocation","AfterLabel","None",{name:"isSettingEqual",hash:{},fn:n.program(26,a,0),inverse:n.noop,data:a}))?r:"")+' </div>\r\n <div class="error itemLevel" aria-hidden="true">\r\n <p role="alert"></p>\r\n </div>\r\n <input type="password" id="'+(null!=(r=s(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[1]:r)?r.ID:r,t))?r:"")+'" name="'+(null!=(r=s(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[1]:r)?r.DN:r,t))?r:"")+'" placeholder="'+(null!=(r=(e.getContent||t&&t.getContent||o).call(i,"password",{name:"getContent",hash:{},data:a}))?r:"")+'" tabindex="1"/>\r\n'+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"forgotPasswordLinkLocation","AfterInput","None",{name:"isSettingEqual",hash:{},fn:n.program(28,a,0),inverse:n.noop,data:a}))?r:"")+' </div>\r\n <div class="working"></div>\r\n'+(null!=(r=(e.isSettingTrue||t&&t.isSettingTrue||o).call(i,"enableRememberMe",{name:"isSettingTrue",hash:{},fn:n.program(30,a,0),inverse:n.noop,data:a}))?r:"")+' <div class="buttons">\r\n <button id="next" tabindex="1">'+(null!=(r=(e.getContent||t&&t.getContent||o).call(i,"button_signin",{name:"getContent",hash:{},data:a}))?r:"")+"</button>\r\n </div>\r\n"+(null!=(r=(e.isSettingEqual||t&&t.isSettingEqual||o).call(i,"forgotPasswordLinkLocation","AfterButtons","None",{name:"isSettingEqual",hash:{},fn:n.program(32,a,0),inverse:n.noop,data:a}))?r:"")+" </div>\r\n"+(null!=(r=(e.isSettingTrue||t&&t.isSettingTrue||o).call(i,"showSignupLink",{name:"isSettingTrue",hash:{},fn:n.program(34,a,0),inverse:n.noop,data:a}))?r:"")+" </div>\r\n"},10:function(n,t,e,l,a){var r;return' <div class="localAccount" aria-label="'+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"local_intro_email",{name:"getContent",hash:{},data:a}))?r:"")+'" role="form">\r\n'},12:function(n,t,e,l,a){var r;return' <div class="localAccount" aria-label="'+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"local_intro_username",{name:"getContent",hash:{},data:a}))?r:"")+'" role="form">\r\n'},14:function(n,t,e,l,a){var r;return" "+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"local_intro_email",{name:"getContent",hash:{},data:a}))?r:"")+"\r\n"},16:function(n,t,e,l,a){var r;return" "+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"local_intro_username",{name:"getContent",hash:{},data:a}))?r:"")+"\r\n"},18:function(n,t,e,l,a){var r;return" "+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"logonIdentifier_email",{name:"getContent",hash:{},data:a}))?r:"")+"\r\n"},20:function(n,t,e,l,a){var r;return" "+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"logonIdentifier_username",{name:"getContent",hash:{},data:a}))?r:"")+"\r\n"},22:function(n,t,e,l,a){var r,i=n.lambda,o=null!=t?t:n.nullContext||{},s=e.helperMissing;return' <input type="email" id="'+(null!=(r=i(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[0]:r)?r.ID:r,t))?r:"")+'" name="'+(null!=(r=i(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[0]:r)?r.DN:r,t))?r:"")+'" pattern="'+(null!=(r=(e.getContent||t&&t.getContent||s).call(o,"email_pattern",{name:"getContent",hash:{},data:a}))?r:"")+'" placeholder="'+(null!=(r=(e.getContent||t&&t.getContent||s).call(o,"logonIdentifier_email",{name:"getContent",hash:{},data:a}))?r:"")+'" value="'+(null!=(r=i(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[0]:r)?r.PRE:r,t))?r:"")+'" tabindex="1"/>\r\n'},24:function(n,t,e,l,a){var r,i=n.lambda;return' <input type="text" id="'+(null!=(r=i(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[0]:r)?r.ID:r,t))?r:"")+'" name="'+(null!=(r=i(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[0]:r)?r.DN:r,t))?r:"")+'" placeholder="'+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"logonIdentifier_username",{name:"getContent",hash:{},data:a}))?r:"")+'" value="'+(null!=(r=i(null!=(r=null!=(r=null!=t?t.AttributeFields:t)?r[0]:r)?r.PRE:r,t))?r:"")+'" tabindex="1"/>\r\n'},26:function(n,t,e,l,a){var r;return' <a id="forgotPassword" tabindex="2">'+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"forgotpassword_link",{name:"getContent",hash:{},data:a}))?r:"")+"</a>\r\n"},28:function(n,t,e,l,a){var r;return' <div class="forgot-password">\r\n <a id="forgotPassword" tabindex="2">'+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"forgotpassword_link",{name:"getContent",hash:{},data:a}))?r:"")+"</a>\r\n </div>\r\n"},30:function(n,t,e,l,a){var r;return' <div class="rememberMe">\r\n <input id="rememberMe" type="checkbox" name="rememberMe" tabindex="1"/>\r\n <label for="rememberMe">'+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"remember_me",{name:"getContent",hash:{},data:a}))?r:"")+"</label>\r\n </div>\r\n"},32:function(n,t,e,l,a){var r;return' <div class="forgot-password">\r\n <a id="forgotPassword" tabindex="2">'+(null!=(r=(e.getContent||t&&t.getContent||e.helperMissing).call(null!=t?t:n.nullContext||{},"forgotpassword_link",{name:"getContent",hash:{},data:a}))?r:"")+"</a>\r\n </div>\r\n"},34:function(n,t,e,l,a){var r,i=null!=t?t:n.nullContext||{},o=e.helperMissing;return' <div class="divider">\r\n <h2>'+(null!=(r=(e.getContent||t&&t.getContent||o).call(i,"divider_title",{name:"getContent",hash:{},data:a}))?r:"")+'</h2>\r\n </div>\r\n <div class="create">\r\n <p>\r\n '+(null!=(r=(e.getContent||t&&t.getContent||o).call(i,"createaccount_intro",{name:"getContent",hash:{},data:a}))?r:"")+'<a id="createAccount" tabindex="1">'+(null!=(r=(e.getContent||t&&t.getContent||o).call(i,"createaccount_link",{name:"getContent",hash:{},data:a}))?r:"")+"</a>\r\n </p>\r\n </div>\r\n"},compiler:[7,">= 4.0.0"],main:function(n,t,e,l,a){var r,i=null!=t?t:n.nullContext||{};return'<script id="Unified" type="text/x-handlebars-template">\r\n <div id="api" data-name="Unified">\r\n\r\n'+(null!=(r=e.if.call(i,null!=t?t.list:t,{name:"if",hash:{},fn:n.program(1,a,0),inverse:n.noop,data:a}))?r:"")+"\r\n"+(null!=(r=e.if.call(i,null!=t?t.AttributeFields:t,{name:"if",hash:{},fn:n.program(9,a,0),inverse:n.noop,data:a}))?r:"")+" </div>\r\n <\/script>"},useData:!0}); /* endinject */ var $element = function ($diags, content, settings) { var _loginIdentifier, _loginPwd; var _serviceContentSet = false; var _serviceContent; // Javascript is single-threaded, and works on a message queue system, where each message is processed // completely before any other message is processed. For example, the callbacks for AJAX calls are added as // messages to the queue, allowing them to be processed later. // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop // This page may involve multiple roundtrips to the service in different scenarios, each of which may // change the state of the cookies. The intermediate states of some scenarios on this page are not // compatible with others (for example, waiting for the service to verify the user's username and password // may not play well with informing the service to redirect to a social IdP, as both write over cookie // state). On this page, we invoke a simple state mechanism, to cause buttons that trigger new calls to the // service to be considered no-ops while we wait for the last call to the service to complete. Given the // single-threaded nature of JavaScript, quickly setting the state to disable these buttons works so long as // the setting occurs within the context of a single message in the queue. // Note that this approach of setting up the event handlers exactly once during page initialization, and // having each handler check state in this manner allows for RPs with custom javascript to still attach to // the button click events without our code disabling such events as we change state. This also prevents // us from setting certain attributes after page inititalization, which would otherwise impact screen // readers and accessibility programs. If a service call is in progress, the click event should be handled // in such a manner that the event does not propagate (trigger the RPs events). This is done in javascript // by either calling event.stopImmediatePropagation(), and returning "false" from the event handler function. var _serviceCallInProgress = false; var isRememberMeChecked = function () { var rememberMe = false; var rememberMeElement = document.getElementById('rememberMe'); if (rememberMeElement) { rememberMe = rememberMeElement.checked; } return rememberMe; }; // Makes a call to the service to see if the hint // is known to the tenant. var _signIn = function (event) { if (_serviceCallInProgress) { event.stopImmediatePropagation(); return false; } _serviceCallInProgress = true; // Show the working div var working = document.querySelectorAll("div .working"); $(working).css("display", "block"); // We need to switch to using the selfasserted api for validating the hint var localSettings = jQuery.extend(true, {}, settings); // Deep copy of original settings object localSettings.api = "SelfAsserted"; var requestData = "request_type=RESPONSE&" + _loginIdentifier.id + "=" + encodeURIComponent(_loginIdentifier.value) + "&" + _loginPwd.id + "=" + encodeURIComponent(_loginPwd.value); (function (trace) { $i2e.sendDataWithRetry( requestData, function (response) { // 200 means the user exists so send the // response forwarding the user to signin if (response.status == 200) { trace.append("T010"); var rememberMe = isRememberMeChecked(); $i2e.redirectToServer("confirmed?rememberMe=" + rememberMe); return false; } // Toggles error unknown for all non-200 responses trace.append(response.message); _showGeneralError(response.message); }, function (error) { trace.append(error.text); _showGeneralError(error.text); }, function () { _serviceCallInProgress = false; // Hide the working div $(working).css("display", "none"); $diags.trace(trace); }, undefined, localSettings); }(new $trace("T018", true))); }; // Shows the general error using the errorText // as the content var _showGeneralError = function (errorText) { var errorDiv = $(".localAccount").children(".error.pageLevel"); // Set the error text if (errorText) { errorDiv.children("p:first").text(errorText); } else { errorDiv.children("p:first").html(content.unknown_error); } // Set the aria-hidden and then show the error errorDiv.attr("aria-hidden", "false"); errorDiv.css("display", "block"); }; // Shows the input error div using the error text // as the content var _showError = function (parent, errorText) { var errorDiv = $(parent).children(".error.itemLevel"); // Set the error text errorDiv.children("p:first").html(errorText); // Set the aria-hidden and then show the error errorDiv.attr("aria-hidden", "false"); errorDiv.css("display", "block"); // Now highlight the input $(parent).children("input").addClass("highlightError"); }; // Resets all visible errors var _resetErrors = function () { $(".error").css("display", "none"); $(".error").attr("aria-hidden", "true"); // Remove any input highlights $(".highlightError").removeClass("highlightError"); }; // Resets the specific input var _resetError = function (parent) { // Reset the input var errorDiv = $(parent).children(".error.itemLevel"); // Set the aria-hidden and then show the error errorDiv.attr("aria-hidden", "true"); errorDiv.css("display", "none"); // Now highlight the input $(parent).children("input").removeClass("highlightError"); }; // Validate the loginIdentifier has been correctly populated var _validateLoginIdentifier = function () { // Reset the input _resetError(_loginIdentifier.parentElement); // Check if loginIdentifier has been populated if (!_loginIdentifier.value) { var errorText = settings.config.operatingMode === "Email" ? content.requiredField_email : content.requiredField_username; _showError(_loginIdentifier.parentElement, errorText); return false; } // Check if loginIdentifier has valid text if (_loginIdentifier.pattern) { var valid = new RegExp(_loginIdentifier.pattern).exec(_loginIdentifier.value); if (!valid) { // Show the invalid error _showError(_loginIdentifier.parentElement, content.invalid_email); // Give focus to the login identifier _loginIdentifier.focus(); return false; } } return true; }; // Validate the loginPwd has been correctly populated var _validatePassword = function () { // Reset the input _resetError(_loginPwd.parentElement); // Check if loginPwd has been populated if (!_loginPwd.value) { _showError(_loginPwd.parentElement, content.requiredField_password); return false; } return true; }; // Returns whether the left mouse key or enter button has been pressed // and specifically for buttons if the space bar has been pressed var _isEnter = function (event) { var key = event.keyCode || event.which; return (key === 0) || (key === 1 || key === 13) || ($(event.target).is("button") && key === 32); }; // Checks to see if the form is ready for // submission. Uses input validation to determine // if form is ok to submit var _doSubmit = function (event) { // Handle the left click of the mouse, the press of the enter button if (_isEnter(event)) { // Reset all errors _resetErrors(); if (_validateLoginIdentifier() && _validatePassword()) { // Try sign the user in _signIn(event); } } } // Initializes the api, merging the api template and // the data followed by injection into the resource. On // successful injection, the eventhandlers are wired up var _initialize = function () { (function (trace) { // If one of the social provider buttons is selected // redirect back using the alternative flow and the id of the // selected provider $("#api .accountButton").click(function (event) { if (_serviceCallInProgress) { event.stopImmediatePropagation(); return false; } _serviceCallInProgress = true; $i2e.redirectToServer("unified?social=" + $(this).attr("id")); return; }); // Pregenerate the href and add to the link. When clicked // check if we need to append the hint $("#forgotPassword") .attr("href", $i2e.getRedirectLink("forgotPassword")) .click(function (event) { if (_serviceCallInProgress) { event.stopImmediatePropagation(); return false; } _serviceCallInProgress = true; if (_loginIdentifier.value) { // If the user has entered a logon identifier, include // in the redirect var current = $("#forgotPassword").attr("href"); $("#forgotPassword").attr("href", current + "&hint=" + encodeURI(_loginIdentifier.value)); } }); if (SA_FIELDS.AttributeFields) { // Set the loginIdentifier and password fields _loginIdentifier = document.querySelectorAll("#" + SA_FIELDS.AttributeFields[0].ID)[0]; _loginIdentifier.value = $.trim(_loginIdentifier.value); _loginPwd = document.querySelectorAll("#" + SA_FIELDS.AttributeFields[1].ID)[0]; // Reset all errors _resetErrors(); // If we have been passed a value for the loginIdentifier // validate and if good set focus on password if (_loginIdentifier.value && _validateLoginIdentifier()) { _loginPwd.focus(); } else { // Set the focus on the login identifier input _loginIdentifier.focus(); } // Pregenerate the href and add to the link. When clicked // check if we need to append the hint $("#createAccount") .attr("href", $i2e.getRedirectLink("unified?local=signup")) .click(function (event) { if (_serviceCallInProgress) { event.stopImmediatePropagation(); return false; } _serviceCallInProgress = true; if (settings.config.sendHintOnSignup === "true" && _loginIdentifier.value) { var current = $("#createAccount").attr("href"); $("#createAccount").attr("href", current + "&hint=" + encodeURI(_loginIdentifier.value)); } }); // Handle the enter event loginPwd $(_loginPwd).on("keypress", function (event) { if (_serviceCallInProgress) { event.stopImmediatePropagation(); return false; } // Setting _serviceCallInProgress to true is handled in this method if the proper user inputs // have been entered _doSubmit(event); }); // Continue (next) button has been click $("#next").click(function (event) { if (_serviceCallInProgress) { event.stopImmediatePropagation(); return false; } // Setting _serviceCallInProgress to true is handled in this method if the proper user inputs // have been entered _doSubmit(event); }); } $diags.trace(trace); }(new $trace("T003", true))); }; // Gets the generated service content var _getElementContent = function () { return _serviceContent; }; // Binds the template to the data and then // injects into the page var _generateServiceContent = function (handlebars) { (function (trace) { _serviceContent = $i2e.generateServiceContent("unifiedssp", { list: CP.list, AttributeFields: SA_FIELDS.AttributeFields }); $diags.trace(trace); }(new $trace("T005", true))); }; // Export the public methods return { initialize: _initialize, generateServiceContent: _generateServiceContent, getElementContent: _getElementContent }; }($diags, CONTENT, SETTINGS); /* endinject */ // This files gets bundled with the element module. Once the element module has // loaded this script calls the generateServiceContent method on the element // in preparartion for initialization post CORS request. $element.generateServiceContent(); /* inject:jquery.simplemodal-1.4.5.min.js */ /* endinject */</script><title>Loading...</title><style>.no_display{display:none}.error_container h1{color:#333;font-size:1.2em;font-family:'Segoe UI Light',Segoe,'Segoe UI',SegoeUI-Light-final,Tahoma,Helvetica,Arial,sans-serif;font-weight:lighter}.error_container p{color:#333;font-size:.8em;font-family:'Segoe UI',Segoe,SegoeUI-Regular-final,Tahoma,Helvetica,Arial,sans-serif;margin:14px 0}</style></head><body><noscript><div id="no_js" ><div class="error_container"><div><h1>We can't sign you in</h1><p>Your browser is currently set to block JavaScript. You need to allow JavaScript to use this service.</p><p>To learn how to allow JavaScript or to find out whether your browser supports JavaScript, check the online help in your web browser.</p></div></div></div></noscript><div id="no_cookie" class="no_display"><div class="error_container"><div><h1>We can't sign you in</h1><p>Your browser is currently set to block cookies. You need to allow cookies to use this service.</p><p>Cookies are small text files stored on your computer that tell us when you're signed in. To learn how to allow cookies, check the online help in your web browser.</p><script nonce="z9FepLjW53qchLOom7JZ7Q==">if (!navigator.cookieEnabled) document.getElementById('no_cookie').className = ''; if (typeof $diags !== 'undefined') $diags.initializationSuccessful = true;</script></div></div></div></body></html>