{"version":3,"sources":["contexts/AppContext.ts","Ribbon.tsx","images/testout_logo.png","Footer.tsx","util/CertificationMeta.ts","environment.ts","Modal.tsx","images/openbadge.png","ManageCert.tsx","images/LI-In-Bug.png","images/f_logo_RGB-Blue_144.png","images/certificate_sample.jpg","LookupCert.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["AppContext","React","undefined","Ribbon","props","state","showCertSelectorPopup","context","this","showUser","user","window","location","pathname","match","className","src","alt","width","height","givenName","surname","contextType","Footer","moment","format","CertificationMeta","container","fetch","response","ok","arrayBuffer","buffer","codePage","byteLength","codePageArray","Uint8Array","slice","TextDecoder","decode","text","xmlText","parser","DOMParser","xmlDoc","parseFromString","result","certs","evaluate","XPathResult","ORDERED_NODE_SNAPSHOT_TYPE","i","snapshotLength","title","snapshotItem","getAttribute","domains","d","domain","objectives","push","LabSimAPIUrl","host","toLowerCase","indexOf","process","modalRoot","document","getElementById","Modal","el","createElement","appendChild","removeChild","ReactDOM","children","ManageCert","_verifyCert","_verifyIndex","_timeout","q","QueryString","search","showCertSelector","certificateId","showShareDialog","showCertificateDialog","showCertSelectorDialog","showVerifyDialog","a","status","json","cert","setState","certificate","getExamDescription","then","ed","examDescription","getExamSkills","es","examSkills","notFound","verifyUrl","origin","m","certificateDate","certificationTitle","year","month","encodeURIComponent","userProfileId","certificationId","certId","assign","type","color","style","icon","faCheck","faTimesCircle","verifyStatus","setTimeout","doVerifyStep","verify","newState","candidateName","candidateId","clearTimeout","feature","method","headers","isSelf","allowManage","onClick","doVerify","map","idx","objective","faTimes","target","href","buildLinkedInShareHref","rel","incrementFeature","oblogo","onCopy","copiedText","fontSize","faLink","buildDownloadCertHref","faPrint","buildOrderCertificateHref","faCertificate","length","ctid","redirect","id","cancelVerify","renderVerification","fontWeight","LookupCert","error","ls5Cert","value","onKeyPress","e","key","doLookup","onChange","certificateTitle","cert_sample","App","ready","userData","Provider","exact","path","component","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","render","StrictMode"],"mappings":"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","file":"static/js/main.557f9d50.chunk.js","sourcesContent":["import * as React from 'react';\r\nimport IUser from '../models/IUser';\r\n\r\nexport interface IAppContext {\r\n user: IUser | undefined;\r\n}\r\n\r\nexport const AppContext = React.createContext(undefined);","import * as React from 'react';\r\nimport { AppContext, IAppContext } from './contexts/AppContext';\r\n\r\nimport './Ribbon.scss';\r\n\r\n//@ts-ignore\r\nimport logo from './images/testout_logo.png';\r\n\r\ninterface IRibbonProps {\r\n}\r\n\r\ninterface IRibbonState {\r\n}\r\n\r\nexport default class Ribbon extends React.PureComponent {\r\n static contextType = AppContext;\r\n constructor(props: IRibbonProps) {\r\n super(props);\r\n this.state = { showCertSelectorPopup: false };\r\n }\r\n\r\n render() {\r\n let context = this.context as IAppContext | undefined;\r\n let showUser = context != null && context.user != null && window.location.pathname.match(/managecert/i) != null;\r\n\r\n return (\r\n
\r\n \"TestOut\r\n Certification Center\r\n {showUser && {context?.user?.givenName} {context?.user?.surname}}\r\n
\r\n );\r\n }\r\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAArCAYAAAA9iMeyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMzAxRDhGNTExRTNFMDExQUUwNUJBQjJBOUY3NzAxNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowRTlFRjdCOTAwMzgxMUU2QjdCQ0E5RUZCRUI0Qjg2QiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRTlFRjdCODAwMzgxMUU2QjdCQ0E5RUZCRUI0Qjg2QiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCREQwNDFEMjRFMjgxMUUzODY0QkI5ODhDNTFCNEREQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCREQwNDFEMzRFMjgxMUUzODY0QkI5ODhDNTFCNEREQyIvPiA8L3JkZjpEZXNjcmlwdGlv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\"","import * as React from 'react';\r\n//@ts-ignore\r\nimport moment from 'moment';\r\n\r\nimport './Footer.scss';\r\n\r\nexport default class Footer extends React.PureComponent {\r\n render() {\r\n return
Copyright © {moment().format('yyyy')}. TestOut Corporation®. All Rights reserved.
;\r\n }\r\n}","export default class CertificationMeta {\r\n static async getExamDescription(container: string) {\r\n const response = await fetch(`https://cdn.testout.com/certification-meta/${container}/exam-description.txt`);\r\n if (response.ok) {\r\n let buffer = await response.arrayBuffer();\r\n\r\n let codePage = undefined;\r\n if (buffer.byteLength >= 4) {\r\n const codePageArray = new Uint8Array(buffer.slice(0, 4));\r\n if (codePageArray[0] === 239 && codePageArray[1] === 187 && codePageArray[2] === 191)\r\n codePage = 'utf-8';\r\n else if (codePageArray[0] === 254 && codePageArray[1] === 255)\r\n codePage = 'utf-16be';\r\n else if (codePageArray[0] === 255 && codePageArray[1] === 254)\r\n codePage = 'utf-16le';\r\n else if (codePageArray[0] === 0 && codePageArray[1] === 0 && codePageArray[2] === 254 && codePageArray[3] === 255)\r\n codePage = 'utf-32be';\r\n else if (codePageArray[0] === 255 && codePageArray[1] === 254 && codePageArray[2] === 0 && codePageArray[3] === 0)\r\n codePage = 'utf-32le';\r\n else if (codePageArray[0] === 43 && codePageArray[1] === 47 && codePageArray[2] === 118)\r\n codePage = 'utf-7';\r\n else if (codePageArray[0] === 247 && codePageArray[1] === 100 && codePageArray[2] === 76)\r\n codePage = 'utf-1';\r\n }\r\n\r\n return new TextDecoder(codePage).decode(buffer);\r\n }\r\n }\r\n\r\n static async getExamSkills(container: string) {\r\n const response = await fetch(`https://cdn.testout.com/certification-meta/${container}/certification.xml`);\r\n if (response.ok) {\r\n let xmlText = await response.text();\r\n let parser = new DOMParser();\r\n let xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\r\n\r\n let result = [] as Array<{domain: string, objectives: Array}>;\r\n\r\n let certs = xmlDoc.evaluate('//Certification', xmlDoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\r\n for (let i = 0; i < certs.snapshotLength; i++) {\r\n let title = (certs.snapshotItem(i) as Element).getAttribute(\"en-us\");\r\n if (title != null) {\r\n let isPro = (title + ' ').match(/\\sPro\\s/) != null;\r\n if (isPro) {\r\n //@ts-ignore\r\n let domains = xmlDoc.evaluate('Domain', certs.snapshotItem(i), null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\r\n for (let i = 0; i < domains.snapshotLength; i++) {\r\n let title = (domains.snapshotItem(i) as Element).getAttribute(\"en-us\");\r\n if (title != null) {\r\n let d = { domain: title, objectives: [] as Array};\r\n result.push(d);\r\n\r\n //@ts-ignore\r\n let objectives = xmlDoc.evaluate('Objective', domains.snapshotItem(i), null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\r\n for (let i = 0; i < objectives.snapshotLength; i++) {\r\n let title = (objectives.snapshotItem(i) as Element).getAttribute(\"en-us\");\r\n if (title != null)\r\n d.objectives.push(title);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n}","let IsDevEnvironment = window.location.host.toLowerCase().indexOf(\"localhost\") > -1 || window.location.host.toLowerCase().indexOf(\"certificationdev.testout.com\") > -1;\r\n\r\n//@ts-ignore\r\nlet LabSimAPIUrl = IsDevEnvironment ? process.env.REACT_APP_LABSIMAPI_URL_DEV : process.env.REACT_APP_LABSIMAPI_URL_PROD;\r\n\r\nexport { IsDevEnvironment, LabSimAPIUrl }","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\n\r\nconst modalRoot = document.getElementById('modalroot');\r\n\r\nexport default class Modal extends React.Component {\r\n el: HTMLElement;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.el = document.createElement('div');\r\n }\r\n\r\n componentDidMount() {\r\n // The portal element is inserted in the DOM tree after\r\n // the Modal's children are mounted, meaning that children\r\n // will be mounted on a detached DOM node. If a child\r\n // component requires to be attached to the DOM tree\r\n // immediately when mounted, for example to measure a\r\n // DOM node, or uses 'autoFocus' in a descendant, add\r\n // state to Modal and only render the children when Modal\r\n // is inserted in the DOM tree.\r\n modalRoot?.appendChild(this.el);\r\n }\r\n\r\n componentWillUnmount() {\r\n modalRoot?.removeChild(this.el);\r\n }\r\n\r\n render() {\r\n return ReactDOM.createPortal(\r\n this.props.children,\r\n this.el\r\n );\r\n }\r\n}","export default __webpack_public_path__ + \"static/media/openbadge.d84081b4.png\";","import * as React from 'react';\r\n//@ts-ignore\r\nimport moment from 'moment';\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nimport * as QueryString from 'query-string';\r\nimport { AppContext, IAppContext } from './contexts/AppContext';\r\nimport ICertificate from './models/ICertificate';\r\nimport CertificationMeta from './util/CertificationMeta';\r\nimport { LabSimAPIUrl } from './environment';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faPrint, faCertificate, faCheck, faTimesCircle, faTimes, faLink } from '@fortawesome/free-solid-svg-icons';\r\nimport ICertificateTitleAndId from './models/ICertificateTitleAndId';\r\nimport Modal from './Modal';\r\nimport Loader from \"react-loader-spinner\";\r\n\r\nimport './ManageCert.scss';\r\n//@ts-ignore\r\nimport oblogo from './images/openbadge.png';\r\n//@ts-ignore\r\nimport fblogo from './images/f_logo_RGB-Blue_144.png';\r\n//@ts-ignore\r\nimport lilogo from './images/LI-In-Bug.png';\r\n\r\ninterface IManageCertProps {\r\n\r\n}\r\n\r\ninterface IManageCertState {\r\n certificateId: string;\r\n certificate?: ICertificate;\r\n examDescription?: string;\r\n examSkills?: Array<{ domain: string, objectives: Array }>;\r\n showShareDialog: boolean;\r\n showCertificateDialog: boolean;\r\n showCertSelectorDialog: boolean;\r\n showVerifyDialog: boolean;\r\n certs?: Array;\r\n verifyStatus?: Array;\r\n notFound?: boolean;\r\n copiedText?: string;\r\n}\r\n\r\nexport default class ManageCert extends React.PureComponent {\r\n static contextType = AppContext;\r\n constructor(props: IManageCertProps) {\r\n super(props);\r\n const q = QueryString.parse(window.location.search)\r\n let showCertSelector = window.location.pathname.match(/managecert/i) != null && (q.certificateId ?? \"\") === \"\";\r\n this.state = { certificateId: q.certificateId as string, showShareDialog: false, showCertificateDialog: false, showCertSelectorDialog: showCertSelector, showVerifyDialog: false };\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.state.showCertSelectorDialog)\r\n this.showCertSelector();\r\n else {\r\n const response = await fetch(`/api/certification/${this.state.certificateId}`);\r\n if (response.status === 200) {\r\n let cert = await response.json() as ICertificate;\r\n //@ts-ignore\r\n this.setState({ certificate: cert }, async () => {\r\n if (cert.container) {\r\n CertificationMeta.getExamDescription(cert.container).then((ed) => { this.setState({ examDescription: ed }) });\r\n CertificationMeta.getExamSkills(cert.container).then((es) => { this.setState({ examSkills: es }) });\r\n }\r\n });\r\n }\r\n else this.setState({ notFound: true });\r\n }\r\n }\r\n\r\n buildLinkedInShareHref() {\r\n if (this.state.certificate != null) {\r\n let verifyUrl = `${window.location.origin}/verifycert?certificateId=${this.state.certificate.certificateId}`;\r\n let m = moment(this.state.certificate.certificateDate);\r\n return `https://www.linkedin.com/profile/add?startTask=CERTIFICATION_NAME&name=${this.state.certificate?.certificationTitle}&organizationId=107667&issueYear=${m.year()}&issueMonth=${m.month()}&certId=${this.state.certificate.certificateId}&certUrl=${encodeURIComponent(verifyUrl)}`;\r\n }\r\n return \"\";\r\n }\r\n\r\n buildDownloadCertHref() {\r\n if (this.state.certificate != null)\r\n return `${LabSimAPIUrl}/api/v1/users/${this.state.certificate.userProfileId}/certificates/${this.state.certificate.certificationId}`\r\n return \"\";\r\n }\r\n\r\n buildOrderCertificateHref() {\r\n let context = this.context as IAppContext | undefined;\r\n if (context != null && context.user != null)\r\n return `https://shop.testout.com/Products.aspx?code=0-18-AC&version=6&user=${context.user.userProfileId}`;\r\n return \"\";\r\n }\r\n\r\n showCertSelector() {\r\n //@ts-ignore\r\n this.setState({ showCertSelectorDialog: true }, async () => {\r\n const response = await fetch(`/api/certification/certlist`);\r\n if (response.ok)\r\n this.setState({ certs: await response.json() as Array })\r\n });\r\n }\r\n\r\n redirect(certId: string) {\r\n window.location.assign(`${window.location.origin}/manageCert?certificateId=${certId}`);\r\n }\r\n\r\n renderVerification(status: boolean | undefined) {\r\n if (status == null) {\r\n //@ts-ignore\r\n return ;\r\n }\r\n if (status)\r\n return ;\r\n return \r\n }\r\n\r\n _verifyCert: ICertificate | undefined = undefined;\r\n _verifyIndex: number = -1;\r\n _timeout: number = -1;\r\n doVerify() {\r\n this._verifyIndex = -1;\r\n let verify = [] as Array;\r\n //@ts-ignore\r\n this.setState({ showVerifyDialog: true, verifyStatus: verify }, async () => {\r\n const response = await fetch(`/api/certification/${this.state.certificateId}`);\r\n if (response.ok)\r\n this._verifyCert = await response.json() as ICertificate;\r\n else this._verifyCert = undefined;\r\n this._timeout = setTimeout(() => { this.doVerifyStep(); }, 1000) as any;\r\n });\r\n }\r\n\r\n doVerifyStep() {\r\n if (this.state.verifyStatus == null)\r\n return;\r\n\r\n let verify = this.state.verifyStatus.slice();\r\n this._verifyIndex++;\r\n if (this._verifyIndex < 7) {\r\n let newState: boolean | undefined = undefined;\r\n if (this.state.certificate != null && this._verifyCert != null) {\r\n switch (this._verifyIndex) {\r\n case 0:\r\n newState = this._verifyCert.certificateDate === this.state.certificate.certificateDate;\r\n break;\r\n case 1:\r\n newState = true;\r\n break;\r\n case 2:\r\n newState = this._verifyCert.candidateName === this.state.certificate.candidateName;\r\n break;\r\n case 3:\r\n newState = this._verifyCert.candidateId === this.state.certificate.candidateId;\r\n break;\r\n case 4:\r\n newState = this._verifyCert.certificateId === this.state.certificate.certificateId;\r\n break;\r\n case 5:\r\n newState = true;\r\n break;\r\n case 6:\r\n newState = verify[0] && verify[2] && verify[3] && verify[4];\r\n break;\r\n }\r\n }\r\n else newState = false;\r\n\r\n if (newState != null) {\r\n verify[this._verifyIndex] = newState;\r\n this.setState({ verifyStatus: verify }, () => {\r\n this._timeout = setTimeout(() => { this.doVerifyStep(); }, 750) as any;\r\n });\r\n }\r\n }\r\n }\r\n\r\n cancelVerify() {\r\n if (this._timeout > -1)\r\n clearTimeout(this._timeout);\r\n this._timeout = -1;\r\n this.setState({ showVerifyDialog: false });\r\n }\r\n\r\n //@ts-ignore\r\n async incrementFeature(feature: string) {\r\n await fetch(`/api/user/feature/${feature}`, { method: 'POST', headers: {'Content-Type': 'application/json'}});\r\n }\r\n\r\n render() {\r\n let context = this.context as IAppContext | undefined;\r\n let isSelf = context != null && context.user != null && context.user.userProfileId === this.state.certificate?.userProfileId;\r\n let allowManage = isSelf && (window.location.pathname.match(/managecert/i) != null);\r\n if ((this.state.certificateId ?? \"\") === \"\" && !this.state.showCertSelectorDialog)\r\n window.location.assign(`${window.location.origin}/lookupcert`);\r\n\r\n return (\r\n <>\r\n {this.state.notFound &&
\r\n
\r\n

The certificate you were looking for could not be found.

\r\n {context != null && context.user != null && }\r\n
\r\n
}\r\n {this.state.certificate != null &&
\r\n
\r\n This certificate was issued to {isSelf && allowManage ? \"you\" : this.state.certificate.candidateName} on {moment(this.state.certificate.certificateDate).format('M/D/yyyy')} and doesn't have an expiration date.\r\n {allowManage && \r\n { this.setState({ showShareDialog: true }) }}>Share\r\n { this.setState({ showCertificateDialog: true }) }}>Certificate\r\n { this.showCertSelector() }}>Other Certifications\r\n }\r\n {!allowManage && \r\n { this.doVerify() }}>Verify\r\n }\r\n
\r\n
\r\n
\r\n \"Certificate\r\n
Candidate Id:{this.state.certificate.candidateId}
\r\n
Certificate Id:{this.state.certificate.certificateId}
\r\n
\r\n
\r\n

{this.state.certificate.certificationTitle}

\r\n {this.state.examDescription != null &&

{this.state.examDescription}

}\r\n {this.state.examSkills != null && <>\r\n

Skills

\r\n
{this.state.examSkills.map((domain, idx) => {\r\n return
{domain.domain}{\r\n domain.objectives.map((objective, idx) => {\r\n return {objective};\r\n })\r\n }
\r\n })}
\r\n }\r\n
\r\n
\r\n
}\r\n {this.state.showShareDialog && \r\n
\r\n
\r\n
\r\n { this.setState({ showShareDialog: false }) }}>\r\n Share your certification\r\n
\r\n \r\n
\r\n
\r\n
}\r\n {this.state.showCertificateDialog && \r\n \r\n }\r\n {this.state.showCertSelectorDialog && \r\n
\r\n
\r\n \r\n
\r\n {this.state.certs != null && <>\r\n {this.state.certs.length === 0 && Your TestOut account has no certifications.}\r\n {this.state.certs.map((ctid, idx) => { return { this.redirect(ctid.id) }}>{ctid.title} })}\r\n }\r\n
\r\n
\r\n
\r\n
}\r\n {this.state.showVerifyDialog && \r\n
\r\n
\r\n
\r\n { this.cancelVerify() }}>\r\n Verification\r\n
\r\n {this.state.certificate != null && this.state.verifyStatus != null &&
\r\n
{this.renderVerification(this.state.verifyStatus[0])}{`Issued on ${moment(this.state.certificate.certificateDate).format('M/D/yyyy')}`}
\r\n
{this.renderVerification(this.state.verifyStatus[1])}{`Issued by TestOut`}
\r\n
{this.renderVerification(this.state.verifyStatus[2])}{`Issued to ${this.state.certificate.candidateName}`}
\r\n
{this.renderVerification(this.state.verifyStatus[3])}{`Candidate Id is ${this.state.certificate.candidateId}`}
\r\n
{this.renderVerification(this.state.verifyStatus[4])}{`Certificate Id is ${this.state.certificate.certificateId}`}
\r\n
{this.renderVerification(this.state.verifyStatus[5])}Never expires
\r\n
{this.renderVerification(this.state.verifyStatus[6])}Verified
\r\n
}\r\n
\r\n
\r\n
}\r\n {this.state.copiedText != null &&\r\n
\r\n
\r\n

\r\n The following URL has been copied to your clipboard
\r\n {this.state.copiedText}\r\n

\r\n

\r\n { this.setState({ copiedText: undefined }) }}>OK\r\n

\r\n
\r\n
\r\n }\r\n \r\n );\r\n }\r\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhkAAAIZCAYAAAALGi2LAAAACXBIWXMAAC4jAAAuIwF4pT92AAAFG2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuZGFiYWNiYiwgMjAyMS8wNC8xNC0wMDozOTo0NCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjQgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTA2LTI0VDE2OjAyOjQ2LTA2OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wNi0yNFQxNjoxMjo0Ny0wNjowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wNi0yNFQxNjoxMjo0Ny0wNjowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpkOWMwMmRlZi1kMjMz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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATUAAAE2CAYAAAAAiwWqAAAACXBIWXMAABcRAAAXEQHKJvM/AAAVsUlEQVR4nO3df2hd533H8Ue/bMuJLDsNzdQllZuubCMBq7TpIAuRQmDdWoY1QmE/Qq2w0bEfXeQ/BiphtfzXNNZRZf8MRiFy2R+DsSEzNppSqDSC+0/KJNakoVkc39iLYmNHvrqJJdvSveNxvre6vufcq3vOPc85z4/3C0TSe2VF91z3c7/P83yf5/TUajUFAL7o5Z0E4BNCDYBXCDUAXiHUAHiln7cT7YzMVA4rpcbkWybkn42PaUeVUqNtfkynVpVS1+V79T9X5N8vyNf1tbmhle7+E/Adq59oDK4xCawJ+ecxi6/OckPw3Qm9tbmhpch3ITiEWmBGZipjDQFW/xr26CqUJOSWJPBW1uaGLkS+C94i1DwmFdiEfOnwGg/0UpQbQm6Jis5vhJpHJMQmG4Isi3kuXy1L0BFyniHUHDcyU5loCDKb58Bsd1ZCbpHhqtsINcc0VWOTns2H2ULPyy1KwFHFOYZQc0BDkOmv46Ffj5yVGwJuMahX7ihCzWIjM5UpgswqOuAW9Bf9cvYi1CwjLRfTDC2tp4eo88zB2YdQs4AML6ckzFixdM9Zqd4YnlqAUCtQQ1V2ItiL4JeSDE/n1+aGrof0wm1CqBVA5sqmAm6GDcEZCTfm3nJGqOWkYQVzliFmUHST7yytIfkh1AyTMJuWLyb+w7UqldtC6BfCNELNEMIMLZSkciPcDCHUMkaYoUOEmyGEWoZGZiqzhBkSYs4tY4RaBmQ1kwUAdEOH2zSrpd0j1LogJ2TM0pqBDJ2RcKPPLSVCLYWRmcpRCTOaZmFCWVZKZ7m6yRFqCTFvhhzpxYQp5tuSIdQ6JEPNeQ5iRAEYkiZAqO1BWjR0dfZ8++8EjCpLsNECsgdCrQ2pzhZY1YRFlmVIynFHLRBqMajOYLmy9LbN80ZFEWpNqM7gkLNStTHX1qA38kjARmYq+pPvhwQaHKGPeb8wMlOZ5A3bRaW223e2yMomHPaiDEmDr9qCr9Rki9MKgQbH6fnfJTlNOWhBh9rITEXPnb1EIy08oT+Yl+SDOlhBDj8ZbiIAL67NDU2H+EYHF2qyurlIdYYA6NN2J0KbZwtq+DkyU5mW1U0CDSE4JqujQc2zBRNqMn/27cgTgN+GQ5tn8374KbsDlpg/A9TpEI4z8rpSk7KbQAM+ckpGLF7ztlJrCDTmz4C7eb2A4GWlJvMHBBoQr97Pdjj2Wcd5V6lJoL0UeQJAs7JUbF7d7MWrSo1AAxIZ9nFrlTehJvcOINCAZLwLNi+Gn7Kiw52dgPS8GYo6X6kRaEAmvKnYnA41Ag3IlBfB5myoEWiAEc4Hm5OhJqucBBpghtPB5lyo0bYB5MLZYHNq9ZNAA3KnV0XHXLrPqDOhJoc7/jDyBADTnNor6sTwU0rgxcgTAPLg1F5R60NN7ifA5nSgWDrYnLgjvNWhJp8M3E8AsMMJF85js71S445PgF1O2H40uLWhJp8I45EnABTtJVm4s5KVq5+0bgDWs7bVw7pQk5XO/448AcA2VrZ6WDX8bLjzEwD7Wbki2h95pFisdCKxRz7Rq4YP9KjPfbJv/YFDPRv6z4892Nd73z091U5/1vmr1d4L16o///7LG7VDP35n50j9f587vxP5M7hDLxysrM0NWRNu1gw/5eTaU5EnAHFosEc9/nCfeuLTfaXxz/T3f3yo5+ChAz1H8rw+t3fU5qXr1Sv6318t7fRvbNW2X3lrZ3Rjs6YuruuvjnPUN5+15YBJK0KNLVCIUw+xZ78wcPGx0b578w6wtN7bqF3+4GZte/nN7e16xRdA4JVk4aDw+bXCQ03m0S4w7ISSIPvtR/s3f++xgauf+2TfQ75dlLevVUuP/+2Ho5En/HB2bW5osuhXYkOoLdGPBl2R/en4votP/3K/d0HWbGSmEnnMIyeLnl8rNNRGZirTSqlvR55AMP7gsYHNv/rS/lvDgz3BVOqeh1rh/WuFrX5KPxqBFqimMBsM/Xp4ZFi6GAo7XLLIPjXrN8Yie19+tP/GG6fuLX/rmQODIVVngTkm3QyFKCTU5AWzUT0gDx3pVT94/p6r33l28CBhFoRTRR0FnvvwU14o/WgB+ZMn921944v7qwN96v7Qr0VgFooYhhZRqTHsDIRuz9DV2Te/tP/AQJ86GPr1CFAhw9BcQ41hZzj01qX/eeHerUdGeqnOwnZKTq/OTW6hJi9sOvIEvKNXNn/wF/eoff3qAO8u8h6d5VmpLbBrwH8v/Nb+OyuboV8H3GU8z9Nycwm1kZnKJLsG/PedZwff//PxfXxwIc58XnejMh5q8kKcuAsN0tOB9uVH++/jEqIF/WGXy6JBHpWankfzdQMvlFJ/98yBqwQaOvB8Hr1rRkONxQH/6UWB339sgBVOdMr4qM10pTbL4oC/9MkaLAogoXGZYzfGWKjJwY8nIk/AC3rb0z//4cFN3k2kYLRaM1mpFbahFeb929cG3x/o43QNpDJqssXDSKhJlUYLh6d0L9qDR3pZGEA3jLV4mKrUaOHwlN7+RC8aMjBsahEx81CTspL9nZ767omDV0O/BsjMtIlqzUSlxlyap/QRQp8Y7qF9A1kxUq1lGmpSpdFo6yF9jNA3vrjfjpvEwieZV2tZV2pUaZ76+sS+MqudMCDzai2zUJOGOqo0D+metD9+Yt9A6NcBxmRarWVZqbEdylNfn9hX4eRaGJRptZZJqNGX5i89l/a7nx8o7FaKCEZmzbhZVWpUaZ468WsD68ylIQeZ7TLoOtTkJI7jkSfghT8b31fkvWERlkyKoyz+wrLi6anffKRfcY9O5OiYTGV1patQkxULo8eIoDjPfmHgIpcfOet6CNptpTbFeWn+evKX+tk9gLyd6PaWet2GGgsEntJDTxYIUJCuqrXUoSZjX5ptPcXQEwUqJtSy7CuBfRh6okCj3Rz5nSrUWCDwmz4zjaEnCpa6aEpbqU2yQOCvr3x24HLo1wCFO552P2ja7S8sEHjs6V/p3w7tNW9s1dbfvFL9YOXSTvWVt3ZGNzZrqrxVU6+9W418L3IzleYU7cShJsutnGzrsdH7wrj/wLvl2tWFH93qW1zdPnJxvXpEKXUk8k0oUj6hxlya30KYT/ve69uXv/nvNx+4uF5lMcRueofB0bW5oQtJfss0ocaqp8f02Wm+Ond+5+r0v2zdf3G9+kDo77NDJpNWa4n+BjP09N8Tn+4r+fYib++ozT/6p80bz/zjDR1okedhtcRFVNKPZYaenhv/TL9XZ6ddWq++/+vf+nDwP36yzSGXbjqWdNtU0lBj6Om5e/f3eBNqOtCe/vsb91GdOS9RMdVxqDH0DMMvHOrxYr5Jr2zqQNOtGXBeomIqSaXG0NNzviwS3N5RN7565sb9BJo3Eg1Bk/wt7vrwNtjtoSM9XrxDf/3yzV6aZr3Tcf4kCTWO7Ib13rhcvfwP/3XrAO+UdzoeKXYUat3smIc7fuNX+53f8/nC2S160PyUeaXG0DMA/X1qy+VXqau0c+d3Io/DC8Od3r+AUIM3/ub7N6nS/JZNqNHKEY5DB9ztUdOnbHzvteAOFwlNZpUaVVogPj/a52wqvPz69o3Ig/DNeCevh1CDF/7zte1f5J30Xyfzap2E2ljkEcAyLBAEo7tQk+N0mU+D1fR8GrsHgtF1pUaVButdqdSYTwvHnpm0V6gxnwbrLb+5zbJnOHS/WttgI9QAuKarUGv7hwGgAG1zqWWoSdMt9/aE9S5v1A7xLgUldaWW6AhdoCg/u1J9h4sflLZNuO1Cjfk0AFZqd2hku1BrW+IBQIFa5lO7UGuZhABQsFShxk4CALZKFmrtxqsAYIHDrX6F2FBj6AnAci1XQFuFWsvSDgBsIAduRLQKtdhvBgCLxBZfrUKNHjUAtostvlqFGgDYLlGlFvvNAGC7VqHGRnYAtoudJouEWqsVBQBwQSTUGHoCcERsP21cqAGAC0bjfse4UItNPwBwAaEGwFlxawBxoQYAroisARBqALwSF2qRcg4AXBEXapFyDgBcDjUAcEVkZEmoAXBZZGRJqAHwCqEGwCuEGgCvEGoAvNLP25mfxx/uU//6tYM2/4qxG4Rtt/DVQSfuUTsyU4k8huxRqQE5eG+jdpnrnA9CDcjB/12v3uI654NQA3KwcmmnynXOB6EG5OCna9WPc53zQagBOXj7WnWQ62zESvMPJdSAHPxkjdGnIdebf2xcqEWSD0B6t3fU5sZmjSuYk7hQiyQfgPQuXa9e4fLlJy7UAGTo/NUq/z/LERcbMOx/r1T3cY2NiUyXxYXahcgjAFL7/k+3H+DqmbE2NxSZLiPUAMPKWywS5Cku1ABk6LV3aecwpBT3Y+NCLTJGBZAOG9mNih1VRkItbowKIJ0Pbta2uXT5ioSaKEceAZDY8pvbhJo5S3E/uVWoMQQFMsBG9vy1CjUAGWAju1GxxVerUIst6wAkw0Z2o2Ln/1uFWuw3A0iGjexGJarUYr8ZQOfevlaN7aNCNlp1arQKtdj+DwCdYyO7UcutfnjsRV+bGyLUgC5duFZlQs2c2CpNtQo1sRp5BEDHXnlrx8n7qDqi5RRZu1CjWgO6cHGdQs2gVKHW8g8B2Bsb2Y1qmU/tQo1eNSClja3aOtfOnHbz/u1CreUfAtDelUrtRttvQDdarny2DTVJQja2Aymwkd2olkNP1S7URNs/DCDe5Y3aodgnkIW2ubRXqDGvBqTw43d2jnDdjCHUgLxdXGfPpyHltbkhhp9A3uhRM2bPTGobarJhlJ0FQAJsZDdqz9Fj21ATVGtAAu9/WGMjuzmZhBrzakACK5d2GHsasjY3RKgBeWMjuzFtm27r9gw1acJlXg3oEKfdGtNRgdXp2J9qDejQufM7XCozCDUgb2xkN6bcyXya6jTU1uaGFiMPAoi49mFtI/IgstBxYZVk6fls5BEAd3m1tNPPFTGi48IqyRugk/J45FF0rLxV0z1M1i66HD7Y83BvjxqKPGG5G7dqP9u6rTZt+C1fLe08GHkQWei4Uuup1TpbqRmZqRzVzdKRJ+CNc395T+lTH+t1rh1h6rubqy+/vn0s8gR8sbo2NzTW6WvpePhJaweAgiwk+c8m3c6R6IcDQAYSLVQmDTVWQQHkabXd/QjiJAo1hqAAcpZ4dJjmNAGGoADyknh0mCbUGIICyEPioadKE2oMQQHkJNWoMO1hdvORRwAgW7mG2iL3BAVg0Fm5nUBiqUJN/mPMrQEwJfWCZDdnqbMKCsCEUjcnA6UONTnbiLvmAMhaVwVTt3e9YcEAQNYKDbUFFgwAZOhMmt60Rl2FGgsGADLW9Vx9FjddnY08AgDJrXZ6H4J2ug41KRU56htAtzKZo8/q9vgsGADohm7jyKRNLJNQk5Kxo7snA0CMzPpes6rUFNUagJTKWeZHZqEmHcA04wJIaj7tPs84WVZqipVQAAllWqWprENNJvqo1gB0KtMqTRmo1BTVGoAOZV6lKROhJtUaJ+MC2EvmVZoyVKlp05FHAGCXkSpNmQo1+tYA7GHaRJWmDFZqirk1AC1ktnsgjrFQk2rtTOQJAKEzOj1lslJTUq1x3hqAuuVujuruhNFQkxM82D4FoM74IqLpSk1JqNGQC+DFtbmhFdNXwXioyQoHLR5A2Mp5LR7mUanVN7vT4gGEy1gLR7NcQk1MsWgABGnZZAtHs9xCjUUDIFhTeb7wPCs1HWyz7AsFgnK621veJZVrqIlcUxtAYValkMlV7qEmS7qnI08A8E0hBUwRlRrDUMB/p/PoSYtTSKgJhqGAnwoZdtYVFmqS4icjTwBwmW7bmizy9y+yUtPBNk9TLuCV2bxXO5sVGmpikqZcwAtnpVApVOGhJlsnCi1XAXStZMs8uQ2VWv1ASdo8AHdN5rW3cy9WhJrabfNgfg1wz8mi2jfiWBNqgvk1wC1nbJhHa2RVqEn5OhF5AoCNVm08K9G2Sq3ev/Zc5AkANinbNI/WyLpQU7t3eedOVIC9JovuR2vFylBTHwXbFAsHgJWek44FK1kbamKSje+AVc7keYptGlaHWkNjLiuiQPHOyAjKarZXavVjwCcINqBQVq50xrE+1NTuiihbqYBi6ECbsHGlM44ToaZ2t1LR6gHky9rWjVacCTW12+pBsAH5KEuFZmXrRitOhZoi2IC81APNmj2dnXIu1BTNuYBpzgaacjXU1G5zLsEGZMvpQFMuh5oi2ICsOR9oyvVQUwQbkBUvAk35EGpqN9g4ORdIx5tAU76Emto9OZdVUSAZrwJN+RRqinYPIKmSb4GmfAs1dXewsVcUaE1vfRrzLdCUj6GmdoONTfBAPKf2ciblZaip3U3wE5zHBtxFHx805mugKZ9DTRFsQLPTLpyH1i2vQ03JQZP6k4leNgSsLEdwz4ZwCbwPtTr5hDoZeQLwW71lw+ojuLMUTKipj4JN33T1KRYQEAg97XLUxxXOdoIKNbV72OQY82zw3Iu+Lwi0ElyoKbnvAfNs8FR9/syJ+wmYEGSo1ck8G4268EW9/yyY+bM4QYea2m3UZTgK19WHm0HNn8UJPtTU3cPRFyNPAnbTo4zfCXm42YxQayB/MZ6Sjb6A7c7K6uYi79QuQq1Jw+ooVRtspauzk2tzQ07dui4vhFoM2YVA1QYbLcvpGvO8O/EItTao2mCR+tyZc/fhzBuhtoemqo0VUhThDHNnnet35RctWr1qG5mp6IDTG4OHw74iyIGe+piSv3voEJVaQjKXwW4EmFRfCDhKoCVHqKUgfW1TMiRddu4FwGb1oSYLASkx/OyCfIpOjMxUpmRIOursi0HR9IfjNDsCukellgG91UoPFeTeo+wjRRI6zJ6SVU0CLQOEWobkZFHCDZ0oyWkaE8ybZYtQy5i0gBBuaKUeZkdDP03DFELNEMINTVYJs3wQaoY1hdtzbLsKTn3ObIwwywernzmRjcf6L/WCrJbqr/EgXnyYdGvGPJP/+SPUCiCf2DrcdBOv3qFwIriL4KeSfHDNc3pGcQi1Asmn+JRsvZqSgKPXzT36XLMF9mbagVCzgHyq6w7y+YbqbZL9pVYryXu2yKkZdiHULFOv3vRvJXNvOtyOh35dLFGuz4syV2YvQs1iDXNvhyXcCLj86SBblIqM4aUDCDUHNK2c1gNugiGqMSUJMioyBxFqjmkMOPXREHWiIeSOhX59uqAn+5eYI3MfoeY42Td4Z+9gUxU3wUpqW8ty3ZbYe+kXQs0jMVXc4YaAGwu42bcsAbZCiPmPUPOYhNyifN0hLSPNXz7Ny5UkvH7+xXAyLIRaYGTi+67Jb6noxq5s1J781Mfu7AfWld1hy+fo9PBRh/bK0IGeN5RS71GBQeup1WqRB4EGh6WqU/LPw02PKdmsn8X83aoElaoHlvz7Bfm63hzIQDNCDYBXOHoIgFcINQBeIdQAeIVQA+APpdT/AyuSOuledpX2AAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/certificate_sample.1e51dbb0.jpg\";","import * as React from 'react';\r\n//@ts-ignore\r\nimport moment from 'moment';\r\nimport ICertificate from './models/ICertificate';\r\nimport ILS5Certificate from './models/ILS5Certificate';\r\n\r\n//@ts-ignore\r\nimport cert_sample from './images/certificate_sample.jpg'\r\nimport './LookupCert.scss';\r\n\r\n\r\ninterface ILookupCertProps {\r\n\r\n}\r\n\r\ninterface ILookupCertState {\r\n certificateId: string;\r\n error?: string;\r\n ls5Cert?: ILS5Certificate;\r\n}\r\n\r\nexport default class LookupCert extends React.PureComponent {\r\n constructor(props: ILookupCertProps) {\r\n super(props);\r\n this.state = {certificateId: \"\"};\r\n }\r\n\r\n //@ts-ignore\r\n async doLookup() {\r\n if (this.state.certificateId == null || this.state.certificateId.length === 0)\r\n this.setState({ error: \"Please specify a Certificate Id.\" });\r\n else {\r\n if (this.state.certificateId.match(/^6/) != null) {\r\n const response = await fetch(`/api/certification/${this.state.certificateId}`);\r\n if (response.status === 200) {\r\n let cert = await response.json() as ICertificate;\r\n window.location.assign(`${window.location.origin}/verifycert?certificateId=${cert.certificateId}`);\r\n }\r\n else {\r\n this.setState({ error: \"The Certificate Id you requested could not be found.\" });\r\n }\r\n }\r\n else {\r\n const response = await fetch(`/api/certification/ls5/${this.state.certificateId}`);\r\n if (response.status === 200) {\r\n let cert = await response.json() as ILS5Certificate;\r\n this.setState({ error: undefined, ls5Cert: cert });\r\n }\r\n else {\r\n this.setState({ error: \"The Certificate Id you requested could not be found.\" });\r\n }\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return
\r\n

