{"version":3,"file":"commons-3b75e6c2dae73c443f18.js","mappings":"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","sources":["webpack://ocius-website/./node_modules/@r007/react-styled-flexboxgrid/dist/styled-flexboxgrid.es.js","webpack://ocius-website/./node_modules/lodash.isinteger/index.js","webpack://ocius-website/./node_modules/react-fast-compare/index.js","webpack://ocius-website/./node_modules/react-side-effect/lib/index.js","webpack://ocius-website/./node_modules/styled-tools/dist/es/prop.js","webpack://ocius-website/./node_modules/styled-tools/dist/es/ifProp.js","webpack://ocius-website/./node_modules/styled-tools/dist/es/switchProp.js","webpack://ocius-website/./node_modules/styled-tools/dist/es/withProp.js","webpack://ocius-website/../src/image-utils.ts","webpack://ocius-website/../src/components/hooks.ts","webpack://ocius-website/../src/components/picture.tsx","webpack://ocius-website/../src/components/layout-wrapper.tsx","webpack://ocius-website/../src/components/placeholder.tsx","webpack://ocius-website/../src/components/main-image.tsx","webpack://ocius-website/../src/components/gatsby-image.browser.tsx","webpack://ocius-website/../src/components/gatsby-image.server.tsx","webpack://ocius-website/../src/components/static-image.server.tsx","webpack://ocius-website/../src/components/static-image.tsx","webpack://ocius-website/./node_modules/gatsby-plugin-image/node_modules/camelcase/index.js","webpack://ocius-website/./src/common/detectActive.js","webpack://ocius-website/./src/common/hooks/useOnClickOutside.js","webpack://ocius-website/./src/common/hooks/useWindowSize.js","webpack://ocius-website/./src/common/mq.js","webpack://ocius-website/./src/common/theme.js","webpack://ocius-website/./src/common/typography.js","webpack://ocius-website/./src/components/Heading.js","webpack://ocius-website/./src/components/Icon.js","webpack://ocius-website/./src/components/Icons/ChevronDownGlyph.js","webpack://ocius-website/./src/components/Icons/ChevronRight.js","webpack://ocius-website/./src/components/Icons/Close20.js","webpack://ocius-website/./src/components/MaskOverlay.js","webpack://ocius-website/./src/components/Icons/Sliders.js","webpack://ocius-website/./src/components/Navbar/HeaderMenuButton.js","webpack://ocius-website/./src/components/Navbar/SiteLogo.js","webpack://ocius-website/./node_modules/react-helmet/es/Helmet.js","webpack://ocius-website/./src/components/SEO.js","webpack://ocius-website/./src/components/SideNav/SideNavWrapper.js","webpack://ocius-website/./src/components/SideNav/SideNavFooter.js","webpack://ocius-website/./src/components/SideNav/SideNav.js","webpack://ocius-website/./src/components/SideNav/index.js","webpack://ocius-website/./src/components/common.js","webpack://ocius-website/./node_modules/lodash/_Symbol.js","webpack://ocius-website/./node_modules/lodash/_baseGetTag.js","webpack://ocius-website/./node_modules/lodash/_baseTrim.js","webpack://ocius-website/./node_modules/lodash/_freeGlobal.js","webpack://ocius-website/./node_modules/lodash/_getRawTag.js","webpack://ocius-website/./node_modules/lodash/_objectToString.js","webpack://ocius-website/./node_modules/lodash/_root.js","webpack://ocius-website/./node_modules/lodash/_trimmedEndIndex.js","webpack://ocius-website/./node_modules/lodash/debounce.js","webpack://ocius-website/./node_modules/lodash/isObject.js","webpack://ocius-website/./node_modules/lodash/isObjectLike.js","webpack://ocius-website/./node_modules/lodash/isSymbol.js","webpack://ocius-website/./node_modules/lodash/now.js","webpack://ocius-website/./node_modules/lodash/throttle.js","webpack://ocius-website/./node_modules/lodash/toNumber.js","webpack://ocius-website/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport styled, { css } from 'styled-components';\nimport isInteger from 'lodash.isinteger';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n}\n\nvar _templateObject$3;\n\nvar THEME_CONF = 'flexboxgrid';\nvar BASE_CONF = {\n gridSize: 12,\n gutterWidth: 1,\n outerMargin: 2,\n mediaQuery: 'only screen',\n container: {\n sm: 46,\n md: 61,\n lg: 76\n },\n breakpoints: {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992\n }\n};\nvar configCache = [];\n\nvar makeCacheId = function makeCacheId(props) {\n return JSON.stringify(props.theme && props.theme[THEME_CONF] || {});\n};\n\nvar resolveConfig = function resolveConfig(props) {\n var themeConf = props.theme && props.theme[THEME_CONF] || {};\n\n var conf = _objectSpread2(_objectSpread2(_objectSpread2({}, BASE_CONF), themeConf), {}, {\n container: _objectSpread2(_objectSpread2({}, BASE_CONF.container), themeConf.container),\n breakpoints: _objectSpread2(_objectSpread2({}, BASE_CONF.breakpoints), themeConf.breakpoints)\n });\n\n conf.media = Object.keys(conf.breakpoints).reduce(function (media, breakpoint) {\n var breakpointWidth = conf.breakpoints[breakpoint];\n media[breakpoint] = makeMedia([conf.mediaQuery, breakpoint !== 0 && \"(min-width: \" + breakpointWidth + \"px)\"].filter(Boolean).join(' and '));\n return media;\n }, {});\n return conf;\n};\n\nvar DIMENSION_NAMES = ['xs', 'sm', 'md', 'lg'];\n\nfunction config(props) {\n var cacheId = makeCacheId(props);\n\n if (configCache[0] === cacheId) {\n return configCache[1];\n }\n\n var conf = resolveConfig(props);\n configCache[0] = cacheId;\n configCache[1] = conf;\n return conf;\n}\n\nfunction makeMedia(media) {\n return function () {\n return css(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteralLoose([\"\\n @media \", \" {\\n \", \"\\n }\\n \"])), media, css.apply(void 0, arguments));\n };\n}\n\nvar _templateObject$2, _templateObject2$2, _templateObject3$2;\n\nvar Grid = styled.div(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteralLoose([\"\\n margin-right: auto;\\n margin-left: auto;\\n padding-right: \", \";\\n padding-left: \", \";\\n\\n \", \"\\n\"])), function (p) {\n return config(p).outerMargin + 'rem';\n}, function (p) {\n return config(p).outerMargin + 'rem';\n}, function (p) {\n return !p.fluid && css(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteralLoose([\"\\n \", \"\\n \"])), DIMENSION_NAMES.map(function (t) {\n return config(p).container[t] && config(p).media[t](_templateObject3$2 || (_templateObject3$2 = _taggedTemplateLiteralLoose([\"\\n width: \", \"rem;\\n \"])), function (p) {\n return config(p).container[t];\n });\n }));\n});\nGrid.displayName = 'Grid';\nGrid.propTypes = {\n fluid: PropTypes.bool,\n children: PropTypes.node\n};\n\nvar _templateObject$1, _templateObject2$1, _templateObject3$1, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;\n\nvar ModificatorType$1 = PropTypes.oneOf(DIMENSION_NAMES);\nvar Row = styled.div(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose([\"\\n box-sizing: border-box;\\n display: flex;\\n flex: 0 1 auto;\\n flex-direction: row;\\n flex-wrap: wrap;\\n margin-right: \", \"rem;\\n margin-left: \", \"rem;\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return config(p).gutterWidth / 2 * -1;\n}, function (p) {\n return config(p).gutterWidth / 2 * -1;\n}, function (p) {\n return p.reverse && \"\\n flex-direction: row-reverse;\\n \";\n}, function (p) {\n return p.start && config(p).media[p.start](_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteralLoose([\"\\n justify-content: flex-start;\\n \"])));\n}, function (p) {\n return p.center && config(p).media[p.center](_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteralLoose([\"\\n justify-content: center;\\n \"])));\n}, function (p) {\n return p.end && config(p).media[p.end](_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose([\"\\n justify-content: flex-end;\\n \"])));\n}, function (p) {\n return p.top && config(p).media[p.top](_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose([\"\\n align-items: flex-start;\\n \"])));\n}, function (p) {\n return p.middle && config(p).media[p.middle](_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose([\"\\n align-items: center;\\n \"])));\n}, function (p) {\n return p.bottom && config(p).media[p.bottom](_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose([\"\\n align-items: flex-end;\\n \"])));\n}, function (p) {\n return p.around && config(p).media[p.around](_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose([\"\\n justify-content: space-around;\\n \"])));\n}, function (p) {\n return p.between && config(p).media[p.between](_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose([\"\\n justify-content: space-between;\\n \"])));\n}, function (p) {\n return p.first && config(p).media[p.first](_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose([\"\\n order: -1;\\n \"])));\n}, function (p) {\n return p.last && config(p).media[p.last](_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose([\"\\n order: 1;\\n \"])));\n});\nRow.displayName = 'Row';\nRow.propTypes = {\n reverse: PropTypes.bool,\n start: ModificatorType$1,\n center: ModificatorType$1,\n end: ModificatorType$1,\n top: ModificatorType$1,\n middle: ModificatorType$1,\n bottom: ModificatorType$1,\n around: ModificatorType$1,\n between: ModificatorType$1,\n first: ModificatorType$1,\n last: ModificatorType$1,\n children: PropTypes.node\n};\n\nvar _templateObject, _templateObject2, _templateObject3;\n\nvar ModificatorType = PropTypes.oneOfType([PropTypes.number, PropTypes.bool]);\nvar offsetProps = DIMENSION_NAMES.map(function (d) {\n return d + 'Offset';\n});\nvar DimensionPropTypes = DIMENSION_NAMES.reduce(function (propTypes, dimension) {\n propTypes[dimension] = ModificatorType;\n propTypes[dimension + 'Offset'] = PropTypes.number;\n return propTypes;\n}, {});\nvar Col = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose([\"\\n box-sizing: border-box;\\n flex: 0 0 auto;\\n padding-right: \", \"rem;\\n padding-left: \", \"rem;\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return config(p).gutterWidth / 2;\n}, function (p) {\n return config(p).gutterWidth / 2;\n}, function (p) {\n return p.reverse && \"\\n flex-direction: column-reverse;\\n \";\n}, function (p) {\n return Object.keys(p).filter(function (k) {\n return ~DIMENSION_NAMES.indexOf(k);\n }).sort(function (k1, k2) {\n return DIMENSION_NAMES.indexOf(k1) - DIMENSION_NAMES.indexOf(k2);\n }).map(function (k) {\n return config(p).media[k](_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose([\"\", \"\"])), isInteger(p[k]) // Integer value\n ? \"\\n flex-basis: \" + 100 / config(p).gridSize * p[k] + \"%;\\n max-width: \" + 100 / config(p).gridSize * p[k] + \"%;\\n display: block;\\n \" // Boolean\n : p[k] // Auto-width\n ? \"\\n flex-grow: 1;\\n flex-basis: 0;\\n max-width: 100%;\\n display: block;\\n \" // Hide element\n : 'display: none;');\n });\n}, function (p) {\n return Object.keys(p).filter(function (k) {\n return ~offsetProps.indexOf(k);\n }).map(function (k) {\n return config(p).media[k.replace(/Offset$/, '')](_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose([\"\\n margin-left: \", \"%;\\n \"])), 100 / config(p).gridSize * p[k]);\n });\n});\nCol.displayName = 'Col';\nCol.propTypes = _objectSpread2(_objectSpread2({}, DimensionPropTypes), {}, {\n reverse: PropTypes.bool,\n children: PropTypes.node\n});\nexport { BASE_CONF, Col, Grid, Row, config };","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n\n\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n return value === value ? value : 0;\n}\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n\n\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = isInteger;","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n } // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n\n\n var it;\n\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n\n return true;\n }\n\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n return true;\n } // END: Modifications\n\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n } // END: fast-deep-equal\n // START: react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact\n\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n continue;\n } // all other properties should be traversed as usual\n\n\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n } // END: react-fast-compare\n // START: fast-deep-equal\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n};","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n } // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;","/**\n * Returns the value of `props[path]` or `defaultValue`\n * @example\n * import styled from \"styled-components\";\n * import { prop } from \"styled-tools\";\n *\n * const Button = styled.button`\n * color: ${prop(\"color\", \"red\")};\n * `;\n */\nvar prop = function prop(path, defaultValue) {\n return function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (typeof props[path] !== \"undefined\") {\n return props[path];\n }\n\n if (path && path.indexOf(\".\") > 0) {\n var paths = path.split(\".\");\n var length = paths.length;\n var object = props[paths[0]];\n var index = 1;\n\n while (object != null && index < length) {\n object = object[paths[index]];\n index += 1;\n }\n\n if (typeof object !== \"undefined\") {\n return object;\n }\n }\n\n return defaultValue;\n };\n};\n\nexport default prop;","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/* eslint-disable no-use-before-define */\n\n\nimport prop from \"./prop\";\n\nvar parseFunction = function parseFunction(props, test) {\n return Boolean(test(props));\n};\n\nvar parseObject = function parseObject(props, test) {\n var keys = Object.keys(test);\n var length = keys.length;\n\n for (var index = 0; index < length; index += 1) {\n var key = keys[index];\n var expected = test[key];\n var value = prop(key)(props);\n\n if (expected !== value) {\n return false;\n }\n }\n\n return true;\n};\n\nvar parseString = function parseString(props, test) {\n return Boolean(prop(test)(props));\n};\n\nvar parseMap = {\n function: parseFunction,\n object: parseObject,\n string: parseString\n};\n/**\n * Returns `pass` if prop is truthy. Otherwise returns `fail`\n * @example\n * import styled from \"styled-components\";\n * import { ifProp, palette } from \"styled-tools\";\n *\n * const Button = styled.button`\n * background-color: ${ifProp(\"transparent\", \"transparent\", palette(0))};\n * color: ${ifProp([\"transparent\", \"accent\"], palette(\"secondary\"))};\n * font-size: ${ifProp({ size: \"large\" }, \"20px\", ifProp({ size: \"medium\" }, \"16px\", \"12px\"))};\n * `;\n */\n\nvar ifProp = function ifProp(test) {\n var pass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n return function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var result = true;\n\n if (Array.isArray(test)) {\n var length = test.length;\n var index = 0;\n\n while (result && index < length) {\n result = parseMap[_typeof(test[index])](props, test[index]);\n index += 1;\n }\n } else {\n result = parseMap[_typeof(test)](props, test);\n }\n\n var value = result ? pass : fail;\n return typeof value === \"function\" ? value(props) : value;\n };\n};\n\nexport default ifProp;","import prop from \"./prop\";\n/**\n * Switches on a given prop. Returns the value or function for a given prop value. Third parameter is default value.\n * @example\n * import styled, { css } from \"styled-components\";\n * import { switchProp, prop } from \"styled-tools\";\n *\n * const Button = styled.button`\n * font-size: ${switchProp(prop(\"size\", \"medium\"), {\n * small: prop(\"theme.sizes.sm\", \"12px\"),\n * medium: prop(\"theme.sizes.md\", \"16px\"),\n * large: prop(\"theme.sizes.lg\", \"20px\")\n * }, prop(\"theme.sizes.md\", \"16px\"))};\n * ${switchProp(\"theme.kind\", {\n * light: css`\n * color: LightBlue;\n * `,\n * dark: css`\n * color: DarkBlue;\n * `\n * }, css`color: black;`)}\n * `;\n *\n * \n */\n\nvar switchProp = function switchProp(needle, cases, defaultCase) {\n return function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var value = typeof needle === \"function\" ? needle(props) : prop(needle)(props);\n var finalCases = typeof cases === \"function\" ? cases(props) : cases;\n\n if (value in finalCases) {\n return finalCases[value];\n }\n\n return defaultCase;\n };\n};\n\nexport default switchProp;","function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nimport prop from \"./prop\";\n/**\n * Calls a function passing properties values as arguments.\n * @example\n * // example with polished\n * import styled from \"styled-components\";\n * import { darken } from \"polished\";\n * import { withProp, prop } from \"styled-tools\";\n *\n * const Button = styled.button`\n * border-color: ${withProp(prop(\"theme.primaryColor\", \"blue\"), darken(0.5))};\n * font-size: ${withProp(\"theme.size\", size => `${size + 1}px`)};\n * background: ${withProp([\"foo\", \"bar\"], (foo, bar) => `${foo}${bar}`)};\n * `;\n */\n\nvar withProp = function withProp(needle, fn) {\n return function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Array.isArray(needle)) {\n var needles = needle.map(function (arg) {\n return withProp(arg, function (x) {\n return x;\n })(props);\n });\n return fn.apply(void 0, _toConsumableArray(needles));\n }\n\n if (typeof needle === \"function\") {\n return fn(needle(props));\n }\n\n return fn(prop(needle)(props));\n };\n};\n\nexport default withProp;","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Node & {\n childImageSharp?: IGatsbyImageDataParent\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent | any\n): node is IGatsbyImageParent => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (node: ImageDataLike): IGatsbyImageData | undefined => {\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture: React.FC = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { Fragment, FunctionComponent } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = ``\n }\n\n if (layout === `constrained`) {\n sizer = `
`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n \n )\n }\n\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent =\n function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {SERVER ? : null}\n \n )\n }\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return \n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC = function MainImage(props) {\n return (\n <>\n \n \n >\n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nconst GatsbyImageHydrator: FC = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n document.addEventListener(`load`, function onLoadListener() {\n document.removeEventListener(`load`, onLoadListener)\n\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","/**\n * Helper function for better detection of active links.\n */\nconst detectActive = ({ href, location }) => {\n const updatedPath = location.pathname + location.hash;\n\n return {\n ...(href === updatedPath\n ? {\n 'data-active': true,\n }\n : {}),\n };\n};\n\nexport default detectActive;\n","import { useEffect } from 'react';\n\nconst useOnClickOutside = (ref, handler) => {\n useEffect(() => {\n /** Detect if it's a mobile device */\n const isTouchDevice = 'ontouchstart' in document.documentElement;\n const eventListener = isTouchDevice ? 'touchstart' : 'mousedown';\n\n const listener = (event) => {\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n };\n document.addEventListener(eventListener, listener);\n return () => {\n document.removeEventListener(eventListener, listener);\n };\n }, [ref, handler]);\n};\n\nexport default useOnClickOutside;\n","import { useState, useEffect } from 'react';\nimport throttle from 'lodash/throttle';\n\nconst getWindowSize = () => {\n if (typeof window !== 'undefined') {\n return {\n innerHeight: window.innerHeight,\n innerWidth: window.innerWidth,\n outerHeight: window.outerHeight,\n outerWidth: window.outerWidth,\n };\n }\n return {\n innerWidth: null,\n innerHeight: null,\n outerWidth: null,\n outerHeight: null,\n };\n};\n\nfunction useWindowSize() {\n const [windowSize, setWindowSize] = useState(getWindowSize());\n\n // run on mount\n useEffect(() => {\n setWindowSize(getWindowSize());\n }, []);\n\n // set resize handler once on mount and clean before unmount\n useEffect(() => {\n const handleResize = throttle(() => {\n setWindowSize(getWindowSize());\n }, 100);\n window.addEventListener('resize', handleResize);\n\n return () => {\n handleResize.cancel();\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return windowSize;\n}\n\nexport default useWindowSize;\n","export default {\n min: {\n 1430: '89.375em',\n 1410: '88.125em',\n 1350: '84.375em',\n 1290: '80.625em',\n 1200: '75em',\n 1080: '67.5em',\n 1024: '64em',\n 960: '60em',\n 840: '52.5em',\n 768: '48em',\n 720: '45em',\n 600: '37.5em',\n 560: '35em',\n 480: '30em',\n 360: '22.5em',\n 320: '20em',\n },\n\n max: {\n 1530: '95.625em',\n 1430: '89.3125em',\n 1410: '88.0625em',\n 1350: '84.3125em',\n 1290: '80.5625em',\n 1200: '74.9375em',\n 1080: '67.4375em',\n 1024: '63.9375em',\n 960: '59.9375em',\n 840: '52.4375em',\n 768: '47.9375em',\n 720: '44.9375em',\n 600: '37.4375em',\n 560: '34.9375em',\n 480: '29.9375em',\n 360: '22.4375em',\n 320: '19.9375em',\n },\n\n layout: {\n phoneStart: `${320 / 16}em`,\n phoneEnd: `${767 / 16}em`,\n tabletStart: `${768 / 16}em`,\n tabletEnd: `${1023 / 16}em`,\n laptopStart: `${1024 / 16}em`,\n laptopEnd: `${1353 / 16}em`,\n desktopStart: `${1354 / 16}em`,\n },\n};\n","// Define what props.theme will look like\nconst theme = {\n flexboxgrid: {\n // Defaults\n gridSize: 12, // columns\n gutterWidth: 3, // rem\n outerMargin: 1.5, // rem\n mediaQuery: 'only screen',\n container: {\n sm: 54, // rem\n md: 72, // rem\n lg: 121.6, // rem\n },\n breakpoints: {\n xs: 0, // px\n sm: 576, // px\n md: 768, // px\n lg: 992, // px\n },\n },\n\n colors: {\n themePrimary: '#4ab4e6',\n themePrimaryLight: '#60d2f6',\n themeDark: '#1f3643',\n themeDarker: '#001826',\n neutralPrimary: '#6f7175',\n neutralLight: '#f7f7f7',\n neutralLightAlt: '#efefef',\n bgPrimary: '#ffffff',\n },\n\n fonts: {\n main: \"'Helvetica Neue LT', 'Helvetica Neue', Helvetica, Arial, sans-serif\",\n bold: \"'Helvetica Neue LT Bold', 'Helvetica Neue', Helvetica, Arial, sans-serif\",\n },\n};\n\nexport default theme;\n","export const fontWeightLight = 300;\nexport const fontWeightRegular = 500;\nexport const fontWeightMedium = 600;\n\nexport const fontSizeSuper = 88;\nexport const fontSizeHeading1 = 64;\nexport const fontSizeHeading2 = 48;\nexport const fontSizeHeading3 = 40;\nexport const fontSizeHeading4 = 32;\nexport const fontSizeHeading5 = 26;\nexport const fontSizeHeading6 = 20;\nexport const fontSizeHeading7 = 16;\nexport const fontSizeHeading8 = 11;\nexport const fontSizeBodyArticle = 20;\nexport const fontSizeBodyArticleSmall = 16;\nexport const fontSizeBodySmall = 14;\nexport const fontSizeAccent = 16;\nexport const fontSizeUppercase = 11;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'styled-components';\nimport { switchProp } from 'styled-tools';\nimport mq from '../common/mq';\nimport {\n fontSizeHeading1,\n fontSizeHeading3,\n fontSizeHeading4,\n fontSizeHeading5,\n fontSizeHeading7,\n fontSizeUppercase,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n} from '../common/typography';\n\nconst VariantCaps = css`\n text-transform: uppercase;\n`;\n\nconst Truncate = css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst Underline = css`\n &::after {\n content: '';\n display: block;\n background-color: ${(props) => props.theme.colors.themePrimary};\n height: 4px;\n width: 100px;\n\n ${switchProp('underline', {\n left: css`\n margin: 10px 0;\n `,\n\n center: css`\n margin: 10px auto;\n `,\n })}\n }\n`;\n\nconst Shadow = css`\n text-shadow: 2px 4px 3px rgba(0, 0, 0, 0.3);\n`;\n\nconst Header = css`\n color: ${(props) => props.theme.colors.themeDark};\n padding-top: 80px;\n margin-top: 0;\n\n @media (max-width: ${mq.max[768]}) {\n padding-top: 20px;\n }\n`;\n\nconst StyledHeading = styled.h3`\n color: ${(props) => props.$color || props.theme.colors.themeDark};\n line-height: 1.2;\n\n ${switchProp('size', {\n tiny: css`\n font-size: ${fontSizeUppercase}px;\n `,\n\n small: css`\n margin-top: 1.25em;\n margin-bottom: 0.25em;\n font-size: ${fontSizeHeading7}px;\n\n @media (min-width: ${mq.min[600]}) {\n font-size: ${fontSizeHeading7 + 2}px;\n }\n `,\n\n medium: css`\n margin-top: 1em;\n margin-bottom: 0.5em;\n font-size: ${fontSizeHeading5}px;\n line-height: ${40 / 28};\n `,\n\n large: css`\n margin-top: 0.75em;\n margin-bottom: 0.5em;\n font-size: ${fontSizeHeading4}px;\n\n @media (min-width: ${mq.min[600]}) {\n font-size: ${fontSizeHeading3}px;\n }\n `,\n\n huge: css`\n margin-top: 0.5em;\n margin-bottom: 0;\n font-size: ${fontSizeHeading4 + 2}px;\n letter-spacing: -1px;\n line-height: ${36 / 30};\n\n @media (min-width: ${mq.min[600]}) {\n font-size: ${fontSizeHeading1}px;\n line-height: ${70 / 64};\n }\n `,\n })}\n\n ${switchProp('weight', {\n extraThin: css`\n font-weight: ${fontWeightLight};\n `,\n\n thin: css`\n font-weight: ${fontWeightLight};\n `,\n\n normal: css`\n font-weight: ${fontWeightRegular};\n `,\n\n thick: css`\n font-family: ${(props) => props.theme.fonts.bold};\n font-weight: ${fontWeightMedium};\n `,\n })}\n\n ${switchProp('tracking', {\n tight: css`\n letter-spacing: -1px;\n `,\n\n loose: css`\n letter-spacing: 1px;\n `,\n })}\n\n ${(props) => props.caps && VariantCaps}\n ${(props) => props.truncate && Truncate}\n ${(props) => props.underline && Underline}\n ${(props) => props.header && Header}\n ${(props) => props.shadow && Shadow}\n`;\n\nStyledHeading.defaultProps = {};\n\n/**\n * Heading component\n */\nfunction Heading({\n children,\n level,\n size,\n color,\n weight,\n tracking,\n truncate,\n caps,\n underline,\n className,\n shadow,\n ...rest\n}) {\n const HeadingLevel = `h${level}`;\n\n return (\n \n {children}\n \n );\n}\n\nHeading.propTypes = {\n /**\n * Text for the heading\n */\n children: PropTypes.node.isRequired,\n\n /**\n * Creates the heading element\n */\n level: PropTypes.oneOf([1, 2, 3, 4, 5, 6]).isRequired,\n\n /**\n * Declares the font size of the heading\n */\n size: PropTypes.oneOf(['huge', 'large', 'medium', 'small', 'tiny']).isRequired,\n\n /**\n * Declares the color of the heading\n */\n color: PropTypes.string,\n\n /**\n * Adjusts the font weight of the heading\n */\n weight: PropTypes.oneOf(['thick', 'normal', 'thin', 'extraThin']),\n\n /**\n * Controls the letter spacing\n */\n tracking: PropTypes.oneOf(['tight', 'normal', 'loose']),\n\n /**\n * Whether or not to hide the text overflow with an ellipsis\n */\n truncate: PropTypes.bool,\n\n /**\n * Whether or not to set the heading in all caps\n */\n caps: PropTypes.bool,\n\n /**\n * Whether or not to add underline to the heading\n */\n underline: PropTypes.oneOf(['left', 'center']),\n\n /**\n * Whether or not heading is a page header\n */\n header: PropTypes.bool,\n /**\n * Whether or not to render a drop shadow\n */\n shadow: PropTypes.bool,\n};\n\nHeading.defaultProps = {\n color: '#1f3643',\n weight: 'normal',\n tracking: 'normal',\n truncate: false,\n caps: false,\n underline: null,\n header: false,\n shadow: false,\n};\n\nexport default Heading;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport assign from 'object-assign';\n\nfunction getIconDimensions(height, width) {\n if (height && width) {\n return { height, width };\n }\n\n if (!height && width) {\n return { height: width, width };\n }\n\n if (height && !width) {\n return { height, width: height };\n }\n\n return {\n height: '1em',\n width: '1em',\n };\n}\n\nfunction getIconAriaData(label) {\n const aria = {};\n\n if (label) {\n aria['aria-label'] = label;\n } else {\n aria['aria-hidden'] = 'true';\n }\n\n return aria;\n}\n\nfunction Icon(props) {\n const { children, className, fill, height, label, viewBox, width } = props;\n const dimensions = getIconDimensions(height, width);\n const aria = getIconAriaData(label);\n\n const style = {\n display: 'inline-block',\n fill: fill || 'currentColor',\n height: dimensions.height,\n lineHeight: 1,\n verticalAlign: 'middle',\n width: dimensions.width,\n };\n\n return (\n \n );\n}\n\nIcon.propTypes = {\n children: PropTypes.node.isRequired,\n viewBox: PropTypes.string,\n className: PropTypes.string,\n fill: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.string,\n style: PropTypes.oneOfType([PropTypes.object]),\n};\n\nIcon.defaultProps = {\n viewBox: '0 0 32 32',\n className: '',\n fill: '',\n width: 0,\n height: 0,\n label: '',\n style: {},\n};\n\nexport default Icon;\n","import React from 'react';\nimport Icon from '../Icon';\n\nfunction ChevronDownGlyph(props) {\n return (\n \n \n \n );\n}\n\nexport default ChevronDownGlyph;\n","import React from 'react';\nimport Icon from '../Icon';\n\nfunction ChevronRight(props) {\n return (\n \n \n \n );\n}\n\nexport default ChevronRight;\n","import React from 'react';\nimport Icon from '../Icon';\n\nfunction Close20(props) {\n return (\n \n \n \n );\n}\n\nexport default Close20;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'styled-components';\nimport { switchProp } from 'styled-tools';\n\n// Stretch the mask container at the bottom\nconst Curve = styled.svg`\n position: absolute;\n ${switchProp('$position', {\n top: css`\n top: 0;\n `,\n bottom: css`\n bottom: 0;\n `,\n })}\n z-index: 1;\n\n path {\n fill: ${(props) => props.$color || 'white'};\n }\n`;\n\nfunction MaskOverlay({ color, flipped, position }) {\n if (position === 'top') {\n // Return vertically flipped version of the SVG\n return (\n \n {flipped ? (\n \n ) : (\n \n )}\n \n );\n }\n\n return (\n \n {flipped ? (\n \n ) : (\n \n )}\n \n );\n}\n\nMaskOverlay.propTypes = {\n color: PropTypes.string,\n flipped: PropTypes.bool,\n position: PropTypes.oneOf(['top', 'bottom']),\n};\n\nMaskOverlay.defaultProps = {\n color: 'white',\n flipped: false,\n position: 'bottom',\n};\n\nexport default MaskOverlay;\n","import React from 'react';\nimport Icon from '../Icon';\n\nfunction Sliders(props) {\n return (\n \n \n \n \n );\n}\n\nexport default Sliders;\n","import styled, { css } from 'styled-components';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Close20 from '../Icons/Close20';\nimport Sliders from '../Icons/Sliders';\nimport mq from '../../common/mq';\n\nconst ActiveStyle = css`\n border-left: 0.2rem solid rgba(14, 190, 255, 0.4);\n border-right: 0.2rem solid rgba(14, 190, 255, 0.4);\n border-bottom: 0.2rem solid rgba(14, 190, 255, 0.4);\n`;\n\nconst MenuButton = styled.button`\n box-sizing: border-box;\n margin-right: -0.8rem;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-family: inherit;\n vertical-align: baseline;\n display: inline-block;\n background: none;\n appearance: none;\n border: 0;\n padding: 0;\n cursor: pointer;\n width: 100%;\n width: 5rem;\n height: 5rem;\n border: 0.2rem solid transparent;\n transition: background-color 110ms, border-color 110ms;\n\n &:focus {\n border-color: #ffffff;\n outline: none;\n }\n\n > *,\n > ::before,\n > ::after {\n box-sizing: inherit;\n }\n\n &::-moz-focus-inner {\n border: 0;\n }\n\n > svg {\n fill: #171717;\n }\n\n @media (min-width: ${mq.min[768]}) {\n display: none;\n }\n\n ${(props) => props.isActive && ActiveStyle}\n`;\n\nfunction HeaderMenuButton({\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onClick,\n isActive,\n customIcon,\n ...rest\n}) {\n const accessibilityLabel = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n };\n\n return (\n \n {isActive ? (\n \n ) : (\n customIcon || \n )}\n \n );\n}\n\nHeaderMenuButton.propTypes = {\n /**\n * Required props for accessibility label on the underlying menu button\n */\n 'aria-label': PropTypes.string,\n 'aria-labelledby': PropTypes.string,\n\n /**\n * Optionally provide an onClick handler that is called when the underlying\n * button fires it's onclick event\n */\n onClick: PropTypes.func,\n\n /**\n * Specify whether the action is currently active\n */\n isActive: PropTypes.bool,\n\n /**\n * Custom icon to be rendered\n */\n customIcon: PropTypes.node,\n};\n\nHeaderMenuButton.defaultProps = {\n 'aria-label': '',\n 'aria-labelledby': '',\n onClick: null,\n isActive: false,\n customIcon: null,\n};\n\nexport default HeaderMenuButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link as GatsbyLink, graphql, useStaticQuery } from 'gatsby';\nimport { getSrc } from 'gatsby-plugin-image';\nimport styled from 'styled-components';\nimport mq from '../../common/mq';\n\nconst LogoLink = styled(GatsbyLink)`\n display: flex;\n align-items: center;\n white-space: nowrap;\n user-select: none;\n height: 32px;\n\n @media (min-width: ${mq.min[768]}) and (max-width: ${mq.max[1024]}) {\n height: 25px;\n }\n\n @media (max-width: ${mq.max[768]}) {\n height: 19px;\n margin-right: auto;\n margin-left: 10px;\n }\n`;\n\nconst LogoImage = styled.img`\n align-self: center;\n max-height: 100%;\n`;\n\nfunction SiteLogo({ className, href }) {\n const { file } = useStaticQuery(\n graphql`\n {\n file(relativePath: { eq: \"images/ocius-logo-header.png\" }) {\n childImageSharp {\n gatsbyImageData(width: 200, placeholder: BLURRED, layout: CONSTRAINED)\n }\n }\n }\n `\n );\n\n // Get logo image\n const logo = getSrc(file);\n\n return (\n \n \n \n );\n}\n\nSiteLogo.propTypes = {\n className: PropTypes.string,\n href: PropTypes.string,\n};\n\nSiteLogo.defaultProps = {\n className: '',\n href: '/',\n};\n\nexport default SiteLogo;\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n } // Special case for innerHTML which doesn't work lowercased\n\n\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n }); // Update seen tags with tags from this instance\n\n var keys = Object.keys(instanceSeenTags);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps; // assigning into an array to define toString function on it\n\n\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport { StaticQuery, graphql } from 'gatsby';\n\nconst detailsQuery = graphql`\n query DefaultSEOQuery {\n site {\n siteMetadata {\n title\n description\n authorTwitterAccount\n }\n }\n }\n`;\n\nfunction SEO({ description, lang, meta, keywords, title, image }) {\n return (\n {\n const metaDescription = description || data.site.siteMetadata.description;\n return (\n 0\n ? {\n name: `keywords`,\n content: keywords.join(`, `),\n }\n : []\n )\n .concat(meta)}\n />\n );\n }}\n />\n );\n}\n\nSEO.propTypes = {\n description: PropTypes.string,\n lang: PropTypes.string,\n meta: PropTypes.arrayOf(PropTypes.string),\n keywords: PropTypes.arrayOf(PropTypes.string),\n title: PropTypes.string.isRequired,\n image: PropTypes.string,\n};\n\nSEO.defaultProps = {\n description:\n \"OCIUS Technology's Unmanned Surface Vessels (USVs) provide innovative autonomous solutions for persistent maritime surveillance\",\n lang: `en`,\n meta: [],\n keywords: ['USV', 'unmmanned', 'autonomous', 'unmanned surface vessel', 'maritime', 'drones'],\n image: '',\n};\n\nexport default SEO;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'styled-components';\n\nconst NavWrapper = styled.div`\n transition: transform 0.15s cubic-bezier(0.2, 0.2, 0.38, 0.9), top 110ms;\n width: 280px;\n position: fixed;\n top: 0px;\n bottom: 0;\n z-index: 5999;\n scrollbar-width: none;\n transform: ${(props) =>\n props.$direction === 'right' ? 'translateX(280px)' : 'translateX(-280px)'};\n\n ${(props) =>\n props.$direction === 'right' &&\n css`\n right: 0;\n `}\n\n ${(props) =>\n props.$expanded &&\n css`\n transform: translateX(0px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n\n @media (min-width: 100rem) {\n box-shadow: none;\n }\n `}\n`;\n\nfunction SideNavWrapper({ expanded, direction, children }) {\n return (\n \n {children}\n \n );\n}\n\nSideNavWrapper.propTypes = {\n /**\n * Specify the children to be rendered inside of the `SideNavWrapper`\n */\n children: PropTypes.node.isRequired,\n\n /**\n * Property to indicate if the side nav container is open (or not). Use to\n * keep local state and styling in step with the SideNav expansion state.\n */\n expanded: PropTypes.bool,\n\n /**\n * Property to indicate the side nav open direction - from left or from right.\n */\n direction: PropTypes.oneOf(['left', 'right']),\n};\n\nSideNavWrapper.defaultProps = {\n expanded: false,\n direction: 'left',\n};\n\nexport default SideNavWrapper;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport Close20 from '../Icons/Close20';\nimport ChevronRight from '../Icons/ChevronRight';\n\nconst NavFooter = styled.footer`\n flex: 0 0 4.8rem;\n width: 100%;\n background-color: ${(props) => props.theme.colors.bgPrimary};\n`;\n\nconst ButtonToggle = styled.button`\n outline: 2px solid transparent;\n outline-offset: -2px;\n box-sizing: border-box;\n margin: 0;\n font-size: 100%;\n font-family: inherit;\n vertical-align: baseline;\n display: inline-block;\n background: none;\n border: 0;\n cursor: pointer;\n appearance: none;\n width: 100%;\n height: 100%;\n padding: 0 0 0 1.6rem;\n text-align: left;\n transition: outline 0.11s;\n\n :focus {\n outline: 2px solid ${(props) => props.theme.colors.themePrimary};\n outline-offset: -2px;\n }\n\n @media screen and (prefers-contrast) {\n :focus {\n outline-style: dotted;\n }\n }\n`;\n\nconst NavIcon = styled.div`\n display: flex;\n flex: 0 0 1.6rem;\n align-items: center;\n justify-content: center;\n margin-right: 2.4rem;\n\n > svg {\n width: 1.6rem;\n height: 1.6rem;\n fill: #525252;\n }\n`;\n\nconst AssistiveText = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n visibility: inherit;\n clip: rect(0, 0, 0, 0);\n`;\n\n/**\n * SideNavFooter is used for rendering the button at the bottom of the side\n * navigation that is a part of the UI Shell. It is responsible for handling the\n * user interaction to expand or collapse the side navigation.\n */\nfunction SideNavFooter({ assistiveText, className, expanded, onToggle }) {\n return (\n \n onToggle(evt)} title={assistiveText}>\n {expanded ? : }\n {assistiveText}\n \n \n );\n}\n\nSideNavFooter.propTypes = {\n /**\n * Provide text to be read to screen readers and shown as a tooltip when\n * interacting with the toggle button in the footer\n */\n assistiveText: PropTypes.string,\n\n /**\n * Specify whether the side navigation is expanded or collapsed\n */\n expanded: PropTypes.bool.isRequired,\n\n /**\n * Provide a function that is called when the toggle button is interacted\n * with. Useful for controlling the expansion state of the side navigation.\n */\n onToggle: PropTypes.func.isRequired,\n};\n\nSideNavFooter.defaultProps = {\n assistiveText: 'Toggle opening or closing the side navigation',\n};\n\nexport default SideNavFooter;\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'styled-components';\nimport SideNavFooter from './SideNavFooter';\n\nconst Nav = styled.nav`\n display: flex;\n flex-direction: column;\n height: 100%;\n position: fixed;\n top: 5rem;\n bottom: 0;\n left: 0;\n z-index: 6000;\n width: 28rem;\n max-width: 28rem;\n overflow-x: hidden;\n overflow-y: auto;\n color: #565656;\n background-color: #ffffff;\n transition: width 0.11s cubic-bezier(0.2, 0, 1, 0.9);\n will-change: width;\n padding: 1.6rem 0 0;\n\n ${(props) =>\n !props.$expanded &&\n css`\n @media (max-width: 100rem) {\n width: 0;\n }\n `}\n`;\n\nconst SideNav = React.forwardRef((props, ref) => {\n const {\n expanded: expandedProp,\n defaultExpanded,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n children,\n onToggle,\n className,\n } = props;\n const { current: controlled } = useRef(expandedProp !== undefined);\n const [expandedState, setExpandedState] = useState(defaultExpanded);\n const expanded = controlled ? expandedProp : expandedState;\n\n const handleToggle = (event, value = !expanded) => {\n if (!controlled) {\n setExpandedState(value);\n }\n if (onToggle) {\n onToggle(event, value);\n }\n };\n\n const accessibilityLabel = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n };\n\n const assistiveText = expanded ? 'Close' : 'Open';\n\n return (\n \n );\n});\n\nSideNav.propTypes = {\n /**\n * If `true`, the SideNav will be expanded, otherwise it will be collapsed.\n * Using this prop causes SideNav to become a controled component.\n */\n expanded: PropTypes.bool,\n\n /**\n * If `true`, the SideNav will be open on initial render.\n */\n defaultExpanded: PropTypes.bool,\n\n /**\n * An optional listener that is called when an event that would cause\n * toggling the SideNav occurs.\n *\n * @param {object} event\n * @param {boolean} value\n */\n onToggle: PropTypes.func,\n\n /**\n * Optionally provide props for accessibility label on the underlying menu\n */\n 'aria-label': PropTypes.string,\n 'aria-labelledby': PropTypes.string,\n\n /**\n * Optionally provide a custom class to apply to the underlying
node\n */\n className: PropTypes.string,\n};\n\nSideNav.defaultProps = {\n className: '',\n defaultExpanded: false,\n onToggle: null,\n expanded: false,\n 'aria-label': '',\n 'aria-labelledby': '',\n};\n\nexport default SideNav;\n","import SideNav from './SideNav';\n\nexport default SideNav;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Col } from '@r007/react-styled-flexboxgrid';\nimport { graphql, useStaticQuery } from 'gatsby';\nimport { switchProp } from 'styled-tools';\nimport styled, { css, keyframes } from 'styled-components';\nimport MaskOverlay from './MaskOverlay';\nimport mq from '../common/mq';\n\nexport const Spacing = styled.div`\n height: ${(props) => props.$value || '50px'};\n\n @media (max-width: ${mq.max[1024]}) {\n height: ${(props) => props.$mdValue || '40px'};\n }\n\n @media (max-width: ${mq.max[768]}) {\n height: ${(props) => props.$xsValue || '30px'};\n }\n`;\n\nexport const FirstColumnMobile = styled(Col)`\n @media (max-width: ${mq.max[1024]}) {\n order: 1;\n }\n`;\n\nexport const SecondColumnMobile = styled(Col)`\n @media (max-width: ${mq.max[1024]}) {\n order: 2;\n }\n`;\n\nexport const FormWrapper = styled.div`\n padding: 1.5rem;\n flex: 1 1;\n\n hr {\n border: 0;\n height: 1px;\n background: rgba(0, 0, 0, 0.1);\n margin: 30px 0rem 16px;\n }\n`;\n\nexport const FormItem = styled.div`\n font-size: 1.5rem;\n margin: 0 0 1rem;\n`;\n\nconst LogoBackgroundDiv = styled.div`\n background-image: ${(props) => `url(${props.$image})` || 'none'};\n background-repeat: no-repeat;\n\n ${switchProp('$position', {\n left: css`\n background-position: -30% center;\n `,\n\n right: css`\n background-position: 130% center;\n `,\n })}\n`;\n\nexport function LogoBackgroundWrapper({ children, position }) {\n const data = useStaticQuery(graphql`\n query BackgroundQuery {\n logoImage: file(relativePath: { eq: \"images/ocius-logo-transparent.png\" }) {\n childImageSharp {\n gatsbyImageData(quality: 100, layout: FULL_WIDTH)\n }\n }\n }\n `);\n\n return (\n // Use the styled component here\n \n {children}\n \n );\n}\n\nLogoBackgroundWrapper.propTypes = {\n children: PropTypes.node,\n position: PropTypes.oneOf(['left', 'right']),\n};\n\nLogoBackgroundWrapper.defaultProps = {\n children: '',\n position: 'right',\n};\n\nconst AccentRowDiv = styled.div`\n position: relative;\n background-color: #edf7fc;\n overflow: hidden;\n padding: 3.2rem 0;\n\n @media (max-width: ${mq.max[768]}) {\n padding: 0;\n }\n`;\n\nexport function AccentRowWrapper({ children }) {\n return (\n \n \n {children}\n \n \n );\n}\n\nAccentRowWrapper.propTypes = {\n children: PropTypes.node,\n};\n\nAccentRowWrapper.defaultProps = {\n children: '',\n};\n\nconst DarkAccentRowDiv = styled.div`\n position: relative;\n background-color: rgb252, 252, 252);\n padding: 3.2rem 0;\n`;\n\nexport function DarkAccentRowWrapper({ children }) {\n return (\n \n {children}\n \n \n );\n}\n\nDarkAccentRowWrapper.propTypes = {\n children: PropTypes.node,\n};\n\nDarkAccentRowWrapper.defaultProps = {\n children: '',\n};\n\nexport const skeletonAnimation = keyframes`\n 0% {\n width: 0%;\n left: 0;\n right: auto;\n opacity: 0.3;\n }\n\n 20% {\n width: 100%;\n left: 0;\n right: auto;\n opacity: 1;\n }\n \n 28% {\n width: 100%;\n left: auto;\n right: 0;\n }\n\n 51% {\n width: 0%;\n left: auto;\n right: 0;\n }\n\n 58% {\n width: 0%;\n left: auto;\n right: 0;\n }\n\n 82% {\n width: 100%;\n left: auto;\n right: 0;\n }\n\n 83% {\n width: 100%;\n left: 0;\n right: auto;\n }\n\n 96% {\n width: 0%;\n left: 0;\n right: auto;\n }\n\n 100% {\n width: 0%;\n left: 0;\n right: auto;\n opacity: 0.3;\n }\n`;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}"],"names":["_templateObject$3","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","_taggedTemplateLiteralLoose","strings","raw","slice","_templateObject$2","_templateObject2$2","_templateObject3$2","BASE_CONF","gridSize","gutterWidth","outerMargin","mediaQuery","container","sm","md","lg","breakpoints","xs","configCache","resolveConfig","props","themeConf","theme","conf","media","reduce","breakpoint","breakpointWidth","css","makeMedia","Boolean","join","DIMENSION_NAMES","config","cacheId","JSON","stringify","makeCacheId","_templateObject$1","_templateObject2$1","_templateObject3$1","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","Grid","p","fluid","map","t","displayName","propTypes","children","_templateObject","_templateObject2","_templateObject3","ModificatorType$1","Row","reverse","start","center","end","top","middle","bottom","around","between","first","last","ModificatorType","offsetProps","d","DimensionPropTypes","dimension","Col","k","indexOf","sort","k1","k2","replace","INFINITY","MAX_INTEGER","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","objectToString","prototype","toString","isObject","type","module","exports","result","isObjectLike","call","isSymbol","other","valueOf","isBinary","test","toNumber","toFinite","remainder","toInteger","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","constructor","it","Array","isArray","size","entries","next","done","has","get","RegExp","flags","hasOwnProperty","$$typeof","error","message","match","console","warn","ex","React","React__default","canUseDOM","window","document","createElement","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","Error","WrappedComponent","state","mountedInstances","emitChange","instance","SideEffect","_PureComponent","subClass","superClass","this","create","__proto__","peek","rewind","recordedState","undefined","_proto","UNSAFE_componentWillMount","componentDidUpdate","componentWillUnmount","index","splice","render","PureComponent","name","getDisplayName","path","defaultValue","paths","split","_typeof","Symbol","iterator","parseMap","function","string","pass","fail","needle","cases","defaultCase","finalCases","_toConsumableArray","arr","arr2","_arrayWithoutHoles","iter","from","_iterableToArray","TypeError","_nonIterableSpread","withProp","fn","needles","arg","x","height","node","images","_node$images","fallback","_node$images$fallback","src","gatsbyImageData","gatsbyImage","childImageSharp","_node$childImageSharp","getImage","_getImage","_getImage$images","_getImage$images$fall","format","isLoading","isLoaded","loading","style","shouldLoad","opacity","placeholder","layout","width","backgroundColor","objectFit","objectPosition","wrapperStyle","position","left","right","transition","sources","fallbackImage","paddingTop","maxWidth","display","alt","role","Fragment","Sizer","q","H","P","srcSet","decoding","sizes","Image","PropTypes","Picture","isRequired","e","Placeholder","_Picture$propTypes","propName","componentName","MainImage","rest","image","altValidator","onError","as","className","preactClass","class","onStartLoad","onLoad","overflow","wStyle","wClass","wrapperProps","useRef","useMemo","sizer","useEffect","renderImageToStringPromise","import","then","renderImageToString","swapPlaceholderImage","renderImage","root","current","querySelector","ssrImage","hasNativeLazyLoadSupport","complete","wasCached","setTimeout","removeAttribute","addEventListener","removeEventListener","onLoadListener","imageCache","add","cacheKey","innerHTML","animationFrame","requestAnimationFrame","cleanupCallback","cancelAnimationFrame","useLayoutEffect","ref","dangerouslySetInnerHTML","__html","suppressHydrationWarning","ae","memo","GatsbyImageHydrator","GatsbyImage","se","checkDimensionProps","validLayouts","GatsbyImageBrowser","__error","imageData","__imageData","StaticImage","camelCase","input","options","assign","pascalCase","trim","toUpperCase","toLowerCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","preserveCamelCase","_","p1","m","charAt","href","location","updatedPath","pathname","hash","handler","eventListener","documentElement","listener","event","contains","getWindowSize","innerHeight","innerWidth","outerHeight","outerWidth","useState","windowSize","setWindowSize","handleResize","throttle","cancel","min","max","phoneStart","phoneEnd","tabletStart","tabletEnd","laptopStart","laptopEnd","desktopStart","flexboxgrid","colors","themePrimary","themePrimaryLight","themeDark","themeDarker","neutralPrimary","neutralLight","neutralLightAlt","bgPrimary","fonts","main","bold","fontWeightLight","fontWeightRegular","fontWeightMedium","fontSizeHeading1","fontSizeHeading3","fontSizeHeading4","fontSizeHeading5","fontSizeHeading7","fontSizeUppercase","VariantCaps","Truncate","Underline","switchProp","Shadow","Header","mq","StyledHeading","styled","$color","tiny","small","medium","large","huge","extraThin","thin","normal","thick","tight","loose","caps","truncate","underline","header","shadow","Heading","level","color","weight","tracking","HeadingLevel","defaultProps","Icon","fill","label","viewBox","dimensions","getIconDimensions","aria","getIconAriaData","lineHeight","verticalAlign","xmlns","transform","Curve","MaskOverlay","flipped","$position","ActiveStyle","MenuButton","isActive","HeaderMenuButton","ariaLabel","ariaLabelledBy","onClick","customIcon","accessibilityLabel","title","Close20","marginBottom","LogoLink","GatsbyLink","LogoImage","SiteLogo","file","useStaticQuery","logo","getSrc","to","clock","Component","_class","_temp","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","classCallCheck","Constructor","createClass","descriptor","protoProps","staticProps","_extends","objectWithoutProperties","possibleConstructorReturn","self","ReferenceError","encodeSpecialCharacters","str","encode","String","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","tag","lowerCaseAttributeKey","concat","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","property","rafPolyfill","Date","now","callback","currentTime","cafPolyfill","id","clearTimeout","bind","webkitRequestAnimationFrame","mozRequestAnimationFrame","g","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","_i","tags","headElement","head","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","cssText","appendChild","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","_ref","_ref$title","base","link","meta","noscript","script","HelmetSideEffects","defer","HelmetExport","_React$Component","HelmetWrapper","setPrototypeOf","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","child","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_this2","_child$props","initAttributes","convertReactPropstoHtmlAttributes","_props","set","defaultTitle","titleTemplate","mappedState","renderStatic","SEO","description","lang","keywords","query","data","metaDescription","site","siteMetadata","authorTwitterAccount","NavWrapper","$direction","$expanded","SideNavWrapper","expanded","direction","NavFooter","ButtonToggle","NavIcon","AssistiveText","SideNavFooter","assistiveText","onToggle","evt","ChevronRight","Nav","SideNav","expandedProp","defaultExpanded","controlled","expandedState","setExpandedState","handleToggle","onFocus","onBlur","Spacing","$value","$mdValue","$xsValue","FirstColumnMobile","SecondColumnMobile","FormWrapper","FormItem","LogoBackgroundDiv","$image","LogoBackgroundWrapper","logoImage","AccentRowDiv","AccentRowWrapper","DarkAccentRowDiv","DarkAccentRowWrapper","skeletonAnimation","keyframes","getRawTag","symToStringTag","toStringTag","trimmedEndIndex","reTrimStart","freeGlobal","objectProto","nativeObjectToString","isOwn","unmasked","freeSelf","Function","reWhitespace","nativeMax","Math","nativeMin","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","flush","baseGetTag","debounce","baseTrim","_objectWithoutPropertiesLoose","excluded","sourceKeys"],"sourceRoot":""}