1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | 1× 4× 2× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 6× 6× 1× 1× 1× 1× 1× 1× 1× 1× 6× 6× 1× 1× 1× 1× 1× 1× | 'use strict'; // istanbul ignore next var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; Iif (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); Iif (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else Eif ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; // istanbul ignore next var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; Eif ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { Eif (protoProps) defineProperties(Constructor.prototype, protoProps); Iif (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // istanbul ignore next function _inherits(subClass, superClass) { Iif (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); Eif (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // istanbul ignore next function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var _reactAddons = require('react/addons'); var _reactAddons2 = _interopRequireDefault(_reactAddons); var _chai = require('chai'); var _sinon = require('sinon'); var _sinon2 = _interopRequireDefault(_sinon); var _Utils = require('../Utils'); var _ = require('../'); describe('Utils', function () { describe('onPrototype', function () { var Foo = (function () { function Foo() { _classCallCheck(this, Foo); } _createClass(Foo, [{ key: 'a', value: function a() {} }, { key: 'b', value: function b() {} }, { key: 'componentDidUpdate', value: function componentDidUpdate() {} }]); return Foo; })(); var lifecycleSpy = _sinon2['default'].spy(); var methodSpy = _sinon2['default'].spy(); (0, _Utils.onPrototype)(Foo, lifecycleSpy, methodSpy); (0, _chai.expect)(lifecycleSpy.callCount).to.equal(1); (0, _chai.expect)(lifecycleSpy.args[0][0]).to.equal(Foo.prototype); (0, _chai.expect)(lifecycleSpy.args[0][1]).to.equal('componentDidUpdate'); (0, _chai.expect)(methodSpy.callCount).to.equal(2); (0, _chai.expect)(methodSpy.args[0][0]).to.equal(Foo.prototype); (0, _chai.expect)(methodSpy.args[0][1]).to.equal('a'); (0, _chai.expect)(methodSpy.args[1][1]).to.equal('b'); }); (0, _.describeWithDOM)('getNode', function () { it('should return a DOMNode when a DOMComponent is given', function () { var div = (0, _.mount)(_reactAddons2['default'].createElement('div', null)).node; (0, _chai.expect)((0, _Utils.getNode)(div)).to.be.instanceOf(window.HTMLElement); }); it('should return the component when a component is given', function () { var Foo = (function (_React$Component) { _inherits(Foo, _React$Component); function Foo() { _classCallCheck(this, Foo); _get(Object.getPrototypeOf(Foo.prototype), 'constructor', this).apply(this, arguments); } _createClass(Foo, [{ key: 'render', value: function render() { return _reactAddons2['default'].createElement('div', null); } }]); return Foo; })(_reactAddons2['default'].Component); var foo = (0, _.mount)(_reactAddons2['default'].createElement(Foo, null)).node; (0, _chai.expect)((0, _Utils.getNode)(foo)).to.equal(foo); }); }); describe('nodeEqual', function () { it('should match empty elements of same tag', function () { (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', null), _reactAddons2['default'].createElement('div', null))).to.be['true']; }); it('should not match empty elements of different type', function () { (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', null), _reactAddons2['default'].createElement('nav', null))).to.be['false']; }); it('should match basic prop types', function () { (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { className: 'foo' }), _reactAddons2['default'].createElement('div', { className: 'foo' }))).to.be['true']; (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { id: 'foo', className: 'bar' }), _reactAddons2['default'].createElement('div', { id: 'foo', className: 'bar' }))).to.be['true']; (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { id: 'foo', className: 'baz' }), _reactAddons2['default'].createElement('div', { id: 'foo', className: 'bar' }))).to.be['false']; }); it('should check children as well', function () { (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement( 'div', null, _reactAddons2['default'].createElement('div', null) ), _reactAddons2['default'].createElement('div', null))).to.be['false']; (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement( 'div', null, _reactAddons2['default'].createElement('div', null) ), _reactAddons2['default'].createElement( 'div', null, _reactAddons2['default'].createElement('div', null) ))).to.be['true']; (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement( 'div', null, _reactAddons2['default'].createElement('div', { className: 'foo' }) ), _reactAddons2['default'].createElement( 'div', null, _reactAddons2['default'].createElement('div', { className: 'foo' }) ))).to.be['true']; (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement( 'div', null, _reactAddons2['default'].createElement('div', { className: 'foo' }) ), _reactAddons2['default'].createElement( 'div', null, _reactAddons2['default'].createElement('div', null) ))).to.be['false']; }); it('should test deepEquality with object props', function () { (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { foo: { a: 1, b: 2 } }), _reactAddons2['default'].createElement('div', { foo: { a: 1, b: 2 } }))).to.be['true']; (0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { foo: { a: 2, b: 2 } }), _reactAddons2['default'].createElement('div', { foo: { a: 1, b: 2 } }))).to.be['false']; }); }); describe('propFromEvent', function () { var fn = _Utils.propFromEvent; it('should work', function () { (0, _chai.expect)(fn('click')).to.equal('onClick'); (0, _chai.expect)(fn('mouseEnter')).to.equal('onMouseEnter'); }); }); describe('iuSimpleSelector', function () { describe('prohibited selectors', function () { function isComplex(selector) { it(selector, function () { (0, _chai.expect)((0, _Utils.isSimpleSelector)(selector)).to.be['false']; }); } isComplex('.foo .bar'); isComplex('input[name="foo"]'); isComplex(':visible'); isComplex('.foo>.bar'); isComplex('.foo > .bar'); isComplex('.foo~.bar'); }); describe('allowed selectors', function () { function isSimple(selector) { it(selector, function () { (0, _chai.expect)((0, _Utils.isSimpleSelector)(selector)).to.be['true']; }); } isSimple('.foo'); isSimple('.foo-and-foo'); isSimple('.FoOaNdFoO'); isSimple('tag'); isSimple('.foo.bar'); isSimple('input.foo'); }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9sZWxhbmRfcmljaGFyZHNvbi9jb2RlL3JlYWdlbnQvc3JjL19fdGVzdHNfXy9VdGlscy1zcGVjLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBQWtCLGNBQWM7Ozs7b0JBQ1QsTUFBTTs7cUJBQ1gsT0FBTzs7OztxQkFPbEIsVUFBVTs7Z0JBSVYsS0FBSzs7QUFFWixRQUFRLENBQUMsT0FBTyxFQUFFLFlBQU07O0FBRXRCLFVBQVEsQ0FBQyxhQUFhLEVBQUUsWUFBTTtRQUN0QixHQUFHO2VBQUgsR0FBRzs4QkFBSCxHQUFHOzs7bUJBQUgsR0FBRzs7ZUFDTixhQUFHLEVBQUU7OztlQUNMLGFBQUcsRUFBRTs7O2VBQ1ksOEJBQUcsRUFBRTs7O2FBSG5CLEdBQUc7OztBQU1ULFFBQU0sWUFBWSxHQUFHLG1CQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLFFBQU0sU0FBUyxHQUFHLG1CQUFNLEdBQUcsRUFBRSxDQUFDOztBQUU5Qiw0QkFBWSxHQUFHLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDOztBQUUxQyxzQkFBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxzQkFBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEQsc0JBQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQzs7QUFFL0Qsc0JBQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsc0JBQU8sU0FBUyxDQUFDLElBQUksQ0FB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O0FBQ2hCLGNBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyQixjQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7S0FFdkIsQ0FBQyxDQUFDO0dBRUosQ0FBQyxDQUFDO0NBRUosQ0FBQyxDQUFDIiwiZmlsZSI6Ii9Vc2Vycy9sZWxhbmRfcmljaGFyZHNvbi9jb2RlL3JlYWdlbnQvc3JjL19fdGVzdHNfXy9VdGlscy1zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0L2FkZG9ucyc7XG5pbXBvcnQgeyBleHBlY3QgfSBmcm9tICdjaGFpJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQge1xuICBvblByb3RvdHlwZSxcbiAgZ2V0Tm9kZSxcbiAgbm9kZUVxdWFsLFxuICBpc1NpbXBsZVNlbGVjdG9yLFxuICBwcm9wRnJvbUV2ZW50LFxufSBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQge1xuICBkZXNjcmliZVdpdGhET00sXG4gIG1vdW50LFxufSBmcm9tICcuLi8nO1xuXG5kZXNjcmliZSgnVXRpbHMnLCAoKSA9PiB7XG5cbiAgZGVzY3JpYmUoJ29uUHJvdG90eXBlJywgKCkgPT4ge1xuICAgIGNsYXNzIEZvbyB7XG4gICAgICBhKCkge31cbiAgICAgIGIoKSB7fVxuICAgICAgY29tcG9uZW50RGlkVXBkYXRlKCkge31cbiAgICB9XG5cbiAgICBjb25zdCBsaWZlY3ljbGVTcHkgPSBzaW5vbi5zcHkoKTtcbiAgICBjb25zdCBtZXRob2RTcHkgPSBzaW5vbi5zcHkoKTtcblxuICAgIG9uUHJvdG90eXBlKEZvbywgbGlmZWN5Y2xlU3B5LCBtZXRob2RTcHkpO1xuXG4gICAgZXhwZWN0KGxpZmVjeWNsZVNweS5jYWxsQ291bnQpLnRvLmVxdWFsKDEpO1xuICAgIGV4cGVjdChsaWZlY3ljbGVTcHkuYXJnc1swXVswXSkudG8uZXF1YWwoRm9vLnByb3RvdHlwZSk7XG4gICAgZXhwZWN0KGxpZmVjeWNsZVNweS5hcmdzWzBdWzFdKS50by5lcXVhbCgnY29tcG9uZW50RGlkVXBkYXRlJyk7XG5cbiAgICBleHBlY3QobWV0aG9kU3B5LmNhbGxDb3VudCkudG8uZXF1YWwoMik7XG4gICAgZXhwZWN0KG1ldGhvZFNweS5hcmdzWzBdWzBdKS50by5lcXVhbChGb28ucHJvdG90eXBlKTtcbiAgICBleHBlY3QobWV0aG9kU3B5LmFyZ3NbMF1bMV0pLnRvLmVxdWFsKCdhJyk7XG4gICAgZXhwZWN0KG1ldGhvZFNweS5hcmdzWzFdWzFdKS50by5lcXVhbCgnYicpO1xuXG4gIH0pO1xuXG4gIGRlc2NyaWJlV2l0aERPTSgnZ2V0Tm9kZScsICgpID0+IHtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgRE9NTm9kZSB3aGVuIGEgRE9NQ29tcG9uZW50IGlzIGdpdmVuJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGl2ID0gbW91bnQoPGRpdiAvPikubm9kZTtcbiAgICAgIGV4cGVjdChnZXROb2RlKGRpdikpLnRvLmJlLmluc3RhbmNlT2Yod2luZG93LkhUTUxFbGVtZW50KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb21wb25lbnQgd2hlbiBhIGNvbXBvbmVudCBpcyBnaXZlbicsICgpID0+IHtcbiAgICAgIGNsYXNzIEZvbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgICAgIHJlbmRlcigpIHsgcmV0dXJuIDxkaXYgLz47IH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvbyA9IG1vdW50KDxGb28gLz4pLm5vZGU7XG4gICAgICBleHBlY3QoZ2V0Tm9kZShmb28pKS50by5lcXVhbChmb28pO1xuICAgIH0pO1xuXG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdub2RlRXF1YWwnLCAoKSA9PiB7XG5cbiAgICBpdCgnc2hvdWxkIG1hdGNoIGVtcHR5IGVsZW1lbnRzIG9mIHNhbWUgdGFnJywgKCkgPT4ge1xuXG4gICAgICBleHBlY3Qobm9kZUVxdWFsKFxuICAgICAgICA8ZGl2IC8+LFxuICAgICAgICA8ZGl2IC8+XG4gICAgICApKS50by5iZS50cnVlO1xuXG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBtYXRjaCBlbXB0eSBlbGVtZW50cyBvZiBkaWZmZXJlbnQgdHlwZScsICgpID0+IHtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdiAvPixcbiAgICAgICAgPG5hdiAvPlxuICAgICAgKSkudG8uYmUuZmFsc2U7XG5cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggYmFzaWMgcHJvcCB0eXBlcycsICgpID0+IHtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb29cIiAvPixcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb29cIiAvPlxuICAgICAgKSkudG8uYmUudHJ1ZTtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdiBpZD1cImZvb1wiIGNsYXNzTmFtZT1cImJhclwiIC8+LFxuICAgICAgICA8ZGl2IGlkPVwiZm9vXCIgY2xhc3NOYW1lPVwiYmFyXCIgLz5cbiAgICAgICkpLnRvLmJlLnRydWU7XG5cbiAgICAgIGV4cGVjdChub2RlRXF1YWwoXG4gICAgICAgIDxkaXYgaWQ9XCJmb29cIiBjbGFzc05hbWU9XCJiYXpcIiAvPixcbiAgICAgICAgPGRpdiBpZD1cImZvb1wiIGNsYXNzTmFtZT1cImJhclwiIC8+XG4gICAgICApKS50by5iZS5mYWxzZTtcblxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjaGVjayBjaGlsZHJlbiBhcyB3ZWxsJywgKCkgPT4ge1xuXG4gICAgICBleHBlY3Qobm9kZUVxdWFsKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgPC9kaXY+LFxuICAgICAgICA8ZGl2IC8+XG4gICAgICApKS50by5iZS5mYWxzZTtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgIDwvZGl2PixcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSkudG8uYmUudHJ1ZTtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb1wiIC8+XG4gICAgICAgIDwvZGl2PixcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSkudG8uYmUudHJ1ZTtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb1wiIC8+XG4gICAgICAgIDwvZGl2PixcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSkudG8uYmUuZmFsc2U7XG5cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGVzdCBkZWVwRXF1YWxpdHkgd2l0aCBvYmplY3QgcHJvcHMnLCAoKSA9PiB7XG5cbiAgICAgIGV4cGVjdChub2RlRXF1YWwoXG4gICAgICAgIDxkaXYgZm9vPXt7IGE6IDEsIGI6IDIgfX0gLz4sXG4gICAgICAgIDxkaXYgZm9vPXt7IGE6IDEsIGI6IDIgfX0gLz5cbiAgICAgICkpLnRvLmJlLnRydWU7XG5cbiAgICAgIGV4cGVjdChub2RlRXF1YWwoXG4gICAgICAgIDxkaXYgZm9vPXt7IGE6IDIsIGI6IDIgfX0gLz4sXG4gICAgICAgIDxkaXYgZm9vPXt7IGE6IDEsIGI6IDIgfX0gLz5cbiAgICAgICkpLnRvLmJlLmZhbHNlO1xuXG4gICAgfSk7XG5cbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Byb3BGcm9tRXZlbnQnLCAoKSA9PiB7XG5cbiAgICBjb25zdCBmbiA9IHByb3BGcm9tRXZlbnQ7XG5cbiAgICBpdCgnc2hvdWxkIHdvcmsnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoZm4oJ2NsaWNrJykpLnRvLmVxdWFsKCdvbkNsaWNrJyk7XG4gICAgICBleHBlY3QoZm4oJ21vdXNlRW50ZXInKSkudG8uZXF1YWwoJ29uTW91c2VFbnRlcicpO1xuICAgIH0pO1xuXG4gIH0pO1xuXG5cbiAgZGVzY3JpYmUoJ2l1U2ltcGxlU2VsZWN0b3InLCAoKSA9PiB7XG5cbiAgICBkZXNjcmliZSgncHJvaGliaXRlZCBzZWxlY3RvcnMnLCAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBpc0NvbXBsZXgoc2VsZWN0b3IpIHtcbiAgICAgICAgaXQoc2VsZWN0b3IsICgpID0+IHtcbiAgICAgICAgICBleHBlY3QoaXNTaW1wbGVTZWxlY3RvcihzZWxlY3RvcikpLnRvLmJlLmZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaXNDb21wbGV4KCcuZm9vIC5iYXInKTtcbiAgICAgIGlzQ29tcGxleCgnaW5wdXRbbmFtZT1cImZvb1wiXScpO1xuICAgICAgaXNDb21wbGV4KCc6dmlzaWJsZScpO1xuICAgICAgaXNDb21wbGV4KCcuZm9vPi5iYXInKTtcbiAgICAgIGlzQ29tcGxleCgnLmZvbyA+IC5iYXInKTtcbiAgICAgIGlzQ29tcGxleCgnLmZvb34uYmFyJyk7XG5cbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdhbGxvd2VkIHNlbGVjdG9ycycsICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIGlzU2ltcGxlKHNlbGVjdG9yKSB7XG4gICAgICAgIGl0KHNlbGVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGlzU2ltcGxlU2VsZWN0b3Ioc2VsZWN0b3IpKS50by5iZS50cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaXNTaW1wbGUoJy5mb28nKTtcbiAgICAgIGlzU2ltcGxlKCcuZm9vLWFuZC1mb28nKTtcbiAgICAgIGlzU2ltcGxlKCcuRm9PYU5kRm9PJyk7XG4gICAgICBpc1NpbXBsZSgndGFnJyk7XG4gICAgICBpc1NpbXBsZSgnLmZvby5iYXInKTtcbiAgICAgIGlzU2ltcGxlKCdpbnB1dC5mb28nKTtcblxuICAgIH0pO1xuXG4gIH0pO1xuXG59KTtcbiJdfQ== |