Verify Certification

\r\n

Enter a Certificate ID to verify whether a candidate holds a TestOut certification.

\r\n
\r\n
\r\n Certificate Id\r\n { if (e.key === \"Enter\") this.doLookup() }} onChange={(e) => { this.setState({ certificateId: e.target.value, ls5Cert: undefined }) }} />\r\n { this.doLookup() }}>Lookup Certificate\r\n
\r\n {this.state.ls5Cert != null &&
\r\n
{this.state.ls5Cert.certificateTitle}
\r\n
\r\n
Awarded to {this.state.ls5Cert.candidateName} on {moment(this.state.ls5Cert.certificateDate).format('M/D/yyyy')}
\r\n
Certificate Id: {this.state.ls5Cert.certificateId}
\r\n
Candidate Id: {this.state.ls5Cert.candidateId}
\r\n
\r\n
}\r\n {this.state.error != null && this.state.error.length > 0 &&
{this.state.error}
}\r\n {(this.state.error == null || this.state.error.length === 0) && this.state.ls5Cert == null && \"Sample}\r\n
\r\n
;\r\n }\r\n}","import * as React from 'react';\r\nimport { BrowserRouter, Switch, Route } from 'react-router-dom';\r\nimport './App.scss';\r\nimport Ribbon from './Ribbon';\r\nimport Footer from './Footer';\r\nimport IUser from './models/IUser';\r\nimport { AppContext } from './contexts/AppContext';\r\nimport ManageCert from './ManageCert';\r\nimport LookupCert from './LookupCert';\r\n\r\nimport \"react-loader-spinner/dist/loader/css/react-spinner-loader.css\";\r\n\r\ninterface IAppProps {\r\n\r\n}\r\n\r\ninterface IAppState {\r\n ready: boolean;\r\n user?: IUser;\r\n}\r\n\r\nexport default class App extends React.PureComponent {\r\n constructor(props: IAppProps) {\r\n super(props);\r\n this.state = {ready: false};\r\n }\r\n\r\n async componentDidMount() {\r\n //Get current user\r\n let response = await fetch('/api/user');\r\n if (response.ok) {\r\n //We are signed on and know our user\r\n let userData = await response.json() as IUser;\r\n this.setState({ ready: true, user: userData });\r\n }\r\n else {\r\n //We are not signed on yet, so get authenticated first\r\n //The ribbon may authenticate us later\r\n this.setState({ ready: true, user: undefined });\r\n }\r\n }\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n {this.state.ready &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}