Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix github url strings (org edx -> openedx) #1891

Merged
merged 3 commits into from
Sep 12, 2022
Merged

Conversation

sarina
Copy link
Contributor

@sarina sarina commented Sep 7, 2022

This PR was autogenerated

This pr replaces the old GitHub organization, github.com/edx, with the new GitHub organization, github.com/openedx.

Tagging @openedx/tcril-engineering for review, but others are welcome to provide review.

Ref: openedx/axim-engineering#42

@sarina sarina requested a review from a team as a code owner September 7, 2022 01:39
@codecov
Copy link

codecov bot commented Sep 7, 2022

Codecov Report

Base: 94.98% // Head: 94.98% // No change to project coverage 👍

Coverage data is based on head (73c30c3) compared to base (e85ec5f).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1891   +/-   ##
=======================================
  Coverage   94.98%   94.98%           
=======================================
  Files         154      154           
  Lines       17045    17045           
  Branches     1873     1873           
=======================================
  Hits        16190    16190           
  Misses        641      641           
  Partials      214      214           
Flag Coverage Δ
unittests 94.98% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
openassessment/fileupload/api.py 94.73% <ø> (ø)
openassessment/xblock/config_mixin.py 92.98% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@sarina sarina force-pushed the tcril/fix-gh-org-url branch from 34d6727 to ba496be Compare September 10, 2022 19:54
@@ -1515,7 +1515,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_focus_on__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-focus-on */ \"./node_modules/react-focus-on/dist/es2015/index.js\");\n/* harmony import */ var tabbable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tabbable */ \"./node_modules/tabbable/index.js\");\n/* harmony import */ var tabbable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(tabbable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! .. */ \"./node_modules/@edx/paragon/dist/index.js\");\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Icon */ \"./node_modules/@edx/paragon/dist/Icon/index.js\");\n/* harmony import */ var _utils_newId__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/newId */ \"./node_modules/@edx/paragon/dist/utils/newId.js\");\n/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/constants */ \"./node_modules/@edx/paragon/dist/utils/constants.js\");\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n/* eslint-disable max-len */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Modal = /*#__PURE__*/function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n var _super = _createSuper(Modal);\n\n function Modal(props) {\n var _this;\n\n _classCallCheck(this, Modal);\n\n _this = _super.call(this, props);\n _this.close = _this.close.bind(_assertThisInitialized(_this));\n _this.headerId = Object(_utils_newId__WEBPACK_IMPORTED_MODULE_8__[\"default\"])();\n _this.modalBodyRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef();\n\n if (typeof document !== 'undefined') {\n _this.el = document.createElement('div'); // Sets true for IE11, false otherwise: https://stackoverflow.com/a/22082397/6620612\n\n _this.isIE11 = !!global.MSInputMethodContext && !!document.documentMode;\n }\n\n _this.state = {\n open: props.open\n };\n return _this;\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var parentSelector = this.props.parentSelector;\n this.parentElement = document.querySelector(parentSelector);\n\n if (this.parentElement === null) {\n throw new Error(\"Modal received invalid parentSelector: \".concat(parentSelector, \", no matching element found\"));\n }\n\n this.parentElement.appendChild(this.el);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var open = this.props.open;\n\n if (open !== prevProps.open || open !== prevState.open) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n open: open\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.unmountComponentAtNode(this.parentElement);\n }\n }, {\n key: \"getVariantIconClassName\",\n value: function getVariantIconClassName() {\n var variant = this.props.variant;\n var variantIconClassName;\n\n switch (variant.status) {\n case _utils_constants__WEBPACK_IMPORTED_MODULE_9__[\"default\"].status.WARNING:\n variantIconClassName = classnames__WEBPACK_IMPORTED_MODULE_2___default()('fa', 'fa-exclamation-triangle', 'fa-3x', \"text-\".concat(variant.status.toLowerCase()));\n break;\n\n default:\n break;\n }\n\n return variantIconClassName;\n }\n }, {\n key: \"getVariantGridBody\",\n value: function getVariantGridBody(body) {\n var variant = this.props.variant;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"container-fluid\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"col-md-10\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, body)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"col-md-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: Object(_utils_newId__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\"Modal-\".concat(variant.status)),\n className: this.getVariantIconClassName()\n }))));\n }\n }, {\n key: \"getTabbableBodyElements\",\n value: function getTabbableBodyElements() {\n var _this$modalBodyRef;\n\n if ((_this$modalBodyRef = this.modalBodyRef) === null || _this$modalBodyRef === void 0 ? void 0 : _this$modalBodyRef.current) {\n return tabbable__WEBPACK_IMPORTED_MODULE_5___default()(this.modalBodyRef.current);\n }\n\n return [];\n }\n }, {\n key: \"isValidVariantStatus\",\n value: function isValidVariantStatus() {\n var variant = this.props.variant;\n return Object.values(_utils_constants__WEBPACK_IMPORTED_MODULE_9__[\"default\"].status).includes(variant.status);\n }\n }, {\n key: \"close\",\n value: function close(e) {\n if (e) {\n e.stopPropagation();\n }\n\n this.setState({\n open: false\n });\n this.props.onClose();\n }\n }, {\n key: \"renderButtons\",\n value: function renderButtons() {\n return this.props.buttons.map(function (button) {\n // button is either a React component that we want clone or a set of props\n if ( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.isValidElement(button)) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(button, {\n key: button.props.children\n });\n }\n\n var label = button.label,\n buttonProps = _objectWithoutProperties(button, [\"label\"]);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_6__[\"Button\"].Deprecated, _extends({}, buttonProps, {\n key: label\n }), label);\n });\n }\n }, {\n key: \"renderBody\",\n value: function renderBody() {\n var body = this.props.body;\n\n if (typeof body === 'string') {\n body = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, body);\n }\n\n if (this.isValidVariantStatus()) {\n body = this.getVariantGridBody(body);\n }\n\n return body;\n }\n }, {\n key: \"renderModal\",\n value: function renderModal() {\n var open = this.state.open;\n var _this$props = this.props,\n dialogClassName = _this$props.dialogClassName,\n renderDefaultCloseButton = _this$props.renderDefaultCloseButton,\n renderHeaderCloseButton = _this$props.renderHeaderCloseButton,\n buttons = _this$props.buttons,\n closeText = _this$props.closeText,\n title = _this$props.title;\n var hasTabbableElements = renderDefaultCloseButton || renderHeaderCloseButton || buttons.length > 0 || this.getTabbableBodyElements().length > 0;\n var renderModalFooter = renderDefaultCloseButton || buttons.length > 0;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()({\n 'modal-backdrop': open,\n show: open,\n fade: !open\n }),\n role: \"presentation\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()('modal', {\n show: open,\n fade: !open,\n 'd-block': open,\n 'is-ie11': this.isIE11\n }),\n role: \"presentation\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()({\n 'modal-dialog': open\n }, dialogClassName),\n role: \"dialog\",\n \"aria-modal\": true,\n \"aria-labelledby\": this.headerId\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_focus_on__WEBPACK_IMPORTED_MODULE_4__[\"FocusOn\"], {\n enabled: open,\n onClickOutside: this.close,\n onEscapeKey: this.close\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", _extends({\n className: \"modal-content\" // if the modal doesn't contain any tabbable elements, make this element programmatically focusable.\n\n }, !hasTabbableElements ? {\n tabIndex: -1\n } : {}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"modal-header\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", {\n className: \"modal-title\",\n id: this.headerId\n }, title), renderHeaderCloseButton && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_6__[\"Button\"].Deprecated, {\n className: \"p-1\",\n onClick: this.close\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"fa fa-times\",\n screenReaderText: closeText\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"modal-body\",\n ref: this.modalBodyRef\n }, this.renderBody()), renderModalFooter && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"modal-footer\"\n }, renderDefaultCloseButton && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_6__[\"Button\"], {\n variant: \"link\",\n onClick: this.close\n }, closeText), this.renderButtons()))))));\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.el) {\n return null;\n }\n\n return /*#__PURE__*/react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.createPortal(this.renderModal(), this.el);\n }\n }]);\n\n return Modal;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\nModal.propTypes = {\n /** specifies whether the modal renders open or closed on the initial render. It defaults to false. */\n open: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.bool,\n\n /** is the selector for an element in the dom which the modal should be rendered under. It uses querySelector to find the first element that matches that selector, and then creates a react portal to a div underneath the parent element.\n */\n parentSelector: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string,\n\n /** a string or an element that is rendered inside of the modal title, above the modal body. */\n title: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.element]).isRequired,\n\n /** a string or an element that is rendered inside of the modal body, between the title and the footer. */\n body: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.element]).isRequired,\n\n /** an array of either elements or shapes that take the form of the buttonPropTypes. See the [buttonPropTypes](https://github.com/edx/paragon/blob/master/src/Button/index.jsx#L40) for a list of acceptable props to pass as part of a button. */\n buttons: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.object // TODO: Only accept nodes in the future\n ])),\n\n /** specifies the display text of the default Close button. It defaults to \"Close\". */\n closeText: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.element]),\n\n /** a function that is called on close. It can be used to perform actions upon closing of the modal, such as restoring focus to the previous logical focusable element. */\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func.isRequired,\n variant: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.shape({\n status: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string\n }),\n\n /** specifies whether the default close button is rendered in the footer. It defaults to true. */\n renderDefaultCloseButton: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.bool,\n\n /** specifies whether a close button is rendered in the modal header. It defaults to true. */\n renderHeaderCloseButton: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.bool,\n\n /**\n * Specifies optional classes to add to the element with the '.modal-dialog' class. See Bootstrap documentation for possible classes. Some options: modal-lg, modal-sm, modal-dialog-centered\n */\n dialogClassName: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string\n};\nModal.defaultProps = {\n open: false,\n parentSelector: 'body',\n buttons: [],\n closeText: 'Close',\n variant: {},\n renderDefaultCloseButton: true,\n renderHeaderCloseButton: true,\n dialogClassName: undefined\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Modal);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc3JjL01vZGFsL2luZGV4LmpzeD9iNjlmIl0sIm5hbWVzIjpbIk1vZGFsIiwibmV3SWQiLCJSZWFjdCIsImRvY3VtZW50IiwiZ2xvYmFsIiwib3BlbiIsInByb3BzIiwicGFyZW50U2VsZWN0b3IiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJSZWFjdERPTSIsInZhcmlhbnQiLCJWYXJpYW50IiwidmFyaWFudEljb25DbGFzc05hbWUiLCJjbGFzc05hbWVzIiwiYm9keSIsInRhYmJhYmxlIiwiT2JqZWN0IiwiZSIsImtleSIsImJ1dHRvbiIsImNoaWxkcmVuIiwibGFiZWwiLCJidXR0b25Qcm9wcyIsImRpYWxvZ0NsYXNzTmFtZSIsInJlbmRlckRlZmF1bHRDbG9zZUJ1dHRvbiIsInJlbmRlckhlYWRlckNsb3NlQnV0dG9uIiwiYnV0dG9ucyIsImNsb3NlVGV4dCIsInRpdGxlIiwiaGFzVGFiYmFibGVFbGVtZW50cyIsInJlbmRlck1vZGFsRm9vdGVyIiwic2hvdyIsImZhZGUiLCJpc0lFMTEiLCJoZWFkZXJJZCIsImNsb3NlIiwidGFiSW5kZXgiLCJtb2RhbEJvZHlSZWYiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvbkNsb3NlIiwic3RhdHVzIiwic3RyaW5nIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0lBRU1BLEs7Ozs7O0FBQ0osd0JBQW1CO0FBQUE7O0FBQUE7O0FBQ2pCO0FB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L3BhcmFnb24vZGlzdC9Nb2RhbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IEZvY3VzT24gfSBmcm9tICdyZWFjdC1mb2N1cy1vbic7XG5pbXBvcnQgdGFiYmFibGUgZnJvbSAndGFiYmFibGUnO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLic7XG5pbXBvcnQgSWNvbiBmcm9tICcuLi9JY29uJztcbmltcG9ydCBuZXdJZCBmcm9tICcuLi91dGlscy9uZXdJZCc7XG5pbXBvcnQgVmFyaWFudCBmcm9tICcuLi91dGlscy9jb25zdGFudHMnO1xuXG5jbGFzcyBNb2RhbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5jbG9zZSA9IHRoaXMuY2xvc2UuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuaGVhZGVySWQgPSBuZXdJZCgpO1xuICAgIHRoaXMubW9kYWxCb2R5UmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XG5cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgLy8gU2V0cyB0cnVlIGZvciBJRTExLCBmYWxzZSBvdGhlcndpc2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjA4MjM5Ny82NjIwNjEyXG4gICAgICB0aGlzLmlzSUUxMSA9ICEhZ2xvYmFsLk1TSW5wdXRNZXRob2RDb250ZXh0ICYmICEhZG9jdW1lbnQuZG9jdW1lbnRNb2RlO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBvcGVuOiBwcm9wcy5vcGVuLFxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7IHBhcmVudFNlbGVjdG9yIH0gPSB0aGlzLnByb3BzO1xuICAgIHRoaXMucGFyZW50RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocGFyZW50U2VsZWN0b3IpO1xuICAgIGlmICh0aGlzLnBhcmVudEVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kYWwgcmVjZWl2ZWQgaW52YWxpZCBwYXJlbnRTZWxlY3RvcjogJHtwYXJlbnRTZWxlY3Rvcn0sIG5vIG1hdGNoaW5nIGVsZW1lbnQgZm91bmRgKTtcbiAgICB9XG4gICAgdGhpcy5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWwpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgY29uc3QgeyBvcGVuIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChvcGVuICE9PSBwcmV2UHJvcHMub3BlbiB8fCBvcGVuICE9PSBwcmV2U3RhdGUub3Blbikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICB0aGlzLnNldFN0YXRlKHsgb3BlbiB9KTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKHRoaXMucGFyZW50RWxlbWVudCk7XG4gIH1cblxuICBnZXRWYXJpYW50SWNvbkNsYXNzTmFtZSgpIHtcbiAgICBjb25zdCB7IHZhcmlhbnQgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IHZhcmlhbnRJY29uQ2xhc3NOYW1lO1xuXG4gICAgc3dpdGNoICh2YXJpYW50LnN0YXR1cykge1xuICAgICAgY2FzZSBWYXJpYW50LnN0YXR1cy5XQVJOSU5HOlxuICAgICAgICB2YXJpYW50SWNvbkNsYXNzTmFtZSA9IGNsYXNzTmFtZXMoXG4gICAgICAgICAgJ2ZhJyxcbiAgICAgICAgICAnZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxuICAgICAgICAgICdmYS0zeCcsXG4gICAgICAgICAgYHRleHQtJHt2YXJpYW50LnN0YXR1cy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhbnRJY29uQ2xhc3NOYW1lO1xuICB9XG5cbiAgZ2V0VmFyaWFudEdyaWRCb2R5KGJvZHkpIHtcbiAgICBjb25zdCB7IHZhcmlhbnQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAge2JvZHl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC0yXCI+XG4gICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICBpZD17bmV3SWQoYE1vZGFsLSR7dmFyaWFudC5zdGF0dXN9YCl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17dGhpcy5nZXRWYXJpYW50SWNvbkNsYXNzTmFtZSgpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgZ2V0VGFiYmFibGVCb2R5RWxlbWVudHMoKSB7XG4gICAgaWYgKHRoaXMubW9kYWxCb2R5UmVmPy5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gdGFiYmFibGUodGhpcy5tb2RhbEJvZHlSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlzVmFsaWRWYXJpYW50U3RhdHVzKCkge1xuICAgIGNvbnN0IHsgdmFyaWFudCB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhWYXJpYW50LnN0YXR1cykuaW5jbHVkZXModmFyaWFudC5zdGF0dXMpO1xuICB9XG5cbiAgY2xvc2UoZSkge1xuICAgIGlmIChlKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiBmYWxzZSB9KTtcbiAgICB0aGlzLnByb3BzLm9uQ2xvc2UoKTtcbiAgfVxuXG4gIHJlbmRlckJ1dHRvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYnV0dG9ucy5tYXAoKGJ1dHRvbikgPT4ge1xuICAgICAgLy8gYnV0dG9uIGlzIGVpdGhlciBhIFJlYWN0IGNvbXBvbmVudCB0aGF0IHdlIHdhbnQgY2xvbmUgb3IgYSBzZXQgb2YgcHJvcHNcbiAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChidXR0b24pKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoYnV0dG9uLCB7XG4gICAgICAgICAga2V5OiBidXR0b24ucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCAuLi5idXR0b25Qcm9wcyB9ID0gYnV0dG9uO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uLkRlcHJlY2F0ZWRcbiAgICAgICAgICB7Li4uYnV0dG9uUHJvcHN9XG4gICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24uRGVwcmVjYXRlZD5cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICByZW5kZXJCb2R5KCkge1xuICAgIGxldCB7IGJvZHkgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICBib2R5ID0gPHA+e2JvZHl9PC9wPjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1ZhbGlkVmFyaWFudFN0YXR1cygpKSB7XG4gICAgICBib2R5ID0gdGhpcy5nZXRWYXJpYW50R3JpZEJvZHkoYm9keSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICByZW5kZXJNb2RhbCgpIHtcbiAgICBjb25zdCB7IG9wZW4gfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge1xuICAgICAgZGlhbG9nQ2xhc3NOYW1lLFxuICAgICAgcmVuZGVyRGVmYXVsdENsb3NlQnV0dG9uLFxuICAgICAgcmVuZGVySGVhZGVyQ2xvc2VCdXR0b24sXG4gICAgICBidXR0b25zLFxuICAgICAgY2xvc2VUZXh0LFxuICAgICAgdGl0bGUsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBoYXNUYWJiYWJsZUVsZW1lbnRzID0gKFxuICAgICAgcmVuZGVyRGVmYXVsdENsb3NlQnV0dG9uXG4gICAgICB8fCByZW5kZXJIZWFkZXJDbG9zZUJ1dHRvblxuICAgICAgfHwgYnV0dG9ucy5sZW5ndGggPiAwXG4gICAgICB8fCB0aGlzLmdldFRhYmJhYmxlQm9keUVsZW1lbnRzKCkubGVuZ3RoID4gMFxuICAgICk7XG4gICAgY29uc3QgcmVuZGVyTW9kYWxGb290ZXIgPSByZW5kZXJEZWZhdWx0Q2xvc2VCdXR0b24gfHwgYnV0dG9ucy5sZW5ndGggPiAwO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoe1xuICAgICAgICAgICAgJ21vZGFsLWJhY2tkcm9wJzogb3BlbixcbiAgICAgICAgICAgIHNob3c6IG9wZW4sXG4gICAgICAgICAgICBmYWRlOiAhb3BlbixcbiAgICAgICAgICB9KX1cbiAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgICAgICdtb2RhbCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNob3c6IG9wZW4sXG4gICAgICAgICAgICAgIGZhZGU6ICFvcGVuLFxuICAgICAgICAgICAgICAnZC1ibG9jayc6IG9wZW4sXG4gICAgICAgICAgICAgICdpcy1pZTExJzogdGhpcy5pc0lFMTEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICl9XG4gICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnbW9kYWwtZGlhbG9nJzogb3BlbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZGlhbG9nQ2xhc3NOYW1lLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgICAgYXJpYS1tb2RhbFxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXt0aGlzLmhlYWRlcklkfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxGb2N1c09uXG4gICAgICAgICAgICAgIGVuYWJsZWQ9e29wZW59XG4gICAgICAgICAgICAgIG9uQ2xpY2tPdXRzaWRlPXt0aGlzLmNsb3NlfVxuICAgICAgICAgICAgICBvbkVzY2FwZUtleT17dGhpcy5jbG9zZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1vZGFsLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBtb2RhbCBkb2Vzbid0IGNvbnRhaW4gYW55IHRhYmJhYmxlIGVsZW1lbnRzLCBtYWtlIHRoaXMgZWxlbWVudCBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzYWJsZS5cbiAgICAgICAgICAgICAgICB7Li4uKCFoYXNUYWJiYWJsZUVsZW1lbnRzID8geyB0YWJJbmRleDogLTEgfSA6IHt9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwibW9kYWwtdGl0bGVcIiBpZD17dGhpcy5oZWFkZXJJZH0+e3RpdGxlfTwvaDI+XG4gICAgICAgICAgICAgICAgICB7cmVuZGVySGVhZGVyQ2xvc2VCdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uLkRlcHJlY2F0ZWRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwLTFcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuY2xvc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBjbGFzc05hbWU9XCJmYSBmYS10aW1lc1wiIHNjcmVlblJlYWRlclRleHQ9e2Nsb3NlVGV4dH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24uRGVwcmVjYXRlZD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1ib2R5XCIgcmVmPXt0aGlzLm1vZGFsQm9keVJlZn0+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJCb2R5KCl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge3JlbmRlck1vZGFsRm9vdGVyICYmIChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJEZWZhdWx0Q2xvc2VCdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuY2xvc2V9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Nsb3NlVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyQnV0dG9ucygpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZvY3VzT24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuZWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICB0aGlzLnJlbmRlck1vZGFsKCksXG4gICAgICB0aGlzLmVsLFxuICAgICk7XG4gIH1cbn1cblxuTW9kYWwucHJvcFR5cGVzID0ge1xuICAvKiogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1vZGFsIHJlbmRlcnMgb3BlbiBvciBjbG9zZWQgb24gdGhlIGluaXRpYWwgcmVuZGVyLiBJdCBkZWZhdWx0cyB0byBmYWxzZS4gKi9cbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBpcyB0aGUgc2VsZWN0b3IgZm9yIGFuIGVsZW1lbnQgaW4gdGhlIGRvbSB3aGljaCB0aGUgbW9kYWwgc2hvdWxkIGJlIHJlbmRlcmVkIHVuZGVyLiBJdCB1c2VzIHF1ZXJ5U2VsZWN0b3IgdG8gZmluZCB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhhdCBzZWxlY3RvciwgYW5kIHRoZW4gY3JlYXRlcyBhIHJlYWN0IHBvcnRhbCB0byBhIGRpdiB1bmRlcm5lYXRoIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAqL1xuICBwYXJlbnRTZWxlY3RvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGEgc3RyaW5nIG9yIGFuIGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZCBpbnNpZGUgb2YgdGhlIG1vZGFsIHRpdGxlLCBhYm92ZSB0aGUgbW9kYWwgYm9keS4gKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5lbGVtZW50XSkuaXNSZXF1aXJlZCxcbiAgLyoqIGEgc3RyaW5nIG9yIGFuIGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZCBpbnNpZGUgb2YgdGhlIG1vZGFsIGJvZHksIGJldHdlZW4gdGhlIHRpdGxlIGFuZCB0aGUgZm9vdGVyLiAqL1xuICBib2R5OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZWxlbWVudF0pLmlzUmVxdWlyZWQsXG4gIC8qKiBhbiBhcnJheSBvZiBlaXRoZXIgZWxlbWVudHMgb3Igc2hhcGVzIHRoYXQgdGFrZSB0aGUgZm9ybSBvZiB0aGUgYnV0dG9uUHJvcFR5cGVzLiBTZWUgdGhlIFtidXR0b25Qcm9wVHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9lZHgvcGFyYWdvbi9ibG9iL21hc3Rlci9zcmMvQnV0dG9uL2luZGV4LmpzeCNMNDApIGZvciBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwcm9wcyB0byBwYXNzIGFzIHBhcnQgb2YgYSBidXR0b24uICovXG4gIGJ1dHRvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5lbGVtZW50LFxuICAgIFByb3BUeXBlcy5vYmplY3QsIC8vIFRPRE86IE9ubHkgYWNjZXB0IG5vZGVzIGluIHRoZSBmdXR1cmVcbiAgXSkpLFxuICAvKiogc3BlY2lmaWVzIHRoZSBkaXNwbGF5IHRleHQgb2YgdGhlIGRlZmF1bHQgQ2xvc2UgYnV0dG9uLiBJdCBkZWZhdWx0cyB0byBcIkNsb3NlXCIuICovXG4gIGNsb3NlVGV4dDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgLyoqIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb24gY2xvc2UuIEl0IGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gYWN0aW9ucyB1cG9uIGNsb3Npbmcgb2YgdGhlIG1vZGFsLCBzdWNoIGFzIHJlc3RvcmluZyBmb2N1cyB0byB0aGUgcHJldmlvdXMgbG9naWNhbCBmb2N1c2FibGUgZWxlbWVudC4gKi9cbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdmFyaWFudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH0pLFxuICAvKiogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRlZmF1bHQgY2xvc2UgYnV0dG9uIGlzIHJlbmRlcmVkIGluIHRoZSBmb290ZXIuIEl0IGRlZmF1bHRzIHRvIHRydWUuICovXG4gIHJlbmRlckRlZmF1bHRDbG9zZUJ1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBzcGVjaWZpZXMgd2hldGhlciBhIGNsb3NlIGJ1dHRvbiBpcyByZW5kZXJlZCBpbiB0aGUgbW9kYWwgaGVhZGVyLiBJdCBkZWZhdWx0cyB0byB0cnVlLiAqL1xuICByZW5kZXJIZWFkZXJDbG9zZUJ1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgb3B0aW9uYWwgY2xhc3NlcyB0byBhZGQgdG8gdGhlIGVsZW1lbnQgd2l0aCB0aGUgJy5tb2RhbC1kaWFsb2cnIGNsYXNzLiAgU2VlIEJvb3RzdHJhcCBkb2N1bWVudGF0aW9uIGZvciBwb3NzaWJsZSBjbGFzc2VzLiAgU29tZSBvcHRpb25zOiBtb2RhbC1sZywgbW9kYWwtc20sIG1vZGFsLWRpYWxvZy1jZW50ZXJlZFxuICAgKi9cbiAgZGlhbG9nQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICBvcGVuOiBmYWxzZSxcbiAgcGFyZW50U2VsZWN0b3I6ICdib2R5JyxcbiAgYnV0dG9uczogW10sXG4gIGNsb3NlVGV4dDogJ0Nsb3NlJyxcbiAgdmFyaWFudDoge30sXG4gIHJlbmRlckRlZmF1bHRDbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgcmVuZGVySGVhZGVyQ2xvc2VCdXR0b246IHRydWUsXG4gIGRpYWxvZ0NsYXNzTmFtZTogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9kYWw7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@edx/paragon/dist/Modal/index.js\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_focus_on__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-focus-on */ \"./node_modules/react-focus-on/dist/es2015/index.js\");\n/* harmony import */ var tabbable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tabbable */ \"./node_modules/tabbable/index.js\");\n/* harmony import */ var tabbable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(tabbable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! .. */ \"./node_modules/@edx/paragon/dist/index.js\");\n/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Icon */ \"./node_modules/@edx/paragon/dist/Icon/index.js\");\n/* harmony import */ var _utils_newId__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/newId */ \"./node_modules/@edx/paragon/dist/utils/newId.js\");\n/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/constants */ \"./node_modules/@edx/paragon/dist/utils/constants.js\");\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n/* eslint-disable max-len */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Modal = /*#__PURE__*/function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n var _super = _createSuper(Modal);\n\n function Modal(props) {\n var _this;\n\n _classCallCheck(this, Modal);\n\n _this = _super.call(this, props);\n _this.close = _this.close.bind(_assertThisInitialized(_this));\n _this.headerId = Object(_utils_newId__WEBPACK_IMPORTED_MODULE_8__[\"default\"])();\n _this.modalBodyRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef();\n\n if (typeof document !== 'undefined') {\n _this.el = document.createElement('div'); // Sets true for IE11, false otherwise: https://stackoverflow.com/a/22082397/6620612\n\n _this.isIE11 = !!global.MSInputMethodContext && !!document.documentMode;\n }\n\n _this.state = {\n open: props.open\n };\n return _this;\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var parentSelector = this.props.parentSelector;\n this.parentElement = document.querySelector(parentSelector);\n\n if (this.parentElement === null) {\n throw new Error(\"Modal received invalid parentSelector: \".concat(parentSelector, \", no matching element found\"));\n }\n\n this.parentElement.appendChild(this.el);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var open = this.props.open;\n\n if (open !== prevProps.open || open !== prevState.open) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n open: open\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.unmountComponentAtNode(this.parentElement);\n }\n }, {\n key: \"getVariantIconClassName\",\n value: function getVariantIconClassName() {\n var variant = this.props.variant;\n var variantIconClassName;\n\n switch (variant.status) {\n case _utils_constants__WEBPACK_IMPORTED_MODULE_9__[\"default\"].status.WARNING:\n variantIconClassName = classnames__WEBPACK_IMPORTED_MODULE_2___default()('fa', 'fa-exclamation-triangle', 'fa-3x', \"text-\".concat(variant.status.toLowerCase()));\n break;\n\n default:\n break;\n }\n\n return variantIconClassName;\n }\n }, {\n key: \"getVariantGridBody\",\n value: function getVariantGridBody(body) {\n var variant = this.props.variant;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"container-fluid\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"col-md-10\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, body)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"col-md-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: Object(_utils_newId__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\"Modal-\".concat(variant.status)),\n className: this.getVariantIconClassName()\n }))));\n }\n }, {\n key: \"getTabbableBodyElements\",\n value: function getTabbableBodyElements() {\n var _this$modalBodyRef;\n\n if ((_this$modalBodyRef = this.modalBodyRef) === null || _this$modalBodyRef === void 0 ? void 0 : _this$modalBodyRef.current) {\n return tabbable__WEBPACK_IMPORTED_MODULE_5___default()(this.modalBodyRef.current);\n }\n\n return [];\n }\n }, {\n key: \"isValidVariantStatus\",\n value: function isValidVariantStatus() {\n var variant = this.props.variant;\n return Object.values(_utils_constants__WEBPACK_IMPORTED_MODULE_9__[\"default\"].status).includes(variant.status);\n }\n }, {\n key: \"close\",\n value: function close(e) {\n if (e) {\n e.stopPropagation();\n }\n\n this.setState({\n open: false\n });\n this.props.onClose();\n }\n }, {\n key: \"renderButtons\",\n value: function renderButtons() {\n return this.props.buttons.map(function (button) {\n // button is either a React component that we want clone or a set of props\n if ( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.isValidElement(button)) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(button, {\n key: button.props.children\n });\n }\n\n var label = button.label,\n buttonProps = _objectWithoutProperties(button, [\"label\"]);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_6__[\"Button\"].Deprecated, _extends({}, buttonProps, {\n key: label\n }), label);\n });\n }\n }, {\n key: \"renderBody\",\n value: function renderBody() {\n var body = this.props.body;\n\n if (typeof body === 'string') {\n body = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, body);\n }\n\n if (this.isValidVariantStatus()) {\n body = this.getVariantGridBody(body);\n }\n\n return body;\n }\n }, {\n key: \"renderModal\",\n value: function renderModal() {\n var open = this.state.open;\n var _this$props = this.props,\n dialogClassName = _this$props.dialogClassName,\n renderDefaultCloseButton = _this$props.renderDefaultCloseButton,\n renderHeaderCloseButton = _this$props.renderHeaderCloseButton,\n buttons = _this$props.buttons,\n closeText = _this$props.closeText,\n title = _this$props.title;\n var hasTabbableElements = renderDefaultCloseButton || renderHeaderCloseButton || buttons.length > 0 || this.getTabbableBodyElements().length > 0;\n var renderModalFooter = renderDefaultCloseButton || buttons.length > 0;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()({\n 'modal-backdrop': open,\n show: open,\n fade: !open\n }),\n role: \"presentation\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()('modal', {\n show: open,\n fade: !open,\n 'd-block': open,\n 'is-ie11': this.isIE11\n }),\n role: \"presentation\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()({\n 'modal-dialog': open\n }, dialogClassName),\n role: \"dialog\",\n \"aria-modal\": true,\n \"aria-labelledby\": this.headerId\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_focus_on__WEBPACK_IMPORTED_MODULE_4__[\"FocusOn\"], {\n enabled: open,\n onClickOutside: this.close,\n onEscapeKey: this.close\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", _extends({\n className: \"modal-content\" // if the modal doesn't contain any tabbable elements, make this element programmatically focusable.\n\n }, !hasTabbableElements ? {\n tabIndex: -1\n } : {}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"modal-header\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", {\n className: \"modal-title\",\n id: this.headerId\n }, title), renderHeaderCloseButton && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_6__[\"Button\"].Deprecated, {\n className: \"p-1\",\n onClick: this.close\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"fa fa-times\",\n screenReaderText: closeText\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"modal-body\",\n ref: this.modalBodyRef\n }, this.renderBody()), renderModalFooter && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"modal-footer\"\n }, renderDefaultCloseButton && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_6__[\"Button\"], {\n variant: \"link\",\n onClick: this.close\n }, closeText), this.renderButtons()))))));\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.el) {\n return null;\n }\n\n return /*#__PURE__*/react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.createPortal(this.renderModal(), this.el);\n }\n }]);\n\n return Modal;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\nModal.propTypes = {\n /** specifies whether the modal renders open or closed on the initial render. It defaults to false. */\n open: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.bool,\n\n /** is the selector for an element in the dom which the modal should be rendered under. It uses querySelector to find the first element that matches that selector, and then creates a react portal to a div underneath the parent element.\n */\n parentSelector: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string,\n\n /** a string or an element that is rendered inside of the modal title, above the modal body. */\n title: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.element]).isRequired,\n\n /** a string or an element that is rendered inside of the modal body, between the title and the footer. */\n body: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.element]).isRequired,\n\n /** an array of either elements or shapes that take the form of the buttonPropTypes. See the [buttonPropTypes](https://github.com/openedx/paragon/blob/master/src/Button/index.jsx#L40) for a list of acceptable props to pass as part of a button. */\n buttons: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.object // TODO: Only accept nodes in the future\n ])),\n\n /** specifies the display text of the default Close button. It defaults to \"Close\". */\n closeText: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.element]),\n\n /** a function that is called on close. It can be used to perform actions upon closing of the modal, such as restoring focus to the previous logical focusable element. */\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func.isRequired,\n variant: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.shape({\n status: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string\n }),\n\n /** specifies whether the default close button is rendered in the footer. It defaults to true. */\n renderDefaultCloseButton: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.bool,\n\n /** specifies whether a close button is rendered in the modal header. It defaults to true. */\n renderHeaderCloseButton: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.bool,\n\n /**\n * Specifies optional classes to add to the element with the '.modal-dialog' class. See Bootstrap documentation for possible classes. Some options: modal-lg, modal-sm, modal-dialog-centered\n */\n dialogClassName: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string\n};\nModal.defaultProps = {\n open: false,\n parentSelector: 'body',\n buttons: [],\n closeText: 'Close',\n variant: {},\n renderDefaultCloseButton: true,\n renderHeaderCloseButton: true,\n dialogClassName: undefined\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Modal);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc3JjL01vZGFsL2luZGV4LmpzeD9iNjlmIl0sIm5hbWVzIjpbIk1vZGFsIiwibmV3SWQiLCJSZWFjdCIsImRvY3VtZW50IiwiZ2xvYmFsIiwib3BlbiIsInByb3BzIiwicGFyZW50U2VsZWN0b3IiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJSZWFjdERPTSIsInZhcmlhbnQiLCJWYXJpYW50IiwidmFyaWFudEljb25DbGFzc05hbWUiLCJjbGFzc05hbWVzIiwiYm9keSIsInRhYmJhYmxlIiwiT2JqZWN0IiwiZSIsImtleSIsImJ1dHRvbiIsImNoaWxkcmVuIiwibGFiZWwiLCJidXR0b25Qcm9wcyIsImRpYWxvZ0NsYXNzTmFtZSIsInJlbmRlckRlZmF1bHRDbG9zZUJ1dHRvbiIsInJlbmRlckhlYWRlckNsb3NlQnV0dG9uIiwiYnV0dG9ucyIsImNsb3NlVGV4dCIsInRpdGxlIiwiaGFzVGFiYmFibGVFbGVtZW50cyIsInJlbmRlck1vZGFsRm9vdGVyIiwic2hvdyIsImZhZGUiLCJpc0lFMTEiLCJoZWFkZXJJZCIsImNsb3NlIiwidGFiSW5kZXgiLCJtb2RhbEJvZHlSZWYiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvbkNsb3NlIiwic3RhdHVzIiwic3RyaW5nIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0lBRU1BLEs7Ozs7O0FBQ0osd0JBQW1CO0FBQUE7O0FBQUE7O0FBQ2pCO0FB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L3BhcmFnb24vZGlzdC9Nb2RhbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IEZvY3VzT24gfSBmcm9tICdyZWFjdC1mb2N1cy1vbic7XG5pbXBvcnQgdGFiYmFibGUgZnJvbSAndGFiYmFibGUnO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLic7XG5pbXBvcnQgSWNvbiBmcm9tICcuLi9JY29uJztcbmltcG9ydCBuZXdJZCBmcm9tICcuLi91dGlscy9uZXdJZCc7XG5pbXBvcnQgVmFyaWFudCBmcm9tICcuLi91dGlscy9jb25zdGFudHMnO1xuXG5jbGFzcyBNb2RhbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5jbG9zZSA9IHRoaXMuY2xvc2UuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuaGVhZGVySWQgPSBuZXdJZCgpO1xuICAgIHRoaXMubW9kYWxCb2R5UmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XG5cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgLy8gU2V0cyB0cnVlIGZvciBJRTExLCBmYWxzZSBvdGhlcndpc2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjA4MjM5Ny82NjIwNjEyXG4gICAgICB0aGlzLmlzSUUxMSA9ICEhZ2xvYmFsLk1TSW5wdXRNZXRob2RDb250ZXh0ICYmICEhZG9jdW1lbnQuZG9jdW1lbnRNb2RlO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBvcGVuOiBwcm9wcy5vcGVuLFxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7IHBhcmVudFNlbGVjdG9yIH0gPSB0aGlzLnByb3BzO1xuICAgIHRoaXMucGFyZW50RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocGFyZW50U2VsZWN0b3IpO1xuICAgIGlmICh0aGlzLnBhcmVudEVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kYWwgcmVjZWl2ZWQgaW52YWxpZCBwYXJlbnRTZWxlY3RvcjogJHtwYXJlbnRTZWxlY3Rvcn0sIG5vIG1hdGNoaW5nIGVsZW1lbnQgZm91bmRgKTtcbiAgICB9XG4gICAgdGhpcy5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWwpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgY29uc3QgeyBvcGVuIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChvcGVuICE9PSBwcmV2UHJvcHMub3BlbiB8fCBvcGVuICE9PSBwcmV2U3RhdGUub3Blbikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICB0aGlzLnNldFN0YXRlKHsgb3BlbiB9KTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKHRoaXMucGFyZW50RWxlbWVudCk7XG4gIH1cblxuICBnZXRWYXJpYW50SWNvbkNsYXNzTmFtZSgpIHtcbiAgICBjb25zdCB7IHZhcmlhbnQgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IHZhcmlhbnRJY29uQ2xhc3NOYW1lO1xuXG4gICAgc3dpdGNoICh2YXJpYW50LnN0YXR1cykge1xuICAgICAgY2FzZSBWYXJpYW50LnN0YXR1cy5XQVJOSU5HOlxuICAgICAgICB2YXJpYW50SWNvbkNsYXNzTmFtZSA9IGNsYXNzTmFtZXMoXG4gICAgICAgICAgJ2ZhJyxcbiAgICAgICAgICAnZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxuICAgICAgICAgICdmYS0zeCcsXG4gICAgICAgICAgYHRleHQtJHt2YXJpYW50LnN0YXR1cy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhbnRJY29uQ2xhc3NOYW1lO1xuICB9XG5cbiAgZ2V0VmFyaWFudEdyaWRCb2R5KGJvZHkpIHtcbiAgICBjb25zdCB7IHZhcmlhbnQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAge2JvZHl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC0yXCI+XG4gICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICBpZD17bmV3SWQoYE1vZGFsLSR7dmFyaWFudC5zdGF0dXN9YCl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17dGhpcy5nZXRWYXJpYW50SWNvbkNsYXNzTmFtZSgpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgZ2V0VGFiYmFibGVCb2R5RWxlbWVudHMoKSB7XG4gICAgaWYgKHRoaXMubW9kYWxCb2R5UmVmPy5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gdGFiYmFibGUodGhpcy5tb2RhbEJvZHlSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlzVmFsaWRWYXJpYW50U3RhdHVzKCkge1xuICAgIGNvbnN0IHsgdmFyaWFudCB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhWYXJpYW50LnN0YXR1cykuaW5jbHVkZXModmFyaWFudC5zdGF0dXMpO1xuICB9XG5cbiAgY2xvc2UoZSkge1xuICAgIGlmIChlKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiBmYWxzZSB9KTtcbiAgICB0aGlzLnByb3BzLm9uQ2xvc2UoKTtcbiAgfVxuXG4gIHJlbmRlckJ1dHRvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYnV0dG9ucy5tYXAoKGJ1dHRvbikgPT4ge1xuICAgICAgLy8gYnV0dG9uIGlzIGVpdGhlciBhIFJlYWN0IGNvbXBvbmVudCB0aGF0IHdlIHdhbnQgY2xvbmUgb3IgYSBzZXQgb2YgcHJvcHNcbiAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChidXR0b24pKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoYnV0dG9uLCB7XG4gICAgICAgICAga2V5OiBidXR0b24ucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCAuLi5idXR0b25Qcm9wcyB9ID0gYnV0dG9uO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uLkRlcHJlY2F0ZWRcbiAgICAgICAgICB7Li4uYnV0dG9uUHJvcHN9XG4gICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24uRGVwcmVjYXRlZD5cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICByZW5kZXJCb2R5KCkge1xuICAgIGxldCB7IGJvZHkgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICBib2R5ID0gPHA+e2JvZHl9PC9wPjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1ZhbGlkVmFyaWFudFN0YXR1cygpKSB7XG4gICAgICBib2R5ID0gdGhpcy5nZXRWYXJpYW50R3JpZEJvZHkoYm9keSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICByZW5kZXJNb2RhbCgpIHtcbiAgICBjb25zdCB7IG9wZW4gfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge1xuICAgICAgZGlhbG9nQ2xhc3NOYW1lLFxuICAgICAgcmVuZGVyRGVmYXVsdENsb3NlQnV0dG9uLFxuICAgICAgcmVuZGVySGVhZGVyQ2xvc2VCdXR0b24sXG4gICAgICBidXR0b25zLFxuICAgICAgY2xvc2VUZXh0LFxuICAgICAgdGl0bGUsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBoYXNUYWJiYWJsZUVsZW1lbnRzID0gKFxuICAgICAgcmVuZGVyRGVmYXVsdENsb3NlQnV0dG9uXG4gICAgICB8fCByZW5kZXJIZWFkZXJDbG9zZUJ1dHRvblxuICAgICAgfHwgYnV0dG9ucy5sZW5ndGggPiAwXG4gICAgICB8fCB0aGlzLmdldFRhYmJhYmxlQm9keUVsZW1lbnRzKCkubGVuZ3RoID4gMFxuICAgICk7XG4gICAgY29uc3QgcmVuZGVyTW9kYWxGb290ZXIgPSByZW5kZXJEZWZhdWx0Q2xvc2VCdXR0b24gfHwgYnV0dG9ucy5sZW5ndGggPiAwO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoe1xuICAgICAgICAgICAgJ21vZGFsLWJhY2tkcm9wJzogb3BlbixcbiAgICAgICAgICAgIHNob3c6IG9wZW4sXG4gICAgICAgICAgICBmYWRlOiAhb3BlbixcbiAgICAgICAgICB9KX1cbiAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgICAgICdtb2RhbCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNob3c6IG9wZW4sXG4gICAgICAgICAgICAgIGZhZGU6ICFvcGVuLFxuICAgICAgICAgICAgICAnZC1ibG9jayc6IG9wZW4sXG4gICAgICAgICAgICAgICdpcy1pZTExJzogdGhpcy5pc0lFMTEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICl9XG4gICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnbW9kYWwtZGlhbG9nJzogb3BlbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZGlhbG9nQ2xhc3NOYW1lLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgICAgYXJpYS1tb2RhbFxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXt0aGlzLmhlYWRlcklkfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxGb2N1c09uXG4gICAgICAgICAgICAgIGVuYWJsZWQ9e29wZW59XG4gICAgICAgICAgICAgIG9uQ2xpY2tPdXRzaWRlPXt0aGlzLmNsb3NlfVxuICAgICAgICAgICAgICBvbkVzY2FwZUtleT17dGhpcy5jbG9zZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1vZGFsLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBtb2RhbCBkb2Vzbid0IGNvbnRhaW4gYW55IHRhYmJhYmxlIGVsZW1lbnRzLCBtYWtlIHRoaXMgZWxlbWVudCBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzYWJsZS5cbiAgICAgICAgICAgICAgICB7Li4uKCFoYXNUYWJiYWJsZUVsZW1lbnRzID8geyB0YWJJbmRleDogLTEgfSA6IHt9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwibW9kYWwtdGl0bGVcIiBpZD17dGhpcy5oZWFkZXJJZH0+e3RpdGxlfTwvaDI+XG4gICAgICAgICAgICAgICAgICB7cmVuZGVySGVhZGVyQ2xvc2VCdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uLkRlcHJlY2F0ZWRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwLTFcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuY2xvc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBjbGFzc05hbWU9XCJmYSBmYS10aW1lc1wiIHNjcmVlblJlYWRlclRleHQ9e2Nsb3NlVGV4dH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24uRGVwcmVjYXRlZD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1ib2R5XCIgcmVmPXt0aGlzLm1vZGFsQm9keVJlZn0+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJCb2R5KCl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge3JlbmRlck1vZGFsRm9vdGVyICYmIChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJEZWZhdWx0Q2xvc2VCdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuY2xvc2V9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Nsb3NlVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyQnV0dG9ucygpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZvY3VzT24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuZWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICB0aGlzLnJlbmRlck1vZGFsKCksXG4gICAgICB0aGlzLmVsLFxuICAgICk7XG4gIH1cbn1cblxuTW9kYWwucHJvcFR5cGVzID0ge1xuICAvKiogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1vZGFsIHJlbmRlcnMgb3BlbiBvciBjbG9zZWQgb24gdGhlIGluaXRpYWwgcmVuZGVyLiBJdCBkZWZhdWx0cyB0byBmYWxzZS4gKi9cbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBpcyB0aGUgc2VsZWN0b3IgZm9yIGFuIGVsZW1lbnQgaW4gdGhlIGRvbSB3aGljaCB0aGUgbW9kYWwgc2hvdWxkIGJlIHJlbmRlcmVkIHVuZGVyLiBJdCB1c2VzIHF1ZXJ5U2VsZWN0b3IgdG8gZmluZCB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhhdCBzZWxlY3RvciwgYW5kIHRoZW4gY3JlYXRlcyBhIHJlYWN0IHBvcnRhbCB0byBhIGRpdiB1bmRlcm5lYXRoIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAqL1xuICBwYXJlbnRTZWxlY3RvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGEgc3RyaW5nIG9yIGFuIGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZCBpbnNpZGUgb2YgdGhlIG1vZGFsIHRpdGxlLCBhYm92ZSB0aGUgbW9kYWwgYm9keS4gKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5lbGVtZW50XSkuaXNSZXF1aXJlZCxcbiAgLyoqIGEgc3RyaW5nIG9yIGFuIGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZCBpbnNpZGUgb2YgdGhlIG1vZGFsIGJvZHksIGJldHdlZW4gdGhlIHRpdGxlIGFuZCB0aGUgZm9vdGVyLiAqL1xuICBib2R5OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZWxlbWVudF0pLmlzUmVxdWlyZWQsXG4gIC8qKiBhbiBhcnJheSBvZiBlaXRoZXIgZWxlbWVudHMgb3Igc2hhcGVzIHRoYXQgdGFrZSB0aGUgZm9ybSBvZiB0aGUgYnV0dG9uUHJvcFR5cGVzLiBTZWUgdGhlIFtidXR0b25Qcm9wVHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9lZHgvcGFyYWdvbi9ibG9iL21hc3Rlci9zcmMvQnV0dG9uL2luZGV4LmpzeCNMNDApIGZvciBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwcm9wcyB0byBwYXNzIGFzIHBhcnQgb2YgYSBidXR0b24uICovXG4gIGJ1dHRvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5lbGVtZW50LFxuICAgIFByb3BUeXBlcy5vYmplY3QsIC8vIFRPRE86IE9ubHkgYWNjZXB0IG5vZGVzIGluIHRoZSBmdXR1cmVcbiAgXSkpLFxuICAvKiogc3BlY2lmaWVzIHRoZSBkaXNwbGF5IHRleHQgb2YgdGhlIGRlZmF1bHQgQ2xvc2UgYnV0dG9uLiBJdCBkZWZhdWx0cyB0byBcIkNsb3NlXCIuICovXG4gIGNsb3NlVGV4dDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgLyoqIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb24gY2xvc2UuIEl0IGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gYWN0aW9ucyB1cG9uIGNsb3Npbmcgb2YgdGhlIG1vZGFsLCBzdWNoIGFzIHJlc3RvcmluZyBmb2N1cyB0byB0aGUgcHJldmlvdXMgbG9naWNhbCBmb2N1c2FibGUgZWxlbWVudC4gKi9cbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdmFyaWFudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH0pLFxuICAvKiogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRlZmF1bHQgY2xvc2UgYnV0dG9uIGlzIHJlbmRlcmVkIGluIHRoZSBmb290ZXIuIEl0IGRlZmF1bHRzIHRvIHRydWUuICovXG4gIHJlbmRlckRlZmF1bHRDbG9zZUJ1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBzcGVjaWZpZXMgd2hldGhlciBhIGNsb3NlIGJ1dHRvbiBpcyByZW5kZXJlZCBpbiB0aGUgbW9kYWwgaGVhZGVyLiBJdCBkZWZhdWx0cyB0byB0cnVlLiAqL1xuICByZW5kZXJIZWFkZXJDbG9zZUJ1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgb3B0aW9uYWwgY2xhc3NlcyB0byBhZGQgdG8gdGhlIGVsZW1lbnQgd2l0aCB0aGUgJy5tb2RhbC1kaWFsb2cnIGNsYXNzLiAgU2VlIEJvb3RzdHJhcCBkb2N1bWVudGF0aW9uIGZvciBwb3NzaWJsZSBjbGFzc2VzLiAgU29tZSBvcHRpb25zOiBtb2RhbC1sZywgbW9kYWwtc20sIG1vZGFsLWRpYWxvZy1jZW50ZXJlZFxuICAgKi9cbiAgZGlhbG9nQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICBvcGVuOiBmYWxzZSxcbiAgcGFyZW50U2VsZWN0b3I6ICdib2R5JyxcbiAgYnV0dG9uczogW10sXG4gIGNsb3NlVGV4dDogJ0Nsb3NlJyxcbiAgdmFyaWFudDoge30sXG4gIHJlbmRlckRlZmF1bHRDbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgcmVuZGVySGVhZGVyQ2xvc2VCdXR0b246IHRydWUsXG4gIGRpYWxvZ0NsYXNzTmFtZTogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9kYWw7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@edx/paragon/dist/Modal/index.js\n");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I split this into lines and diff-ed it and the only thing changed on this (huge) line is:

[buttonPropTypes](https://github.com/edx/paragon/blob/master/src/Button/index.jsx#L40)
to
[buttonPropTypes](https://github.com/openedx/paragon/blob/master/src/Button/index.jsx#L40)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙏🏻 thank you!

@sarina sarina merged commit 10abe78 into master Sep 12, 2022
@sarina sarina deleted the tcril/fix-gh-org-url branch September 12, 2022 20:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants