You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

react-scroll-to-bottom

Package Overview
Dependencies
Maintainers
1
Versions
83
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-scroll-to-bottom - npm Package Compare versions

Comparing version

to
1.3.1-master.1fa3dd1

6

CHANGELOG.md

@@ -8,2 +8,4 @@ # Changelog

## [Unreleased]
### Changed
- `Composer`: fix #13, user scrolling in Firefox may have the scroll position locked occasionally, in PR [#12](https://github.com/compulim/react-scroll-to-bottom/issues/12)

@@ -13,4 +15,4 @@ ## [1.3.0] - 2019-01-21

- Playground: bumped to `react@16.6.0`, `react-dom@16.6.0`, and `react-scripts@2.1.6`
- Update algorithm, instead of using `componentDidUpdate`, we now use `setInterval` to check if the panel is sticky or not, this help to track content update that happen outside of React lifecycle, for example, `HTMLImageElement.onload` event
- `scrollTo()` now accepts `"100%"` instead of `"bottom"`
- `*`: Update algorithm, instead of using `componentDidUpdate`, we now use `setInterval` to check if the panel is sticky or not, this help to track content update that happen outside of React lifecycle, for example, `HTMLImageElement.onload` event
- `Composer`: `scrollTo()` now accepts `"100%"` instead of `"bottom"`

@@ -17,0 +19,0 @@ ### Removed

@@ -50,4 +50,6 @@ "use strict";

var MIN_CHECK_INTERVAL = 17;
var MIN_CHECK_INTERVAL = 17; // 1 frame
var SCROLL_DECISION_DURATION = 34; // 2 frames
function setImmediateInterval(fn, ms) {

@@ -164,2 +166,3 @@ fn();

clearInterval(this._stickyCheckTimeout);
var stickyButNotAtEndSince = false;
this._stickyCheckTimeout = setImmediateInterval(function () {

@@ -170,7 +173,17 @@ var state = _this2.state;

if (sticky && target) {
var _computeViewState = computeViewState(state),
atEnd = _computeViewState.atEnd;
!atEnd && state.functionContext.scrollToEnd();
if (sticky && target && !computeViewState(state).atEnd) {
if (!stickyButNotAtEndSince) {
stickyButNotAtEndSince = Date.now();
} else if (Date.now() - stickyButNotAtEndSince > SCROLL_DECISION_DURATION) {
// Quirks: In Firefox, after user scroll down, Firefox do two things:
// 1. Set to a new "scrollTop"
// 2. Fire "scroll" event
// For what we observed, #1 is fired about 20ms before #2. There is a chance that this stickyCheckTimeout is being scheduled between 1 and 2.
// That means, if we just look at #1 to decide if we should scroll, we will always scroll, in oppose to the user's intention.
// Repro: Open Firefox, set checkInterval to a lower number, and try to scroll by dragging the scroll handler. It will jump back.
state.functionContext.scrollToEnd();
stickyButNotAtEndSince = false;
}
} else {
stickyButNotAtEndSince = false;
}

@@ -221,7 +234,7 @@ }, Math.max(MIN_CHECK_INTERVAL, this.props.checkInterval) || MIN_CHECK_INTERVAL);

var _computeViewState2 = computeViewState(state),
atBottom = _computeViewState2.atBottom,
atEnd = _computeViewState2.atEnd,
atStart = _computeViewState2.atStart,
atTop = _computeViewState2.atTop;
var _computeViewState = computeViewState(state),
atBottom = _computeViewState.atBottom,
atEnd = _computeViewState.atEnd,
atStart = _computeViewState.atStart,
atTop = _computeViewState.atTop;

@@ -315,3 +328,3 @@ var nextStateContext = stateContext;

Composer.defaultProps = {
checkInterval: 150,
checkInterval: 100,
debounce: 17

@@ -323,2 +336,2 @@ };

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9Db21wb3Nlci5qcyJdLCJuYW1lcyI6WyJNSU5fQ0hFQ0tfSU5URVJWQUwiLCJzZXRJbW1lZGlhdGVJbnRlcnZhbCIsImZuIiwibXMiLCJzZXRJbnRlcnZhbCIsImNvbXB1dGVWaWV3U3RhdGUiLCJtb2RlIiwic3RhdGVDb250ZXh0IiwidGFyZ2V0Iiwib2Zmc2V0SGVpZ2h0Iiwic2Nyb2xsSGVpZ2h0Iiwic2Nyb2xsVG9wIiwiYXRCb3R0b20iLCJhdFRvcCIsImF0RW5kIiwiYXRTdGFydCIsIkNvbXBvc2VyIiwicHJvcHMiLCJoYW5kbGVTY3JvbGwiLCJiaW5kIiwiaGFuZGxlU2Nyb2xsRW5kIiwiX2lnbm9yZVNjcm9sbEV2ZW50QmVmb3JlIiwic3RhdGUiLCJmdW5jdGlvbkNvbnRleHQiLCJzY3JvbGxUbyIsInNldFN0YXRlIiwic2Nyb2xsVG9Cb3R0b20iLCJzY3JvbGxUb0VuZCIsInNjcm9sbFRvVG9wIiwic2Nyb2xsVG9TdGFydCIsImludGVybmFsQ29udGV4dCIsInNldFRhcmdldCIsImFuaW1hdGluZyIsInN0aWNreSIsImVuYWJsZVdvcmtlciIsImNsZWFySW50ZXJ2YWwiLCJfc3RpY2t5Q2hlY2tUaW1lb3V0IiwiTWF0aCIsIm1heCIsImNoZWNrSW50ZXJ2YWwiLCJkaXNhYmxlV29ya2VyIiwibmV4dFByb3BzIiwidGltZVN0YW1wTG93IiwibmV4dFN0YXRlQ29udGV4dCIsIkRhdGUiLCJub3ciLCJjaGlsZHJlbiIsImRlYm91bmNlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJudW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxrQkFBa0IsR0FBRyxFQUEzQjs7QUFFQSxTQUFTQyxvQkFBVCxDQUE4QkMsRUFBOUIsRUFBa0NDLEVBQWxDLEVBQXNDO0FBQ3BDRCxFQUFBQSxFQUFFO0FBRUYsU0FBT0UsV0FBVyxDQUFDRixFQUFELEVBQUtDLEVBQUwsQ0FBbEI7QUFDRDs7QUFFRCxTQUFTRSxnQkFBVCxPQUF5RztBQUFBLE1BQTdEQyxJQUE2RCxRQUE3RUMsWUFBNkUsQ0FBN0RELElBQTZEO0FBQUEseUJBQXJERSxNQUFxRDtBQUFBLE1BQTNDQyxZQUEyQyxlQUEzQ0EsWUFBMkM7QUFBQSxNQUE3QkMsWUFBNkIsZUFBN0JBLFlBQTZCO0FBQUEsTUFBZkMsU0FBZSxlQUFmQSxTQUFlO0FBQ3ZHLE1BQU1DLFFBQVEsR0FBR0YsWUFBWSxHQUFHQyxTQUFmLEdBQTJCRixZQUEzQixJQUEyQyxDQUE1RDtBQUNBLE1BQU1JLEtBQUssR0FBR0YsU0FBUyxJQUFJLENBQTNCO0FBQ0EsTUFBTUcsS0FBSyxHQUFHUixJQUFJLEtBQUssS0FBVCxHQUFpQk8sS0FBakIsR0FBeUJELFFBQXZDO0FBRUEsU0FBTztBQUNMQSxJQUFBQSxRQUFRLEVBQVJBLFFBREs7QUFFTEUsSUFBQUEsS0FBSyxFQUFMQSxLQUZLO0FBR0xDLElBQUFBLE9BQU8sRUFBRSxDQUFDRCxLQUhMO0FBSUxELElBQUFBLEtBQUssRUFBTEE7QUFKSyxHQUFQO0FBTUQ7O0lBRW9CRyxROzs7OztBQUNuQixvQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQixrRkFBTUEsS0FBTjtBQUVBLFVBQUtDLFlBQUwsR0FBb0IsTUFBS0EsWUFBTCxDQUFrQkMsSUFBbEIsdURBQXBCO0FBQ0EsVUFBS0MsZUFBTCxHQUF1QixNQUFLQSxlQUFMLENBQXFCRCxJQUFyQix1REFBdkI7QUFFQSxVQUFLRSx3QkFBTCxHQUFnQyxDQUFoQztBQUVBLFVBQUtDLEtBQUwsR0FBYTtBQUNYQyxNQUFBQSxlQUFlLEVBQUU7QUFDZkMsUUFBQUEsUUFBUSxFQUFFLGtCQUFBYixTQUFTO0FBQUEsaUJBQUksTUFBS2MsUUFBTCxDQUFjO0FBQUEsZ0JBQUdsQixZQUFILFNBQUdBLFlBQUg7QUFBQSxtQkFBdUI7QUFDMURJLGNBQUFBLFNBQVMsRUFBVEEsU0FEMEQ7QUFFMURKLGNBQUFBLFlBQVksRUFBRSw2QkFBU0EsWUFBVCxFQUF1QixDQUFDLFdBQUQsQ0FBdkIsRUFBc0M7QUFBQSx1QkFBTSxJQUFOO0FBQUEsZUFBdEM7QUFGNEMsYUFBdkI7QUFBQSxXQUFkLENBQUo7QUFBQSxTQURKO0FBS2ZtQixRQUFBQSxjQUFjLEVBQUU7QUFBQSxpQkFBTSxNQUFLSixLQUFMLENBQVdDLGVBQVgsQ0FBMkJDLFFBQTNCLENBQW9DLE1BQXBDLENBQU47QUFBQSxTQUxEO0FBTWZHLFFBQUFBLFdBQVcsRUFBRSx1QkFBTTtBQUFBO0FBQUEsNkRBQ1RMLEtBRFM7QUFBQSxjQUNBQyxlQURBLDBCQUNBQSxlQURBO0FBQUEsY0FDaUJoQixZQURqQiwwQkFDaUJBLFlBRGpCOztBQUdqQkEsVUFBQUEsWUFBWSxDQUFDRCxJQUFiLEtBQXNCLEtBQXRCLEdBQThCaUIsZUFBZSxDQUFDSyxXQUFoQixFQUE5QixHQUE4REwsZUFBZSxDQUFDRyxjQUFoQixFQUE5RDtBQUNELFNBVmM7QUFXZkcsUUFBQUEsYUFBYSxFQUFFLHlCQUFNO0FBQUE7QUFBQSw4REFDWFAsS0FEVztBQUFBLGNBQ0ZDLGVBREUsMEJBQ0ZBLGVBREU7QUFBQSxjQUNlaEIsWUFEZiwwQkFDZUEsWUFEZjs7QUFHbkJBLFVBQUFBLFlBQVksQ0FBQ0QsSUFBYixLQUFzQixLQUF0QixHQUE4QmlCLGVBQWUsQ0FBQ0csY0FBaEIsRUFBOUIsR0FBaUVILGVBQWUsQ0FBQ0ssV0FBaEIsRUFBakU7QUFDRCxTQWZjO0FBZ0JmQSxRQUFBQSxXQUFXLEVBQUU7QUFBQSxpQkFBTSxNQUFLTixLQUFMLENBQVdDLGVBQVgsQ0FBMkJDLFFBQTNCLENBQW9DLENBQXBDLENBQU47QUFBQTtBQWhCRSxPQUROO0FBbUJYTSxNQUFBQSxlQUFlLEVBQUU7QUFDZkMsUUFBQUEsU0FBUyxFQUFFLG1CQUFBdkIsTUFBTTtBQUFBLGlCQUFJLE1BQUtpQixRQUFMLENBQWM7QUFBQSxtQkFBTztBQUFFakIsY0FBQUEsTUFBTSxFQUFOQTtBQUFGLGFBQVA7QUFBQSxXQUFkLENBQUo7QUFBQTtBQURGLE9BbkJOO0FBc0JYRyxNQUFBQSxTQUFTLEVBQUVNLEtBQUssQ0FBQ1gsSUFBTixLQUFlLEtBQWYsR0FBdUIsQ0FBdkIsR0FBMkIsTUF0QjNCO0FBdUJYQyxNQUFBQSxZQUFZLEVBQUU7QUFDWnlCLFFBQUFBLFNBQVMsRUFBRSxLQURDO0FBRVpwQixRQUFBQSxRQUFRLEVBQUUsSUFGRTtBQUdaRSxRQUFBQSxLQUFLLEVBQUUsSUFISztBQUlaRCxRQUFBQSxLQUFLLEVBQUUsSUFKSztBQUtaUCxRQUFBQSxJQUFJLEVBQUVXLEtBQUssQ0FBQ1gsSUFMQTtBQU1aMkIsUUFBQUEsTUFBTSxFQUFFO0FBTkksT0F2Qkg7QUErQlh6QixNQUFBQSxNQUFNLEVBQUU7QUEvQkcsS0FBYjtBQVJpQjtBQXlDbEI7Ozs7d0NBRW1CO0FBQ2xCLFdBQUswQixZQUFMO0FBQ0Q7OztvQ0FFZTtBQUNkQyxNQUFBQSxhQUFhLENBQUMsS0FBS0MsbUJBQU4sQ0FBYjtBQUNEOzs7bUNBRWM7QUFBQTs7QUFDYkQsTUFBQUEsYUFBYSxDQUFDLEtBQUtDLG1CQUFOLENBQWI7QUFFQSxXQUFLQSxtQkFBTCxHQUEyQm5DLG9CQUFvQixDQUM3QyxZQUFNO0FBQUEsWUFDSXFCLEtBREosR0FDYyxNQURkLENBQ0lBLEtBREo7QUFBQSxZQUVvQlcsTUFGcEIsR0FFeUNYLEtBRnpDLENBRUlmLFlBRkosQ0FFb0IwQixNQUZwQjtBQUFBLFlBRThCekIsTUFGOUIsR0FFeUNjLEtBRnpDLENBRThCZCxNQUY5Qjs7QUFJSixZQUFJeUIsTUFBTSxJQUFJekIsTUFBZCxFQUFzQjtBQUFBLGtDQUNGSCxnQkFBZ0IsQ0FBQ2lCLEtBQUQsQ0FEZDtBQUFBLGNBQ1pSLEtBRFkscUJBQ1pBLEtBRFk7O0FBR3BCLFdBQUNBLEtBQUQsSUFBVVEsS0FBSyxDQUFDQyxlQUFOLENBQXNCSSxXQUF0QixFQUFWO0FBQ0Q7QUFDRixPQVY0QyxFQVc3Q1UsSUFBSSxDQUFDQyxHQUFMLENBQVN0QyxrQkFBVCxFQUE2QixLQUFLaUIsS0FBTCxDQUFXc0IsYUFBeEMsS0FBMER2QyxrQkFYYixDQUEvQztBQWFEOzs7MkNBRXNCO0FBQ3JCLFdBQUt3QyxhQUFMO0FBQ0Q7Ozs4Q0FFeUJDLFMsRUFBVztBQUNuQyxXQUFLaEIsUUFBTCxDQUFjO0FBQUEsWUFBR2xCLFlBQUgsU0FBR0EsWUFBSDtBQUFBLGVBQXVCO0FBQ25DQSxVQUFBQSxZQUFZLG9CQUNQQSxZQURPO0FBRVZELFlBQUFBLElBQUksRUFBRW1DLFNBQVMsQ0FBQ25DLElBQVYsS0FBbUIsS0FBbkIsR0FBMkIsS0FBM0IsR0FBbUM7QUFGL0I7QUFEdUIsU0FBdkI7QUFBQSxPQUFkO0FBTUQ7Ozt3Q0FFOEI7QUFBQTs7QUFBQSxVQUFoQm9DLFlBQWdCLFNBQWhCQSxZQUFnQjs7QUFDN0I7QUFDQTtBQUNBO0FBRUEsVUFBSUEsWUFBWSxJQUFJLEtBQUtyQix3QkFBekIsRUFBbUQ7QUFDakQ7QUFDQTtBQUNBO0FBRUE7QUFDRDs7QUFFRCxXQUFLbUIsYUFBTDtBQUVBLFdBQUtmLFFBQUwsQ0FBYyxVQUFBSCxLQUFLLEVBQUk7QUFBQSxZQUNiZCxNQURhLEdBQ0ZjLEtBREUsQ0FDYmQsTUFEYTs7QUFHckIsWUFBSUEsTUFBSixFQUFZO0FBQUEsY0FDRkcsU0FERSxHQUMwQlcsS0FEMUIsQ0FDRlgsU0FERTtBQUFBLGNBQ1NKLFlBRFQsR0FDMEJlLEtBRDFCLENBQ1NmLFlBRFQ7O0FBQUEsbUNBRWtDRixnQkFBZ0IsQ0FBQ2lCLEtBQUQsQ0FGbEQ7QUFBQSxjQUVGVixRQUZFLHNCQUVGQSxRQUZFO0FBQUEsY0FFUUUsS0FGUixzQkFFUUEsS0FGUjtBQUFBLGNBRWVDLE9BRmYsc0JBRWVBLE9BRmY7QUFBQSxjQUV3QkYsS0FGeEIsc0JBRXdCQSxLQUZ4Qjs7QUFHVixjQUFJOEIsZ0JBQWdCLEdBQUdwQyxZQUF2QjtBQUVBb0MsVUFBQUEsZ0JBQWdCLEdBQUcsNkJBQVNBLGdCQUFULEVBQTJCLENBQUMsVUFBRCxDQUEzQixFQUF5QztBQUFBLG1CQUFNL0IsUUFBTjtBQUFBLFdBQXpDLENBQW5CO0FBQ0ErQixVQUFBQSxnQkFBZ0IsR0FBRyw2QkFBU0EsZ0JBQVQsRUFBMkIsQ0FBQyxPQUFELENBQTNCLEVBQXNDO0FBQUEsbUJBQU03QixLQUFOO0FBQUEsV0FBdEMsQ0FBbkI7QUFDQTZCLFVBQUFBLGdCQUFnQixHQUFHLDZCQUFTQSxnQkFBVCxFQUEyQixDQUFDLFNBQUQsQ0FBM0IsRUFBd0M7QUFBQSxtQkFBTTVCLE9BQU47QUFBQSxXQUF4QyxDQUFuQjtBQUNBNEIsVUFBQUEsZ0JBQWdCLEdBQUcsNkJBQVNBLGdCQUFULEVBQTJCLENBQUMsT0FBRCxDQUEzQixFQUFzQztBQUFBLG1CQUFNOUIsS0FBTjtBQUFBLFdBQXRDLENBQW5CLENBUlUsQ0FVVjtBQUNBO0FBQ0E7O0FBQ0E4QixVQUFBQSxnQkFBZ0IsR0FBRyw2QkFBU0EsZ0JBQVQsRUFBMkIsQ0FBQyxRQUFELENBQTNCLEVBQXVDO0FBQUEsbUJBQU1wQyxZQUFZLENBQUN5QixTQUFiLEdBQXlCLElBQXpCLEdBQWdDbEIsS0FBdEM7QUFBQSxXQUF2QyxDQUFuQixDQWJVLENBZVY7QUFDQTs7QUFDQSxjQUFJSCxTQUFTLEtBQUssSUFBbEIsRUFBd0I7QUFDdEJnQyxZQUFBQSxnQkFBZ0IsR0FBRyw2QkFBU0EsZ0JBQVQsRUFBMkIsQ0FBQyxXQUFELENBQTNCLEVBQTBDO0FBQUEscUJBQU0sS0FBTjtBQUFBLGFBQTFDLENBQW5CO0FBQ0Q7O0FBRUQsY0FBSXBDLFlBQVksS0FBS29DLGdCQUFyQixFQUF1QztBQUNyQyxtQkFBTztBQUFFcEMsY0FBQUEsWUFBWSxFQUFFb0M7QUFBaEIsYUFBUDtBQUNEO0FBQ0Y7QUFDRixPQTVCRCxFQTRCRyxZQUFNO0FBQ1AsUUFBQSxNQUFJLENBQUNyQixLQUFMLENBQVdmLFlBQVgsQ0FBd0IwQixNQUF4QixJQUFrQyxNQUFJLENBQUNDLFlBQUwsRUFBbEM7QUFDRCxPQTlCRDtBQStCRDs7O3NDQUVpQjtBQUNoQjtBQUNBLFdBQUtiLHdCQUFMLEdBQWdDdUIsSUFBSSxDQUFDQyxHQUFMLEVBQWhDO0FBRUEsV0FBS3BCLFFBQUwsQ0FBYztBQUFBLGVBQU87QUFBRWQsVUFBQUEsU0FBUyxFQUFFO0FBQWIsU0FBUDtBQUFBLE9BQWQ7QUFDRDs7OzZCQUVRO0FBQUEsVUFFTE8sWUFGSyxHQU1ILElBTkcsQ0FFTEEsWUFGSztBQUFBLFVBR0xFLGVBSEssR0FNSCxJQU5HLENBR0xBLGVBSEs7QUFBQSx3QkFNSCxJQU5HLENBSUxILEtBSks7QUFBQSxVQUlJNkIsUUFKSixlQUlJQSxRQUpKO0FBQUEsVUFJY0MsUUFKZCxlQUljQSxRQUpkO0FBQUEsd0JBTUgsSUFORyxDQUtMekIsS0FMSztBQUFBLFVBS0lDLGVBTEosZUFLSUEsZUFMSjtBQUFBLFVBS3FCTyxlQUxyQixlQUtxQkEsZUFMckI7QUFBQSxVQUtzQ25CLFNBTHRDLGVBS3NDQSxTQUx0QztBQUFBLFVBS2lESixZQUxqRCxlQUtpREEsWUFMakQ7QUFBQSxVQUsrREMsTUFML0QsZUFLK0RBLE1BTC9EO0FBUVAsYUFDRSw2QkFBQyx3QkFBRCxDQUFpQixRQUFqQjtBQUEwQixRQUFBLEtBQUssRUFBR3NCO0FBQWxDLFNBQ0UsNkJBQUMsd0JBQUQsQ0FBaUIsUUFBakI7QUFBMEIsUUFBQSxLQUFLLEVBQUdQO0FBQWxDLFNBQ0UsNkJBQUMscUJBQUQsQ0FBYyxRQUFkO0FBQXVCLFFBQUEsS0FBSyxFQUFHaEI7QUFBL0IsU0FDSXVDLFFBREosRUFHSXRDLE1BQU0sSUFDSiw2QkFBQyxpQkFBRDtBQUNFLFFBQUEsUUFBUSxFQUFHdUMsUUFEYjtBQUVFLFFBQUEsSUFBSSxFQUFDLFFBRlA7QUFHRSxRQUFBLE9BQU8sRUFBRzdCLFlBSFo7QUFJRSxRQUFBLE1BQU0sRUFBR1Y7QUFKWCxRQUpOLEVBWUlBLE1BQU0sSUFBSUcsU0FBUyxLQUFLLElBQXhCLElBQ0UsNkJBQUMsZ0JBQUQ7QUFDRSxRQUFBLElBQUksRUFBQyxXQURQO0FBRUUsUUFBQSxLQUFLLEVBQUdTLGVBRlY7QUFHRSxRQUFBLE1BQU0sRUFBR1osTUFIWDtBQUlFLFFBQUEsS0FBSyxFQUFHRztBQUpWLFFBYk4sQ0FERixDQURGLENBREY7QUEyQkQ7Ozs7RUE3S21DcUMsZUFBTUMsUzs7O0FBZ0w1Q2pDLFFBQVEsQ0FBQ2tDLFlBQVQsR0FBd0I7QUFDdEJYLEVBQUFBLGFBQWEsRUFBRSxHQURPO0FBRXRCUSxFQUFBQSxRQUFRLEVBQUU7QUFGWSxDQUF4QjtBQUtBL0IsUUFBUSxDQUFDbUMsU0FBVCxHQUFxQjtBQUNuQlosRUFBQUEsYUFBYSxFQUFFYSxtQkFBVUMsTUFETjtBQUVuQk4sRUFBQUEsUUFBUSxFQUFFSyxtQkFBVUM7QUFGRCxDQUFyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZW1vaXplIGZyb20gJ21lbW9pemUtb25lJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVwZGF0ZUluIGZyb20gJ3NpbXBsZS11cGRhdGUtaW4nO1xuXG5pbXBvcnQgRXZlbnRTcHkgZnJvbSAnLi4vRXZlbnRTcHknO1xuaW1wb3J0IEZ1bmN0aW9uQ29udGV4dCBmcm9tICcuL0Z1bmN0aW9uQ29udGV4dCc7XG5pbXBvcnQgSW50ZXJuYWxDb250ZXh0IGZyb20gJy4vSW50ZXJuYWxDb250ZXh0JztcbmltcG9ydCBTcGluZVRvIGZyb20gJy4uL1NwaW5lVG8nO1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuL1N0YXRlQ29udGV4dCc7XG5cbmNvbnN0IE1JTl9DSEVDS19JTlRFUlZBTCA9IDE3O1xuXG5mdW5jdGlvbiBzZXRJbW1lZGlhdGVJbnRlcnZhbChmbiwgbXMpIHtcbiAgZm4oKTtcblxuICByZXR1cm4gc2V0SW50ZXJ2YWwoZm4sIG1zKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVZpZXdTdGF0ZSh7IHN0YXRlQ29udGV4dDogeyBtb2RlIH0sIHRhcmdldDogeyBvZmZzZXRIZWlnaHQsIHNjcm9sbEhlaWdodCwgc2Nyb2xsVG9wIH0gfSkge1xuICBjb25zdCBhdEJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIG9mZnNldEhlaWdodCA8PSAwO1xuICBjb25zdCBhdFRvcCA9IHNjcm9sbFRvcCA8PSAwO1xuICBjb25zdCBhdEVuZCA9IG1vZGUgPT09ICd0b3AnID8gYXRUb3AgOiBhdEJvdHRvbTtcblxuICByZXR1cm4ge1xuICAgIGF0Qm90dG9tLFxuICAgIGF0RW5kLFxuICAgIGF0U3RhcnQ6ICFhdEVuZCxcbiAgICBhdFRvcFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21wb3NlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5oYW5kbGVTY3JvbGwgPSB0aGlzLmhhbmRsZVNjcm9sbC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaGFuZGxlU2Nyb2xsRW5kID0gdGhpcy5oYW5kbGVTY3JvbGxFbmQuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuX2lnbm9yZVNjcm9sbEV2ZW50QmVmb3JlID0gMDtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBmdW5jdGlvbkNvbnRleHQ6IHtcbiAgICAgICAgc2Nyb2xsVG86IHNjcm9sbFRvcCA9PiB0aGlzLnNldFN0YXRlKCh7IHN0YXRlQ29udGV4dCB9KSA9PiAoe1xuICAgICAgICAgIHNjcm9sbFRvcCxcbiAgICAgICAgICBzdGF0ZUNvbnRleHQ6IHVwZGF0ZUluKHN0YXRlQ29udGV4dCwgWydhbmltYXRpbmcnXSwgKCkgPT4gdHJ1ZSlcbiAgICAgICAgfSkpLFxuICAgICAgICBzY3JvbGxUb0JvdHRvbTogKCkgPT4gdGhpcy5zdGF0ZS5mdW5jdGlvbkNvbnRleHQuc2Nyb2xsVG8oJzEwMCUnKSxcbiAgICAgICAgc2Nyb2xsVG9FbmQ6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCB7IHN0YXRlOiB7IGZ1bmN0aW9uQ29udGV4dCwgc3RhdGVDb250ZXh0IH0gfSA9IHRoaXM7XG5cbiAgICAgICAgICBzdGF0ZUNvbnRleHQubW9kZSA9PT0gJ3RvcCcgPyBmdW5jdGlvbkNvbnRleHQuc2Nyb2xsVG9Ub3AoKSA6IGZ1bmN0aW9uQ29udGV4dC5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICB9LFxuICAgICAgICBzY3JvbGxUb1N0YXJ0OiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBzdGF0ZTogeyBmdW5jdGlvbkNvbnRleHQsIHN0YXRlQ29udGV4dCB9IH0gPSB0aGlzO1xuXG4gICAgICAgICAgc3RhdGVDb250ZXh0Lm1vZGUgPT09ICd0b3AnID8gZnVuY3Rpb25Db250ZXh0LnNjcm9sbFRvQm90dG9tKCkgOiBmdW5jdGlvbkNvbnRleHQuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2Nyb2xsVG9Ub3A6ICgpID0+IHRoaXMuc3RhdGUuZnVuY3Rpb25Db250ZXh0LnNjcm9sbFRvKDApXG4gICAgICB9LFxuICAgICAgaW50ZXJuYWxDb250ZXh0OiB7XG4gICAgICAgIHNldFRhcmdldDogdGFyZ2V0ID0+IHRoaXMuc2V0U3RhdGUoKCkgPT4gKHsgdGFyZ2V0IH0pKVxuICAgICAgfSxcbiAgICAgIHNjcm9sbFRvcDogcHJvcHMubW9kZSA9PT0gJ3RvcCcgPyAwIDogJzEwMCUnLFxuICAgICAgc3RhdGVDb250ZXh0OiB7XG4gICAgICAgIGFuaW1hdGluZzogZmFsc2UsXG4gICAgICAgIGF0Qm90dG9tOiB0cnVlLFxuICAgICAgICBhdEVuZDogdHJ1ZSxcbiAgICAgICAgYXRUb3A6IHRydWUsXG4gICAgICAgIG1vZGU6IHByb3BzLm1vZGUsXG4gICAgICAgIHN0aWNreTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHRhcmdldDogbnVsbFxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLmVuYWJsZVdvcmtlcigpO1xuICB9XG5cbiAgZGlzYWJsZVdvcmtlcigpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3N0aWNreUNoZWNrVGltZW91dCk7XG4gIH1cblxuICBlbmFibGVXb3JrZXIoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9zdGlja3lDaGVja1RpbWVvdXQpO1xuXG4gICAgdGhpcy5fc3RpY2t5Q2hlY2tUaW1lb3V0ID0gc2V0SW1tZWRpYXRlSW50ZXJ2YWwoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgc3RhdGVDb250ZXh0OiB7IHN0aWNreSB9LCB0YXJnZXQgfSA9IHN0YXRlO1xuXG4gICAgICAgIGlmIChzdGlja3kgJiYgdGFyZ2V0KSB7XG4gICAgICAgICAgY29uc3QgeyBhdEVuZCB9ID0gY29tcHV0ZVZpZXdTdGF0ZShzdGF0ZSk7XG5cbiAgICAgICAgICAhYXRFbmQgJiYgc3RhdGUuZnVuY3Rpb25Db250ZXh0LnNjcm9sbFRvRW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBNYXRoLm1heChNSU5fQ0hFQ0tfSU5URVJWQUwsIHRoaXMucHJvcHMuY2hlY2tJbnRlcnZhbCkgfHwgTUlOX0NIRUNLX0lOVEVSVkFMXG4gICAgKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuZGlzYWJsZVdvcmtlcigpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICB0aGlzLnNldFN0YXRlKCh7IHN0YXRlQ29udGV4dCB9KSA9PiAoe1xuICAgICAgc3RhdGVDb250ZXh0OiB7XG4gICAgICAgIC4uLnN0YXRlQ29udGV4dCxcbiAgICAgICAgbW9kZTogbmV4dFByb3BzLm1vZGUgPT09ICd0b3AnID8gJ3RvcCcgOiAnYm90dG9tJ1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIGhhbmRsZVNjcm9sbCh7IHRpbWVTdGFtcExvdyB9KSB7XG4gICAgLy8gQ3VycmVudGx5LCB0aGVyZSBhcmUgbm8gcmVsaWFibGUgd2F5IHRvIGNoZWNrIGlmIHRoZSBcInNjcm9sbFwiIGV2ZW50IGlzIHRyaWdnZXIgZHVlIHRvXG4gICAgLy8gdXNlciBnZXN0dXJlLCBwcm9ncmFtbWF0aWMgc2Nyb2xsaW5nLCBvciBDaHJvbWUtc3ludGhlc2l6ZWQgXCJzY3JvbGxcIiBldmVudCB0byBjb21wZW5zYXRlIHNpemUgY2hhbmdlLlxuICAgIC8vIFRodXMsIHdlIHVzZSBvdXIgYmVzdC1lZmZvcnQgdG8gZ3Vlc3MgaWYgaXQgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIgZ2VzdHVyZSwgYW5kIGRpc2FibGUgc3RpY2t5IGlmIGl0IGlzIGhlYWRpbmcgdG93YXJkcyB0aGUgc3RhcnQgZGlyZWN0aW9uLlxuXG4gICAgaWYgKHRpbWVTdGFtcExvdyA8PSB0aGlzLl9pZ25vcmVTY3JvbGxFdmVudEJlZm9yZSkge1xuICAgICAgLy8gU2luY2Ugd2UgZGVib3VuY2UgXCJzY3JvbGxcIiBldmVudCwgdGhpcyBoYW5kbGVyIG1pZ2h0IGJlIGNhbGxlZCBhZnRlciBzcGluZVRvLm9uRW5kIChhLmsuYS4gYXJ0aWZpY2lhbCBzY3JvbGxpbmcpLlxuICAgICAgLy8gV2Ugc2hvdWxkIGlnbm9yZSBkZWJvdW5jZWQgZXZlbnQgZmlyZWQgYWZ0ZXIgc2Nyb2xsRW5kLCBiZWNhdXNlIHdpdGhvdXQgc2tpcHBpbmcgdGhlbSwgdGhlIHVzZXJJbml0aWF0ZWRTY3JvbGwgY2FsY3VsYXRlZCBiZWxvdyB3aWxsIG5vdCBiZSBhY2N1cmF0ZS5cbiAgICAgIC8vIFRodXMsIG9uIGEgZmFzdCBtYWNoaW5lLCBhZGRpbmcgZWxlbWVudHMgc3VwZXIgZmFzdCB3aWxsIGxvc2UgdGhlIFwic3RpY2tpbmVzc1wiLlxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaXNhYmxlV29ya2VyKCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBzdGF0ZTtcblxuICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc3RhdGVDb250ZXh0IH0gPSBzdGF0ZTtcbiAgICAgICAgY29uc3QgeyBhdEJvdHRvbSwgYXRFbmQsIGF0U3RhcnQsIGF0VG9wIH0gPSBjb21wdXRlVmlld1N0YXRlKHN0YXRlKTtcbiAgICAgICAgbGV0IG5leHRTdGF0ZUNvbnRleHQgPSBzdGF0ZUNvbnRleHQ7XG5cbiAgICAgICAgbmV4dFN0YXRlQ29udGV4dCA9IHVwZGF0ZUluKG5leHRTdGF0ZUNvbnRleHQsIFsnYXRCb3R0b20nXSwgKCkgPT4gYXRCb3R0b20pO1xuICAgICAgICBuZXh0U3RhdGVDb250ZXh0ID0gdXBkYXRlSW4obmV4dFN0YXRlQ29udGV4dCwgWydhdEVuZCddLCAoKSA9PiBhdEVuZCk7XG4gICAgICAgIG5leHRTdGF0ZUNvbnRleHQgPSB1cGRhdGVJbihuZXh0U3RhdGVDb250ZXh0LCBbJ2F0U3RhcnQnXSwgKCkgPT4gYXRTdGFydCk7XG4gICAgICAgIG5leHRTdGF0ZUNvbnRleHQgPSB1cGRhdGVJbihuZXh0U3RhdGVDb250ZXh0LCBbJ2F0VG9wJ10sICgpID0+IGF0VG9wKTtcblxuICAgICAgICAvLyBTdGlja3kgbWVhbnM6XG4gICAgICAgIC8vIC0gSWYgaXQgaXMgc2Nyb2xsZWQgcHJvZ3JhbWF0aWNhbGx5LCB3ZSBhcmUgc3RpbGwgaW4gc3RpY2t5IG1vZGVcbiAgICAgICAgLy8gLSBJZiBpdCBpcyBzY3JvbGxlZCBieSB0aGUgdXNlciwgdGhlbiBzdGlja3kgbWVhbnMgaWYgd2UgYXJlIGF0IHRoZSBlbmRcbiAgICAgICAgbmV4dFN0YXRlQ29udGV4dCA9IHVwZGF0ZUluKG5leHRTdGF0ZUNvbnRleHQsIFsnc3RpY2t5J10sICgpID0+IHN0YXRlQ29udGV4dC5hbmltYXRpbmcgPyB0cnVlIDogYXRFbmQpO1xuXG4gICAgICAgIC8vIElmIG5vIHNjcm9sbFRvcCBpcyBzZXQgKG5vdCBpbiBwcm9ncmFtbWF0aWMgc2Nyb2xsaW5nIG1vZGUpLCB3ZSBzaG91bGQgc2V0IFwiYW5pbWF0aW5nXCIgdG8gZmFsc2VcbiAgICAgICAgLy8gXCJhbmltYXRpbmdcIiBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgXCJzdGlja3lcIiBwcm9wZXJ0eVxuICAgICAgICBpZiAoc2Nyb2xsVG9wID09PSBudWxsKSB7XG4gICAgICAgICAgbmV4dFN0YXRlQ29udGV4dCA9IHVwZGF0ZUluKG5leHRTdGF0ZUNvbnRleHQsIFsnYW5pbWF0aW5nJ10sICgpID0+IGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZUNvbnRleHQgIT09IG5leHRTdGF0ZUNvbnRleHQpIHtcbiAgICAgICAgICByZXR1cm4geyBzdGF0ZUNvbnRleHQ6IG5leHRTdGF0ZUNvbnRleHQgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sICgpID0+IHtcbiAgICAgIHRoaXMuc3RhdGUuc3RhdGVDb250ZXh0LnN0aWNreSAmJiB0aGlzLmVuYWJsZVdvcmtlcigpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2Nyb2xsRW5kKCkge1xuICAgIC8vIFdlIHNob3VsZCBpZ25vcmUgZGVib3VuY2luZyBoYW5kbGVTY3JvbGwgdGhhdCBlbWl0IGJlZm9yZSB0aGlzIHRpbWVcbiAgICB0aGlzLl9pZ25vcmVTY3JvbGxFdmVudEJlZm9yZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKCgpID0+ICh7IHNjcm9sbFRvcDogbnVsbCB9KSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgaGFuZGxlU2Nyb2xsLFxuICAgICAgaGFuZGxlU2Nyb2xsRW5kLFxuICAgICAgcHJvcHM6IHsgY2hpbGRyZW4sIGRlYm91bmNlIH0sXG4gICAgICBzdGF0ZTogeyBmdW5jdGlvbkNvbnRleHQsIGludGVybmFsQ29udGV4dCwgc2Nyb2xsVG9wLCBzdGF0ZUNvbnRleHQsIHRhcmdldCB9XG4gICAgfSA9IHRoaXM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEludGVybmFsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17IGludGVybmFsQ29udGV4dCB9PlxuICAgICAgICA8RnVuY3Rpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXsgZnVuY3Rpb25Db250ZXh0IH0+XG4gICAgICAgICAgPFN0YXRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17IHN0YXRlQ29udGV4dCB9PlxuICAgICAgICAgICAgeyBjaGlsZHJlbiB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRhcmdldCAmJlxuICAgICAgICAgICAgICAgIDxFdmVudFNweVxuICAgICAgICAgICAgICAgICAgZGVib3VuY2U9eyBkZWJvdW5jZSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPVwic2Nyb2xsXCJcbiAgICAgICAgICAgICAgICAgIG9uRXZlbnQ9eyBoYW5kbGVTY3JvbGwgfVxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PXsgdGFyZ2V0IH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0YXJnZXQgJiYgc2Nyb2xsVG9wICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgPFNwaW5lVG9cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJzY3JvbGxUb3BcIlxuICAgICAgICAgICAgICAgICAgb25FbmQ9eyBoYW5kbGVTY3JvbGxFbmQgfVxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PXsgdGFyZ2V0IH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXsgc2Nyb2xsVG9wIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvU3RhdGVDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L0Z1bmN0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvSW50ZXJuYWxDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuQ29tcG9zZXIuZGVmYXVsdFByb3BzID0ge1xuICBjaGVja0ludGVydmFsOiAxNTAsXG4gIGRlYm91bmNlOiAxN1xufTtcblxuQ29tcG9zZXIucHJvcFR5cGVzID0ge1xuICBjaGVja0ludGVydmFsOiBQcm9wVHlwZXMubnVtYmVyLFxuICBkZWJvdW5jZTogUHJvcFR5cGVzLm51bWJlclxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9Db21wb3Nlci5qcyJdLCJuYW1lcyI6WyJNSU5fQ0hFQ0tfSU5URVJWQUwiLCJTQ1JPTExfREVDSVNJT05fRFVSQVRJT04iLCJzZXRJbW1lZGlhdGVJbnRlcnZhbCIsImZuIiwibXMiLCJzZXRJbnRlcnZhbCIsImNvbXB1dGVWaWV3U3RhdGUiLCJtb2RlIiwic3RhdGVDb250ZXh0IiwidGFyZ2V0Iiwib2Zmc2V0SGVpZ2h0Iiwic2Nyb2xsSGVpZ2h0Iiwic2Nyb2xsVG9wIiwiYXRCb3R0b20iLCJhdFRvcCIsImF0RW5kIiwiYXRTdGFydCIsIkNvbXBvc2VyIiwicHJvcHMiLCJoYW5kbGVTY3JvbGwiLCJiaW5kIiwiaGFuZGxlU2Nyb2xsRW5kIiwiX2lnbm9yZVNjcm9sbEV2ZW50QmVmb3JlIiwic3RhdGUiLCJmdW5jdGlvbkNvbnRleHQiLCJzY3JvbGxUbyIsInNldFN0YXRlIiwic2Nyb2xsVG9Cb3R0b20iLCJzY3JvbGxUb0VuZCIsInNjcm9sbFRvVG9wIiwic2Nyb2xsVG9TdGFydCIsImludGVybmFsQ29udGV4dCIsInNldFRhcmdldCIsImFuaW1hdGluZyIsInN0aWNreSIsImVuYWJsZVdvcmtlciIsImNsZWFySW50ZXJ2YWwiLCJfc3RpY2t5Q2hlY2tUaW1lb3V0Iiwic3RpY2t5QnV0Tm90QXRFbmRTaW5jZSIsIkRhdGUiLCJub3ciLCJNYXRoIiwibWF4IiwiY2hlY2tJbnRlcnZhbCIsImRpc2FibGVXb3JrZXIiLCJuZXh0UHJvcHMiLCJ0aW1lU3RhbXBMb3ciLCJuZXh0U3RhdGVDb250ZXh0IiwiY2hpbGRyZW4iLCJkZWJvdW5jZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibnVtYmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7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QUdzQjtBQUFsQyxTQUNFLDZCQUFDLHdCQUFELENBQWlCLFFBQWpCO0FBQTBCLFFBQUEsS0FBSyxFQUFHUDtBQUFsQyxTQUNFLDZCQUFDLHFCQUFELENBQWMsUUFBZDtBQUF1QixRQUFBLEtBQUssRUFBR2hCO0FBQS9CLFNBQ0l3QyxRQURKLEVBR0l2QyxNQUFNLElBQ0osNkJBQUMsaUJBQUQ7QUFDRSxRQUFBLFFBQVEsRUFBR3dDLFFBRGI7QUFFRSxRQUFBLElBQUksRUFBQyxRQUZQO0FBR0UsUUFBQSxPQUFPLEVBQUc5QixZQUhaO0FBSUUsUUFBQSxNQUFNLEVBQUdWO0FBSlgsUUFKTixFQVlJQSxNQUFNLElBQUlHLFNBQVMsS0FBSyxJQUF4QixJQUNFLDZCQUFDLGdCQUFEO0FBQ0UsUUFBQSxJQUFJLEVBQUMsV0FEUDtBQUVFLFFBQUEsS0FBSyxFQUFHUyxlQUZWO0FBR0UsUUFBQSxNQUFNLEVBQUdaLE1BSFg7QUFJRSxRQUFBLEtBQUssRUFBR0c7QUFKVixRQWJOLENBREYsQ0FERixDQURGO0FBMkJEOzs7O0VBL0xtQ3NDLGVBQU1DLFM7OztBQWtNNUNsQyxRQUFRLENBQUNtQyxZQUFULEdBQXdCO0FBQ3RCVCxFQUFBQSxhQUFhLEVBQUUsR0FETztBQUV0Qk0sRUFBQUEsUUFBUSxFQUFFO0FBRlksQ0FBeEI7QUFLQWhDLFFBQVEsQ0FBQ29DLFNBQVQsR0FBcUI7QUFDbkJWLEVBQUFBLGFBQWEsRUFBRVcsbUJBQVVDLE1BRE47QUFFbkJOLEVBQUFBLFFBQVEsRUFBRUssbUJBQVVDO0FBRkQsQ0FBckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVtb2l6ZSBmcm9tICdtZW1vaXplLW9uZSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1cGRhdGVJbiBmcm9tICdzaW1wbGUtdXBkYXRlLWluJztcblxuaW1wb3J0IEV2ZW50U3B5IGZyb20gJy4uL0V2ZW50U3B5JztcbmltcG9ydCBGdW5jdGlvbkNvbnRleHQgZnJvbSAnLi9GdW5jdGlvbkNvbnRleHQnO1xuaW1wb3J0IEludGVybmFsQ29udGV4dCBmcm9tICcuL0ludGVybmFsQ29udGV4dCc7XG5pbXBvcnQgU3BpbmVUbyBmcm9tICcuLi9TcGluZVRvJztcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnLi9TdGF0ZUNvbnRleHQnO1xuXG5jb25zdCBNSU5fQ0hFQ0tfSU5URVJWQUwgPSAxNzsgICAgICAgLy8gMSBmcmFtZVxuY29uc3QgU0NST0xMX0RFQ0lTSU9OX0RVUkFUSU9OID0gMzQ7IC8vIDIgZnJhbWVzXG5cbmZ1bmN0aW9uIHNldEltbWVkaWF0ZUludGVydmFsKGZuLCBtcykge1xuICBmbigpO1xuXG4gIHJldHVybiBzZXRJbnRlcnZhbChmbiwgbXMpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlVmlld1N0YXRlKHsgc3RhdGVDb250ZXh0OiB7IG1vZGUgfSwgdGFyZ2V0OiB7IG9mZnNldEhlaWdodCwgc2Nyb2xsSGVpZ2h0LCBzY3JvbGxUb3AgfSB9KSB7XG4gIGNvbnN0IGF0Qm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gb2Zmc2V0SGVpZ2h0IDw9IDA7XG4gIGNvbnN0IGF0VG9wID0gc2Nyb2xsVG9wIDw9IDA7XG4gIGNvbnN0IGF0RW5kID0gbW9kZSA9PT0gJ3RvcCcgPyBhdFRvcCA6IGF0Qm90dG9tO1xuXG4gIHJldHVybiB7XG4gICAgYXRCb3R0b20sXG4gICAgYXRFbmQsXG4gICAgYXRTdGFydDogIWF0RW5kLFxuICAgIGF0VG9wXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbXBvc2VyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLmhhbmRsZVNjcm9sbCA9IHRoaXMuaGFuZGxlU2Nyb2xsLmJpbmQodGhpcyk7XG4gICAgdGhpcy5oYW5kbGVTY3JvbGxFbmQgPSB0aGlzLmhhbmRsZVNjcm9sbEVuZC5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5faWdub3JlU2Nyb2xsRXZlbnRCZWZvcmUgPSAwO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGZ1bmN0aW9uQ29udGV4dDoge1xuICAgICAgICBzY3JvbGxUbzogc2Nyb2xsVG9wID0+IHRoaXMuc2V0U3RhdGUoKHsgc3RhdGVDb250ZXh0IH0pID0+ICh7XG4gICAgICAgICAgc2Nyb2xsVG9wLFxuICAgICAgICAgIHN0YXRlQ29udGV4dDogdXBkYXRlSW4oc3RhdGVDb250ZXh0LCBbJ2FuaW1hdGluZyddLCAoKSA9PiB0cnVlKVxuICAgICAgICB9KSksXG4gICAgICAgIHNjcm9sbFRvQm90dG9tOiAoKSA9PiB0aGlzLnN0YXRlLmZ1bmN0aW9uQ29udGV4dC5zY3JvbGxUbygnMTAwJScpLFxuICAgICAgICBzY3JvbGxUb0VuZDogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgc3RhdGU6IHsgZnVuY3Rpb25Db250ZXh0LCBzdGF0ZUNvbnRleHQgfSB9ID0gdGhpcztcblxuICAgICAgICAgIHN0YXRlQ29udGV4dC5tb2RlID09PSAndG9wJyA/IGZ1bmN0aW9uQ29udGV4dC5zY3JvbGxUb1RvcCgpIDogZnVuY3Rpb25Db250ZXh0LnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNjcm9sbFRvU3RhcnQ6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCB7IHN0YXRlOiB7IGZ1bmN0aW9uQ29udGV4dCwgc3RhdGVDb250ZXh0IH0gfSA9IHRoaXM7XG5cbiAgICAgICAgICBzdGF0ZUNvbnRleHQubW9kZSA9PT0gJ3RvcCcgPyBmdW5jdGlvbkNvbnRleHQuc2Nyb2xsVG9Cb3R0b20oKSA6IGZ1bmN0aW9uQ29udGV4dC5zY3JvbGxUb1RvcCgpO1xuICAgICAgICB9LFxuICAgICAgICBzY3JvbGxUb1RvcDogKCkgPT4gdGhpcy5zdGF0ZS5mdW5jdGlvbkNvbnRleHQuc2Nyb2xsVG8oMClcbiAgICAgIH0sXG4gICAgICBpbnRlcm5hbENvbnRleHQ6IHtcbiAgICAgICAgc2V0VGFyZ2V0OiB0YXJnZXQgPT4gdGhpcy5zZXRTdGF0ZSgoKSA9PiAoeyB0YXJnZXQgfSkpXG4gICAgICB9LFxuICAgICAgc2Nyb2xsVG9wOiBwcm9wcy5tb2RlID09PSAndG9wJyA/IDAgOiAnMTAwJScsXG4gICAgICBzdGF0ZUNvbnRleHQ6IHtcbiAgICAgICAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgICAgICAgYXRCb3R0b206IHRydWUsXG4gICAgICAgIGF0RW5kOiB0cnVlLFxuICAgICAgICBhdFRvcDogdHJ1ZSxcbiAgICAgICAgbW9kZTogcHJvcHMubW9kZSxcbiAgICAgICAgc3RpY2t5OiB0cnVlXG4gICAgICB9LFxuICAgICAgdGFyZ2V0OiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuZW5hYmxlV29ya2VyKCk7XG4gIH1cblxuICBkaXNhYmxlV29ya2VyKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc3RpY2t5Q2hlY2tUaW1lb3V0KTtcbiAgfVxuXG4gIGVuYWJsZVdvcmtlcigpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3N0aWNreUNoZWNrVGltZW91dCk7XG5cbiAgICBsZXQgc3RpY2t5QnV0Tm90QXRFbmRTaW5jZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5fc3RpY2t5Q2hlY2tUaW1lb3V0ID0gc2V0SW1tZWRpYXRlSW50ZXJ2YWwoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgc3RhdGVDb250ZXh0OiB7IHN0aWNreSB9LCB0YXJnZXQgfSA9IHN0YXRlO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBzdGlja3lcbiAgICAgICAgICAmJiB0YXJnZXRcbiAgICAgICAgICAmJiAhY29tcHV0ZVZpZXdTdGF0ZShzdGF0ZSkuYXRFbmRcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKCFzdGlja3lCdXROb3RBdEVuZFNpbmNlKSB7XG4gICAgICAgICAgICBzdGlja3lCdXROb3RBdEVuZFNpbmNlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKERhdGUubm93KCkgLSBzdGlja3lCdXROb3RBdEVuZFNpbmNlID4gU0NST0xMX0RFQ0lTSU9OX0RVUkFUSU9OKSB7XG4gICAgICAgICAgICAvLyBRdWlya3M6IEluIEZpcmVmb3gsIGFmdGVyIHVzZXIgc2Nyb2xsIGRvd24sIEZpcmVmb3ggZG8gdHdvIHRoaW5nczpcbiAgICAgICAgICAgIC8vICAgICAgICAgMS4gU2V0IHRvIGEgbmV3IFwic2Nyb2xsVG9wXCJcbiAgICAgICAgICAgIC8vICAgICAgICAgMi4gRmlyZSBcInNjcm9sbFwiIGV2ZW50XG4gICAgICAgICAgICAvLyAgICAgICAgIEZvciB3aGF0IHdlIG9ic2VydmVkLCAjMSBpcyBmaXJlZCBhYm91dCAyMG1zIGJlZm9yZSAjMi4gVGhlcmUgaXMgYSBjaGFuY2UgdGhhdCB0aGlzIHN0aWNreUNoZWNrVGltZW91dCBpcyBiZWluZyBzY2hlZHVsZWQgYmV0d2VlbiAxIGFuZCAyLlxuICAgICAgICAgICAgLy8gICAgICAgICBUaGF0IG1lYW5zLCBpZiB3ZSBqdXN0IGxvb2sgYXQgIzEgdG8gZGVjaWRlIGlmIHdlIHNob3VsZCBzY3JvbGwsIHdlIHdpbGwgYWx3YXlzIHNjcm9sbCwgaW4gb3Bwb3NlIHRvIHRoZSB1c2VyJ3MgaW50ZW50aW9uLlxuICAgICAgICAgICAgLy8gUmVwcm86IE9wZW4gRmlyZWZveCwgc2V0IGNoZWNrSW50ZXJ2YWwgdG8gYSBsb3dlciBudW1iZXIsIGFuZCB0cnkgdG8gc2Nyb2xsIGJ5IGRyYWdnaW5nIHRoZSBzY3JvbGwgaGFuZGxlci4gSXQgd2lsbCBqdW1wIGJhY2suXG5cbiAgICAgICAgICAgIHN0YXRlLmZ1bmN0aW9uQ29udGV4dC5zY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgc3RpY2t5QnV0Tm90QXRFbmRTaW5jZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGlja3lCdXROb3RBdEVuZFNpbmNlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBNYXRoLm1heChNSU5fQ0hFQ0tfSU5URVJWQUwsIHRoaXMucHJvcHMuY2hlY2tJbnRlcnZhbCkgfHwgTUlOX0NIRUNLX0lOVEVSVkFMXG4gICAgKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuZGlzYWJsZVdvcmtlcigpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICB0aGlzLnNldFN0YXRlKCh7IHN0YXRlQ29udGV4dCB9KSA9PiAoe1xuICAgICAgc3RhdGVDb250ZXh0OiB7XG4gICAgICAgIC4uLnN0YXRlQ29udGV4dCxcbiAgICAgICAgbW9kZTogbmV4dFByb3BzLm1vZGUgPT09ICd0b3AnID8gJ3RvcCcgOiAnYm90dG9tJ1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIGhhbmRsZVNjcm9sbCh7IHRpbWVTdGFtcExvdyB9KSB7XG4gICAgLy8gQ3VycmVudGx5LCB0aGVyZSBhcmUgbm8gcmVsaWFibGUgd2F5IHRvIGNoZWNrIGlmIHRoZSBcInNjcm9sbFwiIGV2ZW50IGlzIHRyaWdnZXIgZHVlIHRvXG4gICAgLy8gdXNlciBnZXN0dXJlLCBwcm9ncmFtbWF0aWMgc2Nyb2xsaW5nLCBvciBDaHJvbWUtc3ludGhlc2l6ZWQgXCJzY3JvbGxcIiBldmVudCB0byBjb21wZW5zYXRlIHNpemUgY2hhbmdlLlxuICAgIC8vIFRodXMsIHdlIHVzZSBvdXIgYmVzdC1lZmZvcnQgdG8gZ3Vlc3MgaWYgaXQgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIgZ2VzdHVyZSwgYW5kIGRpc2FibGUgc3RpY2t5IGlmIGl0IGlzIGhlYWRpbmcgdG93YXJkcyB0aGUgc3RhcnQgZGlyZWN0aW9uLlxuXG4gICAgaWYgKHRpbWVTdGFtcExvdyA8PSB0aGlzLl9pZ25vcmVTY3JvbGxFdmVudEJlZm9yZSkge1xuICAgICAgLy8gU2luY2Ugd2UgZGVib3VuY2UgXCJzY3JvbGxcIiBldmVudCwgdGhpcyBoYW5kbGVyIG1pZ2h0IGJlIGNhbGxlZCBhZnRlciBzcGluZVRvLm9uRW5kIChhLmsuYS4gYXJ0aWZpY2lhbCBzY3JvbGxpbmcpLlxuICAgICAgLy8gV2Ugc2hvdWxkIGlnbm9yZSBkZWJvdW5jZWQgZXZlbnQgZmlyZWQgYWZ0ZXIgc2Nyb2xsRW5kLCBiZWNhdXNlIHdpdGhvdXQgc2tpcHBpbmcgdGhlbSwgdGhlIHVzZXJJbml0aWF0ZWRTY3JvbGwgY2FsY3VsYXRlZCBiZWxvdyB3aWxsIG5vdCBiZSBhY2N1cmF0ZS5cbiAgICAgIC8vIFRodXMsIG9uIGEgZmFzdCBtYWNoaW5lLCBhZGRpbmcgZWxlbWVudHMgc3VwZXIgZmFzdCB3aWxsIGxvc2UgdGhlIFwic3RpY2tpbmVzc1wiLlxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaXNhYmxlV29ya2VyKCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBzdGF0ZTtcblxuICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc3RhdGVDb250ZXh0IH0gPSBzdGF0ZTtcbiAgICAgICAgY29uc3QgeyBhdEJvdHRvbSwgYXRFbmQsIGF0U3RhcnQsIGF0VG9wIH0gPSBjb21wdXRlVmlld1N0YXRlKHN0YXRlKTtcbiAgICAgICAgbGV0IG5leHRTdGF0ZUNvbnRleHQgPSBzdGF0ZUNvbnRleHQ7XG5cbiAgICAgICAgbmV4dFN0YXRlQ29udGV4dCA9IHVwZGF0ZUluKG5leHRTdGF0ZUNvbnRleHQsIFsnYXRCb3R0b20nXSwgKCkgPT4gYXRCb3R0b20pO1xuICAgICAgICBuZXh0U3RhdGVDb250ZXh0ID0gdXBkYXRlSW4obmV4dFN0YXRlQ29udGV4dCwgWydhdEVuZCddLCAoKSA9PiBhdEVuZCk7XG4gICAgICAgIG5leHRTdGF0ZUNvbnRleHQgPSB1cGRhdGVJbihuZXh0U3RhdGVDb250ZXh0LCBbJ2F0U3RhcnQnXSwgKCkgPT4gYXRTdGFydCk7XG4gICAgICAgIG5leHRTdGF0ZUNvbnRleHQgPSB1cGRhdGVJbihuZXh0U3RhdGVDb250ZXh0LCBbJ2F0VG9wJ10sICgpID0+IGF0VG9wKTtcblxuICAgICAgICAvLyBTdGlja3kgbWVhbnM6XG4gICAgICAgIC8vIC0gSWYgaXQgaXMgc2Nyb2xsZWQgcHJvZ3JhbWF0aWNhbGx5LCB3ZSBhcmUgc3RpbGwgaW4gc3RpY2t5IG1vZGVcbiAgICAgICAgLy8gLSBJZiBpdCBpcyBzY3JvbGxlZCBieSB0aGUgdXNlciwgdGhlbiBzdGlja3kgbWVhbnMgaWYgd2UgYXJlIGF0IHRoZSBlbmRcbiAgICAgICAgbmV4dFN0YXRlQ29udGV4dCA9IHVwZGF0ZUluKG5leHRTdGF0ZUNvbnRleHQsIFsnc3RpY2t5J10sICgpID0+IHN0YXRlQ29udGV4dC5hbmltYXRpbmcgPyB0cnVlIDogYXRFbmQpO1xuXG4gICAgICAgIC8vIElmIG5vIHNjcm9sbFRvcCBpcyBzZXQgKG5vdCBpbiBwcm9ncmFtbWF0aWMgc2Nyb2xsaW5nIG1vZGUpLCB3ZSBzaG91bGQgc2V0IFwiYW5pbWF0aW5nXCIgdG8gZmFsc2VcbiAgICAgICAgLy8gXCJhbmltYXRpbmdcIiBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgXCJzdGlja3lcIiBwcm9wZXJ0eVxuICAgICAgICBpZiAoc2Nyb2xsVG9wID09PSBudWxsKSB7XG4gICAgICAgICAgbmV4dFN0YXRlQ29udGV4dCA9IHVwZGF0ZUluKG5leHRTdGF0ZUNvbnRleHQsIFsnYW5pbWF0aW5nJ10sICgpID0+IGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZUNvbnRleHQgIT09IG5leHRTdGF0ZUNvbnRleHQpIHtcbiAgICAgICAgICByZXR1cm4geyBzdGF0ZUNvbnRleHQ6IG5leHRTdGF0ZUNvbnRleHQgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sICgpID0+IHtcbiAgICAgIHRoaXMuc3RhdGUuc3RhdGVDb250ZXh0LnN0aWNreSAmJiB0aGlzLmVuYWJsZVdvcmtlcigpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2Nyb2xsRW5kKCkge1xuICAgIC8vIFdlIHNob3VsZCBpZ25vcmUgZGVib3VuY2luZyBoYW5kbGVTY3JvbGwgdGhhdCBlbWl0IGJlZm9yZSB0aGlzIHRpbWVcbiAgICB0aGlzLl9pZ25vcmVTY3JvbGxFdmVudEJlZm9yZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKCgpID0+ICh7IHNjcm9sbFRvcDogbnVsbCB9KSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgaGFuZGxlU2Nyb2xsLFxuICAgICAgaGFuZGxlU2Nyb2xsRW5kLFxuICAgICAgcHJvcHM6IHsgY2hpbGRyZW4sIGRlYm91bmNlIH0sXG4gICAgICBzdGF0ZTogeyBmdW5jdGlvbkNvbnRleHQsIGludGVybmFsQ29udGV4dCwgc2Nyb2xsVG9wLCBzdGF0ZUNvbnRleHQsIHRhcmdldCB9XG4gICAgfSA9IHRoaXM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEludGVybmFsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17IGludGVybmFsQ29udGV4dCB9PlxuICAgICAgICA8RnVuY3Rpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXsgZnVuY3Rpb25Db250ZXh0IH0+XG4gICAgICAgICAgPFN0YXRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17IHN0YXRlQ29udGV4dCB9PlxuICAgICAgICAgICAgeyBjaGlsZHJlbiB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRhcmdldCAmJlxuICAgICAgICAgICAgICAgIDxFdmVudFNweVxuICAgICAgICAgICAgICAgICAgZGVib3VuY2U9eyBkZWJvdW5jZSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPVwic2Nyb2xsXCJcbiAgICAgICAgICAgICAgICAgIG9uRXZlbnQ9eyBoYW5kbGVTY3JvbGwgfVxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PXsgdGFyZ2V0IH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0YXJnZXQgJiYgc2Nyb2xsVG9wICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgPFNwaW5lVG9cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJzY3JvbGxUb3BcIlxuICAgICAgICAgICAgICAgICAgb25FbmQ9eyBoYW5kbGVTY3JvbGxFbmQgfVxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PXsgdGFyZ2V0IH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXsgc2Nyb2xsVG9wIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvU3RhdGVDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L0Z1bmN0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvSW50ZXJuYWxDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuQ29tcG9zZXIuZGVmYXVsdFByb3BzID0ge1xuICBjaGVja0ludGVydmFsOiAxMDAsXG4gIGRlYm91bmNlOiAxN1xufTtcblxuQ29tcG9zZXIucHJvcFR5cGVzID0ge1xuICBjaGVja0ludGVydmFsOiBQcm9wVHlwZXMubnVtYmVyLFxuICBkZWJvdW5jZTogUHJvcFR5cGVzLm51bWJlclxufTtcbiJdfQ==
{
"name": "react-scroll-to-bottom",
"version": "1.3.0",
"version": "1.3.1-master.1fa3dd1",
"description": "React container that will auto scroll to bottom",

@@ -5,0 +5,0 @@ "keywords": [