'use strict'; // // bannerSlide 开始 function ininBannerSlideEvent() { document.querySelector('#TPMTOr7IKeZ3p5oUzAEyXSZQ211216_container').style.display = 'block'; var timer = null; function mobileSlide(noPhone) { var carousel = document.querySelector('.slide-container'); var carouselUl = carousel.querySelector('ul'); var carouselLis = carouselUl.querySelectorAll('li'); var points = carousel.querySelector('.cj_dispIndex'); // 屏幕的宽度 var screenWidth = document.documentElement.offsetWidth; // 初始三个固定的位置 var left = carouselLis.length - 1; var center = 0; var right = 1; if (noPhone) { clearInterval(timer); setTransformPC(); return; } // 归位(多次使用,封装成函数) setTransform(); // 调用定时器 timer = setInterval(showNext, 2000); // 分别绑定touch事件 var startX = 0; // 手指落点 var startTime = null; // 开始触摸时间 caouselUl.addEventListener('touchmove', touchmoveHandler); // 持续滑动绑定的函数 touchmoveHandler carouselUl.addEventListener('touchend', touchendHandeler); // 滑动结束绑定的函数 touchendHandeler // 轮播图片切换下一张 function showNext() { // 轮转下标 left = center; center = right; right++; // 极值判断 if (right > carouselLis.length - 1) { right = 0; } //添加过渡(多次使用,封装成函数) setTransition(1, 1, 0); // 归位 setTransform(); // 自动设置小圆点 setPoint(); } // 轮播图片切换上一张 function showPrev() { // 轮转下标 right = center; center = left; left--; // 极值判断 if (left < 0) { left = carouselLis.length - 1; } //添加过渡 setTransition(0, 1, 1); // 归位 setTransform(); // 自动设置小圆点 setPoint(); } // 滑动开始 function touchstartHandler(e) { // 清除定时器 clearInterval(timer); // 记录滑动开始的时间 startTime = Date.now(); // 记录手指最开始的落点 startX = e.changedTouches[0].clientX; } // 滑动持续中 function touchmoveHandler(e) { // 获取差值 自带正负 var dx = e.changedTouches[0].clientX - startX; // 干掉过渡 setTransition(0, 0, 0); // 归位 setTransform(dx); } // 滑动结束 function touchendHandeler(e) { // 在手指松开的时候,要判断当前是否滑动成功 var dx = e.changedTouches[0].clientX - startX; // 获取时间差 var dTime = Date.now() - startTime; // 滑动成功的依据是滑动的距离(绝对值)超过屏幕的三分之一 或者滑动的时间小于300毫秒同时滑动的距离大于30 if (Math.abs(dx) > screenWidth / 3 || dTime < 300 && Math.abs(dx) > 30) { // 滑动成功了 // 判断用户是往哪个方向滑 if (dx > 0) { // 往右滑 看到上一张 showPrev(); } else { // 往左滑 看到下一张 showNext(); } } else { // 添加上过渡 setTransition(1, 1, 1); // 滑动失败了 setTransform(); } // 重新启动定时器 clearInterval(timer); // 调用定时器 timer = setInterval(showNext, 2000); } // 设置过渡 function setTransition(a, b, c) { if (a) { carouselLis[left].style.transition = 'transform 1s'; } else { carouselLis[left].style.transition = 'none'; } if (b) { carouselLis[center].style.transition = 'transform 1s'; } else { carouselLis[center].style.transition = 'none'; } if (c) { carouselLis[right].style.transition = 'transform 1s'; } else { carouselLis[right].style.transition = 'none'; } } // 封装归位 function setTransform(dx) { dx = dx || 0; carouselLis[left].style.transform = 'translateX(' + (-screenWidth + dx) + 'px)'; carouselLis[center].style.transform = 'translateX(' + dx + 'px)'; carouselLis[right].style.transform = 'translateX(' + (screenWidth + dx) + 'px)'; } function setTransformPC(dx) { dx = dx || 0; carouselLis[left].style.transform = 'none'; carouselLis[center].style.transform = 'none'; carouselLis[right].style.transform = 'none'; } // 动态设置小圆点的active类 var pointsLis = points.querySelectorAll('span'); function setPoint() { for (var i = 0; i < pointsLis.length; i++) { pointsLis[i].classList.remove('white_bg'); } pointsLis[center].classList.add('white_bg'); } } function init() { if (Number(window.innerWidth) <= 768) { clearInterval(timer); mobileSlide(); } else { clearInterval(timer); mobileSlide(true); } } window.addEventListener('resize', function () { init(); }); init(); } window.addEventListener('load', ininBannerSlideEvent); // bannerSlide 结束 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIklubGluZSBCYWJlbCBzY3JpcHQgKDIpIl0sIm5hbWVzIjpbImluaW5CYW5uZXJTbGlkZUV2ZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic3R5bGUiLCJkaXNwbGF5IiwidGltZXIiLCJtb2JpbGVTbGlkZSIsIm5vUGhvbmUiLCJjYXJvdXNlbCIsImNhcm91c2VsVWwiLCJjYXJvdXNlbExpcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwb2ludHMiLCJzY3JlZW5XaWR0aCIsImRvY3VtZW50RWxlbWVudCIsIm9mZnNldFdpZHRoIiwibGVmdCIsImxlbmd0aCIsImNlbnRlciIsInJpZ2h0IiwiY2xlYXJJbnRlcnZhbCIsInNldFRyYW5zZm9ybVBDIiwic2V0VHJhbnNmb3JtIiwic2V0SW50ZXJ2YWwiLCJzaG93TmV4dCIsInN0YXJ0WCIsInN0YXJ0VGltZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0b3VjaHN0YXJ0SGFuZGxlciIsInRvdWNobW92ZUhhbmRsZXIiLCJ0b3VjaGVuZEhhbmRlbGVyIiwic2V0VHJhbnNpdGlvbiIsInNldFBvaW50Iiwic2hvd1ByZXYiLCJlIiwiRGF0ZSIsIm5vdyIsImNoYW5nZWRUb3VjaGVzIiwiY2xpZW50WCIsImR4IiwiZFRpbWUiLCJNYXRoIiwiYWJzIiwiYSIsImIiLCJjIiwidHJhbnNpdGlvbiIsInRyYW5zZm9ybSIsInBvaW50c0xpcyIsImkiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJhZGQiLCJpbml0IiwiTnVtYmVyIiwid2luZG93IiwiaW5uZXJXaWR0aCJdLCJtYXBwaW5ncyI6Ijs7QUFFWTtBQUNBLFNBQVNBLG9CQUFULEdBQWdDO0FBQzdCQyxhQUFTQyxhQUFULENBQXVCLDJDQUF2QixFQUFvRUMsS0FBcEUsQ0FBMEVDLE9BQTFFLEdBQW1GLE9BQW5GO0FBQ0MsUUFBSUMsUUFBUSxJQUFaO0FBQ0EsYUFBU0MsV0FBVCxDQUFxQkMsT0FBckIsRUFBOEI7QUFDMUIsWUFBSUMsV0FBV1AsU0FBU0MsYUFBVCxD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S0FGRDs7QUFJQUE7QUFDSDtBQUNERSxPQUFPNUIsZ0JBQVAsQ0FBd0IsTUFBeEIsRUFBZ0MzQixvQkFBaEM7QUFDWCIsImZpbGUiOiJJbmxpbmUgQmFiZWwgc2NyaXB0ICgyKSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG4gICAgICAgICAgICAvLyAgLy8gYmFubmVyU2xpZGUg5byA5aeLXG4gICAgICAgICAgICBmdW5jdGlvbiBpbmluQmFubmVyU2xpZGVFdmVudCgpIHtcbiAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNUUE1UT3I3SUtlWjNwNW9VekFFeVhTWlEyMTEyMTZfY29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9J2Jsb2NrJztcbiAgICAgICAgICAgICAgICB2YXIgdGltZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG1vYmlsZVNsaWRlKG5vUGhvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNhcm91c2VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNsaWRlLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2Fyb3VzZWxVbCA9IGNhcm91c2VsLnF1ZXJ5U2VsZWN0b3IoJ3VsJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjYXJvdXNlbExpcyA9IGNhcm91c2VsVWwucXVlcnlTZWxlY3RvckFsbCgnbGknKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvaW50cyA9IGNhcm91c2VsLnF1ZXJ5U2VsZWN0b3IoJy5jal9kaXNwSW5kZXgnKTtcbiAgICAgICAgICAgICAgICAgICAgLy8g5bGP5bmV55qE5a695bqmXG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JlZW5XaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAvLyDliJ3lp4vkuInkuKrlm7rlrprnmoTkvY3nva5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlZnQgPSBjYXJvdXNlbExpcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJpZ2h0ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgaWYobm9QaG9uZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zZm9ybVBDKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyDlvZLkvY3vvIjlpJrmrKHkvb/nlKjvvIzlsIHoo4XmiJDlh73mlbDvvIlcbiAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNmb3JtKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8g6LCD55So5a6a5pe25ZmoXG4gICAgICAgICAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoc2hvd05leHQsIDIwMDApO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIOWIhuWIq+e7keWumnRvdWNo5LqL5Lu2XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGFydFggPSAwOyAvLyDmiYvmjIfokL3ngrlcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0VGltZSA9IG51bGw7IC8vIOW8gOWni+inpuaRuOaXtumXtFxuICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbFVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0b3VjaHN0YXJ0SGFuZGxlcik7IC8vIOa7keWKqOW8gOWni+e7keWumueahOWHveaVsCB0b3VjaHN0YXJ0SGFuZGxlclxuICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbFVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRvdWNobW92ZUhhbmRsZXIpOyAgLy8g5oyB57ut5ruR5Yqo57uR5a6a55qE5Ye95pWwIHRvdWNobW92ZUhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgY2Fyb3VzZWxVbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRvdWNoZW5kSGFuZGVsZXIpOyAgLy8g5ruR5Yqo57uT5p2f57uR5a6a55qE5Ye95pWwIHRvdWNoZW5kSGFuZGVsZXJcblxuICAgICAgICAgICAgICAgICAgICAvLyDova7mkq3lm77niYfliIfmjaLkuIvkuIDlvKBcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2hvd05leHQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDova7ovazkuIvmoIdcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXIgPSByaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL+OAgOaegeWAvOWIpOaWrVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0ID4gY2Fyb3VzZWxMaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5re75Yqg6L+H5rih77yI5aSa5qyh5L2/55So77yM5bCB6KOF5oiQ5Ye95pWw77yJXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uKDEsIDEsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5b2S5L2NXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiHquWKqOiuvue9ruWwj+WchueCuVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UG9pbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIOi9ruaSreWbvueJh+WIh+aNouS4iuS4gOW8oFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzaG93UHJldigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOi9rui9rOS4i+agh1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXIgPSBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy/jgIDmnoHlgLzliKTmlq1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBjYXJvdXNlbExpcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy/mt7vliqDov4fmuKFcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb24oMCwgMSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlvZLkvY1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6Ieq5Yqo6K6+572u5bCP5ZyG54K5XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQb2ludCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8g5ruR5Yqo5byA5aeLXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvdWNoc3RhcnRIYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa4hemZpOWumuaXtuWZqFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDorrDlvZXmu5HliqjlvIDlp4vnmoTml7bpl7RcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDorrDlvZXmiYvmjIfmnIDlvIDlp4vnmoTokL3ngrlcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyDmu5HliqjmjIHnu63kuK1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG91Y2htb3ZlSGFuZGxlcihlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDojrflj5blt67lgLwg6Ieq5bim5q2j6LSfXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHggPSBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggLSBzdGFydFg7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlubLmjonov4fmuKFcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb24oMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlvZLkvY1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zZm9ybShkeCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy/jgIDmu5Hliqjnu5PmnZ9cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG91Y2hlbmRIYW5kZWxlcihlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlnKjmiYvmjIfmnb7lvIDnmoTml7blgJnvvIzopoHliKTmlq3lvZPliY3mmK/lkKbmu5HliqjmiJDlip9cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkeCA9IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCAtIHN0YXJ0WDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiOt+WPluaXtumXtOW3rlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa7keWKqOaIkOWKn+eahOS+neaNruaYr+a7keWKqOeahOi3neemu++8iOe7neWvueWAvO+8iei2hei/h+Wxj+W5leeahOS4ieWIhuS5i+S4gCDmiJbogIXmu5HliqjnmoTml7bpl7TlsI/kuo4zMDDmr6vnp5LlkIzml7bmu5HliqjnmoTot53nprvlpKfkuo4zMFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGR4KSA+IHNjcmVlbldpZHRoIC8gMyB8fCAoZFRpbWUgPCAzMDAgJiYgTWF0aC5hYnMoZHgpID4gMzApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5ruR5Yqo5oiQ5Yqf5LqGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yik5pat55So5oi35piv5b6A5ZOq5Liq5pa55ZCR5ruRXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGR4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlvoDlj7Pmu5Eg55yL5Yiw5LiK5LiA5bygXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQcmV2KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5b6A5bem5ruRIOeci+WIsOS4i+S4gOW8oFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5re75Yqg5LiK6L+H5rihXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbigxLCAxLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmu5HliqjlpLHotKXkuoZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6YeN5paw5ZCv5Yqo5a6a5pe25ZmoXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiwg+eUqOWumuaXtuWZqFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbChzaG93TmV4dCwgMjAwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8g6K6+572u6L+H5rihXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNldFRyYW5zaXRpb24oYSwgYiwgYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbExpc1tsZWZ0XS5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAxcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcm91c2VsTGlzW2xlZnRdLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcm91c2VsTGlzW2NlbnRlcl0uc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbExpc1tjZW50ZXJdLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcm91c2VsTGlzW3JpZ2h0XS5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAxcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcm91c2VsTGlzW3JpZ2h0XS5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy/jgIDlsIHoo4XlvZLkvY1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2V0VHJhbnNmb3JtKGR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkeCA9IGR4IHx8IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJvdXNlbExpc1tsZWZ0XS5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgnICsgKC1zY3JlZW5XaWR0aCArIGR4KSArICdweCknO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2Fyb3VzZWxMaXNbY2VudGVyXS5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgnICsgZHggKyAncHgpJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcm91c2VsTGlzW3JpZ2h0XS5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgnICsgKHNjcmVlbldpZHRoICsgZHgpICsgJ3B4KSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2V0VHJhbnNmb3JtUEMoZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR4ID0gZHggfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcm91c2VsTGlzW2xlZnRdLnN0eWxlLnRyYW5zZm9ybSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcm91c2VsTGlzW2NlbnRlcl0uc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2Fyb3VzZWxMaXNbcmlnaHRdLnN0eWxlLnRyYW5zZm9ybSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyDliqjmgIHorr7nva7lsI/lnIbngrnnmoRhY3RpdmXnsbtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvaW50c0xpcyA9IHBvaW50cy5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2V0UG9pbnQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50c0xpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc1tpXS5jbGFzc0xpc3QucmVtb3ZlKCd3aGl0ZV9iZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzW2NlbnRlcl0uY2xhc3NMaXN0LmFkZCgnd2hpdGVfYmcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcih3aW5kb3cuaW5uZXJXaWR0aCkgPD0gNzY4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZVNsaWRlKClcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZVNsaWRlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5pdCgpXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGluaXQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBpbmluQmFubmVyU2xpZGVFdmVudClcbiAvLyBiYW5uZXJTbGlkZSDnu5PmnZ9cbiJdfQ==