<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Impact Webview</title>

    <!-- META -->
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
    <meta name="format-detection" content="telephone=no">

    <!-- JS -->
    <script type="text/javascript">
      if(!window.applifierimpact || !window.unityads) {
        window.applifierimpact = window.unityads = new function() {
          this.cachedCalls = [];
          this.init = function(data) {
            this.cachedCalls.push(['init', data]);
            return "cached";
          };
          this.setView = function(view, data) {
            this.cachedCalls.push(['setView', view, data]);
            return "cached";
          };
          this.handleNativeEvent = function(type, data) {
            this.cachedCalls.push(['handleNativeEvent', type, data]);
            return "cached";
          };
        };
      }
    </script>
    <style type="text/css">html{width:100%;height:100%}
body.iphone,body.ipad,body.android{width:100%;height:100%;margin:0;padding:0;font-family:Helvetica,sans-serif;color:#000;background-color:#000;-webkit-text-size-adjust:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-webkit-user-drag:none;font-weight:lighter}
body.iphone .page-container,body.ipad .page-container,body.android .page-container{width:100%;height:100%;overflow:hidden;position:absolute;top:0;left:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(100%,#fff),color-stop(0%,#bfbfbf));background:-webkit-linear-gradient(top,#fff,#bfbfbf)}
body.iphone .campaign-container,body.ipad .campaign-container,body.android .campaign-container{width:100%;height:100%}
body.iphone .btn-close-region,body.ipad .btn-close-region,body.android .btn-close-region{position:absolute;z-index:1}
body.iphone .btn-watch-again-region,body.ipad .btn-watch-again-region,body.android .btn-watch-again-region{position:absolute;z-index:1;display:none}
body.iphone a.btn-watch-again,body.ipad a.btn-watch-again,body.android a.btn-watch-again{z-index:1;position:absolute;background-color:rgba(255,255,255,0.5);color:#222c37;text-align:center}
body.iphone a.btn-close,body.ipad a.btn-close,body.android a.btn-close{z-index:1;position:absolute;background-image:url("img/close.png");background-position:center;background-size:cover}
body.iphone a.btn-watch-again,body.ipad a.btn-watch-again,body.android a.btn-watch-again{-webkit-transform:rotate(90deg)}
body.iphone .game-background,body.ipad .game-background,body.android .game-background{width:100%;background-size:cover;background-position:center;background-repeat:no-repeat;background-color:#000;position:absolute;top:0;bottom:47%}
body.iphone .end-screen-info-background,body.ipad .end-screen-info-background,body.android .end-screen-info-background{position:absolute;bottom:0;width:100%;height:47%;background-color:#fafafa}
body.iphone .name-container,body.ipad .name-container,body.android .name-container{color:#1f1e1e}
body.iphone .game-icon,body.ipad .game-icon,body.android .game-icon{float:left;background-color:#fff;background-size:cover}
body.iphone .store-container,body.ipad .store-container,body.android .store-container{float:left}
body.iphone .game-rating,body.ipad .game-rating,body.android .game-rating{color:#e6e6e6;display:inline-block;position:relative}
body.iphone .game-rating-mask,body.ipad .game-rating-mask,body.android .game-rating-mask{color:#ff8e00;position:absolute;left:0;width:0%;height:100%;overflow:hidden;font-size:inherit}
body.iphone .game-rating-count,body.ipad .game-rating-count,body.android .game-rating-count{color:#7c7c7c}
body.iphone .game-rating-br,body.ipad .game-rating-br,body.android .game-rating-br{display:none}
body.iphone .game-rating-postfix,body.ipad .game-rating-postfix,body.android .game-rating-postfix{display:none}
body.iphone .download-container,body.ipad .download-container,body.android .download-container{text-align:center;clear:both}
body.iphone .btn-download,body.ipad .btn-download,body.android .btn-download{color:#fff;display:block;background-image:#167dfb;background:#167dfb;left:0;right:0}
body.iphone .download-text-alt,body.ipad .download-text-alt,body.android .download-text-alt{display:none}
body.iphone .download-text-fresh,body.ipad .download-text-fresh,body.android .download-text-fresh{display:none}
body.iphone .download-text-fresh-alt2,body.ipad .download-text-fresh-alt2,body.android .download-text-fresh-alt2{display:none}
body.iphone .download-text-fresh-alt3,body.ipad .download-text-fresh-alt3,body.android .download-text-fresh-alt3{display:none}
body.iphone .download-explanation,body.ipad .download-explanation,body.android .download-explanation{display:none}
body.iphone .unityads-logo,body.ipad .unityads-logo,body.android .unityads-logo{background-image:url("img/unityads.png");background-position:center;background-size:cover;margin:auto;position:absolute;left:0;right:0}
body.iphone .privacy-button,body.ipad .privacy-button,body.android .privacy-button{position:absolute;bottom:10px;left:15px;color:#666;display:block;text-decoration:none;font-size:22px}
body.iphone .download-explanation-fresh,body.ipad .download-explanation-fresh,body.android .download-explanation-fresh{display:none}
body.iphone .store-badge-container,body.ipad .store-badge-container,body.android .store-badge-container{display:none}
body.iphone.landscape .game-background,body.ipad.landscape .game-background,body.android.landscape .game-background{width:53%;bottom:0}
body.iphone.landscape .end-screen-info-background,body.ipad.landscape .end-screen-info-background,body.android.landscape .end-screen-info-background{width:47%;height:100%;right:0}
body.iphone .popup-background,body.ipad .popup-background,body.android .popup-background{visibility:hidden;position:absolute;top:0;left:0;background-color:rgba(0,0,0,0.75);width:100%;height:100%;z-index:100;text-align:center;background-size:cover}
body.iphone .spinner-container,body.ipad .spinner-container,body.android .spinner-container{display:inline-block;text-align:center;background-color:#000;color:#fff}
body.iphone .spinner-text,body.ipad .spinner-text,body.android .spinner-text{float:left}
body.iphone .spinner-animation,body.ipad .spinner-animation,body.android .spinner-animation{width:24px;height:24px;float:left;margin-right:15px;border:4px solid #fff;border-left-color:transparent;border-right-color:transparent;border-radius:200px;-webkit-animation:spinner 1s linear infinite}
@-webkit-keyframes spinner{0%{-webkit-transform:rotate(0)}
100%{-webkit-transform:rotate(360deg)}
}body.iphone .error-container,body.ipad .error-container,body.android .error-container,body.iphone .privacy-container,body.ipad .privacy-container,body.android .privacy-container{display:inline-block;text-align:center;background-color:#000;color:#fff;}
body.iphone .error-container .privacy-simple-text,body.ipad .error-container .privacy-simple-text,body.android .error-container .privacy-simple-text,body.iphone .privacy-container .privacy-simple-text,body.ipad .privacy-container .privacy-simple-text,body.android .privacy-container .privacy-simple-text{display:none}
body.iphone .error-container.simple .privacy-text,body.ipad .error-container.simple .privacy-text,body.android .error-container.simple .privacy-text,body.iphone .privacy-container.simple .privacy-text,body.ipad .privacy-container.simple .privacy-text,body.android .privacy-container.simple .privacy-text{display:none}
body.iphone .error-container.simple .privacy-simple-text,body.ipad .error-container.simple .privacy-simple-text,body.android .error-container.simple .privacy-simple-text,body.iphone .privacy-container.simple .privacy-simple-text,body.ipad .privacy-container.simple .privacy-simple-text,body.android .privacy-container.simple .privacy-simple-text{display:block}
body.iphone .btn-ok,body.ipad .btn-ok,body.android .btn-ok,body.iphone .btn-cancel,body.ipad .btn-cancel,body.android .btn-cancel{display:block;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#4aaef0),color-stop(100%,#016add));background:-webkit-linear-gradient(top,#4aaef0,#016add)}
body.iphone .btn-close-region,body.ipad .btn-close-region,body.android .btn-close-region{top:0;right:0;width:55px;height:55px}
body.iphone .btn-watch-again-region,body.ipad .btn-watch-again-region,body.android .btn-watch-again-region{top:0;left:0;width:55px;height:55px}
body.iphone a.btn-watch-again,body.ipad a.btn-watch-again,body.android a.btn-watch-again,body.iphone a.btn-close,body.ipad a.btn-close,body.android a.btn-close{top:10px;font-size:28px;width:32px;height:32px;border-radius:17px}
body.iphone a.btn-watch-again,body.ipad a.btn-watch-again,body.android a.btn-watch-again{line-height:33px;left:10px}
body.iphone a.btn-close,body.ipad a.btn-close,body.android a.btn-close{line-height:28px;right:10px}
body.iphone .end-screen-info-background,body.ipad .end-screen-info-background,body.android .end-screen-info-background{border-top:4px solid #e6e6e6}
body.iphone .name-container,body.ipad .name-container,body.android .name-container{font-size:20pt;text-overflow:ellipsis;-webkit-line-clamp:2;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}
body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:20px;margin-left:18px;}
body.iphone .game-info .name-container,body.ipad .game-info .name-container,body.android .game-info .name-container{padding-left:10px;padding-right:10px;padding-top:8px;font-size:17pt}
body.iphone .game-icon,body.ipad .game-icon,body.android .game-icon{width:75px;height:75px;border-radius:18pt;margin-bottom:20px}
body.iphone .store-container,body.ipad .store-container,body.android .store-container{margin-left:10px;margin-top:5px}
body.iphone .game-rating,body.ipad .game-rating,body.android .game-rating{font-size:20px;letter-spacing:5px}
body.iphone .game-rating-count,body.ipad .game-rating-count,body.android .game-rating-count{font-size:17px}
body.iphone .btn-download,body.ipad .btn-download,body.android .btn-download{margin:0 15px 0 15px;padding:10px 10px 10px 10px;border-radius:10px;font-size:18pt;line-height:24pt;margin-top:45px}
body.iphone .unityads-logo,body.ipad .unityads-logo,body.android .unityads-logo{width:68px;height:16px;bottom:10px}
body.iphone.landscape .end-screen-info-background,body.ipad.landscape .end-screen-info-background,body.android.landscape .end-screen-info-background{border-top:none;border-left:4px solid #e6e6e6}
body.iphone.landscape .btn-close-region,body.ipad.landscape .btn-close-region,body.android.landscape .btn-close-region{top:0;bottom:auto}
body.iphone.landscape .btn-watch-again-region,body.ipad.landscape .btn-watch-again-region,body.android.landscape .btn-watch-again-region{top:auto;bottom:0;left:0}
body.iphone.landscape a.btn-watch-again,body.ipad.landscape a.btn-watch-again,body.android.landscape a.btn-watch-again{top:auto;bottom:10px;left:10px}
body.iphone.landscape a.btn-close,body.ipad.landscape a.btn-close,body.android.landscape a.btn-close{top:10px;bottom:auto}
body.iphone.landscape .end-screen .btn-close-region,body.ipad.landscape .end-screen .btn-close-region,body.android.landscape .end-screen .btn-close-region{left:0;right:auto}
body.iphone.landscape .end-screen a.btn-close,body.ipad.landscape .end-screen a.btn-close,body.android.landscape .end-screen a.btn-close{left:10px}
body.iphone.landscape .start-screen .btn-close-region,body.ipad.landscape .start-screen .btn-close-region,body.android.landscape .start-screen .btn-close-region{right:0;left:auto}
body.iphone.landscape .start-screen a.btn-close,body.ipad.landscape .start-screen a.btn-close,body.android.landscape .start-screen a.btn-close{right:10px;margin-top:0}
body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:25px;margin-left:auto;text-align:center}
body.iphone.landscape .game-icon,body.ipad.landscape .game-icon,body.android.landscape .game-icon{left:0;right:0;position:absolute;margin:auto}
body.iphone.landscape .name-container,body.ipad.landscape .name-container,body.android.landscape .name-container{font-size:18pt;padding-top:95px}
body.iphone.landscape .store-container,body.ipad.landscape .store-container,body.android.landscape .store-container{float:none;clear:both;margin-left:auto;padding-top:0;text-align:center}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{font-size:11pt;padding:5px 10px 5px 10px;margin-top:15px}
body.iphone.landscape .unityads-logo,body.ipad.landscape .unityads-logo,body.android.landscape .unityads-logo{bottom:20px}
body.iphone .spinner-container,body.ipad .spinner-container,body.android .spinner-container{padding:10px 15px;border-radius:10px;-webkit-box-shadow:0 0 50px #fff;border:3px solid #fff;letter-spacing:1px}
body.iphone .spinner-text,body.ipad .spinner-text,body.android .spinner-text{line-height:32px}
body.iphone .error-container,body.ipad .error-container,body.android .error-container,body.iphone .privacy-container,body.ipad .privacy-container,body.android .privacy-container{padding:10px 15px;border-radius:20px;-webkit-box-shadow:0 0 20px #fff;border:3px solid #fff;letter-spacing:1px;margin:0 10px}
body.iphone .error-text,body.ipad .error-text,body.android .error-text,body.iphone .privacy-text,body.ipad .privacy-text,body.android .privacy-text,body.iphone .privacy-simple-text,body.ipad .privacy-simple-text,body.android .privacy-simple-text{line-height:17px;font-size:12px;text-align:justify}
body.iphone .btn-ok,body.ipad .btn-ok,body.android .btn-ok,body.iphone .btn-cancel,body.ipad .btn-cancel,body.android .btn-cancel{padding:5px;margin:5px 0;-webkit-box-shadow:0 8px 8px rgba(0,0,0,0.5);border-radius:10px;font-size:18px;line-height:20px}
@media screen and (max-height: 320px) and (max-width: 427px),screen and (max-height: 427px) and (max-width: 320px){body.iphone .game-icon,body.ipad .game-icon,body.android .game-icon{width:60px;height:60px;border-radius:12pt}
body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:15px;}
body.iphone .game-info .name-container,body.ipad .game-info .name-container,body.android .game-info .name-container{font-size:15pt}
body.iphone .btn-download,body.ipad .btn-download,body.android .btn-download{padding:5px 5px 5px 5px;font-size:16pt}
body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:35px;}
body.iphone.landscape .game-info .name-container,body.ipad.landscape .game-info .name-container,body.android.landscape .game-info .name-container{font-size:13pt}
body.iphone.landscape .game-rating,body.ipad.landscape .game-rating,body.android.landscape .game-rating{font-size:17px}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{font-size:9pt;padding:5px 5px 5px 5px}
}@media screen and (min-height: 568px) and (min-width: 320px),screen and (min-height: 320px) and (min-width: 568px){body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:22px}
body.iphone .name-container,body.ipad .name-container,body.android .name-container{padding-top:10px}
body.iphone .store-container,body.ipad .store-container,body.android .store-container{margin-top:10px}
body.iphone .btn-download,body.ipad .btn-download,body.android .btn-download{margin-top:65px;padding:15px 10px 15px 10px}
body.iphone .unityads-logo,body.ipad .unityads-logo,body.android .unityads-logo{bottom:20px}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{font-size:14pt}
}@media screen and (min-height: 360px) and (min-width: 640px),screen and (min-height: 640px) and (min-width: 360px){body.iphone .btn-watch-again-region,body.ipad .btn-watch-again-region,body.android .btn-watch-again-region{width:75px;height:75px}
body.iphone .btn-close-region,body.ipad .btn-close-region,body.android .btn-close-region{width:75px;height:75px}
body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:35px}
body.iphone .game-icon,body.ipad .game-icon,body.android .game-icon{width:85px;height:85px}
body.iphone .name-container,body.ipad .name-container,body.android .name-container{font-size:20pt}
body.iphone .game-rating,body.ipad .game-rating,body.android .game-rating{font-size:25px}
body.iphone .game-rating-count,body.ipad .game-rating-count,body.android .game-rating-count{font-size:21px}
body.iphone .btn-download,body.ipad .btn-download,body.android .btn-download{margin-top:90px}
body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:20px}
body.iphone.landscape .name-container,body.ipad.landscape .name-container,body.android.landscape .name-container{padding-top:115px}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{padding:10px 10px 10px 10px}
}@media screen and (min-height: 384px) and (min-width: 640px),screen and (min-height: 640px) and (min-width: 384px){body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:45px}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{padding:15px 10px 15px 10px;font-size:16pt}
}@media screen and (min-height: 424px) and (min-width: 753px),screen and (min-height: 753px) and (min-width: 424px){body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:50px;}
body.iphone .game-info .name-container,body.ipad .game-info .name-container,body.android .game-info .name-container{font-size:21pt}
body.iphone .game-icon,body.ipad .game-icon,body.android .game-icon{width:100px;height:100px}
body.iphone .game-rating,body.ipad .game-rating,body.android .game-rating{font-size:30px}
body.iphone .game-rating-count,body.ipad .game-rating-count,body.android .game-rating-count{font-size:24px}
body.iphone .btn-download,body.ipad .btn-download,body.android .btn-download{padding:25px 20px 25px 20px;font-size:22pt;line-height:22pt}
body.iphone .unityads-logo,body.ipad .unityads-logo,body.android .unityads-logo{width:102px;height:24px}
body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:35px}
body.iphone.landscape .name-container,body.ipad.landscape .name-container,body.android.landscape .name-container{padding-top:125px}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{font-size:19pt;line-height:19pt}
}@media screen and (min-height: 540px) and (min-width: 960px),screen and (min-height: 960px) and (min-width: 540px){body.iphone .btn-watch-again-region,body.ipad .btn-watch-again-region,body.android .btn-watch-again-region,body.iphone .btn-close-region,body.ipad .btn-close-region,body.android .btn-close-region{width:95px;height:95px}
body.iphone a.btn-watch-again,body.ipad a.btn-watch-again,body.android a.btn-watch-again,body.iphone a.btn-close,body.ipad a.btn-close,body.android a.btn-close{top:20px;width:50px;height:50px;border-radius:25px;font-size:42px}
body.iphone a.btn-watch-again,body.ipad a.btn-watch-again,body.android a.btn-watch-again{left:20px;line-height:50px}
body.iphone a.btn-close,body.ipad a.btn-close,body.android a.btn-close{right:20px;line-height:45px}
body.iphone .game-icon,body.ipad .game-icon,body.android .game-icon{width:130px;height:130px}
body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:60px;}
body.iphone .game-info .name-container,body.ipad .game-info .name-container,body.android .game-info .name-container{font-size:27pt}
body.iphone .game-rating,body.ipad .game-rating,body.android .game-rating{font-size:40px}
body.iphone .game-rating-count,body.ipad .game-rating-count,body.android .game-rating-count{font-size:30px}
body.iphone .btn-download,body.ipad .btn-download,body.android .btn-download{padding:30px 25px 30px 25px;font-size:26pt;line-height:26pt;margin-top:120px}
body.iphone.landscape .end-screen-info,body.ipad.landscape .end-screen-info,body.android.landscape .end-screen-info{margin:30px}
body.iphone.landscape a.btn-watch-again,body.ipad.landscape a.btn-watch-again,body.android.landscape a.btn-watch-again{bottom:20px;left:20px;top:auto}
body.iphone.landscape .end-screen a.btn-close,body.ipad.landscape .end-screen a.btn-close,body.android.landscape .end-screen a.btn-close{top:20px;left:20px;right:auto}
body.iphone.landscape .name-container,body.ipad.landscape .name-container,body.android.landscape .name-container{padding-top:175px}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{padding:25px 20px 25px 20px;font-size:21pt;line-height:21pt}
}@media screen and (min-height: 600px) and (min-width: 906px),screen and (min-height: 906px) and (min-width: 600px){body.iphone .end-screen-info,body.ipad .end-screen-info,body.android .end-screen-info{margin:30px}
body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:70px;}
body.iphone .game-info .name-container,body.ipad .game-info .name-container,body.android .game-info .name-container{font-size:29pt}
body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:70px}
}@media screen and (min-height: 600px) and (min-width: 1024px),screen and (min-height: 1024px) and (min-width: 600px){body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:50px;}
body.iphone .game-info .name-container,body.ipad .game-info .name-container,body.android .game-info .name-container{font-size:31pt}
body.iphone .game-rating,body.ipad .game-rating,body.android .game-rating{font-size:45px}
body.iphone .game-rating-count,body.ipad .game-rating-count,body.android .game-rating-count{font-size:35px}
body.iphone .unityads-logo,body.ipad .unityads-logo,body.android .unityads-logo{width:153px;height:36px}
body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:40px}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{padding:30px 20px 30px 20px;font-size:24pt;line-height:24pt;margin-top:30px}
}@media screen and (min-height: 768px) and (min-width: 1024px),screen and (min-height: 1024px) and (min-width: 768px){body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:50px;}
body.iphone .game-info .name-container,body.ipad .game-info .name-container,body.android .game-info .name-container{padding-left:30px;font-size:38pt}
body.iphone .store-container,body.ipad .store-container,body.android .store-container{margin-left:30px}
body.iphone .game-rating,body.ipad .game-rating,body.android .game-rating{font-size:50px;letter-spacing:15px}
body.iphone .game-rating-count,body.ipad .game-rating-count,body.android .game-rating-count{font-size:40px}
body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:140px;}
body.iphone.landscape .game-info .name-container,body.ipad.landscape .game-info .name-container,body.android.landscape .game-info .name-container{font-size:32pt;padding-left:10px}
body.iphone.landscape .game-rating,body.ipad.landscape .game-rating,body.android.landscape .game-rating{font-size:45px;letter-spacing:5px}
}@media screen and (min-height: 800px) and (min-width: 1280px),screen and (min-height: 1280px) and (min-width: 800px){body.iphone .btn-close-region,body.ipad .btn-close-region,body.android .btn-close-region,body.iphone .btn-watch-again-region,body.ipad .btn-watch-again-region,body.android .btn-watch-again-region{width:130px;height:130px}
body.iphone a.btn-close,body.ipad a.btn-close,body.android a.btn-close,body.iphone a.btn-watch-again,body.ipad a.btn-watch-again,body.android a.btn-watch-again{width:75px;height:75px;border-radius:45px;font-size:80px}
body.iphone a.btn-watch-again,body.ipad a.btn-watch-again,body.android a.btn-watch-again{line-height:75px}
body.iphone a.btn-close,body.ipad a.btn-close,body.android a.btn-close{line-height:60px}
body.iphone .game-info,body.ipad .game-info,body.android .game-info{margin-top:70px}
body.iphone .game-icon,body.ipad .game-icon,body.android .game-icon{width:150px;height:150px}
body.iphone .game-rating,body.ipad .game-rating,body.android .game-rating{font-size:55px}
body.iphone .game-rating-count,body.ipad .game-rating-count,body.android .game-rating-count{font-size:45px}
body.iphone .btn-download,body.ipad .btn-download,body.android .btn-download{padding:45px 25px 45px 25px;font-size:35pt;line-height:35pt;margin-top:160px}
body.iphone.landscape .game-info,body.ipad.landscape .game-info,body.android.landscape .game-info{margin-top:120px;}
body.iphone.landscape .game-info .name-container,body.ipad.landscape .game-info .name-container,body.android.landscape .game-info .name-container{font-size:37pt;padding-top:200px}
body.iphone.landscape .btn-download,body.ipad.landscape .btn-download,body.android.landscape .btn-download{padding:40px 20px 40px 20px;font-size:30pt;line-height:30pt}
}</style>
    <script type="text/javascript">/**
 * almond 0.2.5 Copyright (c) 2011-2012, The Dojo Foundation All Rights Reserved.
 * Available via the MIT or new BSD license.
 * see: http://github.com/jrburke/almond for details
 */

//     Underscore.js 1.4.4
//     http://underscorejs.org
//     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
//     Underscore may be freely distributed under the MIT license.

/* Zepto v1.0-3-g342d490 - zepto event fx ajax touch - zeptojs.com/license */

//     (c) 2010-2013 Jeremy Ashkenas, DocumentCloud Inc.
//     Backbone may be freely distributed under the MIT license.
//     For all details and documentation:
//     http://backbonejs.org

// i18next, v1.7.2
// Copyright (c)2014 Jan Mühlemann (jamuhl).
// Distributed under MIT license
// http://i18next.com

/**
 * RequireJS i18next Plugin
 * 
 * @version 0.4.0
 * @copyright 2013-2014 Jacob van Mourik
 * @license MIT
 */

/**
 * @license RequireJS text 2.0.7 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
 * Available via the MIT or new BSD license.
 * see: http://github.com/requirejs/text for details
 */

(function() {
  function PxLoaderImage(e, t, n) {
    var i = this, r = null;
    this.img = new Image(), this.tags = t, this.priority = n;
    var a = function() {
      "complete" === i.img.readyState && (l(), r.onLoad(i));
    }, o = function() {
      l(), r.onLoad(i);
    }, s = function() {
      l(), r.onError(i);
    }, l = function() {
      i.unbind("load", o), i.unbind("readystatechange", a), i.unbind("error", s);
    };
    this.start = function(t) {
      r = t, i.bind("load", o), i.bind("readystatechange", a), i.bind("error", s), i.img.src = e;
    }, this.checkStatus = function() {
      i.img.complete && (l(), r.onLoad(i));
    }, this.onTimeout = function() {
      l(), i.img.complete ? r.onLoad(i) : r.onTimeout(i);
    }, this.getName = function() {
      return e;
    }, this.bind = function(e, t) {
      i.img.addEventListener ? i.img.addEventListener(e, t, !1) : i.img.attachEvent && i.img.attachEvent("on" + e, t);
    }, this.unbind = function(e, t) {
      i.img.removeEventListener ? i.img.removeEventListener(e, t, !1) : i.img.detachEvent && i.img.detachEvent("on" + e, t);
    };
  }
  var requirejs, require, define;
  (function(e) {
    function t(e, t) {
      return v.call(e, t);
    }
    function n(e, t) {
      var n, i, r, a, o, s, l, u, c, d, p = t && t.split("/"), f = h.map, m = f && f["*"] || {};
      if (e && "." === e.charAt(0)) if (t) {
        for (p = p.slice(0, p.length - 1), e = p.concat(e.split("/")), u = 0; u < e.length; u += 1) if (d = e[u], 
        "." === d) e.splice(u, 1), u -= 1; else if (".." === d) {
          if (1 === u && (".." === e[2] || ".." === e[0])) break;
          u > 0 && (e.splice(u - 1, 2), u -= 2);
        }
        e = e.join("/");
      } else 0 === e.indexOf("./") && (e = e.substring(2));
      if ((p || m) && f) {
        for (n = e.split("/"), u = n.length; u > 0; u -= 1) {
          if (i = n.slice(0, u).join("/"), p) for (c = p.length; c > 0; c -= 1) if (r = f[p.slice(0, c).join("/")], 
          r && (r = r[i])) {
            a = r, o = u;
            break;
          }
          if (a) break;
          !s && m && m[i] && (s = m[i], l = u);
        }
        !a && s && (a = s, o = l), a && (n.splice(0, o, a), e = n.join("/"));
      }
      return e;
    }
    function i(t, n) {
      return function() {
        return c.apply(e, y.call(arguments, 0).concat([ t, n ]));
      };
    }
    function r(e) {
      return function(t) {
        return n(t, e);
      };
    }
    function a(e) {
      return function(t) {
        f[e] = t;
      };
    }
    function o(n) {
      if (t(m, n)) {
        var i = m[n];
        delete m[n], g[n] = !0, u.apply(e, i);
      }
      if (!t(f, n) && !t(g, n)) throw new Error("No " + n);
      return f[n];
    }
    function s(e) {
      var t, n = e ? e.indexOf("!") : -1;
      return n > -1 && (t = e.substring(0, n), e = e.substring(n + 1, e.length)), [ t, e ];
    }
    function l(e) {
      return function() {
        return h && h.config && h.config[e] || {};
      };
    }
    var u, c, d, p, f = {}, m = {}, h = {}, g = {}, v = Object.prototype.hasOwnProperty, y = [].slice;
    d = function(e, t) {
      var i, a = s(e), l = a[0];
      return e = a[1], l && (l = n(l, t), i = o(l)), l ? e = i && i.normalize ? i.normalize(e, r(t)) : n(e, t) : (e = n(e, t), 
      a = s(e), l = a[0], e = a[1], l && (i = o(l))), {
        f: l ? l + "!" + e : e,
        n: e,
        pr: l,
        p: i
      };
    }, p = {
      require: function(e) {
        return i(e);
      },
      exports: function(e) {
        var t = f[e];
        return "undefined" != typeof t ? t : f[e] = {};
      },
      module: function(e) {
        return {
          id: e,
          uri: "",
          exports: f[e],
          config: l(e)
        };
      }
    }, u = function(n, r, s, l) {
      var u, c, h, v, y, b, w = [];
      if (l = l || n, "function" == typeof s) {
        for (r = !r.length && s.length ? [ "require", "exports", "module" ] : r, y = 0; y < r.length; y += 1) if (v = d(r[y], l), 
        c = v.f, "require" === c) w[y] = p.require(n); else if ("exports" === c) w[y] = p.exports(n), 
        b = !0; else if ("module" === c) u = w[y] = p.module(n); else if (t(f, c) || t(m, c) || t(g, c)) w[y] = o(c); else {
          if (!v.p) throw new Error(n + " missing " + c);
          v.p.load(v.n, i(l, !0), a(c), {}), w[y] = f[c];
        }
        h = s.apply(f[n], w), n && (u && u.exports !== e && u.exports !== f[n] ? f[n] = u.exports : h === e && b || (f[n] = h));
      } else n && (f[n] = s);
    }, requirejs = require = c = function(t, n, i, r, a) {
      return "string" == typeof t ? p[t] ? p[t](n) : o(d(t, n).f) : (t.splice || (h = t, 
      n.splice ? (t = n, n = i, i = null) : t = e), n = n || function() {}, "function" == typeof i && (i = r, 
      r = a), r ? u(e, t, n, i) : setTimeout(function() {
        u(e, t, n, i);
      }, 4), c);
    }, c.config = function(e) {
      return h = e, h.deps && c(h.deps, h.callback), c;
    }, define = function(e, n, i) {
      n.splice || (i = n, n = []), t(f, e) || t(m, e) || (m[e] = [ e, n, i ]);
    }, define.amd = {
      jQuery: !0
    };
  })(), define("vendor/almond", function() {}), function() {
    var e = this, t = e._, n = {}, i = Array.prototype, r = Object.prototype, a = Function.prototype, o = i.push, s = i.slice, l = i.concat, u = r.toString, c = r.hasOwnProperty, d = i.forEach, p = i.map, f = i.reduce, m = i.reduceRight, h = i.filter, g = i.every, v = i.some, y = i.indexOf, b = i.lastIndexOf, w = Array.isArray, A = Object.keys, _ = a.bind, x = function(e) {
      return e instanceof x ? e : this instanceof x ? (this._wrapped = e, void 0) : new x(e);
    };
    "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = x), 
    exports._ = x) : e._ = x, x.VERSION = "1.4.4";
    var k = x.each = x.forEach = function(e, t, i) {
      if (null != e) if (d && e.forEach === d) e.forEach(t, i); else if (e.length === +e.length) {
        for (var r = 0, a = e.length; a > r; r++) if (t.call(i, e[r], r, e) === n) return;
      } else for (var o in e) if (x.has(e, o) && t.call(i, e[o], o, e) === n) return;
    };
    x.map = x.collect = function(e, t, n) {
      var i = [];
      return null == e ? i : p && e.map === p ? e.map(t, n) : (k(e, function(e, r, a) {
        i[i.length] = t.call(n, e, r, a);
      }), i);
    };
    var I = "Reduce of empty array with no initial value";
    x.reduce = x.foldl = x.inject = function(e, t, n, i) {
      var r = arguments.length > 2;
      if (null == e && (e = []), f && e.reduce === f) return i && (t = x.bind(t, i)), 
      r ? e.reduce(t, n) : e.reduce(t);
      if (k(e, function(e, a, o) {
        r ? n = t.call(i, n, e, a, o) : (n = e, r = !0);
      }), !r) throw new TypeError(I);
      return n;
    }, x.reduceRight = x.foldr = function(e, t, n, i) {
      var r = arguments.length > 2;
      if (null == e && (e = []), m && e.reduceRight === m) return i && (t = x.bind(t, i)), 
      r ? e.reduceRight(t, n) : e.reduceRight(t);
      var a = e.length;
      if (a !== +a) {
        var o = x.keys(e);
        a = o.length;
      }
      if (k(e, function(s, l, u) {
        l = o ? o[--a] : --a, r ? n = t.call(i, n, e[l], l, u) : (n = e[l], r = !0);
      }), !r) throw new TypeError(I);
      return n;
    }, x.find = x.detect = function(e, t, n) {
      var i;
      return T(e, function(e, r, a) {
        return t.call(n, e, r, a) ? (i = e, !0) : void 0;
      }), i;
    }, x.filter = x.select = function(e, t, n) {
      var i = [];
      return null == e ? i : h && e.filter === h ? e.filter(t, n) : (k(e, function(e, r, a) {
        t.call(n, e, r, a) && (i[i.length] = e);
      }), i);
    }, x.reject = function(e, t, n) {
      return x.filter(e, function(e, i, r) {
        return !t.call(n, e, i, r);
      }, n);
    }, x.every = x.all = function(e, t, i) {
      t || (t = x.identity);
      var r = !0;
      return null == e ? r : g && e.every === g ? e.every(t, i) : (k(e, function(e, a, o) {
        return (r = r && t.call(i, e, a, o)) ? void 0 : n;
      }), !!r);
    };
    var T = x.some = x.any = function(e, t, i) {
      t || (t = x.identity);
      var r = !1;
      return null == e ? r : v && e.some === v ? e.some(t, i) : (k(e, function(e, a, o) {
        return r || (r = t.call(i, e, a, o)) ? n : void 0;
      }), !!r);
    };
    x.contains = x.include = function(e, t) {
      return null == e ? !1 : y && e.indexOf === y ? -1 != e.indexOf(t) : T(e, function(e) {
        return e === t;
      });
    }, x.invoke = function(e, t) {
      var n = s.call(arguments, 2), i = x.isFunction(t);
      return x.map(e, function(e) {
        return (i ? t : e[t]).apply(e, n);
      });
    }, x.pluck = function(e, t) {
      return x.map(e, function(e) {
        return e[t];
      });
    }, x.where = function(e, t, n) {
      return x.isEmpty(t) ? n ? null : [] : x[n ? "find" : "filter"](e, function(e) {
        for (var n in t) if (t[n] !== e[n]) return !1;
        return !0;
      });
    }, x.findWhere = function(e, t) {
      return x.where(e, t, !0);
    }, x.max = function(e, t, n) {
      if (!t && x.isArray(e) && e[0] === +e[0] && e.length < 65535) return Math.max.apply(Math, e);
      if (!t && x.isEmpty(e)) return -1/0;
      var i = {
        computed: -1/0,
        value: -1/0
      };
      return k(e, function(e, r, a) {
        var o = t ? t.call(n, e, r, a) : e;
        o >= i.computed && (i = {
          value: e,
          computed: o
        });
      }), i.value;
    }, x.min = function(e, t, n) {
      if (!t && x.isArray(e) && e[0] === +e[0] && e.length < 65535) return Math.min.apply(Math, e);
      if (!t && x.isEmpty(e)) return 1/0;
      var i = {
        computed: 1/0,
        value: 1/0
      };
      return k(e, function(e, r, a) {
        var o = t ? t.call(n, e, r, a) : e;
        o < i.computed && (i = {
          value: e,
          computed: o
        });
      }), i.value;
    }, x.shuffle = function(e) {
      var t, n = 0, i = [];
      return k(e, function(e) {
        t = x.random(n++), i[n - 1] = i[t], i[t] = e;
      }), i;
    };
    var E = function(e) {
      return x.isFunction(e) ? e : function(t) {
        return t[e];
      };
    };
    x.sortBy = function(e, t, n) {
      var i = E(t);
      return x.pluck(x.map(e, function(e, t, r) {
        return {
          value: e,
          index: t,
          criteria: i.call(n, e, t, r)
        };
      }).sort(function(e, t) {
        var n = e.criteria, i = t.criteria;
        if (n !== i) {
          if (n > i || void 0 === n) return 1;
          if (i > n || void 0 === i) return -1;
        }
        return e.index < t.index ? -1 : 1;
      }), "value");
    };
    var C = function(e, t, n, i) {
      var r = {}, a = E(t || x.identity);
      return k(e, function(t, o) {
        var s = a.call(n, t, o, e);
        i(r, s, t);
      }), r;
    };
    x.groupBy = function(e, t, n) {
      return C(e, t, n, function(e, t, n) {
        (x.has(e, t) ? e[t] : e[t] = []).push(n);
      });
    }, x.countBy = function(e, t, n) {
      return C(e, t, n, function(e, t) {
        x.has(e, t) || (e[t] = 0), e[t]++;
      });
    }, x.sortedIndex = function(e, t, n, i) {
      n = null == n ? x.identity : E(n);
      for (var r = n.call(i, t), a = 0, o = e.length; o > a; ) {
        var s = a + o >>> 1;
        n.call(i, e[s]) < r ? a = s + 1 : o = s;
      }
      return a;
    }, x.toArray = function(e) {
      return e ? x.isArray(e) ? s.call(e) : e.length === +e.length ? x.map(e, x.identity) : x.values(e) : [];
    }, x.size = function(e) {
      return null == e ? 0 : e.length === +e.length ? e.length : x.keys(e).length;
    }, x.first = x.head = x.take = function(e, t, n) {
      return null == e ? void 0 : null == t || n ? e[0] : s.call(e, 0, t);
    }, x.initial = function(e, t, n) {
      return s.call(e, 0, e.length - (null == t || n ? 1 : t));
    }, x.last = function(e, t, n) {
      return null == e ? void 0 : null == t || n ? e[e.length - 1] : s.call(e, Math.max(e.length - t, 0));
    }, x.rest = x.tail = x.drop = function(e, t, n) {
      return s.call(e, null == t || n ? 1 : t);
    }, x.compact = function(e) {
      return x.filter(e, x.identity);
    };
    var S = function(e, t, n) {
      return k(e, function(e) {
        x.isArray(e) ? t ? o.apply(n, e) : S(e, t, n) : n.push(e);
      }), n;
    };
    x.flatten = function(e, t) {
      return S(e, t, []);
    }, x.without = function(e) {
      return x.difference(e, s.call(arguments, 1));
    }, x.uniq = x.unique = function(e, t, n, i) {
      x.isFunction(t) && (i = n, n = t, t = !1);
      var r = n ? x.map(e, n, i) : e, a = [], o = [];
      return k(r, function(n, i) {
        (t ? i && o[o.length - 1] === n : x.contains(o, n)) || (o.push(n), a.push(e[i]));
      }), a;
    }, x.union = function() {
      return x.uniq(l.apply(i, arguments));
    }, x.intersection = function(e) {
      var t = s.call(arguments, 1);
      return x.filter(x.uniq(e), function(e) {
        return x.every(t, function(t) {
          return x.indexOf(t, e) >= 0;
        });
      });
    }, x.difference = function(e) {
      var t = l.apply(i, s.call(arguments, 1));
      return x.filter(e, function(e) {
        return !x.contains(t, e);
      });
    }, x.zip = function() {
      for (var e = s.call(arguments), t = x.max(x.pluck(e, "length")), n = new Array(t), i = 0; t > i; i++) n[i] = x.pluck(e, "" + i);
      return n;
    }, x.object = function(e, t) {
      if (null == e) return {};
      for (var n = {}, i = 0, r = e.length; r > i; i++) t ? n[e[i]] = t[i] : n[e[i][0]] = e[i][1];
      return n;
    }, x.indexOf = function(e, t, n) {
      if (null == e) return -1;
      var i = 0, r = e.length;
      if (n) {
        if ("number" != typeof n) return i = x.sortedIndex(e, t), e[i] === t ? i : -1;
        i = 0 > n ? Math.max(0, r + n) : n;
      }
      if (y && e.indexOf === y) return e.indexOf(t, n);
      for (;r > i; i++) if (e[i] === t) return i;
      return -1;
    }, x.lastIndexOf = function(e, t, n) {
      if (null == e) return -1;
      var i = null != n;
      if (b && e.lastIndexOf === b) return i ? e.lastIndexOf(t, n) : e.lastIndexOf(t);
      for (var r = i ? n : e.length; r--; ) if (e[r] === t) return r;
      return -1;
    }, x.range = function(e, t, n) {
      arguments.length <= 1 && (t = e || 0, e = 0), n = arguments[2] || 1;
      for (var i = Math.max(Math.ceil((t - e) / n), 0), r = 0, a = new Array(i); i > r; ) a[r++] = e, 
      e += n;
      return a;
    }, x.bind = function(e, t) {
      if (e.bind === _ && _) return _.apply(e, s.call(arguments, 1));
      var n = s.call(arguments, 2);
      return function() {
        return e.apply(t, n.concat(s.call(arguments)));
      };
    }, x.partial = function(e) {
      var t = s.call(arguments, 1);
      return function() {
        return e.apply(this, t.concat(s.call(arguments)));
      };
    }, x.bindAll = function(e) {
      var t = s.call(arguments, 1);
      return 0 === t.length && (t = x.functions(e)), k(t, function(t) {
        e[t] = x.bind(e[t], e);
      }), e;
    }, x.memoize = function(e, t) {
      var n = {};
      return t || (t = x.identity), function() {
        var i = t.apply(this, arguments);
        return x.has(n, i) ? n[i] : n[i] = e.apply(this, arguments);
      };
    }, x.delay = function(e, t) {
      var n = s.call(arguments, 2);
      return setTimeout(function() {
        return e.apply(null, n);
      }, t);
    }, x.defer = function(e) {
      return x.delay.apply(x, [ e, 1 ].concat(s.call(arguments, 1)));
    }, x.throttle = function(e, t) {
      var n, i, r, a, o = 0, s = function() {
        o = new Date(), r = null, a = e.apply(n, i);
      };
      return function() {
        var l = new Date(), u = t - (l - o);
        return n = this, i = arguments, 0 >= u ? (clearTimeout(r), r = null, o = l, a = e.apply(n, i)) : r || (r = setTimeout(s, u)), 
        a;
      };
    }, x.debounce = function(e, t, n) {
      var i, r;
      return function() {
        var a = this, o = arguments, s = function() {
          i = null, n || (r = e.apply(a, o));
        }, l = n && !i;
        return clearTimeout(i), i = setTimeout(s, t), l && (r = e.apply(a, o)), r;
      };
    }, x.once = function(e) {
      var t, n = !1;
      return function() {
        return n ? t : (n = !0, t = e.apply(this, arguments), e = null, t);
      };
    }, x.wrap = function(e, t) {
      return function() {
        var n = [ e ];
        return o.apply(n, arguments), t.apply(this, n);
      };
    }, x.compose = function() {
      var e = arguments;
      return function() {
        for (var t = arguments, n = e.length - 1; n >= 0; n--) t = [ e[n].apply(this, t) ];
        return t[0];
      };
    }, x.after = function(e, t) {
      return 0 >= e ? t() : function() {
        return --e < 1 ? t.apply(this, arguments) : void 0;
      };
    }, x.keys = A || function(e) {
      if (e !== Object(e)) throw new TypeError("Invalid object");
      var t = [];
      for (var n in e) x.has(e, n) && (t[t.length] = n);
      return t;
    }, x.values = function(e) {
      var t = [];
      for (var n in e) x.has(e, n) && t.push(e[n]);
      return t;
    }, x.pairs = function(e) {
      var t = [];
      for (var n in e) x.has(e, n) && t.push([ n, e[n] ]);
      return t;
    }, x.invert = function(e) {
      var t = {};
      for (var n in e) x.has(e, n) && (t[e[n]] = n);
      return t;
    }, x.functions = x.methods = function(e) {
      var t = [];
      for (var n in e) x.isFunction(e[n]) && t.push(n);
      return t.sort();
    }, x.extend = function(e) {
      return k(s.call(arguments, 1), function(t) {
        if (t) for (var n in t) e[n] = t[n];
      }), e;
    }, x.pick = function(e) {
      var t = {}, n = l.apply(i, s.call(arguments, 1));
      return k(n, function(n) {
        n in e && (t[n] = e[n]);
      }), t;
    }, x.omit = function(e) {
      var t = {}, n = l.apply(i, s.call(arguments, 1));
      for (var r in e) x.contains(n, r) || (t[r] = e[r]);
      return t;
    }, x.defaults = function(e) {
      return k(s.call(arguments, 1), function(t) {
        if (t) for (var n in t) null == e[n] && (e[n] = t[n]);
      }), e;
    }, x.clone = function(e) {
      return x.isObject(e) ? x.isArray(e) ? e.slice() : x.extend({}, e) : e;
    }, x.tap = function(e, t) {
      return t(e), e;
    };
    var N = function(e, t, n, i) {
      if (e === t) return 0 !== e || 1 / e == 1 / t;
      if (null == e || null == t) return e === t;
      e instanceof x && (e = e._wrapped), t instanceof x && (t = t._wrapped);
      var r = u.call(e);
      if (r != u.call(t)) return !1;
      switch (r) {
       case "[object String]":
        return e == String(t);

       case "[object Number]":
        return e != +e ? t != +t : 0 == e ? 1 / e == 1 / t : e == +t;

       case "[object Date]":
       case "[object Boolean]":
        return +e == +t;

       case "[object RegExp]":
        return e.source == t.source && e.global == t.global && e.multiline == t.multiline && e.ignoreCase == t.ignoreCase;
      }
      if ("object" != typeof e || "object" != typeof t) return !1;
      for (var a = n.length; a--; ) if (n[a] == e) return i[a] == t;
      n.push(e), i.push(t);
      var o = 0, s = !0;
      if ("[object Array]" == r) {
        if (o = e.length, s = o == t.length) for (;o-- && (s = N(e[o], t[o], n, i)); ) ;
      } else {
        var l = e.constructor, c = t.constructor;
        if (l !== c && !(x.isFunction(l) && l instanceof l && x.isFunction(c) && c instanceof c)) return !1;
        for (var d in e) if (x.has(e, d) && (o++, !(s = x.has(t, d) && N(e[d], t[d], n, i)))) break;
        if (s) {
          for (d in t) if (x.has(t, d) && !o--) break;
          s = !o;
        }
      }
      return n.pop(), i.pop(), s;
    };
    x.isEqual = function(e, t) {
      return N(e, t, [], []);
    }, x.isEmpty = function(e) {
      if (null == e) return !0;
      if (x.isArray(e) || x.isString(e)) return 0 === e.length;
      for (var t in e) if (x.has(e, t)) return !1;
      return !0;
    }, x.isElement = function(e) {
      return !(!e || 1 !== e.nodeType);
    }, x.isArray = w || function(e) {
      return "[object Array]" == u.call(e);
    }, x.isObject = function(e) {
      return e === Object(e);
    }, k([ "Arguments", "Function", "String", "Number", "Date", "RegExp" ], function(e) {
      x["is" + e] = function(t) {
        return u.call(t) == "[object " + e + "]";
      };
    }), x.isArguments(arguments) || (x.isArguments = function(e) {
      return !(!e || !x.has(e, "callee"));
    }), "function" != typeof /./ && (x.isFunction = function(e) {
      return "function" == typeof e;
    }), x.isFinite = function(e) {
      return isFinite(e) && !isNaN(parseFloat(e));
    }, x.isNaN = function(e) {
      return x.isNumber(e) && e != +e;
    }, x.isBoolean = function(e) {
      return e === !0 || e === !1 || "[object Boolean]" == u.call(e);
    }, x.isNull = function(e) {
      return null === e;
    }, x.isUndefined = function(e) {
      return void 0 === e;
    }, x.has = function(e, t) {
      return c.call(e, t);
    }, x.noConflict = function() {
      return e._ = t, this;
    }, x.identity = function(e) {
      return e;
    }, x.times = function(e, t, n) {
      for (var i = Array(e), r = 0; e > r; r++) i[r] = t.call(n, r);
      return i;
    }, x.random = function(e, t) {
      return null == t && (t = e, e = 0), e + Math.floor(Math.random() * (t - e + 1));
    };
    var L = {
      escape: {
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;",
        '"': "&quot;",
        "'": "&#x27;",
        "/": "&#x2F;"
      }
    };
    L.unescape = x.invert(L.escape);
    var P = {
      escape: new RegExp("[" + x.keys(L.escape).join("") + "]", "g"),
      unescape: new RegExp("(" + x.keys(L.unescape).join("|") + ")", "g")
    };
    x.each([ "escape", "unescape" ], function(e) {
      x[e] = function(t) {
        return null == t ? "" : ("" + t).replace(P[e], function(t) {
          return L[e][t];
        });
      };
    }), x.result = function(e, t) {
      if (null == e) return null;
      var n = e[t];
      return x.isFunction(n) ? n.call(e) : n;
    }, x.mixin = function(e) {
      k(x.functions(e), function(t) {
        var n = x[t] = e[t];
        x.prototype[t] = function() {
          var e = [ this._wrapped ];
          return o.apply(e, arguments), B.call(this, n.apply(x, e));
        };
      });
    };
    var D = 0;
    x.uniqueId = function(e) {
      var t = ++D + "";
      return e ? e + t : t;
    }, x.templateSettings = {
      evaluate: /<%([\s\S]+?)%>/g,
      interpolate: /<%=([\s\S]+?)%>/g,
      escape: /<%-([\s\S]+?)%>/g
    };
    var O = /(.)^/, M = {
      "'": "'",
      "\\": "\\",
      "\r": "r",
      "\n": "n",
      "	": "t",
      "\u2028": "u2028",
      "\u2029": "u2029"
    }, R = /\\|'|\r|\n|\t|\u2028|\u2029/g;
    x.template = function(e, t, n) {
      var i;
      n = x.defaults({}, n, x.templateSettings);
      var r = new RegExp([ (n.escape || O).source, (n.interpolate || O).source, (n.evaluate || O).source ].join("|") + "|$", "g"), a = 0, o = "__p+='";
      e.replace(r, function(t, n, i, r, s) {
        return o += e.slice(a, s).replace(R, function(e) {
          return "\\" + M[e];
        }), n && (o += "'+\n((__t=(" + n + "))==null?'':_.escape(__t))+\n'"), i && (o += "'+\n((__t=(" + i + "))==null?'':__t)+\n'"), 
        r && (o += "';\n" + r + "\n__p+='"), a = s + t.length, t;
      }), o += "';\n", n.variable || (o = "with(obj||{}){\n" + o + "}\n"), o = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + o + "return __p;\n";
      try {
        i = new Function(n.variable || "obj", "_", o);
      } catch (s) {
        throw s.source = o, s;
      }
      if (t) return i(t, x);
      var l = function(e) {
        return i.call(this, e, x);
      };
      return l.source = "function(" + (n.variable || "obj") + "){\n" + o + "}", l;
    }, x.chain = function(e) {
      return x(e).chain();
    };
    var B = function(e) {
      return this._chain ? x(e).chain() : e;
    };
    x.mixin(x), k([ "pop", "push", "reverse", "shift", "sort", "splice", "unshift" ], function(e) {
      var t = i[e];
      x.prototype[e] = function() {
        var n = this._wrapped;
        return t.apply(n, arguments), "shift" != e && "splice" != e || 0 !== n.length || delete n[0], 
        B.call(this, n);
      };
    }), k([ "concat", "join", "slice" ], function(e) {
      var t = i[e];
      x.prototype[e] = function() {
        return B.call(this, t.apply(this._wrapped, arguments));
      };
    }), x.extend(x.prototype, {
      chain: function() {
        return this._chain = !0, this;
      },
      value: function() {
        return this._wrapped;
      }
    });
  }.call(this), define("underscore", function(e) {
    return function() {
      var t;
      return t || e._;
    };
  }(this));
  var Zepto = function() {
    function e(e) {
      return null == e ? String(e) : J[X.call(e)] || "object";
    }
    function t(t) {
      return "function" == e(t);
    }
    function n(e) {
      return null != e && e == e.window;
    }
    function i(e) {
      return null != e && e.nodeType == e.DOCUMENT_NODE;
    }
    function r(t) {
      return "object" == e(t);
    }
    function a(e) {
      return r(e) && !n(e) && e.__proto__ == Object.prototype;
    }
    function o(e) {
      return e instanceof Array;
    }
    function s(e) {
      return "number" == typeof e.length;
    }
    function l(e) {
      return N.call(e, function(e) {
        return null != e;
      });
    }
    function u(e) {
      return e.length > 0 ? k.fn.concat.apply([], e) : e;
    }
    function c(e) {
      return e.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase();
    }
    function d(e) {
      return e in D ? D[e] : D[e] = new RegExp("(^|\\s)" + e + "(\\s|$)");
    }
    function p(e, t) {
      return "number" != typeof t || M[c(e)] ? t : t + "px";
    }
    function f(e) {
      var t, n;
      return P[e] || (t = L.createElement(e), L.body.appendChild(t), n = O(t, "").getPropertyValue("display"), 
      t.parentNode.removeChild(t), "none" == n && (n = "block"), P[e] = n), P[e];
    }
    function m(e) {
      return "children" in e ? S.call(e.children) : k.map(e.childNodes, function(e) {
        return 1 == e.nodeType ? e : void 0;
      });
    }
    function h(e, t, n) {
      for (x in t) n && (a(t[x]) || o(t[x])) ? (a(t[x]) && !a(e[x]) && (e[x] = {}), o(t[x]) && !o(e[x]) && (e[x] = []), 
      h(e[x], t[x], n)) : t[x] !== _ && (e[x] = t[x]);
    }
    function g(e, t) {
      return t === _ ? k(e) : k(e).filter(t);
    }
    function v(e, n, i, r) {
      return t(n) ? n.call(e, i, r) : n;
    }
    function y(e, t, n) {
      null == n ? e.removeAttribute(t) : e.setAttribute(t, n);
    }
    function b(e, t) {
      var n = e.className, i = n && n.baseVal !== _;
      return t === _ ? i ? n.baseVal : n : (i ? n.baseVal = t : e.className = t, void 0);
    }
    function w(e) {
      var t;
      try {
        return e ? "true" == e || ("false" == e ? !1 : "null" == e ? null : isNaN(t = Number(e)) ? /^[\[\{]/.test(e) ? k.parseJSON(e) : e : t) : e;
      } catch (n) {
        return e;
      }
    }
    function A(e, t) {
      t(e);
      for (var n in e.childNodes) A(e.childNodes[n], t);
    }
    var _, x, k, I, T, E, C = [], S = C.slice, N = C.filter, L = window.document, P = {}, D = {}, O = L.defaultView.getComputedStyle, M = {
      "column-count": 1,
      columns: 1,
      "font-weight": 1,
      "line-height": 1,
      opacity: 1,
      "z-index": 1,
      zoom: 1
    }, R = /^\s*<(\w+|!)[^>]*>/, B = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, U = /^(?:body|html)$/i, V = [ "val", "css", "html", "text", "data", "width", "height", "offset" ], j = [ "after", "prepend", "before", "append" ], z = L.createElement("table"), H = L.createElement("tr"), F = {
      tr: L.createElement("tbody"),
      tbody: z,
      thead: z,
      tfoot: z,
      td: H,
      th: H,
      "*": L.createElement("div")
    }, q = /complete|loaded|interactive/, G = /^\.([\w-]+)$/, W = /^#([\w-]*)$/, Q = /^[\w-]+$/, J = {}, X = J.toString, K = {}, Y = L.createElement("div");
    return K.matches = function(e, t) {
      if (!e || 1 !== e.nodeType) return !1;
      var n = e.webkitMatchesSelector || e.mozMatchesSelector || e.oMatchesSelector || e.matchesSelector;
      if (n) return n.call(e, t);
      var i, r = e.parentNode, a = !r;
      return a && (r = Y).appendChild(e), i = ~K.qsa(r, t).indexOf(e), a && Y.removeChild(e), 
      i;
    }, T = function(e) {
      return e.replace(/-+(.)?/g, function(e, t) {
        return t ? t.toUpperCase() : "";
      });
    }, E = function(e) {
      return N.call(e, function(t, n) {
        return e.indexOf(t) == n;
      });
    }, K.fragment = function(e, t, n) {
      e.replace && (e = e.replace(B, "<$1></$2>")), t === _ && (t = R.test(e) && RegExp.$1), 
      t in F || (t = "*");
      var i, r, o = F[t];
      return o.innerHTML = "" + e, r = k.each(S.call(o.childNodes), function() {
        o.removeChild(this);
      }), a(n) && (i = k(r), k.each(n, function(e, t) {
        V.indexOf(e) > -1 ? i[e](t) : i.attr(e, t);
      })), r;
    }, K.Z = function(e, t) {
      return e = e || [], e.__proto__ = k.fn, e.selector = t || "", e;
    }, K.isZ = function(e) {
      return e instanceof K.Z;
    }, K.init = function(e, n) {
      if (e) {
        if (t(e)) return k(L).ready(e);
        if (K.isZ(e)) return e;
        var i;
        if (o(e)) i = l(e); else if (r(e)) i = [ a(e) ? k.extend({}, e) : e ], e = null; else if (R.test(e)) i = K.fragment(e.trim(), RegExp.$1, n), 
        e = null; else {
          if (n !== _) return k(n).find(e);
          i = K.qsa(L, e);
        }
        return K.Z(i, e);
      }
      return K.Z();
    }, k = function(e, t) {
      return K.init(e, t);
    }, k.extend = function(e) {
      var t, n = S.call(arguments, 1);
      return "boolean" == typeof e && (t = e, e = n.shift()), n.forEach(function(n) {
        h(e, n, t);
      }), e;
    }, K.qsa = function(e, t) {
      var n;
      return i(e) && W.test(t) ? (n = e.getElementById(RegExp.$1)) ? [ n ] : [] : 1 !== e.nodeType && 9 !== e.nodeType ? [] : S.call(G.test(t) ? e.getElementsByClassName(RegExp.$1) : Q.test(t) ? e.getElementsByTagName(t) : e.querySelectorAll(t));
    }, k.contains = function(e, t) {
      return e !== t && e.contains(t);
    }, k.type = e, k.isFunction = t, k.isWindow = n, k.isArray = o, k.isPlainObject = a, 
    k.isEmptyObject = function(e) {
      var t;
      for (t in e) return !1;
      return !0;
    }, k.inArray = function(e, t, n) {
      return C.indexOf.call(t, e, n);
    }, k.camelCase = T, k.trim = function(e) {
      return e.trim();
    }, k.uuid = 0, k.support = {}, k.expr = {}, k.map = function(e, t) {
      var n, i, r, a = [];
      if (s(e)) for (i = 0; i < e.length; i++) n = t(e[i], i), null != n && a.push(n); else for (r in e) n = t(e[r], r), 
      null != n && a.push(n);
      return u(a);
    }, k.each = function(e, t) {
      var n, i;
      if (s(e)) {
        for (n = 0; n < e.length; n++) if (t.call(e[n], n, e[n]) === !1) return e;
      } else for (i in e) if (t.call(e[i], i, e[i]) === !1) return e;
      return e;
    }, k.grep = function(e, t) {
      return N.call(e, t);
    }, window.JSON && (k.parseJSON = JSON.parse), k.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(e, t) {
      J["[object " + t + "]"] = t.toLowerCase();
    }), k.fn = {
      forEach: C.forEach,
      reduce: C.reduce,
      push: C.push,
      sort: C.sort,
      indexOf: C.indexOf,
      concat: C.concat,
      map: function(e) {
        return k(k.map(this, function(t, n) {
          return e.call(t, n, t);
        }));
      },
      slice: function() {
        return k(S.apply(this, arguments));
      },
      ready: function(e) {
        return q.test(L.readyState) ? e(k) : L.addEventListener("DOMContentLoaded", function() {
          e(k);
        }, !1), this;
      },
      get: function(e) {
        return e === _ ? S.call(this) : this[e >= 0 ? e : e + this.length];
      },
      toArray: function() {
        return this.get();
      },
      size: function() {
        return this.length;
      },
      remove: function() {
        return this.each(function() {
          null != this.parentNode && this.parentNode.removeChild(this);
        });
      },
      each: function(e) {
        return C.every.call(this, function(t, n) {
          return e.call(t, n, t) !== !1;
        }), this;
      },
      filter: function(e) {
        return t(e) ? this.not(this.not(e)) : k(N.call(this, function(t) {
          return K.matches(t, e);
        }));
      },
      add: function(e, t) {
        return k(E(this.concat(k(e, t))));
      },
      is: function(e) {
        return this.length > 0 && K.matches(this[0], e);
      },
      not: function(e) {
        var n = [];
        if (t(e) && e.call !== _) this.each(function(t) {
          e.call(this, t) || n.push(this);
        }); else {
          var i = "string" == typeof e ? this.filter(e) : s(e) && t(e.item) ? S.call(e) : k(e);
          this.forEach(function(e) {
            i.indexOf(e) < 0 && n.push(e);
          });
        }
        return k(n);
      },
      has: function(e) {
        return this.filter(function() {
          return r(e) ? k.contains(this, e) : k(this).find(e).size();
        });
      },
      eq: function(e) {
        return -1 === e ? this.slice(e) : this.slice(e, +e + 1);
      },
      first: function() {
        var e = this[0];
        return e && !r(e) ? e : k(e);
      },
      last: function() {
        var e = this[this.length - 1];
        return e && !r(e) ? e : k(e);
      },
      find: function(e) {
        var t, n = this;
        return t = "object" == typeof e ? k(e).filter(function() {
          var e = this;
          return C.some.call(n, function(t) {
            return k.contains(t, e);
          });
        }) : 1 == this.length ? k(K.qsa(this[0], e)) : this.map(function() {
          return K.qsa(this, e);
        });
      },
      closest: function(e, t) {
        var n = this[0], r = !1;
        for ("object" == typeof e && (r = k(e)); n && !(r ? r.indexOf(n) >= 0 : K.matches(n, e)); ) n = n !== t && !i(n) && n.parentNode;
        return k(n);
      },
      parents: function(e) {
        for (var t = [], n = this; n.length > 0; ) n = k.map(n, function(e) {
          return (e = e.parentNode) && !i(e) && t.indexOf(e) < 0 ? (t.push(e), e) : void 0;
        });
        return g(t, e);
      },
      parent: function(e) {
        return g(E(this.pluck("parentNode")), e);
      },
      children: function(e) {
        return g(this.map(function() {
          return m(this);
        }), e);
      },
      contents: function() {
        return this.map(function() {
          return S.call(this.childNodes);
        });
      },
      siblings: function(e) {
        return g(this.map(function(e, t) {
          return N.call(m(t.parentNode), function(e) {
            return e !== t;
          });
        }), e);
      },
      empty: function() {
        return this.each(function() {
          this.innerHTML = "";
        });
      },
      pluck: function(e) {
        return k.map(this, function(t) {
          return t[e];
        });
      },
      show: function() {
        return this.each(function() {
          "none" == this.style.display && (this.style.display = null), "none" == O(this, "").getPropertyValue("display") && (this.style.display = f(this.nodeName));
        });
      },
      replaceWith: function(e) {
        return this.before(e).remove();
      },
      wrap: function(e) {
        var n = t(e);
        if (this[0] && !n) var i = k(e).get(0), r = i.parentNode || this.length > 1;
        return this.each(function(t) {
          k(this).wrapAll(n ? e.call(this, t) : r ? i.cloneNode(!0) : i);
        });
      },
      wrapAll: function(e) {
        if (this[0]) {
          k(this[0]).before(e = k(e));
          for (var t; (t = e.children()).length; ) e = t.first();
          k(e).append(this);
        }
        return this;
      },
      wrapInner: function(e) {
        var n = t(e);
        return this.each(function(t) {
          var i = k(this), r = i.contents(), a = n ? e.call(this, t) : e;
          r.length ? r.wrapAll(a) : i.append(a);
        });
      },
      unwrap: function() {
        return this.parent().each(function() {
          k(this).replaceWith(k(this).children());
        }), this;
      },
      clone: function() {
        return this.map(function() {
          return this.cloneNode(!0);
        });
      },
      hide: function() {
        return this.css("display", "none");
      },
      toggle: function(e) {
        return this.each(function() {
          var t = k(this);
          (e === _ ? "none" == t.css("display") : e) ? t.show() : t.hide();
        });
      },
      prev: function(e) {
        return k(this.pluck("previousElementSibling")).filter(e || "*");
      },
      next: function(e) {
        return k(this.pluck("nextElementSibling")).filter(e || "*");
      },
      html: function(e) {
        return e === _ ? this.length > 0 ? this[0].innerHTML : null : this.each(function(t) {
          var n = this.innerHTML;
          k(this).empty().append(v(this, e, t, n));
        });
      },
      text: function(e) {
        return e === _ ? this.length > 0 ? this[0].textContent : null : this.each(function() {
          this.textContent = e;
        });
      },
      attr: function(e, t) {
        var n;
        return "string" == typeof e && t === _ ? 0 == this.length || 1 !== this[0].nodeType ? _ : "value" == e && "INPUT" == this[0].nodeName ? this.val() : !(n = this[0].getAttribute(e)) && e in this[0] ? this[0][e] : n : this.each(function(n) {
          if (1 === this.nodeType) if (r(e)) for (x in e) y(this, x, e[x]); else y(this, e, v(this, t, n, this.getAttribute(e)));
        });
      },
      removeAttr: function(e) {
        return this.each(function() {
          1 === this.nodeType && y(this, e);
        });
      },
      prop: function(e, t) {
        return t === _ ? this[0] && this[0][e] : this.each(function(n) {
          this[e] = v(this, t, n, this[e]);
        });
      },
      data: function(e, t) {
        var n = this.attr("data-" + c(e), t);
        return null !== n ? w(n) : _;
      },
      val: function(e) {
        return e === _ ? this[0] && (this[0].multiple ? k(this[0]).find("option").filter(function() {
          return this.selected;
        }).pluck("value") : this[0].value) : this.each(function(t) {
          this.value = v(this, e, t, this.value);
        });
      },
      offset: function(e) {
        if (e) return this.each(function(t) {
          var n = k(this), i = v(this, e, t, n.offset()), r = n.offsetParent().offset(), a = {
            top: i.top - r.top,
            left: i.left - r.left
          };
          "static" == n.css("position") && (a.position = "relative"), n.css(a);
        });
        if (0 == this.length) return null;
        var t = this[0].getBoundingClientRect();
        return {
          left: t.left + window.pageXOffset,
          top: t.top + window.pageYOffset,
          width: Math.round(t.width),
          height: Math.round(t.height)
        };
      },
      css: function(t, n) {
        if (arguments.length < 2 && "string" == typeof t) return this[0] && (this[0].style[T(t)] || O(this[0], "").getPropertyValue(t));
        var i = "";
        if ("string" == e(t)) n || 0 === n ? i = c(t) + ":" + p(t, n) : this.each(function() {
          this.style.removeProperty(c(t));
        }); else for (x in t) t[x] || 0 === t[x] ? i += c(x) + ":" + p(x, t[x]) + ";" : this.each(function() {
          this.style.removeProperty(c(x));
        });
        return this.each(function() {
          this.style.cssText += ";" + i;
        });
      },
      index: function(e) {
        return e ? this.indexOf(k(e)[0]) : this.parent().children().indexOf(this[0]);
      },
      hasClass: function(e) {
        return C.some.call(this, function(e) {
          return this.test(b(e));
        }, d(e));
      },
      addClass: function(e) {
        return this.each(function(t) {
          I = [];
          var n = b(this), i = v(this, e, t, n);
          i.split(/\s+/g).forEach(function(e) {
            k(this).hasClass(e) || I.push(e);
          }, this), I.length && b(this, n + (n ? " " : "") + I.join(" "));
        });
      },
      removeClass: function(e) {
        return this.each(function(t) {
          return e === _ ? b(this, "") : (I = b(this), v(this, e, t, I).split(/\s+/g).forEach(function(e) {
            I = I.replace(d(e), " ");
          }), b(this, I.trim()), void 0);
        });
      },
      toggleClass: function(e, t) {
        return this.each(function(n) {
          var i = k(this), r = v(this, e, n, b(this));
          r.split(/\s+/g).forEach(function(e) {
            (t === _ ? !i.hasClass(e) : t) ? i.addClass(e) : i.removeClass(e);
          });
        });
      },
      scrollTop: function() {
        return this.length ? "scrollTop" in this[0] ? this[0].scrollTop : this[0].scrollY : void 0;
      },
      position: function() {
        if (this.length) {
          var e = this[0], t = this.offsetParent(), n = this.offset(), i = U.test(t[0].nodeName) ? {
            top: 0,
            left: 0
          } : t.offset();
          return n.top -= parseFloat(k(e).css("margin-top")) || 0, n.left -= parseFloat(k(e).css("margin-left")) || 0, 
          i.top += parseFloat(k(t[0]).css("border-top-width")) || 0, i.left += parseFloat(k(t[0]).css("border-left-width")) || 0, 
          {
            top: n.top - i.top,
            left: n.left - i.left
          };
        }
      },
      offsetParent: function() {
        return this.map(function() {
          for (var e = this.offsetParent || L.body; e && !U.test(e.nodeName) && "static" == k(e).css("position"); ) e = e.offsetParent;
          return e;
        });
      }
    }, k.fn.detach = k.fn.remove, [ "width", "height" ].forEach(function(e) {
      k.fn[e] = function(t) {
        var r, a = this[0], o = e.replace(/./, function(e) {
          return e[0].toUpperCase();
        });
        return t === _ ? n(a) ? a["inner" + o] : i(a) ? a.documentElement["offset" + o] : (r = this.offset()) && r[e] : this.each(function(n) {
          a = k(this), a.css(e, v(this, t, n, a[e]()));
        });
      };
    }), j.forEach(function(t, n) {
      var i = n % 2;
      k.fn[t] = function() {
        var t, r, a = k.map(arguments, function(n) {
          return t = e(n), "object" == t || "array" == t || null == n ? n : K.fragment(n);
        }), o = this.length > 1;
        return a.length < 1 ? this : this.each(function(e, t) {
          r = i ? t : t.parentNode, t = 0 == n ? t.nextSibling : 1 == n ? t.firstChild : 2 == n ? t : null, 
          a.forEach(function(e) {
            if (o) e = e.cloneNode(!0); else if (!r) return k(e).remove();
            A(r.insertBefore(e, t), function(e) {
              null == e.nodeName || "SCRIPT" !== e.nodeName.toUpperCase() || e.type && "text/javascript" !== e.type || e.src || window.eval.call(window, e.innerHTML);
            });
          });
        });
      }, k.fn[i ? t + "To" : "insert" + (n ? "Before" : "After")] = function(e) {
        return k(e)[t](this), this;
      };
    }), K.Z.prototype = k.fn, K.uniq = E, K.deserializeValue = w, k.zepto = K, k;
  }();
  window.Zepto = Zepto, "$" in window || (window.$ = Zepto), function(e) {
    function t(e) {
      return e._zid || (e._zid = f++);
    }
    function n(e, n, a, o) {
      if (n = i(n), n.ns) var s = r(n.ns);
      return (p[t(e)] || []).filter(function(e) {
        return !(!e || n.e && e.e != n.e || n.ns && !s.test(e.ns) || a && t(e.fn) !== t(a) || o && e.sel != o);
      });
    }
    function i(e) {
      var t = ("" + e).split(".");
      return {
        e: t[0],
        ns: t.slice(1).sort().join(" ")
      };
    }
    function r(e) {
      return new RegExp("(?:^| )" + e.replace(" ", " .* ?") + "(?: |$)");
    }
    function a(t, n, i) {
      "string" != e.type(t) ? e.each(t, i) : t.split(/\s/).forEach(function(e) {
        i(e, n);
      });
    }
    function o(e, t) {
      return e.del && ("focus" == e.e || "blur" == e.e) || !!t;
    }
    function s(e) {
      return h[e] || e;
    }
    function l(n, r, l, u, c, d) {
      var f = t(n), m = p[f] || (p[f] = []);
      a(r, l, function(t, r) {
        var a = i(t);
        a.fn = r, a.sel = u, a.e in h && (r = function(t) {
          var n = t.relatedTarget;
          return !n || n !== this && !e.contains(this, n) ? a.fn.apply(this, arguments) : void 0;
        }), a.del = c && c(r, t);
        var l = a.del || r;
        a.proxy = function(e) {
          var t = l.apply(n, [ e ].concat(e.data));
          return t === !1 && (e.preventDefault(), e.stopPropagation()), t;
        }, a.i = m.length, m.push(a), n.addEventListener(s(a.e), a.proxy, o(a, d));
      });
    }
    function u(e, i, r, l, u) {
      var c = t(e);
      a(i || "", r, function(t, i) {
        n(e, t, i, l).forEach(function(t) {
          delete p[c][t.i], e.removeEventListener(s(t.e), t.proxy, o(t, u));
        });
      });
    }
    function c(t) {
      var n, i = {
        originalEvent: t
      };
      for (n in t) y.test(n) || void 0 === t[n] || (i[n] = t[n]);
      return e.each(b, function(e, n) {
        i[e] = function() {
          return this[n] = g, t[e].apply(t, arguments);
        }, i[n] = v;
      }), i;
    }
    function d(e) {
      if (!("defaultPrevented" in e)) {
        e.defaultPrevented = !1;
        var t = e.preventDefault;
        e.preventDefault = function() {
          this.defaultPrevented = !0, t.call(this);
        };
      }
    }
    var p = (e.zepto.qsa, {}), f = 1, m = {}, h = {
      mouseenter: "mouseover",
      mouseleave: "mouseout"
    };
    m.click = m.mousedown = m.mouseup = m.mousemove = "MouseEvents", e.event = {
      add: l,
      remove: u
    }, e.proxy = function(n, i) {
      if (e.isFunction(n)) {
        var r = function() {
          return n.apply(i, arguments);
        };
        return r._zid = t(n), r;
      }
      if ("string" == typeof i) return e.proxy(n[i], n);
      throw new TypeError("expected function");
    }, e.fn.bind = function(e, t) {
      return this.each(function() {
        l(this, e, t);
      });
    }, e.fn.unbind = function(e, t) {
      return this.each(function() {
        u(this, e, t);
      });
    }, e.fn.one = function(e, t) {
      return this.each(function(n, i) {
        l(this, e, t, null, function(e, t) {
          return function() {
            var n = e.apply(i, arguments);
            return u(i, t, e), n;
          };
        });
      });
    };
    var g = function() {
      return !0;
    }, v = function() {
      return !1;
    }, y = /^([A-Z]|layer[XY]$)/, b = {
      preventDefault: "isDefaultPrevented",
      stopImmediatePropagation: "isImmediatePropagationStopped",
      stopPropagation: "isPropagationStopped"
    };
    e.fn.delegate = function(t, n, i) {
      return this.each(function(r, a) {
        l(a, n, i, t, function(n) {
          return function(i) {
            var r, o = e(i.target).closest(t, a).get(0);
            return o ? (r = e.extend(c(i), {
              currentTarget: o,
              liveFired: a
            }), n.apply(o, [ r ].concat([].slice.call(arguments, 1)))) : void 0;
          };
        });
      });
    }, e.fn.undelegate = function(e, t, n) {
      return this.each(function() {
        u(this, t, n, e);
      });
    }, e.fn.live = function(t, n) {
      return e(document.body).delegate(this.selector, t, n), this;
    }, e.fn.die = function(t, n) {
      return e(document.body).undelegate(this.selector, t, n), this;
    }, e.fn.on = function(t, n, i) {
      return !n || e.isFunction(n) ? this.bind(t, n || i) : this.delegate(n, t, i);
    }, e.fn.off = function(t, n, i) {
      return !n || e.isFunction(n) ? this.unbind(t, n || i) : this.undelegate(n, t, i);
    }, e.fn.trigger = function(t, n) {
      return ("string" == typeof t || e.isPlainObject(t)) && (t = e.Event(t)), d(t), t.data = n, 
      this.each(function() {
        "dispatchEvent" in this && this.dispatchEvent(t);
      });
    }, e.fn.triggerHandler = function(t, i) {
      var r, a;
      return this.each(function(o, s) {
        r = c("string" == typeof t ? e.Event(t) : t), r.data = i, r.target = s, e.each(n(s, t.type || t), function(e, t) {
          return a = t.proxy(r), r.isImmediatePropagationStopped() ? !1 : void 0;
        });
      }), a;
    }, "focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t) {
      e.fn[t] = function(e) {
        return e ? this.bind(t, e) : this.trigger(t);
      };
    }), [ "focus", "blur" ].forEach(function(t) {
      e.fn[t] = function(e) {
        return e ? this.bind(t, e) : this.each(function() {
          try {
            this[t]();
          } catch (e) {}
        }), this;
      };
    }), e.Event = function(e, t) {
      "string" != typeof e && (t = e, e = t.type);
      var n = document.createEvent(m[e] || "Events"), i = !0;
      if (t) for (var r in t) "bubbles" == r ? i = !!t[r] : n[r] = t[r];
      return n.initEvent(e, i, !0, null, null, null, null, null, null, null, null, null, null, null, null), 
      n.isDefaultPrevented = function() {
        return this.defaultPrevented;
      }, n;
    };
  }(Zepto), function(e, t) {
    function n(e) {
      return i(e.replace(/([a-z])([A-Z])/, "$1-$2"));
    }
    function i(e) {
      return e.toLowerCase();
    }
    function r(e) {
      return a ? a + e : i(e);
    }
    var a, o, s, l, u, c, d, p, f = "", m = {
      Webkit: "webkit",
      Moz: "",
      O: "o",
      ms: "MS"
    }, h = window.document, g = h.createElement("div"), v = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i, y = {};
    e.each(m, function(e, n) {
      return g.style[e + "TransitionProperty"] !== t ? (f = "-" + i(e) + "-", a = n, !1) : void 0;
    }), o = f + "transform", y[s = f + "transition-property"] = y[l = f + "transition-duration"] = y[u = f + "transition-timing-function"] = y[c = f + "animation-name"] = y[d = f + "animation-duration"] = y[p = f + "animation-timing-function"] = "", 
    e.fx = {
      off: a === t && g.style.transitionProperty === t,
      speeds: {
        _default: 400,
        fast: 200,
        slow: 600
      },
      cssPrefix: f,
      transitionEnd: r("TransitionEnd"),
      animationEnd: r("AnimationEnd")
    }, e.fn.animate = function(t, n, i, r) {
      return e.isPlainObject(n) && (i = n.easing, r = n.complete, n = n.duration), n && (n = ("number" == typeof n ? n : e.fx.speeds[n] || e.fx.speeds._default) / 1e3), 
      this.anim(t, n, i, r);
    }, e.fn.anim = function(i, r, a, f) {
      var m, h, g, b = {}, w = "", A = this, _ = e.fx.transitionEnd;
      if (r === t && (r = .4), e.fx.off && (r = 0), "string" == typeof i) b[c] = i, b[d] = r + "s", 
      b[p] = a || "linear", _ = e.fx.animationEnd; else {
        h = [];
        for (m in i) v.test(m) ? w += m + "(" + i[m] + ") " : (b[m] = i[m], h.push(n(m)));
        w && (b[o] = w, h.push(o)), r > 0 && "object" == typeof i && (b[s] = h.join(", "), 
        b[l] = r + "s", b[u] = a || "linear");
      }
      return g = function(t) {
        if ("undefined" != typeof t) {
          if (t.target !== t.currentTarget) return;
          e(t.target).unbind(_, g);
        }
        e(this).css(y), f && f.call(this);
      }, r > 0 && this.bind(_, g), this.size() && this.get(0).clientLeft, this.css(b), 
      0 >= r && setTimeout(function() {
        A.each(function() {
          g.call(this);
        });
      }, 0), this;
    }, g = null;
  }(Zepto), function(e) {
    function t(t, n, i) {
      var r = e.Event(n);
      return e(t).trigger(r, i), !r.defaultPrevented;
    }
    function n(e, n, i, r) {
      return e.global ? t(n || y, i, r) : void 0;
    }
    function i(t) {
      t.global && 0 === e.active++ && n(t, null, "ajaxStart");
    }
    function r(t) {
      t.global && !--e.active && n(t, null, "ajaxStop");
    }
    function a(e, t) {
      var i = t.context;
      return t.beforeSend.call(i, e, t) === !1 || n(t, i, "ajaxBeforeSend", [ e, t ]) === !1 ? !1 : (n(t, i, "ajaxSend", [ e, t ]), 
      void 0);
    }
    function o(e, t, i) {
      var r = i.context, a = "success";
      i.success.call(r, e, a, t), n(i, r, "ajaxSuccess", [ t, i, e ]), l(a, t, i);
    }
    function s(e, t, i, r) {
      var a = r.context;
      r.error.call(a, i, t, e), n(r, a, "ajaxError", [ i, r, e ]), l(t, i, r);
    }
    function l(e, t, i) {
      var a = i.context;
      i.complete.call(a, t, e), n(i, a, "ajaxComplete", [ t, i ]), r(i);
    }
    function u() {}
    function c(e) {
      return e && (e = e.split(";", 2)[0]), e && (e == x ? "html" : e == _ ? "json" : w.test(e) ? "script" : A.test(e) && "xml") || "text";
    }
    function d(e, t) {
      return (e + "&" + t).replace(/[&?]{1,2}/, "?");
    }
    function p(t) {
      t.processData && t.data && "string" != e.type(t.data) && (t.data = e.param(t.data, t.traditional)), 
      !t.data || t.type && "GET" != t.type.toUpperCase() || (t.url = d(t.url, t.data));
    }
    function f(t, n, i, r) {
      var a = !e.isFunction(n);
      return {
        url: t,
        data: a ? n : void 0,
        success: a ? e.isFunction(i) ? i : void 0 : n,
        dataType: a ? r || i : i
      };
    }
    function m(t, n, i, r) {
      var a, o = e.isArray(n);
      e.each(n, function(n, s) {
        a = e.type(s), r && (n = i ? r : r + "[" + (o ? "" : n) + "]"), !r && o ? t.add(s.name, s.value) : "array" == a || !i && "object" == a ? m(t, s, i, n) : t.add(n, s);
      });
    }
    var h, g, v = 0, y = window.document, b = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, w = /^(?:text|application)\/javascript/i, A = /^(?:text|application)\/xml/i, _ = "application/json", x = "text/html", k = /^\s*$/;
    e.active = 0, e.ajaxJSONP = function(t) {
      if (!("type" in t)) return e.ajax(t);
      var n, i = "jsonp" + ++v, r = y.createElement("script"), l = function() {
        clearTimeout(n), e(r).remove(), delete window[i];
      }, c = function(e) {
        l(), e && "timeout" != e || (window[i] = u), s(null, e || "abort", d, t);
      }, d = {
        abort: c
      };
      return a(d, t) === !1 ? (c("abort"), !1) : (window[i] = function(e) {
        l(), o(e, d, t);
      }, r.onerror = function() {
        c("error");
      }, r.src = t.url.replace(/=\?/, "=" + i), e("head").append(r), t.timeout > 0 && (n = setTimeout(function() {
        c("timeout");
      }, t.timeout)), d);
    }, e.ajaxSettings = {
      type: "GET",
      beforeSend: u,
      success: u,
      error: u,
      complete: u,
      context: null,
      global: !0,
      xhr: function() {
        return new window.XMLHttpRequest();
      },
      accepts: {
        script: "text/javascript, application/javascript",
        json: _,
        xml: "application/xml, text/xml",
        html: x,
        text: "text/plain"
      },
      crossDomain: !1,
      timeout: 0,
      processData: !0,
      cache: !0
    }, e.ajax = function(t) {
      var n = e.extend({}, t || {});
      for (h in e.ajaxSettings) void 0 === n[h] && (n[h] = e.ajaxSettings[h]);
      i(n), n.crossDomain || (n.crossDomain = /^([\w-]+:)?\/\/([^\/]+)/.test(n.url) && RegExp.$2 != window.location.host), 
      n.url || (n.url = window.location.toString()), p(n), n.cache === !1 && (n.url = d(n.url, "_=" + Date.now()));
      var r = n.dataType, l = /=\?/.test(n.url);
      if ("jsonp" == r || l) return l || (n.url = d(n.url, "callback=?")), e.ajaxJSONP(n);
      var f, m = n.accepts[r], v = {}, y = /^([\w-]+:)\/\//.test(n.url) ? RegExp.$1 : window.location.protocol, b = n.xhr();
      n.crossDomain || (v["X-Requested-With"] = "XMLHttpRequest"), m && (v.Accept = m, 
      m.indexOf(",") > -1 && (m = m.split(",", 2)[0]), b.overrideMimeType && b.overrideMimeType(m)), 
      (n.contentType || n.contentType !== !1 && n.data && "GET" != n.type.toUpperCase()) && (v["Content-Type"] = n.contentType || "application/x-www-form-urlencoded"), 
      n.headers = e.extend(v, n.headers || {}), b.onreadystatechange = function() {
        if (4 == b.readyState) {
          b.onreadystatechange = u, clearTimeout(f);
          var t, i = !1;
          if (b.status >= 200 && b.status < 300 || 304 == b.status || 0 == b.status && "file:" == y) {
            r = r || c(b.getResponseHeader("content-type")), t = b.responseText;
            try {
              "script" == r ? (1, eval)(t) : "xml" == r ? t = b.responseXML : "json" == r && (t = k.test(t) ? null : e.parseJSON(t));
            } catch (a) {
              i = a;
            }
            i ? s(i, "parsererror", b, n) : o(t, b, n);
          } else s(null, b.status ? "error" : "abort", b, n);
        }
      };
      var w = "async" in n ? n.async : !0;
      b.open(n.type, n.url, w);
      for (g in n.headers) b.setRequestHeader(g, n.headers[g]);
      return a(b, n) === !1 ? (b.abort(), !1) : (n.timeout > 0 && (f = setTimeout(function() {
        b.onreadystatechange = u, b.abort(), s(null, "timeout", b, n);
      }, n.timeout)), b.send(n.data ? n.data : null), b);
    }, e.get = function() {
      return e.ajax(f.apply(null, arguments));
    }, e.post = function() {
      var t = f.apply(null, arguments);
      return t.type = "POST", e.ajax(t);
    }, e.getJSON = function() {
      var t = f.apply(null, arguments);
      return t.dataType = "json", e.ajax(t);
    }, e.fn.load = function(t, n, i) {
      if (!this.length) return this;
      var r, a = this, o = t.split(/\s/), s = f(t, n, i), l = s.success;
      return o.length > 1 && (s.url = o[0], r = o[1]), s.success = function(t) {
        a.html(r ? e("<div>").html(t.replace(b, "")).find(r) : t), l && l.apply(a, arguments);
      }, e.ajax(s), this;
    };
    var I = encodeURIComponent;
    e.param = function(e, t) {
      var n = [];
      return n.add = function(e, t) {
        this.push(I(e) + "=" + I(t));
      }, m(n, e, t), n.join("&").replace(/%20/g, "+");
    };
  }(Zepto), function(e) {
    function t(e) {
      return "tagName" in e ? e : e.parentNode;
    }
    function n(e, t, n, i) {
      var r = Math.abs(e - t), a = Math.abs(n - i);
      return r >= a ? e - t > 0 ? "Left" : "Right" : n - i > 0 ? "Up" : "Down";
    }
    function i() {
      u = null, c.last && (c.el.trigger("longTap"), c = {});
    }
    function r() {
      u && clearTimeout(u), u = null;
    }
    function a() {
      o && clearTimeout(o), s && clearTimeout(s), l && clearTimeout(l), u && clearTimeout(u), 
      o = s = l = u = null, c = {};
    }
    var o, s, l, u, c = {}, d = 750;
    e(document).ready(function() {
      var p, f;
      e(document.body).bind("touchstart", function(n) {
        p = Date.now(), f = p - (c.last || p), c.el = e(t(n.touches[0].target)), o && clearTimeout(o), 
        c.x1 = n.touches[0].pageX, c.y1 = n.touches[0].pageY, f > 0 && 250 >= f && (c.isDoubleTap = !0), 
        c.last = p, u = setTimeout(i, d);
      }).bind("touchmove", function(e) {
        r(), c.x2 = e.touches[0].pageX, c.y2 = e.touches[0].pageY, Math.abs(c.x1 - c.x2) > 10 && e.preventDefault();
      }).bind("touchend", function() {
        r(), c.x2 && Math.abs(c.x1 - c.x2) > 30 || c.y2 && Math.abs(c.y1 - c.y2) > 30 ? l = setTimeout(function() {
          c.el && (c.el.trigger("swipe"), c.el.trigger("swipe" + n(c.x1, c.x2, c.y1, c.y2))), 
          c = {};
        }, 0) : "last" in c && (s = setTimeout(function() {
          var t = e.Event("tap");
          t.cancelTouch = a, c.el.trigger(t), c.isDoubleTap ? (c.el.trigger("doubleTap"), 
          c = {}) : o = setTimeout(function() {
            o = null, c.el.trigger("singleTap"), c = {};
          }, 250);
        }, 0));
      }).bind("touchcancel", a), e(window).bind("scroll", a);
    }), [ "swipe", "swipeLeft", "swipeRight", "swipeUp", "swipeDown", "doubleTap", "tap", "singleTap", "longTap" ].forEach(function(t) {
      e.fn[t] = function(e) {
        return this.bind(t, e);
      };
    });
  }(Zepto), define("zepto", function(e) {
    return function() {
      var t;
      return t || e.$;
    };
  }(this)), function() {
    var e, t = this, n = t.Backbone, i = [], r = i.push, a = i.slice, o = i.splice;
    e = "undefined" != typeof exports ? exports : t.Backbone = {}, e.VERSION = "1.0.0";
    var s = t._;
    s || "undefined" == typeof require || (s = require("underscore")), e.$ = t.jQuery || t.Zepto || t.ender || t.$, 
    e.noConflict = function() {
      return t.Backbone = n, this;
    }, e.emulateHTTP = !1, e.emulateJSON = !1;
    var l = e.Events = {
      on: function(e, t, n) {
        if (!c(this, "on", e, [ t, n ]) || !t) return this;
        this._events || (this._events = {});
        var i = this._events[e] || (this._events[e] = []);
        return i.push({
          callback: t,
          context: n,
          ctx: n || this
        }), this;
      },
      once: function(e, t, n) {
        if (!c(this, "once", e, [ t, n ]) || !t) return this;
        var i = this, r = s.once(function() {
          i.off(e, r), t.apply(this, arguments);
        });
        return r._callback = t, this.on(e, r, n);
      },
      off: function(e, t, n) {
        var i, r, a, o, l, u, d, p;
        if (!this._events || !c(this, "off", e, [ t, n ])) return this;
        if (!e && !t && !n) return this._events = {}, this;
        for (o = e ? [ e ] : s.keys(this._events), l = 0, u = o.length; u > l; l++) if (e = o[l], 
        a = this._events[e]) {
          if (this._events[e] = i = [], t || n) for (d = 0, p = a.length; p > d; d++) r = a[d], 
          (t && t !== r.callback && t !== r.callback._callback || n && n !== r.context) && i.push(r);
          i.length || delete this._events[e];
        }
        return this;
      },
      trigger: function(e) {
        if (!this._events) return this;
        var t = a.call(arguments, 1);
        if (!c(this, "trigger", e, t)) return this;
        var n = this._events[e], i = this._events.all;
        return n && d(n, t), i && d(i, arguments), this;
      },
      stopListening: function(e, t, n) {
        var i = this._listeners;
        if (!i) return this;
        var r = !t && !n;
        "object" == typeof t && (n = this), e && ((i = {})[e._listenerId] = e);
        for (var a in i) i[a].off(t, n, this), r && delete this._listeners[a];
        return this;
      }
    }, u = /\s+/, c = function(e, t, n, i) {
      if (!n) return !0;
      if ("object" == typeof n) {
        for (var r in n) e[t].apply(e, [ r, n[r] ].concat(i));
        return !1;
      }
      if (u.test(n)) {
        for (var a = n.split(u), o = 0, s = a.length; s > o; o++) e[t].apply(e, [ a[o] ].concat(i));
        return !1;
      }
      return !0;
    }, d = function(e, t) {
      var n, i = -1, r = e.length, a = t[0], o = t[1], s = t[2];
      switch (t.length) {
       case 0:
        for (;++i < r; ) (n = e[i]).callback.call(n.ctx);
        return;

       case 1:
        for (;++i < r; ) (n = e[i]).callback.call(n.ctx, a);
        return;

       case 2:
        for (;++i < r; ) (n = e[i]).callback.call(n.ctx, a, o);
        return;

       case 3:
        for (;++i < r; ) (n = e[i]).callback.call(n.ctx, a, o, s);
        return;

       default:
        for (;++i < r; ) (n = e[i]).callback.apply(n.ctx, t);
      }
    }, p = {
      listenTo: "on",
      listenToOnce: "once"
    };
    s.each(p, function(e, t) {
      l[t] = function(t, n, i) {
        var r = this._listeners || (this._listeners = {}), a = t._listenerId || (t._listenerId = s.uniqueId("l"));
        return r[a] = t, "object" == typeof n && (i = this), t[e](n, i, this), this;
      };
    }), l.bind = l.on, l.unbind = l.off, s.extend(e, l);
    var f = e.Model = function(e, t) {
      var n, i = e || {};
      t || (t = {}), this.cid = s.uniqueId("c"), this.attributes = {}, s.extend(this, s.pick(t, m)), 
      t.parse && (i = this.parse(i, t) || {}), (n = s.result(this, "defaults")) && (i = s.defaults({}, i, n)), 
      this.set(i, t), this.changed = {}, this.initialize.apply(this, arguments);
    }, m = [ "url", "urlRoot", "collection" ];
    s.extend(f.prototype, l, {
      changed: null,
      validationError: null,
      idAttribute: "id",
      initialize: function() {},
      toJSON: function() {
        return s.clone(this.attributes);
      },
      sync: function() {
        return e.sync.apply(this, arguments);
      },
      get: function(e) {
        return this.attributes[e];
      },
      escape: function(e) {
        return s.escape(this.get(e));
      },
      has: function(e) {
        return null != this.get(e);
      },
      set: function(e, t, n) {
        var i, r, a, o, l, u, c, d;
        if (null == e) return this;
        if ("object" == typeof e ? (r = e, n = t) : (r = {})[e] = t, n || (n = {}), !this._validate(r, n)) return !1;
        a = n.unset, l = n.silent, o = [], u = this._changing, this._changing = !0, u || (this._previousAttributes = s.clone(this.attributes), 
        this.changed = {}), d = this.attributes, c = this._previousAttributes, this.idAttribute in r && (this.id = r[this.idAttribute]);
        for (i in r) t = r[i], s.isEqual(d[i], t) || o.push(i), s.isEqual(c[i], t) ? delete this.changed[i] : this.changed[i] = t, 
        a ? delete d[i] : d[i] = t;
        if (!l) {
          o.length && (this._pending = !0);
          for (var p = 0, f = o.length; f > p; p++) this.trigger("change:" + o[p], this, d[o[p]], n);
        }
        if (u) return this;
        if (!l) for (;this._pending; ) this._pending = !1, this.trigger("change", this, n);
        return this._pending = !1, this._changing = !1, this;
      },
      unset: function(e, t) {
        return this.set(e, void 0, s.extend({}, t, {
          unset: !0
        }));
      },
      clear: function(e) {
        var t = {};
        for (var n in this.attributes) t[n] = void 0;
        return this.set(t, s.extend({}, e, {
          unset: !0
        }));
      },
      hasChanged: function(e) {
        return null == e ? !s.isEmpty(this.changed) : s.has(this.changed, e);
      },
      changedAttributes: function(e) {
        if (!e) return this.hasChanged() ? s.clone(this.changed) : !1;
        var t, n = !1, i = this._changing ? this._previousAttributes : this.attributes;
        for (var r in e) s.isEqual(i[r], t = e[r]) || ((n || (n = {}))[r] = t);
        return n;
      },
      previous: function(e) {
        return null != e && this._previousAttributes ? this._previousAttributes[e] : null;
      },
      previousAttributes: function() {
        return s.clone(this._previousAttributes);
      },
      fetch: function(e) {
        e = e ? s.clone(e) : {}, void 0 === e.parse && (e.parse = !0);
        var t = this, n = e.success;
        return e.success = function(i) {
          return t.set(t.parse(i, e), e) ? (n && n(t, i, e), t.trigger("sync", t, i, e), void 0) : !1;
        }, B(this, e), this.sync("read", this, e);
      },
      save: function(e, t, n) {
        var i, r, a, o = this.attributes;
        if (null == e || "object" == typeof e ? (i = e, n = t) : (i = {})[e] = t, !(!i || n && n.wait || this.set(i, n))) return !1;
        if (n = s.extend({
          validate: !0
        }, n), !this._validate(i, n)) return !1;
        i && n.wait && (this.attributes = s.extend({}, o, i)), void 0 === n.parse && (n.parse = !0);
        var l = this, u = n.success;
        return n.success = function(e) {
          l.attributes = o;
          var t = l.parse(e, n);
          return n.wait && (t = s.extend(i || {}, t)), s.isObject(t) && !l.set(t, n) ? !1 : (u && u(l, e, n), 
          l.trigger("sync", l, e, n), void 0);
        }, B(this, n), r = this.isNew() ? "create" : n.patch ? "patch" : "update", "patch" === r && (n.attrs = i), 
        a = this.sync(r, this, n), i && n.wait && (this.attributes = o), a;
      },
      destroy: function(e) {
        e = e ? s.clone(e) : {};
        var t = this, n = e.success, i = function() {
          t.trigger("destroy", t, t.collection, e);
        };
        if (e.success = function(r) {
          (e.wait || t.isNew()) && i(), n && n(t, r, e), t.isNew() || t.trigger("sync", t, r, e);
        }, this.isNew()) return e.success(), !1;
        B(this, e);
        var r = this.sync("delete", this, e);
        return e.wait || i(), r;
      },
      url: function() {
        var e = s.result(this, "urlRoot") || s.result(this.collection, "url") || R();
        return this.isNew() ? e : e + ("/" === e.charAt(e.length - 1) ? "" : "/") + encodeURIComponent(this.id);
      },
      parse: function(e) {
        return e;
      },
      clone: function() {
        return new this.constructor(this.attributes);
      },
      isNew: function() {
        return null == this.id;
      },
      isValid: function(e) {
        return this._validate({}, s.extend(e || {}, {
          validate: !0
        }));
      },
      _validate: function(e, t) {
        if (!t.validate || !this.validate) return !0;
        e = s.extend({}, this.attributes, e);
        var n = this.validationError = this.validate(e, t) || null;
        return n ? (this.trigger("invalid", this, n, s.extend(t || {}, {
          validationError: n
        })), !1) : !0;
      }
    });
    var h = [ "keys", "values", "pairs", "invert", "pick", "omit" ];
    s.each(h, function(e) {
      f.prototype[e] = function() {
        var t = a.call(arguments);
        return t.unshift(this.attributes), s[e].apply(s, t);
      };
    });
    var g = e.Collection = function(e, t) {
      t || (t = {}), t.url && (this.url = t.url), t.model && (this.model = t.model), void 0 !== t.comparator && (this.comparator = t.comparator), 
      this._reset(), this.initialize.apply(this, arguments), e && this.reset(e, s.extend({
        silent: !0
      }, t));
    }, v = {
      add: !0,
      remove: !0,
      merge: !0
    }, y = {
      add: !0,
      merge: !1,
      remove: !1
    };
    s.extend(g.prototype, l, {
      model: f,
      initialize: function() {},
      toJSON: function(e) {
        return this.map(function(t) {
          return t.toJSON(e);
        });
      },
      sync: function() {
        return e.sync.apply(this, arguments);
      },
      add: function(e, t) {
        return this.set(e, s.defaults(t || {}, y));
      },
      remove: function(e, t) {
        e = s.isArray(e) ? e.slice() : [ e ], t || (t = {});
        var n, i, r, a;
        for (n = 0, i = e.length; i > n; n++) a = this.get(e[n]), a && (delete this._byId[a.id], 
        delete this._byId[a.cid], r = this.indexOf(a), this.models.splice(r, 1), this.length--, 
        t.silent || (t.index = r, a.trigger("remove", a, this, t)), this._removeReference(a));
        return this;
      },
      set: function(e, t) {
        t = s.defaults(t || {}, v), t.parse && (e = this.parse(e, t)), s.isArray(e) || (e = e ? [ e ] : []);
        var n, i, a, l, u, c = t.at, d = this.comparator && null == c && t.sort !== !1, p = s.isString(this.comparator) ? this.comparator : null, f = [], m = [], h = {};
        for (n = 0, i = e.length; i > n; n++) (a = this._prepareModel(e[n], t)) && ((l = this.get(a)) ? (t.remove && (h[l.cid] = !0), 
        t.merge && (l.set(a.attributes, t), d && !u && l.hasChanged(p) && (u = !0))) : t.add && (f.push(a), 
        a.on("all", this._onModelEvent, this), this._byId[a.cid] = a, null != a.id && (this._byId[a.id] = a)));
        if (t.remove) {
          for (n = 0, i = this.length; i > n; ++n) h[(a = this.models[n]).cid] || m.push(a);
          m.length && this.remove(m, t);
        }
        if (f.length && (d && (u = !0), this.length += f.length, null != c ? o.apply(this.models, [ c, 0 ].concat(f)) : r.apply(this.models, f)), 
        u && this.sort({
          silent: !0
        }), t.silent) return this;
        for (n = 0, i = f.length; i > n; n++) (a = f[n]).trigger("add", a, this, t);
        return u && this.trigger("sort", this, t), this;
      },
      reset: function(e, t) {
        t || (t = {});
        for (var n = 0, i = this.models.length; i > n; n++) this._removeReference(this.models[n]);
        return t.previousModels = this.models, this._reset(), this.add(e, s.extend({
          silent: !0
        }, t)), t.silent || this.trigger("reset", this, t), this;
      },
      push: function(e, t) {
        return e = this._prepareModel(e, t), this.add(e, s.extend({
          at: this.length
        }, t)), e;
      },
      pop: function(e) {
        var t = this.at(this.length - 1);
        return this.remove(t, e), t;
      },
      unshift: function(e, t) {
        return e = this._prepareModel(e, t), this.add(e, s.extend({
          at: 0
        }, t)), e;
      },
      shift: function(e) {
        var t = this.at(0);
        return this.remove(t, e), t;
      },
      slice: function(e, t) {
        return this.models.slice(e, t);
      },
      get: function(e) {
        return null == e ? void 0 : this._byId[null != e.id ? e.id : e.cid || e];
      },
      at: function(e) {
        return this.models[e];
      },
      where: function(e, t) {
        return s.isEmpty(e) ? t ? void 0 : [] : this[t ? "find" : "filter"](function(t) {
          for (var n in e) if (e[n] !== t.get(n)) return !1;
          return !0;
        });
      },
      findWhere: function(e) {
        return this.where(e, !0);
      },
      sort: function(e) {
        if (!this.comparator) throw new Error("Cannot sort a set without a comparator");
        return e || (e = {}), s.isString(this.comparator) || 1 === this.comparator.length ? this.models = this.sortBy(this.comparator, this) : this.models.sort(s.bind(this.comparator, this)), 
        e.silent || this.trigger("sort", this, e), this;
      },
      sortedIndex: function(e, t, n) {
        t || (t = this.comparator);
        var i = s.isFunction(t) ? t : function(e) {
          return e.get(t);
        };
        return s.sortedIndex(this.models, e, i, n);
      },
      pluck: function(e) {
        return s.invoke(this.models, "get", e);
      },
      fetch: function(e) {
        e = e ? s.clone(e) : {}, void 0 === e.parse && (e.parse = !0);
        var t = e.success, n = this;
        return e.success = function(i) {
          var r = e.reset ? "reset" : "set";
          n[r](i, e), t && t(n, i, e), n.trigger("sync", n, i, e);
        }, B(this, e), this.sync("read", this, e);
      },
      create: function(e, t) {
        if (t = t ? s.clone(t) : {}, !(e = this._prepareModel(e, t))) return !1;
        t.wait || this.add(e, t);
        var n = this, i = t.success;
        return t.success = function(r) {
          t.wait && n.add(e, t), i && i(e, r, t);
        }, e.save(null, t), e;
      },
      parse: function(e) {
        return e;
      },
      clone: function() {
        return new this.constructor(this.models);
      },
      _reset: function() {
        this.length = 0, this.models = [], this._byId = {};
      },
      _prepareModel: function(e, t) {
        if (e instanceof f) return e.collection || (e.collection = this), e;
        t || (t = {}), t.collection = this;
        var n = new this.model(e, t);
        return n._validate(e, t) ? n : (this.trigger("invalid", this, e, t), !1);
      },
      _removeReference: function(e) {
        this === e.collection && delete e.collection, e.off("all", this._onModelEvent, this);
      },
      _onModelEvent: function(e, t, n, i) {
        ("add" !== e && "remove" !== e || n === this) && ("destroy" === e && this.remove(t, i), 
        t && e === "change:" + t.idAttribute && (delete this._byId[t.previous(t.idAttribute)], 
        null != t.id && (this._byId[t.id] = t)), this.trigger.apply(this, arguments));
      }
    });
    var b = [ "forEach", "each", "map", "collect", "reduce", "foldl", "inject", "reduceRight", "foldr", "find", "detect", "filter", "select", "reject", "every", "all", "some", "any", "include", "contains", "invoke", "max", "min", "toArray", "size", "first", "head", "take", "initial", "rest", "tail", "drop", "last", "without", "indexOf", "shuffle", "lastIndexOf", "isEmpty", "chain" ];
    s.each(b, function(e) {
      g.prototype[e] = function() {
        var t = a.call(arguments);
        return t.unshift(this.models), s[e].apply(s, t);
      };
    });
    var w = [ "groupBy", "countBy", "sortBy" ];
    s.each(w, function(e) {
      g.prototype[e] = function(t, n) {
        var i = s.isFunction(t) ? t : function(e) {
          return e.get(t);
        };
        return s[e](this.models, i, n);
      };
    });
    var A = e.View = function(e) {
      this.cid = s.uniqueId("view"), this._configure(e || {}), this._ensureElement(), 
      this.initialize.apply(this, arguments), this.delegateEvents();
    }, _ = /^(\S+)\s*(.*)$/, x = [ "model", "collection", "el", "id", "attributes", "className", "tagName", "events" ];
    s.extend(A.prototype, l, {
      tagName: "div",
      $: function(e) {
        return this.$el.find(e);
      },
      initialize: function() {},
      render: function() {
        return this;
      },
      remove: function() {
        return this.$el.remove(), this.stopListening(), this;
      },
      setElement: function(t, n) {
        return this.$el && this.undelegateEvents(), this.$el = t instanceof e.$ ? t : e.$(t), 
        this.el = this.$el[0], n !== !1 && this.delegateEvents(), this;
      },
      delegateEvents: function(e) {
        if (!e && !(e = s.result(this, "events"))) return this;
        this.undelegateEvents();
        for (var t in e) {
          var n = e[t];
          if (s.isFunction(n) || (n = this[e[t]]), n) {
            var i = t.match(_), r = i[1], a = i[2];
            n = s.bind(n, this), r += ".delegateEvents" + this.cid, "" === a ? this.$el.on(r, n) : this.$el.on(r, a, n);
          }
        }
        return this;
      },
      undelegateEvents: function() {
        return this.$el.off(".delegateEvents" + this.cid), this;
      },
      _configure: function(e) {
        this.options && (e = s.extend({}, s.result(this, "options"), e)), s.extend(this, s.pick(e, x)), 
        this.options = e;
      },
      _ensureElement: function() {
        if (this.el) this.setElement(s.result(this, "el"), !1); else {
          var t = s.extend({}, s.result(this, "attributes"));
          this.id && (t.id = s.result(this, "id")), this.className && (t["class"] = s.result(this, "className"));
          var n = e.$("<" + s.result(this, "tagName") + ">").attr(t);
          this.setElement(n, !1);
        }
      }
    }), e.sync = function(t, n, i) {
      var r = k[t];
      s.defaults(i || (i = {}), {
        emulateHTTP: e.emulateHTTP,
        emulateJSON: e.emulateJSON
      });
      var a = {
        type: r,
        dataType: "json"
      };
      if (i.url || (a.url = s.result(n, "url") || R()), null != i.data || !n || "create" !== t && "update" !== t && "patch" !== t || (a.contentType = "application/json", 
      a.data = JSON.stringify(i.attrs || n.toJSON(i))), i.emulateJSON && (a.contentType = "application/x-www-form-urlencoded", 
      a.data = a.data ? {
        model: a.data
      } : {}), i.emulateHTTP && ("PUT" === r || "DELETE" === r || "PATCH" === r)) {
        a.type = "POST", i.emulateJSON && (a.data._method = r);
        var o = i.beforeSend;
        i.beforeSend = function(e) {
          return e.setRequestHeader("X-HTTP-Method-Override", r), o ? o.apply(this, arguments) : void 0;
        };
      }
      "GET" === a.type || i.emulateJSON || (a.processData = !1), "PATCH" !== a.type || !window.ActiveXObject || window.external && window.external.msActiveXFilteringEnabled || (a.xhr = function() {
        return new ActiveXObject("Microsoft.XMLHTTP");
      });
      var l = i.xhr = e.ajax(s.extend(a, i));
      return n.trigger("request", n, l, i), l;
    };
    var k = {
      create: "POST",
      update: "PUT",
      patch: "PATCH",
      "delete": "DELETE",
      read: "GET"
    };
    e.ajax = function() {
      return e.$.ajax.apply(e.$, arguments);
    };
    var I = e.Router = function(e) {
      e || (e = {}), e.routes && (this.routes = e.routes), this._bindRoutes(), this.initialize.apply(this, arguments);
    }, T = /\((.*?)\)/g, E = /(\(\?)?:\w+/g, C = /\*\w+/g, S = /[\-{}\[\]+?.,\\\^$|#\s]/g;
    s.extend(I.prototype, l, {
      initialize: function() {},
      route: function(t, n, i) {
        s.isRegExp(t) || (t = this._routeToRegExp(t)), s.isFunction(n) && (i = n, n = ""), 
        i || (i = this[n]);
        var r = this;
        return e.history.route(t, function(a) {
          var o = r._extractParameters(t, a);
          i && i.apply(r, o), r.trigger.apply(r, [ "route:" + n ].concat(o)), r.trigger("route", n, o), 
          e.history.trigger("route", r, n, o);
        }), this;
      },
      navigate: function(t, n) {
        return e.history.navigate(t, n), this;
      },
      _bindRoutes: function() {
        if (this.routes) {
          this.routes = s.result(this, "routes");
          for (var e, t = s.keys(this.routes); null != (e = t.pop()); ) this.route(e, this.routes[e]);
        }
      },
      _routeToRegExp: function(e) {
        return e = e.replace(S, "\\{COMPILED_JS}").replace(T, "(?:$1)?").replace(E, function(e, t) {
          return t ? e : "([^/]+)";
        }).replace(C, "(.*?)"), new RegExp("^" + e + "$");
      },
      _extractParameters: function(e, t) {
        var n = e.exec(t).slice(1);
        return s.map(n, function(e) {
          return e ? decodeURIComponent(e) : null;
        });
      }
    });
    var N = e.History = function() {
      this.handlers = [], s.bindAll(this, "checkUrl"), "undefined" != typeof window && (this.location = window.location, 
      this.history = window.history);
    }, L = /^[#\/]|\s+$/g, P = /^\/+|\/+$/g, D = /msie [\w.]+/, O = /\/$/;
    N.started = !1, s.extend(N.prototype, l, {
      interval: 50,
      getHash: function(e) {
        var t = (e || this).location.href.match(/#(.*)$/);
        return t ? t[1] : "";
      },
      getFragment: function(e, t) {
        if (null == e) if (this._hasPushState || !this._wantsHashChange || t) {
          e = this.location.pathname;
          var n = this.root.replace(O, "");
          e.indexOf(n) || (e = e.substr(n.length));
        } else e = this.getHash();
        return e.replace(L, "");
      },
      start: function(t) {
        if (N.started) throw new Error("Backbone.history has already been started");
        N.started = !0, this.options = s.extend({}, {
          root: "/"
        }, this.options, t), this.root = this.options.root, this._wantsHashChange = this.options.hashChange !== !1, 
        this._wantsPushState = !!this.options.pushState, this._hasPushState = !!(this.options.pushState && this.history && this.history.pushState);
        var n = this.getFragment(), i = document.documentMode, r = D.exec(navigator.userAgent.toLowerCase()) && (!i || 7 >= i);
        this.root = ("/" + this.root + "/").replace(P, "/"), r && this._wantsHashChange && (this.iframe = e.$('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow, 
        this.navigate(n)), this._hasPushState ? e.$(window).on("popstate", this.checkUrl) : this._wantsHashChange && "onhashchange" in window && !r ? e.$(window).on("hashchange", this.checkUrl) : this._wantsHashChange && (this._checkUrlInterval = setInterval(this.checkUrl, this.interval)), 
        this.fragment = n;
        var a = this.location, o = a.pathname.replace(/[^\/]$/, "{COMPILED_JS}/") === this.root;
        return this._wantsHashChange && this._wantsPushState && !this._hasPushState && !o ? (this.fragment = this.getFragment(null, !0), 
        this.location.replace(this.root + this.location.search + "#" + this.fragment), !0) : (this._wantsPushState && this._hasPushState && o && a.hash && (this.fragment = this.getHash().replace(L, ""), 
        this.history.replaceState({}, document.title, this.root + this.fragment + a.search)), 
        this.options.silent ? void 0 : this.loadUrl());
      },
      stop: function() {
        e.$(window).off("popstate", this.checkUrl).off("hashchange", this.checkUrl), clearInterval(this._checkUrlInterval), 
        N.started = !1;
      },
      route: function(e, t) {
        this.handlers.unshift({
          route: e,
          callback: t
        });
      },
      checkUrl: function() {
        var e = this.getFragment();
        return e === this.fragment && this.iframe && (e = this.getFragment(this.getHash(this.iframe))), 
        e === this.fragment ? !1 : (this.iframe && this.navigate(e), this.loadUrl() || this.loadUrl(this.getHash()), 
        void 0);
      },
      loadUrl: function(e) {
        var t = this.fragment = this.getFragment(e), n = s.any(this.handlers, function(e) {
          return e.route.test(t) ? (e.callback(t), !0) : void 0;
        });
        return n;
      },
      navigate: function(e, t) {
        if (!N.started) return !1;
        if (t && t !== !0 || (t = {
          trigger: t
        }), e = this.getFragment(e || ""), this.fragment !== e) {
          this.fragment = e;
          var n = this.root + e;
          if (this._hasPushState) this.history[t.replace ? "replaceState" : "pushState"]({}, document.title, n); else {
            if (!this._wantsHashChange) return this.location.assign(n);
            this._updateHash(this.location, e, t.replace), this.iframe && e !== this.getFragment(this.getHash(this.iframe)) && (t.replace || this.iframe.document.open().close(), 
            this._updateHash(this.iframe.location, e, t.replace));
          }
          t.trigger && this.loadUrl(e);
        }
      },
      _updateHash: function(e, t, n) {
        if (n) {
          var i = e.href.replace(/(javascript:|#).*$/, "");
          e.replace(i + "#" + t);
        } else e.hash = "#" + t;
      }
    }), e.history = new N();
    var M = function(e, t) {
      var n, i = this;
      n = e && s.has(e, "constructor") ? e.constructor : function() {
        return i.apply(this, arguments);
      }, s.extend(n, i, t);
      var r = function() {
        this.constructor = n;
      };
      return r.prototype = i.prototype, n.prototype = new r(), e && s.extend(n.prototype, e), 
      n.__super__ = i.prototype, n;
    };
    f.extend = g.extend = I.extend = A.extend = N.extend = M;
    var R = function() {
      throw new Error('A "url" property or function must be specified');
    }, B = function(e, t) {
      var n = t.error;
      t.error = function(i) {
        n && n(e, i, t), e.trigger("error", e, i, t);
      };
    };
  }.call(this), define("backbone", [ "underscore", "zepto" ], function(e) {
    return function() {
      var t;
      return t || e.Backbone;
    };
  }(this)), define("util", [ "exports", "module", "zepto", "underscore" ], function(e, t, n, i) {
    function r(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var a = r(n), o = r(i);
    t.exports = {
      addUrlParameters: function(e, t) {
        var n = e.toString();
        n += -1 !== n.indexOf("?") ? "&" : "?";
        var i = [];
        for (var r in t) if (t.hasOwnProperty(r)) {
          var a = t[r];
          void 0 !== a && i.push(r + "=" + a);
        }
        return n += i.join("&");
      },
      parseUrlParameters: function(e) {
        var t = {}, n = -1 !== e.indexOf("?") ? e.split("?")[1] : null;
        return n && n.length > 1 && o["default"].each(n.split("&"), function(e) {
          var n = e.split("=");
          t[decodeURIComponent(n[0])] = n.length > 1 ? decodeURIComponent(n[1]) : null;
        }), t;
      },
      createIframe: function(e, t, n, i, r) {
        t = t || 0, n = n || 0;
        var a = function(e, t, n) {
          var o = document.createElement("iframe");
          if (o.style.position = "absolute", o.style.top = "-2000px", o.style.left = "0px", 
          o.src = e, t > 0) {
            var s = setTimeout(function() {
              i && i(), console.log("Retrying iframe url: " + e), o.parentNode.removeChild(o), 
              a(e, t - 1, n);
            }, n);
            o.onload = function() {
              clearTimeout(s), r && r();
            };
          }
          document.getElementsByTagName("body")[0].appendChild(o);
        };
        a(e, t, n);
      },
      xhrCall: function(e, t, n, i, r, o, s, l) {
        var u = function(e, i, r, o, s, l) {
          a["default"].ajax({
            url: e,
            type: t,
            data: n,
            timeout: o,
            async: i,
            cache: !1,
            success: function(e) {
              l && l(e);
            },
            error: function() {
              r > 0 ? (s && s(), console.log("Retrying xhr url: " + e), u(e, i, r - 1, o, s, l)) : l && l(null);
            }
          });
        };
        u(e, i, r, o, s, l);
      },
      fetchStoreData: function(e, t) {
        var n = {};
        a["default"].ajax({
          url: "http://itunes.apple.com/lookup?id=" + e + "&callback=?",
          success: function(e) {
            e && e.results && 1 === e.results.length && (e = e.results[0], "artworkUrl512" in e && (n.icon = e.artworkUrl512), 
            "averageUserRating" in e && "userRatingCount" in e && (n.rating = 20 * parseFloat(e.averageUserRating), 
            n.ratingCount = e.userRatingCount));
          },
          complete: function() {
            t(n);
          }
        });
      },
      stringifyObject: function(e) {
        if ("JSON" in window) return JSON.stringify(e);
        var t = typeof e;
        if ("object" !== t || null === e) return "string" === t && (e = '"' + e + '"'), 
        String(e);
        var n, i, r = [], a = e && e.constructor === Array;
        for (n in e) e.hasOwnProperty(n) && (i = e[n], t = typeof i, "string" === t ? i = '"' + i + '"' : "object" === t && null !== i && (i = this.stringifyObject(i)), 
        r.push((a ? "" : '"' + n + '":') + String(i)));
        return (a ? "[" : "{") + String(r) + (a ? "]" : "}");
      }
    };
  }), define("event_tracking", [ "exports", "module", "zepto", "underscore", "util" ], function(e, t, n, i, r) {
    function a(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var o = a(n), s = a(i), l = a(r), u = {
      types: {
        PLAY: "videoAnalyticsEventPlay",
        ERROR: "videoAnalyticsEventError",
        ABORT: "videoAnalyticsEventAbort",
        CACHING: "videoAnalyticsEventCaching"
      },
      labels: {
        BACK: "back",
        EXIT: "exit",
        START: "start",
        COMPLETED: "completed",
        FAILED: "failed"
      }
    }, c = {
      video: {
        START: "start_ok",
        ERROR: "playback_error",
        ABORT: "abort_by_",
        CACHE: "cache_"
      }
    }, d = {
      setupGA: function() {
        window._gaq = [], window._gaq.push([ "_setAccount", "UA-37041190-1" ]), window._gaq.push([ "_setSampleRate", "1" ]);
        var e = document.createElement("script");
        e.type = "text/javascript", e.async = !0, e.src = ("https:" === document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js", 
        o["default"]("head").append(e);
      },
      setupSession: function() {
        this.setCustomVariable("connectionType", window.applifierimpact.properties.get("connectionType")), 
        this.setCustomVariable("gameId", window.applifierimpact.properties.get("gameId"), 2), 
        this.setCustomVariable("devicePixelRatio", "devicePixelRatio" in window ? window.devicePixelRatio.toString() : "undefined", 3), 
        this.setCustomVariable("abGroup", window.applifierimpact.properties.get("ab_group").toString(), 4);
        var e = window.applifierimpact.properties.get("zone");
        e && this.setCustomVariable("zoneId", e, 5);
      },
      parseAndTrackEvents: function(e) {
        var t = this;
        s["default"].each(e, function(e) {
          var n = t._parseEvent(e);
          n && t.trackEvent("video", n.action, n.label, n.value);
        });
      },
      setCustomVariable: function(e, t, n, i) {
        n || (n = 1), i || (i = 2), this._GACall([ "_setCustomVar", n, e, t, i ]);
      },
      trackPageview: function() {
        this._GACall([ "_trackPageview" ]);
      },
      trackEvent: function(e, t, n, i) {
        if ("error" === e) {
          var r = [ "_trackEvent", e, t ];
          n && r.push(n), i && r.push(i), this._GACall(r);
        }
      },
      trackError: function(e, t, n) {
        console.log("trackError:" + e), window._gaq && window._gaq.push([ "_trackEvent", "JS Error", e, t + " (" + n + ")", 0, !0 ]);
      },
      _parseEvent: function(e) {
        var t, n, i, r = 0, a = e.eventType, o = e.data;
        if (console.log("Tracking data: " + l["default"].stringifyObject(e)), !o) return console.error("Cannot parse event data"), 
        void 0;
        switch ("bufferingDuration" in o && (r = parseInt(o.bufferingDuration / 1e3, 10)), 
        t = "play_" + o.videoPlaybackType, a) {
         case u.types.PLAY:
          n = c.video.START, i = r;
          break;

         case u.types.ERROR:
          n = c.video.ERROR;
          break;

         case u.types.ABORT:
          n = c.video.ABORT + o.eventValue, i = r;
          break;

         case u.types.CACHING:
          t = "caching_status", n = c.video.CACHE + o.eventValue;
        }
        return {
          action: t,
          label: n,
          value: i
        };
      },
      _GACall: function(e) {
        window._gaq && (console.log("GoogleAnalytics call:" + e), window._gaq.push(e));
      }
    };
    t.exports = d;
  }), define("models/campaign", [ "exports", "module", "backbone" ], function(e, t, n) {
    function i(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var r = i(n);
    t.exports = r["default"].Model.extend({
      parse: function(e) {
        return e.rating && (e.rating = 20 * parseFloat(e.rating) - 2), e;
      }
    });
  }), define("collections/campaigns", [ "exports", "module", "backbone", "models/campaign" ], function(e, t, n, i) {
    function r(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var a = r(n), o = r(i);
    t.exports = a["default"].Collection.extend({
      model: o["default"]
    });
  }), define("models/item", [ "exports", "module", "backbone" ], function(e, t, n) {
    function i(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var r = i(n);
    t.exports = r["default"].Model.extend({
      validate: function(e) {
        for (var t in e) if (e.hasOwnProperty(t)) {
          var n = e[t];
          if ("string" == typeof n && !n.length) return !console.log('Item attribute "' + t + '" is empty.');
        }
      }
    });
  }), define("collections/items", [ "exports", "module", "backbone", "models/item" ], function(e, t, n, i) {
    function r(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var a = r(n), o = r(i);
    t.exports = a["default"].Collection.extend({
      model: o["default"]
    });
  }), define("models/zone", [ "exports", "module", "backbone", "collections/items" ], function(e, t, n, i) {
    function r(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var a = r(n), o = r(i);
    t.exports = a["default"].Model.extend({
      idAttribute: "id",
      initialize: function(e) {
        this.items = new o["default"](e.rewardItems);
      },
      parse: function(e) {
        this.items.reset(e.rewardItems);
      }
    });
  }), define("collections/zones", [ "exports", "module", "backbone", "models/zone" ], function(e, t, n, i) {
    function r(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var a = r(n), o = r(i);
    t.exports = a["default"].Collection.extend({
      model: o["default"]
    });
  }), define("models/properties", [ "exports", "module", "backbone" ], function(e, t, n) {
    function i(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var r = i(n);
    t.exports = r["default"].Model.extend({
      parse: function(e) {
        if (e.iOSVersion && (e.iOSVersion = parseFloat(e.iOSVersion)), e.deviceType) {
          var t = parseInt(e.deviceType, 10);
          isNaN(t) ? e.deviceType.match(/iphone/i) || e.deviceType.match(/ipod/i) ? e.deviceType = "iphone" : e.deviceType.match(/ipad/i) && (e.deviceType = "ipad") : e.deviceType = "android";
        }
        return e.sdkVersion && (e.sdkVersion = parseInt(e.sdkVersion, 10)), e;
      }
    });
  }), function(e, t) {
    "object" == typeof exports ? module.exports = t() : "function" == typeof define && define.amd && define("i18next", [], t);
  }(this, function() {
    function e(e, t) {
      if (!t || "function" == typeof t) return e;
      for (var n in t) e[n] = t[n];
      return e;
    }
    function t(e, t, n) {
      var i, r = 0, a = e.length, o = void 0 === a || "function" == typeof e;
      if (n) if (o) {
        for (i in e) if (t.apply(e[i], n) === !1) break;
      } else for (;a > r && t.apply(e[r++], n) !== !1; ) ; else if (o) {
        for (i in e) if (t.call(e[i], i, e[i]) === !1) break;
      } else for (;a > r && t.call(e[r], r, e[r++]) !== !1; ) ;
      return e;
    }
    function n(e) {
      return "string" == typeof e ? e.replace(/[&<>"'\/]/g, function(e) {
        return D[e];
      }) : e;
    }
    function i(e) {
      var t = function(e) {
        if (window.XMLHttpRequest) return e(null, new XMLHttpRequest());
        if (window.ActiveXObject) try {
          return e(null, new ActiveXObject("Msxml2.XMLHTTP"));
        } catch (t) {
          return e(null, new ActiveXObject("Microsoft.XMLHTTP"));
        }
        return e(new Error());
      }, n = function(e) {
        if ("string" == typeof e) return e;
        var t = [];
        for (var n in e) e.hasOwnProperty(n) && t.push(encodeURIComponent(n) + "=" + encodeURIComponent(e[n]));
        return t.join("&");
      }, i = function(e) {
        e = e.replace(/\r\n/g, "\n");
        for (var t = "", n = 0; n < e.length; n++) {
          var i = e.charCodeAt(n);
          128 > i ? t += String.fromCharCode(i) : i > 127 && 2048 > i ? (t += String.fromCharCode(192 | i >> 6), 
          t += String.fromCharCode(128 | 63 & i)) : (t += String.fromCharCode(224 | i >> 12), 
          t += String.fromCharCode(128 | 63 & i >> 6), t += String.fromCharCode(128 | 63 & i));
        }
        return t;
      }, r = function(e) {
        var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
        e = i(e);
        var n, r, a, o, s, l, u, c = "", d = 0;
        do n = e.charCodeAt(d++), r = e.charCodeAt(d++), a = e.charCodeAt(d++), o = n >> 2, 
        s = (3 & n) << 4 | r >> 4, l = (15 & r) << 2 | a >> 6, u = 63 & a, isNaN(r) ? l = u = 64 : isNaN(a) && (u = 64), 
        c += t.charAt(o) + t.charAt(s) + t.charAt(l) + t.charAt(u), n = r = a = "", o = s = l = u = ""; while (d < e.length);
        return c;
      }, a = function() {
        for (var e = arguments[0], t = 1; t < arguments.length; t++) {
          var n = arguments[t];
          for (var i in n) n.hasOwnProperty(i) && (e[i] = n[i]);
        }
        return e;
      }, o = function(e, i, r, s) {
        "function" == typeof r && (s = r, r = {}), r.cache = r.cache || !1, r.data = r.data || {}, 
        r.headers = r.headers || {}, r.jsonp = r.jsonp || !1, r.async = void 0 === r.async ? !0 : r.async;
        var l, u = a({
          accept: "*/*",
          "content-type": "application/x-www-form-urlencoded;charset=UTF-8"
        }, o.headers, r.headers);
        if (l = "application/json" === u["content-type"] ? JSON.stringify(r.data) : n(r.data), 
        "GET" === e) {
          var c = [];
          if (l && (c.push(l), l = null), r.cache || c.push("_=" + new Date().getTime()), 
          r.jsonp && (c.push("callback=" + r.jsonp), c.push("jsonp=" + r.jsonp)), c = c.join("&"), 
          c.length > 1 && (i += i.indexOf("?") > -1 ? "&" + c : "?" + c), r.jsonp) {
            var d = document.getElementsByTagName("head")[0], p = document.createElement("script");
            return p.type = "text/javascript", p.src = i, d.appendChild(p), void 0;
          }
        }
        t(function(t, n) {
          if (t) return s(t);
          n.open(e, i, r.async);
          for (var a in u) u.hasOwnProperty(a) && n.setRequestHeader(a, u[a]);
          n.onreadystatechange = function() {
            if (4 === n.readyState) {
              var e = n.responseText || "";
              if (!s) return;
              s(n.status, {
                text: function() {
                  return e;
                },
                json: function() {
                  return JSON.parse(e);
                }
              });
            }
          }, n.send(l);
        });
      }, s = {
        authBasic: function(e, t) {
          o.headers.Authorization = "Basic " + r(e + ":" + t);
        },
        connect: function(e, t, n) {
          return o("CONNECT", e, t, n);
        },
        del: function(e, t, n) {
          return o("DELETE", e, t, n);
        },
        get: function(e, t, n) {
          return o("GET", e, t, n);
        },
        head: function(e, t, n) {
          return o("HEAD", e, t, n);
        },
        headers: function(e) {
          o.headers = e || {};
        },
        isAllowed: function(e, t, n) {
          this.options(e, function(e, i) {
            n(-1 !== i.text().indexOf(t));
          });
        },
        options: function(e, t, n) {
          return o("OPTIONS", e, t, n);
        },
        patch: function(e, t, n) {
          return o("PATCH", e, t, n);
        },
        post: function(e, t, n) {
          return o("POST", e, t, n);
        },
        put: function(e, t, n) {
          return o("PUT", e, t, n);
        },
        trace: function(e, t, n) {
          return o("TRACE", e, t, n);
        }
      }, l = e.type ? e.type.toLowerCase() : "get";
      s[l](e.url, e, function(t, n) {
        200 === t ? e.success(n.json(), t, null) : e.error(n.text(), t, null);
      });
    }
    function r(e, t) {
      "function" == typeof e && (t = e, e = {}), e = e || {}, R.extend(P, e), delete P.fixLng, 
      "string" == typeof P.ns && (P.ns = {
        namespaces: [ P.ns ],
        defaultNs: P.ns
      }), "string" == typeof P.fallbackNS && (P.fallbackNS = [ P.fallbackNS ]), P.interpolationPrefixEscaped = R.regexEscape(P.interpolationPrefix), 
      P.interpolationSuffixEscaped = R.regexEscape(P.interpolationSuffix), P.lng || (P.lng = R.detectLanguage()), 
      P.lng ? P.useCookie && R.cookie.create(P.cookieName, P.lng, P.cookieExpirationTime, P.cookieDomain) : (P.lng = P.fallbackLng, 
      P.useCookie && R.cookie.remove(P.cookieName)), N = R.toLanguages(P.lng), I = N[0], 
      R.log("currentLng set to: " + I);
      var n = b;
      e.fixLng && (n = function(e, t) {
        return t = t || {}, t.lng = t.lng || n.lng, b(e, t);
      }, n.lng = I), U.setCurrentLng(I), T && P.setJqueryExt && f();
      var i;
      if (T && T.Deferred && (i = T.Deferred()), !P.resStore) {
        var r = R.toLanguages(P.lng);
        "string" == typeof P.preload && (P.preload = [ P.preload ]);
        for (var a = 0, o = P.preload.length; o > a; a++) for (var s = R.toLanguages(P.preload[a]), l = 0, u = s.length; u > l; l++) r.indexOf(s[l]) < 0 && r.push(s[l]);
        return E.sync.load(r, P, function(e, r) {
          C = r, L = !0, t && t(n), i && i.resolve(n);
        }), i ? i.promise() : void 0;
      }
      return C = P.resStore, L = !0, t && t(n), i && i.resolve(n), i ? i.promise() : void 0;
    }
    function a(e, t) {
      "string" == typeof e && (e = [ e ]);
      for (var n = 0, i = e.length; i > n; n++) P.preload.indexOf(e[n]) < 0 && P.preload.push(e[n]);
      return r(t);
    }
    function o(e, t, n) {
      "string" != typeof t ? (n = t, t = P.ns.defaultNs) : P.ns.namespaces.indexOf(t) < 0 && P.ns.namespaces.push(t), 
      C[e] = C[e] || {}, C[e][t] = C[e][t] || {}, R.extend(C[e][t], n);
    }
    function s(e, t) {
      "string" != typeof t && (t = P.ns.defaultNs), C[e] = C[e] || {}, C[e][t] = {};
    }
    function l(e) {
      P.ns.defaultNs = e;
    }
    function u(e, t) {
      c([ e ], t);
    }
    function c(e, t) {
      var n = {
        dynamicLoad: P.dynamicLoad,
        resGetPath: P.resGetPath,
        getAsync: P.getAsync,
        customLoad: P.customLoad,
        ns: {
          namespaces: e,
          defaultNs: ""
        }
      }, i = R.toLanguages(P.lng);
      "string" == typeof P.preload && (P.preload = [ P.preload ]);
      for (var r = 0, a = P.preload.length; a > r; r++) for (var o = R.toLanguages(P.preload[r]), s = 0, l = o.length; l > s; s++) i.indexOf(o[s]) < 0 && i.push(o[s]);
      for (var u = [], c = 0, d = i.length; d > c; c++) {
        var p = !1, f = C[i[c]];
        if (f) for (var m = 0, h = e.length; h > m; m++) f[e[m]] || (p = !0); else p = !0;
        p && u.push(i[c]);
      }
      u.length ? E.sync._fetch(u, n, function(n, i) {
        var r = e.length * u.length;
        R.each(e, function(e, n) {
          P.ns.namespaces.indexOf(n) < 0 && P.ns.namespaces.push(n), R.each(u, function(e, a) {
            C[a] = C[a] || {}, C[a][n] = i[a][n], r--, 0 === r && t && (P.useLocalStorage && E.sync._storeLocal(C), 
            t());
          });
        });
      }) : t && t();
    }
    function d(e, t, n) {
      return "function" == typeof t ? (n = t, t = {}) : t || (t = {}), t.lng = e, r(t, n);
    }
    function p() {
      return I;
    }
    function f() {
      function e(e, t, n) {
        if (0 !== t.length) {
          var i = "text";
          if (0 === t.indexOf("[")) {
            var r = t.split("]");
            t = r[1], i = r[0].substr(1, r[0].length - 1);
          }
          t.indexOf(";") === t.length - 1 && (t = t.substr(0, t.length - 2));
          var a;
          "html" === i ? (a = P.defaultValueFromContent ? T.extend({
            defaultValue: e.html()
          }, n) : n, e.html(T.t(t, a))) : "text" === i ? (a = P.defaultValueFromContent ? T.extend({
            defaultValue: e.text()
          }, n) : n, e.text(T.t(t, a))) : "prepend" === i ? (a = P.defaultValueFromContent ? T.extend({
            defaultValue: e.html()
          }, n) : n, e.prepend(T.t(t, a))) : "append" === i ? (a = P.defaultValueFromContent ? T.extend({
            defaultValue: e.html()
          }, n) : n, e.append(T.t(t, a))) : (a = P.defaultValueFromContent ? T.extend({
            defaultValue: e.attr(i)
          }, n) : n, e.attr(i, T.t(t, a)));
        }
      }
      function t(t, n) {
        var i = t.attr(P.selectorAttr);
        if (i || "undefined" == typeof i || i === !1 || (i = t.text() || t.val()), i) {
          var r = t, a = t.data("i18n-target");
          if (a && (r = t.find(a) || t), n || P.useDataAttrOptions !== !0 || (n = t.data("i18n-options")), 
          n = n || {}, i.indexOf(";") >= 0) {
            var o = i.split(";");
            T.each(o, function(t, i) {
              "" !== i && e(r, i, n);
            });
          } else e(r, i, n);
          P.useDataAttrOptions === !0 && t.data("i18n-options", n);
        }
      }
      T.t = T.t || b, T.fn.i18n = function(e) {
        return this.each(function() {
          t(T(this), e);
          var n = T(this).find("[" + P.selectorAttr + "]");
          n.each(function() {
            t(T(this), e);
          });
        });
      };
    }
    function m(e, t, n, i) {
      if (!e) return e;
      if (i = i || t, e.indexOf(i.interpolationPrefix || P.interpolationPrefix) < 0) return e;
      var r = i.interpolationPrefix ? R.regexEscape(i.interpolationPrefix) : P.interpolationPrefixEscaped, a = i.interpolationSuffix ? R.regexEscape(i.interpolationSuffix) : P.interpolationSuffixEscaped, o = "HTML" + a;
      return R.each(t, function(t, s) {
        var l = n ? n + P.keyseparator + t : t;
        "object" == typeof s && null !== s ? e = m(e, s, l, i) : i.escapeInterpolation || P.escapeInterpolation ? (e = e.replace(new RegExp([ r, l, o ].join(""), "g"), s), 
        e = e.replace(new RegExp([ r, l, a ].join(""), "g"), R.escape(s))) : e = e.replace(new RegExp([ r, l, a ].join(""), "g"), s);
      }), e;
    }
    function h(e, t) {
      var n = ",", i = "{", r = "}", a = R.extend({}, t);
      for (delete a.postProcess; -1 != e.indexOf(P.reusePrefix) && (S++, !(S > P.maxRecursion)); ) {
        var o = e.lastIndexOf(P.reusePrefix), s = e.indexOf(P.reuseSuffix, o) + P.reuseSuffix.length, l = e.substring(o, s), u = l.replace(P.reusePrefix, "").replace(P.reuseSuffix, "");
        if (-1 != u.indexOf(n)) {
          var c = u.indexOf(n);
          if (-1 != u.indexOf(i, c) && -1 != u.indexOf(r, c)) {
            var d = u.indexOf(i, c), p = u.indexOf(r, d) + r.length;
            try {
              a = R.extend(a, JSON.parse(u.substring(d, p))), u = u.substring(0, c);
            } catch (f) {}
          }
        }
        var m = _(u, a);
        e = e.replace(l, m);
      }
      return e;
    }
    function g(e) {
      return e.context && ("string" == typeof e.context || "number" == typeof e.context);
    }
    function v(e) {
      return void 0 !== e.count && "string" != typeof e.count && 1 !== e.count;
    }
    function y(e, t) {
      t = t || {};
      var n = w(e, t), i = x(e, t);
      return void 0 !== i || i === n;
    }
    function b(e, t) {
      return t = t || {}, L ? (S = 0, _.apply(null, arguments)) : (R.log("i18next not finished initialization. you might have called t function before loading resources finished."), 
      t.defaultValue || "");
    }
    function w(e, t) {
      return void 0 !== t.defaultValue ? t.defaultValue : e;
    }
    function A() {
      for (var e = [], t = 1; t < arguments.length; t++) e.push(arguments[t]);
      return {
        postProcess: "sprintf",
        sprintf: e
      };
    }
    function _(e, t) {
      if ("string" == typeof t ? "sprintf" === P.shortcutFunction ? t = A.apply(null, arguments) : "defaultValue" === P.shortcutFunction && (t = {
        defaultValue: t
      }) : t = t || {}, void 0 === e || null === e) return "";
      "string" == typeof e && (e = [ e ]);
      var n = e[0];
      if (e.length > 1) for (var i = 0; i < e.length && (n = e[i], !y(n)); i++) ;
      var r, a = w(n, t), o = x(n, t), s = t.lng ? R.toLanguages(t.lng) : N, l = t.ns || P.ns.defaultNs;
      n.indexOf(P.nsseparator) > -1 && (r = n.split(P.nsseparator), l = r[0], n = r[1]), 
      void 0 === o && P.sendMissing && (t.lng ? B.postMissing(s[0], l, n, a, s) : B.postMissing(P.lng, l, n, a, s));
      var u = t.postProcess || P.postProcess;
      void 0 !== o && u && V[u] && (o = V[u](o, n, t));
      var c = a;
      if (a.indexOf(P.nsseparator) > -1 && (r = a.split(P.nsseparator), c = r[1]), c === n && P.parseMissingKey && (a = P.parseMissingKey(a)), 
      void 0 === o && (a = m(a, t), a = h(a, t), u && V[u])) {
        var d = w(n, t);
        o = V[u](d, n, t);
      }
      return void 0 !== o ? o : a;
    }
    function x(e, t) {
      t = t || {};
      var n, i, r = w(e, t), a = N;
      if (!C) return r;
      if (t.lng && (a = R.toLanguages(t.lng), !C[a[0]])) {
        var o = P.getAsync;
        P.getAsync = !1, E.sync.load(a, P, function(e, t) {
          R.extend(C, t), P.getAsync = o;
        });
      }
      var s = t.ns || P.ns.defaultNs;
      if (e.indexOf(P.nsseparator) > -1) {
        var l = e.split(P.nsseparator);
        s = l[0], e = l[1];
      }
      if (g(t)) {
        n = R.extend({}, t), delete n.context, n.defaultValue = P.contextNotFound;
        var u = s + P.nsseparator + e + "_" + t.context;
        if (i = b(u, n), i != P.contextNotFound) return m(i, {
          context: t.context
        });
      }
      if (v(t)) {
        n = R.extend({}, t), delete n.count, n.defaultValue = P.pluralNotFound;
        var c = s + P.nsseparator + e + P.pluralSuffix, d = U.get(a[0], t.count);
        if (d >= 0 ? c = c + "_" + d : 1 === d && (c = s + P.nsseparator + e), i = b(c, n), 
        i != P.pluralNotFound) return m(i, {
          count: t.count,
          interpolationPrefix: t.interpolationPrefix,
          interpolationSuffix: t.interpolationSuffix
        });
      }
      for (var p, f = e.split(P.keyseparator), y = 0, A = a.length; A > y && void 0 === p; y++) {
        for (var k = a[y], I = 0, T = C[k] && C[k][s]; f[I]; ) T = T && T[f[I]], I++;
        if (void 0 !== T) {
          var S = Object.prototype.toString.apply(T);
          if ("string" == typeof T) T = m(T, t), T = h(T, t); else if ("[object Array]" !== S || P.returnObjectTrees || t.returnObjectTrees) {
            if (null === T && P.fallbackOnNull === !0) T = void 0; else if (null !== T) if (P.returnObjectTrees || t.returnObjectTrees) {
              if ("[object Number]" !== S && "[object Function]" !== S && "[object RegExp]" !== S) {
                var L = "[object Array]" === S ? [] : {};
                R.each(T, function(n) {
                  L[n] = _(s + P.nsseparator + e + P.keyseparator + n, t);
                }), T = L;
              }
            } else P.objectTreeKeyHandler && "function" == typeof P.objectTreeKeyHandler ? T = P.objectTreeKeyHandler(e, T, k, s, t) : (T = "key '" + s + ":" + e + " (" + k + ")' " + "returned an object instead of string.", 
            R.log(T));
          } else T = T.join("\n"), T = m(T, t), T = h(T, t);
          "string" == typeof T && "" === T.trim() && P.fallbackOnEmpty === !0 && (T = void 0), 
          p = T;
        }
      }
      if (void 0 === p && !t.isFallbackLookup && (P.fallbackToDefaultNS === !0 || P.fallbackNS && P.fallbackNS.length > 0)) if (t.isFallbackLookup = !0, 
      P.fallbackNS.length) {
        for (var D = 0, O = P.fallbackNS.length; O > D; D++) if (p = x(P.fallbackNS[D] + P.nsseparator + e, t)) {
          var M = p.indexOf(P.nsseparator) > -1 ? p.split(P.nsseparator)[1] : p, B = r.indexOf(P.nsseparator) > -1 ? r.split(P.nsseparator)[1] : r;
          if (M !== B) break;
        }
      } else p = x(e, t);
      return p;
    }
    function k() {
      var e, t = [];
      if ("undefined" != typeof window && (function() {
        for (var e = window.location.search.substring(1), n = e.split("&"), i = 0; i < n.length; i++) {
          var r = n[i].indexOf("=");
          if (r > 0) {
            var a = n[i].substring(0, r), o = n[i].substring(r + 1);
            t[a] = o;
          }
        }
      }(), t[P.detectLngQS] && (e = t[P.detectLngQS])), !e && "undefined" != typeof document && P.useCookie) {
        var n = R.cookie.read(P.cookieName);
        n && (e = n);
      }
      return e || "undefined" == typeof navigator || (e = navigator.language ? navigator.language : navigator.userLanguage), 
      e;
    }
    Array.prototype.indexOf || (Array.prototype.indexOf = function(e) {
      if (null == this) throw new TypeError();
      var t = Object(this), n = t.length >>> 0;
      if (0 === n) return -1;
      var i = 0;
      if (arguments.length > 0 && (i = Number(arguments[1]), i != i ? i = 0 : 0 != i && 1/0 != i && i != -1/0 && (i = (i > 0 || -1) * Math.floor(Math.abs(i)))), 
      i >= n) return -1;
      for (var r = i >= 0 ? i : Math.max(n - Math.abs(i), 0); n > r; r++) if (r in t && t[r] === e) return r;
      return -1;
    }), Array.prototype.lastIndexOf || (Array.prototype.lastIndexOf = function(e) {
      if (null == this) throw new TypeError();
      var t = Object(this), n = t.length >>> 0;
      if (0 === n) return -1;
      var i = n;
      arguments.length > 1 && (i = Number(arguments[1]), i != i ? i = 0 : 0 != i && i != 1 / 0 && i != -(1 / 0) && (i = (i > 0 || -1) * Math.floor(Math.abs(i))));
      for (var r = i >= 0 ? Math.min(i, n - 1) : n - Math.abs(i); r >= 0; r--) if (r in t && t[r] === e) return r;
      return -1;
    });
    var I, T = void 0, E = {}, C = {}, S = 0, N = [], L = !1, P = {
      lng: void 0,
      load: "all",
      preload: [],
      lowerCaseLng: !1,
      returnObjectTrees: !1,
      fallbackLng: "dev",
      fallbackNS: [],
      detectLngQS: "setLng",
      ns: "translation",
      fallbackOnNull: !0,
      fallbackOnEmpty: !1,
      fallbackToDefaultNS: !1,
      nsseparator: ":",
      keyseparator: ".",
      selectorAttr: "data-i18n",
      debug: !1,
      resGetPath: "locales/__lng__/__ns__.json",
      resPostPath: "locales/add/__lng__/__ns__",
      getAsync: !0,
      postAsync: !0,
      resStore: void 0,
      useLocalStorage: !1,
      localStorageExpirationTime: 6048e5,
      dynamicLoad: !1,
      sendMissing: !1,
      sendMissingTo: "fallback",
      sendType: "POST",
      interpolationPrefix: "__",
      interpolationSuffix: "__",
      reusePrefix: "$t(",
      reuseSuffix: ")",
      pluralSuffix: "_plural",
      pluralNotFound: [ "plural_not_found", Math.random() ].join(""),
      contextNotFound: [ "context_not_found", Math.random() ].join(""),
      escapeInterpolation: !1,
      setJqueryExt: !0,
      defaultValueFromContent: !0,
      useDataAttrOptions: !1,
      cookieExpirationTime: void 0,
      useCookie: !0,
      cookieName: "i18next",
      cookieDomain: void 0,
      objectTreeKeyHandler: void 0,
      postProcess: void 0,
      parseMissingKey: void 0,
      shortcutFunction: "sprintf"
    }, D = {
      "&": "&amp;",
      "<": "&lt;",
      ">": "&gt;",
      '"': "&quot;",
      "'": "&#39;",
      "/": "&#x2F;"
    }, O = {
      create: function(e, t, n, i) {
        var r;
        if (n) {
          var a = new Date();
          a.setTime(a.getTime() + 1e3 * 60 * n), r = "; expires=" + a.toGMTString();
        } else r = "";
        i = i ? "domain=" + i + ";" : "", document.cookie = e + "=" + t + r + ";" + i + "path=/";
      },
      read: function(e) {
        for (var t = e + "=", n = document.cookie.split(";"), i = 0; i < n.length; i++) {
          for (var r = n[i]; " " == r.charAt(0); ) r = r.substring(1, r.length);
          if (0 === r.indexOf(t)) return r.substring(t.length, r.length);
        }
        return null;
      },
      remove: function(e) {
        this.create(e, "", -1);
      }
    }, M = {
      create: function() {},
      read: function() {
        return null;
      },
      remove: function() {}
    }, R = {
      extend: T ? T.extend : e,
      each: T ? T.each : t,
      ajax: T ? T.ajax : "undefined" != typeof document ? i : function() {},
      cookie: "undefined" != typeof document ? O : M,
      detectLanguage: k,
      escape: n,
      log: function(e) {
        P.debug && "undefined" != typeof console && console.log(e);
      },
      toLanguages: function(e) {
        var t = [];
        if ("string" == typeof e && e.indexOf("-") > -1) {
          var n = e.split("-");
          e = P.lowerCaseLng ? n[0].toLowerCase() + "-" + n[1].toLowerCase() : n[0].toLowerCase() + "-" + n[1].toUpperCase(), 
          "unspecific" !== P.load && t.push(e), "current" !== P.load && t.push(n[0]);
        } else t.push(e);
        return -1 === t.indexOf(P.fallbackLng) && P.fallbackLng && t.push(P.fallbackLng), 
        t;
      },
      regexEscape: function(e) {
        return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\{COMPILED_JS}");
      }
    };
    R.applyReplacement = m;
    var B = {
      load: function(e, t, n) {
        t.useLocalStorage ? B._loadLocal(e, t, function(i, r) {
          for (var a = [], o = 0, s = e.length; s > o; o++) r[e[o]] || a.push(e[o]);
          a.length > 0 ? B._fetch(a, t, function(e, t) {
            R.extend(r, t), B._storeLocal(t), n(null, r);
          }) : n(null, r);
        }) : B._fetch(e, t, function(e, t) {
          n(null, t);
        });
      },
      _loadLocal: function(e, t, n) {
        var i = {}, r = new Date().getTime();
        if (window.localStorage) {
          var a = e.length;
          R.each(e, function(e, o) {
            var s = window.localStorage.getItem("res_" + o);
            s && (s = JSON.parse(s), s.i18nStamp && s.i18nStamp + t.localStorageExpirationTime > r && (i[o] = s)), 
            a--, 0 === a && n(null, i);
          });
        }
      },
      _storeLocal: function(e) {
        if (window.localStorage) for (var t in e) e[t].i18nStamp = new Date().getTime(), 
        window.localStorage.setItem("res_" + t, JSON.stringify(e[t]));
      },
      _fetch: function(e, t, n) {
        var i = t.ns, r = {};
        if (t.dynamicLoad) {
          var a = function(e, t) {
            n(null, t);
          };
          if ("function" == typeof t.customLoad) t.customLoad(e, i.namespaces, t, a); else {
            var o = m(t.resGetPath, {
              lng: e.join("+"),
              ns: i.namespaces.join("+")
            });
            R.ajax({
              url: o,
              success: function(e) {
                R.log("loaded: " + o), a(null, e);
              },
              error: function(e, t, n) {
                R.log("failed loading: " + o), a("failed loading resource.json error: " + n);
              },
              dataType: "json",
              async: t.getAsync
            });
          }
        } else {
          var s, l = i.namespaces.length * e.length;
          R.each(i.namespaces, function(i, a) {
            R.each(e, function(e, i) {
              var o = function(e, t) {
                e && (s = s || [], s.push(e)), r[i] = r[i] || {}, r[i][a] = t, l--, 0 === l && n(s, r);
              };
              "function" == typeof t.customLoad ? t.customLoad(i, a, t, o) : B._fetchOne(i, a, t, o);
            });
          });
        }
      },
      _fetchOne: function(e, t, n, i) {
        var r = m(n.resGetPath, {
          lng: e,
          ns: t
        });
        R.ajax({
          url: r,
          success: function(e) {
            R.log("loaded: " + r), i(null, e);
          },
          error: function(e, t, n) {
            200 == n.status ? R.log("There is a typo in: " + r) : 404 == n.status ? R.log("Does not exist: " + r) : R.log(n.status + " when loading " + r), 
            i(n, {});
          },
          dataType: "json",
          async: n.getAsync
        });
      },
      postMissing: function(e, t, n, i, r) {
        var a = {};
        a[n] = i;
        var o = [];
        if ("fallback" === P.sendMissingTo && P.fallbackLng !== !1) o.push({
          lng: P.fallbackLng,
          url: m(P.resPostPath, {
            lng: P.fallbackLng,
            ns: t
          })
        }); else if ("current" === P.sendMissingTo || "fallback" === P.sendMissingTo && P.fallbackLng === !1) o.push({
          lng: e,
          url: m(P.resPostPath, {
            lng: e,
            ns: t
          })
        }); else if ("all" === P.sendMissingTo) for (var s = 0, l = r.length; l > s; s++) o.push({
          lng: r[s],
          url: m(P.resPostPath, {
            lng: r[s],
            ns: t
          })
        });
        for (var u = 0, c = o.length; c > u; u++) {
          var d = o[u];
          R.ajax({
            url: d.url,
            type: P.sendType,
            data: a,
            success: function() {
              R.log("posted missing key '" + n + "' to: " + d.url);
              for (var e = n.split("."), r = 0, a = C[d.lng][t]; e[r]; ) a = a[e[r]] = r === e.length - 1 ? i : a[e[r]] || {}, 
              r++;
            },
            error: function() {
              R.log("failed posting missing key '" + n + "' to: " + d.url);
            },
            dataType: "json",
            async: P.postAsync
          });
        }
      }
    }, U = {
      rules: {
        ach: {
          name: "Acholi",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        af: {
          name: "Afrikaans",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ak: {
          name: "Akan",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        am: {
          name: "Amharic",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        an: {
          name: "Aragonese",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ar: {
          name: "Arabic",
          numbers: [ 0, 1, 2, 3, 11, 100 ],
          plurals: function(e) {
            return Number(0 === e ? 0 : 1 == e ? 1 : 2 == e ? 2 : e % 100 >= 3 && 10 >= e % 100 ? 3 : e % 100 >= 11 ? 4 : 5);
          }
        },
        arn: {
          name: "Mapudungun",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        ast: {
          name: "Asturian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ay: {
          name: "Aymará",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        az: {
          name: "Azerbaijani",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        be: {
          name: "Belarusian",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e % 10 && 11 != e % 100 ? 0 : e % 10 >= 2 && 4 >= e % 10 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        bg: {
          name: "Bulgarian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        bn: {
          name: "Bengali",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        bo: {
          name: "Tibetan",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        br: {
          name: "Breton",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        bs: {
          name: "Bosnian",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e % 10 && 11 != e % 100 ? 0 : e % 10 >= 2 && 4 >= e % 10 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        ca: {
          name: "Catalan",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        cgg: {
          name: "Chiga",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        cs: {
          name: "Czech",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : e >= 2 && 4 >= e ? 1 : 2);
          }
        },
        csb: {
          name: "Kashubian",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : e % 10 >= 2 && 4 >= e % 10 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        cy: {
          name: "Welsh",
          numbers: [ 1, 2, 3, 8 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : 2 == e ? 1 : 8 != e && 11 != e ? 2 : 3);
          }
        },
        da: {
          name: "Danish",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        de: {
          name: "German",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        dz: {
          name: "Dzongkha",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        el: {
          name: "Greek",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        en: {
          name: "English",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        eo: {
          name: "Esperanto",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        es: {
          name: "Spanish",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        es_ar: {
          name: "Argentinean Spanish",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        et: {
          name: "Estonian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        eu: {
          name: "Basque",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        fa: {
          name: "Persian",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        fi: {
          name: "Finnish",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        fil: {
          name: "Filipino",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        fo: {
          name: "Faroese",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        fr: {
          name: "French",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        fur: {
          name: "Friulian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        fy: {
          name: "Frisian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ga: {
          name: "Irish",
          numbers: [ 1, 2, 3, 7, 11 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : 2 == e ? 1 : 7 > e ? 2 : 11 > e ? 3 : 4);
          }
        },
        gd: {
          name: "Scottish Gaelic",
          numbers: [ 1, 2, 3, 20 ],
          plurals: function(e) {
            return Number(1 == e || 11 == e ? 0 : 2 == e || 12 == e ? 1 : e > 2 && 20 > e ? 2 : 3);
          }
        },
        gl: {
          name: "Galician",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        gu: {
          name: "Gujarati",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        gun: {
          name: "Gun",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        ha: {
          name: "Hausa",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        he: {
          name: "Hebrew",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        hi: {
          name: "Hindi",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        hr: {
          name: "Croatian",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e % 10 && 11 != e % 100 ? 0 : e % 10 >= 2 && 4 >= e % 10 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        hu: {
          name: "Hungarian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        hy: {
          name: "Armenian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ia: {
          name: "Interlingua",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        id: {
          name: "Indonesian",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        is: {
          name: "Icelandic",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e % 10 || 11 == e % 100);
          }
        },
        it: {
          name: "Italian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ja: {
          name: "Japanese",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        jbo: {
          name: "Lojban",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        jv: {
          name: "Javanese",
          numbers: [ 0, 1 ],
          plurals: function(e) {
            return Number(0 !== e);
          }
        },
        ka: {
          name: "Georgian",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        kk: {
          name: "Kazakh",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        km: {
          name: "Khmer",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        kn: {
          name: "Kannada",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ko: {
          name: "Korean",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        ku: {
          name: "Kurdish",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        kw: {
          name: "Cornish",
          numbers: [ 1, 2, 3, 4 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : 2 == e ? 1 : 3 == e ? 2 : 3);
          }
        },
        ky: {
          name: "Kyrgyz",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        lb: {
          name: "Letzeburgesch",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ln: {
          name: "Lingala",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        lo: {
          name: "Lao",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        lt: {
          name: "Lithuanian",
          numbers: [ 1, 2, 10 ],
          plurals: function(e) {
            return Number(1 == e % 10 && 11 != e % 100 ? 0 : e % 10 >= 2 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        lv: {
          name: "Latvian",
          numbers: [ 0, 1, 2 ],
          plurals: function(e) {
            return Number(1 == e % 10 && 11 != e % 100 ? 0 : 0 !== e ? 1 : 2);
          }
        },
        mai: {
          name: "Maithili",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        mfe: {
          name: "Mauritian Creole",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        mg: {
          name: "Malagasy",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        mi: {
          name: "Maori",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        mk: {
          name: "Macedonian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 == e || 1 == e % 10 ? 0 : 1);
          }
        },
        ml: {
          name: "Malayalam",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        mn: {
          name: "Mongolian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        mnk: {
          name: "Mandinka",
          numbers: [ 0, 1, 2 ],
          plurals: function(e) {
            return Number(1 == e ? 1 : 2);
          }
        },
        mr: {
          name: "Marathi",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ms: {
          name: "Malay",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        mt: {
          name: "Maltese",
          numbers: [ 1, 2, 11, 20 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : 0 === e || e % 100 > 1 && 11 > e % 100 ? 1 : e % 100 > 10 && 20 > e % 100 ? 2 : 3);
          }
        },
        nah: {
          name: "Nahuatl",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        nap: {
          name: "Neapolitan",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        nb: {
          name: "Norwegian Bokmal",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ne: {
          name: "Nepali",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        nl: {
          name: "Dutch",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        nn: {
          name: "Norwegian Nynorsk",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        no: {
          name: "Norwegian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        nso: {
          name: "Northern Sotho",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        oc: {
          name: "Occitan",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        or: {
          name: "Oriya",
          numbers: [ 2, 1 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        pa: {
          name: "Punjabi",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        pap: {
          name: "Papiamento",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        pl: {
          name: "Polish",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : e % 10 >= 2 && 4 >= e % 10 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        pms: {
          name: "Piemontese",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ps: {
          name: "Pashto",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        pt: {
          name: "Portuguese",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        pt_br: {
          name: "Brazilian Portuguese",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        rm: {
          name: "Romansh",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ro: {
          name: "Romanian",
          numbers: [ 1, 2, 20 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : 0 === e || e % 100 > 0 && 20 > e % 100 ? 1 : 2);
          }
        },
        ru: {
          name: "Russian",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e % 10 && 11 != e % 100 ? 0 : e % 10 >= 2 && 4 >= e % 10 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        sah: {
          name: "Yakut",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        sco: {
          name: "Scots",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        se: {
          name: "Northern Sami",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        si: {
          name: "Sinhala",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        sk: {
          name: "Slovak",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e ? 0 : e >= 2 && 4 >= e ? 1 : 2);
          }
        },
        sl: {
          name: "Slovenian",
          numbers: [ 5, 1, 2, 3 ],
          plurals: function(e) {
            return Number(1 == e % 100 ? 1 : 2 == e % 100 ? 2 : 3 == e % 100 || 4 == e % 100 ? 3 : 0);
          }
        },
        so: {
          name: "Somali",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        son: {
          name: "Songhay",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        sq: {
          name: "Albanian",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        sr: {
          name: "Serbian",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e % 10 && 11 != e % 100 ? 0 : e % 10 >= 2 && 4 >= e % 10 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        su: {
          name: "Sundanese",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        sv: {
          name: "Swedish",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        sw: {
          name: "Swahili",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        ta: {
          name: "Tamil",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        te: {
          name: "Telugu",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        tg: {
          name: "Tajik",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        th: {
          name: "Thai",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        ti: {
          name: "Tigrinya",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        tk: {
          name: "Turkmen",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        tr: {
          name: "Turkish",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        tt: {
          name: "Tatar",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        ug: {
          name: "Uyghur",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        uk: {
          name: "Ukrainian",
          numbers: [ 1, 2, 5 ],
          plurals: function(e) {
            return Number(1 == e % 10 && 11 != e % 100 ? 0 : e % 10 >= 2 && 4 >= e % 10 && (10 > e % 100 || e % 100 >= 20) ? 1 : 2);
          }
        },
        ur: {
          name: "Urdu",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        uz: {
          name: "Uzbek",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        vi: {
          name: "Vietnamese",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        wa: {
          name: "Walloon",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(e > 1);
          }
        },
        wo: {
          name: "Wolof",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        },
        yo: {
          name: "Yoruba",
          numbers: [ 1, 2 ],
          plurals: function(e) {
            return Number(1 != e);
          }
        },
        zh: {
          name: "Chinese",
          numbers: [ 1 ],
          plurals: function() {
            return 0;
          }
        }
      },
      addRule: function(e, t) {
        U.rules[e] = t;
      },
      setCurrentLng: function(e) {
        if (!U.currentRule || U.currentRule.lng !== e) {
          var t = e.split("-");
          U.currentRule = {
            lng: e,
            rule: U.rules[t[0]]
          };
        }
      },
      get: function(e, t) {
        function n(t, n) {
          var i;
          if (i = U.currentRule && U.currentRule.lng === e ? U.currentRule.rule : U.rules[t]) {
            var r = i.plurals(n), a = i.numbers[r];
            return 2 === i.numbers.length && 1 === i.numbers[0] && (2 === a ? a = -1 : 1 === a && (a = 1)), 
            a;
          }
          return 1 === n ? "1" : "-1";
        }
        var i = e.split("-");
        return n(i[0], t);
      }
    }, V = {}, j = function(e, t) {
      V[e] = t;
    }, z = function() {
      function e(e) {
        return Object.prototype.toString.call(e).slice(8, -1).toLowerCase();
      }
      function t(e, t) {
        for (var n = []; t > 0; n[--t] = e) ;
        return n.join("");
      }
      var n = function() {
        return n.cache.hasOwnProperty(arguments[0]) || (n.cache[arguments[0]] = n.parse(arguments[0])), 
        n.format.call(null, n.cache[arguments[0]], arguments);
      };
      return n.format = function(n, i) {
        var r, a, o, s, l, u, c, d = 1, p = n.length, f = "", m = [];
        for (a = 0; p > a; a++) if (f = e(n[a]), "string" === f) m.push(n[a]); else if ("array" === f) {
          if (s = n[a], s[2]) for (r = i[d], o = 0; o < s[2].length; o++) {
            if (!r.hasOwnProperty(s[2][o])) throw z('[sprintf] property "%s" does not exist', s[2][o]);
            r = r[s[2][o]];
          } else r = s[1] ? i[s[1]] : i[d++];
          if (/[^s]/.test(s[8]) && "number" != e(r)) throw z("[sprintf] expecting number but found %s", e(r));
          switch (s[8]) {
           case "b":
            r = r.toString(2);
            break;

           case "c":
            r = String.fromCharCode(r);
            break;

           case "d":
            r = parseInt(r, 10);
            break;

           case "e":
            r = s[7] ? r.toExponential(s[7]) : r.toExponential();
            break;

           case "f":
            r = s[7] ? parseFloat(r).toFixed(s[7]) : parseFloat(r);
            break;

           case "o":
            r = r.toString(8);
            break;

           case "s":
            r = (r = String(r)) && s[7] ? r.substring(0, s[7]) : r;
            break;

           case "u":
            r = Math.abs(r);
            break;

           case "x":
            r = r.toString(16);
            break;

           case "X":
            r = r.toString(16).toUpperCase();
          }
          r = /[def]/.test(s[8]) && s[3] && r >= 0 ? "+" + r : r, u = s[4] ? "0" == s[4] ? "0" : s[4].charAt(1) : " ", 
          c = s[6] - String(r).length, l = s[6] ? t(u, c) : "", m.push(s[5] ? r + l : l + r);
        }
        return m.join("");
      }, n.cache = {}, n.parse = function(e) {
        for (var t = e, n = [], i = [], r = 0; t; ) {
          if (null !== (n = /^[^\x25]+/.exec(t))) i.push(n[0]); else if (null !== (n = /^\x25{2}/.exec(t))) i.push("%"); else {
            if (null === (n = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(t))) throw "[sprintf] huh?";
            if (n[2]) {
              r |= 1;
              var a = [], o = n[2], s = [];
              if (null === (s = /^([a-z_][a-z_\d]*)/i.exec(o))) throw "[sprintf] huh?";
              for (a.push(s[1]); "" !== (o = o.substring(s[0].length)); ) if (null !== (s = /^\.([a-z_][a-z_\d]*)/i.exec(o))) a.push(s[1]); else {
                if (null === (s = /^\[(\d+)\]/.exec(o))) throw "[sprintf] huh?";
                a.push(s[1]);
              }
              n[2] = a;
            } else r |= 2;
            if (3 === r) throw "[sprintf] mixing positional and named placeholders is not (yet) supported";
            i.push(n);
          }
          t = t.substring(n[0].length);
        }
        return i;
      }, n;
    }(), H = function(e, t) {
      return t.unshift(e), z.apply(null, t);
    };
    return j("sprintf", function(e, t, n) {
      return n.sprintf ? "[object Array]" === Object.prototype.toString.apply(n.sprintf) ? H(e, n.sprintf) : "object" == typeof n.sprintf ? z(e, n.sprintf) : e : e;
    }), E.init = r, E.setLng = d, E.preload = a, E.addResourceBundle = o, E.removeResourceBundle = s, 
    E.loadNamespace = u, E.loadNamespaces = c, E.setDefaultNamespace = l, E.t = b, E.translate = b, 
    E.exists = y, E.detectLanguage = R.detectLanguage, E.pluralExtensions = U, E.sync = B, 
    E.functions = R, E.lng = p, E.addPostProcessor = j, E.options = P, E;
  }), define("i18n", [ "i18next" ], function(e) {
    var t, n = {}, i = e.functions, r = e.options;
    return t = {
      version: "0.4.0",
      pluginBuilder: "./vendor/require-i18next-builder",
      resourceExists: function(e, t, i) {
        return n[e] && n[e][t] && n[e][t][i];
      },
      addResource: function(e, t, i, r) {
        n[e] = n[e] || {}, n[e][t] = n[e][t] || {}, n[e][t][i] = r;
      },
      getResources: function(e, t) {
        var r = {};
        return i.each(n, function(a) {
          n[a][e] && n[a][e][t] && i.extend(r, n[a][e][t]);
        }), r;
      },
      parseName: function(e) {
        var t = e.split(":");
        return {
          module: t[0],
          namespaces: t[1] ? t[1].split(",") : []
        };
      },
      load: function(n, a, o, s) {
        var l = t.parseName(n), u = i.extend({}, s.i18next), c = l.namespaces, d = l.module, p = u.supportedLngs;
        p && p[d] && (p = p[d]), "string" == typeof r.ns ? (c.unshift(u.ns || r.ns), u.ns = {
          defaultNs: c[0],
          namespaces: c
        }) : (u.ns = r.ns, i.each(c, function(e, t) {
          -1 == u.ns.namespaces.indexOf(t) && u.ns.namespaces.push(t);
        })), u.customLoad = function(e, n, r, a) {
          if (t.resourceExists(d, e, n)) return a(null, t.getResources(e, n)), void 0;
          if (p && (!p[e] || -1 == p[e].indexOf(n))) return i.log("no locale support found for " + e + " with namespace " + n), 
          a(null, {}), void 0;
          var o = i.applyReplacement(r.resGetPath, {
            lng: e,
            ns: n
          });
          i.ajax({
            url: o,
            dataType: "json",
            async: r.async,
            success: function(r) {
              t.addResource(d, e, n, r), i.log("loaded: " + o), a(null, t.getResources(e, n));
            },
            error: function(e, t, n) {
              i.log("failed loading: " + o), a(n, {});
            }
          });
        }, delete u.supportedLngs, e.init(u, function() {
          o(e);
        });
      }
    };
  }), define("i18next-init", [ "i18next" ], function(e) {
    return e.init({
      getAsync: !1,
      ns: "gameads",
      resGetPath: "locale/__lng__/__ns__.json",
      fallbackLng: "en",
      resStore: {
        en: {
          gameads: {
            locale: "en",
            "Watch now!": "Watch now!",
            "No campaigns available, try again later": "No campaigns available, try again later",
            "Watch a game trailer, get": "Watch a game trailer, get",
            Buffering: "Buffering",
            Loading: "Loading",
            "Unknown error": "Unknown error",
            "Video playback error": "Video playback error",
            Ratings: "Ratings",
            "Download For Free": "Download For Free",
            "Downloading won't stop your gaming": "Downloading won't stop your gaming"
          }
        },
        es: {
          gameads: {
            locale: "es",
            "Watch now!": "¡Ver ahora!",
            "No campaigns available, try again later": "No hay campañas disponibles, inténtalo más tarde.",
            "Watch a game trailer, get": "Ve un tráiler de un videojuego y obtén",
            Buffering: "Buffering",
            Loading: "Cargando",
            "Unknown error": "Error desconocido",
            "Video playback error": "Error de reproducción de video",
            Ratings: "Valoraciones",
            "Download For Free": "Descarga Gratis",
            "Downloading won't stop your gaming": "Descargar no interrumpirá tu sesión de juego."
          }
        },
        fi: {
          gameads: {
            locale: "fi",
            "Watch now!": "Katso nyt!",
            "No campaigns available, try again later": "Ei mainoksia, yritä myöhemmin uudelleen",
            "Watch a game trailer, get": "Katso pelin video, niin saat",
            Buffering: "Puskuroidaan",
            Loading: "Ladataan",
            "Unknown error": "Tuntematon virhe",
            "Video playback error": "Virhe videon toistossa",
            Ratings: "Arvostelua",
            "Download For Free": "Lataa ilmaiseksi",
            "Downloading won't stop your gaming": "Lataaminen ei keskeytä peliäsi"
          }
        },
        fr: {
          gameads: {
            locale: "fr",
            "Watch now!": "Regarder maintenant!",
            "No campaigns available, try again later": "Pas de campagnes disponibles, veuillez réessayer plus tard",
            "Watch a game trailer, get": "Regarder la bande-annonce du jeu",
            Buffering: "Mise en mémoire tampon",
            Loading: "Chargement",
            "Unknown error": "Erreur inconnue",
            "Video playback error": "Erreur lors du chargement de la vidéo",
            Ratings: "Evaluations",
            "Download For Free": "Téléchargement gratuit",
            "Downloading won't stop your gaming": "Continuez a jouer pendant le téléchargement"
          }
        },
        it: {
          gameads: {
            locale: "it",
            "Watch now!": "Guarda ora!",
            "No campaigns available, try again later": "Nessuna campagna disponibile, prova più tardi",
            "Watch a game trailer, get": "Guarda il trailer di un gioco, guarda",
            Buffering: "Buffering",
            Loading: "Caricamento",
            "Unknown error": "Errore sconosciuto",
            "Video playback error": "Errore di riproduzione del video",
            Ratings: "Valutazioni",
            "Download For Free": "Scarica gratis",
            "Downloading won't stop your gaming": "Il download non interromperà il gioco"
          }
        },
        ja: {
          gameads: {
            locale: "ja",
            "Watch now!": "今すぐ見る！",
            "No campaigns available, try again later": "広告がありません、また後でお願いします",
            "Watch a game trailer, get": "ビデオを見てゲームをダウンロード",
            Buffering: "バッファリング中",
            Loading: "ローディング中",
            "Unknown error": "未知のエラー",
            "Video playback error": "ビデオ再生エラー",
            Ratings: "レーティング",
            "Download For Free": '無料<wbr><span style="white-space:nowrap">ダウンロード</span>',
            "Downloading won't stop your gaming": 'このダウンロードで<wbr><span style="white-space:nowrap">ゲームは中断されません</span>'
          }
        },
        ko: {
          gameads: {
            locale: "ko",
            "Watch now!": "지금 보기",
            "No campaigns available, try again later": "지금 광고가 없습니다. 다음에 시도하세요",
            "Watch a game trailer, get": "게임 트레일러를 보고 다음 보상을 받으세요.",
            Buffering: "버퍼링",
            Loading: "로딩 중",
            "Unknown error": "알 수 없는 오류",
            "Video playback error": "동영상 재생 오류",
            Ratings: "평가",
            "Download For Free": "무료 다운로드",
            "Downloading won't stop your gaming": "다운로드 중에도 계속 게임할 수 있습니다"
          }
        },
        ru: {
          gameads: {
            locale: "ru",
            "Watch now!": "Посмотреть сеичас!",
            "No campaigns available, try again later": "Нет рекламы, пожалуйста, повторите попытку позже",
            "Watch a game trailer, get": "Посмотрите трайлер игры и получите",
            Buffering: "Буферизация",
            Loading: "загрузка",
            "Unknown error": "Неизвестная ошибка",
            "Video playback error": "Ошибка воспроизведение видео",
            Ratings: "Рейтинги",
            "Download For Free": "Скачать бесплатно",
            "Downloading won't stop your gaming": "загрузка не остановит вашу игру"
          }
        },
        "zh-CN": {
          gameads: {
            locale: "zh-CN",
            "Watch now!": "开始播放",
            "No campaigns available, try again later": "没有可播视频，请稍后再试",
            "Watch a game trailer, get": "观看视频，获得",
            Buffering: "正在缓冲",
            Loading: "加载中",
            "Unknown error": "未知错误",
            "Video playback error": "视频播放出错",
            Ratings: "评分",
            "Download For Free": "免费下载",
            "Downloading won't stop your gaming": "点击下载不会中断当前游戏"
          }
        },
        "zh-TW": {
          gameads: {
            locale: "zh-TW",
            "Watch now!": "馬上觀看！",
            "No campaigns available, try again later": "沒有可用視頻，請稍後再試",
            "Watch a game trailer, get": "看視頻，獲取",
            Buffering: "正在緩衝",
            Loading: "讀取中",
            "Unknown error": "未知錯誤",
            "Video playback error": "視頻播放出錯",
            Ratings: "評分",
            "Download For Free": "免費下載",
            "Downloading won't stop your gaming": "下載不會中斷當前遊戲"
          }
        }
      }
    }), e;
  }), define("i18n!", [ "i18next-init" ], function(e) {
    return e;
  }), window.PXLoaderImage || (function(e) {
    function t(e) {
      e = e || {}, this.settings = e, null == e.statusInterval && (e.statusInterval = 5e3), 
      null == e.loggingDelay && (e.loggingDelay = 2e4), null == e.noProgressTimeout && (e.noProgressTimeout = 1/0);
      var t, i = [], r = [], a = Date.now(), o = {
        QUEUED: 0,
        WAITING: 1,
        LOADED: 2,
        ERROR: 3,
        TIMEOUT: 4
      }, s = function(e) {
        return null == e ? [] : Array.isArray(e) ? e : [ e ];
      };
      this.add = function(e) {
        e.tags = new n(e.tags), null == e.priority && (e.priority = 1/0), i.push({
          resource: e,
          status: o.QUEUED
        });
      }, this.addProgressListener = function(e, t) {
        r.push({
          callback: e,
          tags: new n(t)
        });
      }, this.addCompletionListener = function(e, t) {
        r.push({
          tags: new n(t),
          callback: function(t) {
            t.completedCount === t.totalCount && e(t);
          }
        });
      };
      var l = function(e) {
        e = s(e);
        var t = function(t) {
          for (var n = t.resource, i = 1/0, r = 0; r < n.tags.length; r++) for (var a = 0; a < Math.min(e.length, i) && !(n.tags.all[r] === e[a] && i > a && (i = a, 
          0 === i)) && 0 !== i; a++) ;
          return i;
        };
        return function(e, n) {
          var i = t(e), r = t(n);
          return r > i ? -1 : i > r ? 1 : e.priority < n.priority ? -1 : e.priority > n.priority ? 1 : 0;
        };
      };
      this.start = function(e) {
        t = Date.now();
        var n = l(e);
        i.sort(n);
        for (var r = 0, a = i.length; a > r; r++) {
          var s = i[r];
          s.status = o.WAITING, s.resource.start(this);
        }
        setTimeout(u, 100);
      };
      var u = function() {
        for (var t = !1, n = Date.now() - a, r = n >= e.noProgressTimeout, s = n >= e.loggingDelay, l = 0, c = i.length; c > l; l++) {
          var d = i[l];
          d.status === o.WAITING && (d.resource.checkStatus && d.resource.checkStatus(), d.status === o.WAITING && (r ? d.resource.onTimeout() : t = !0));
        }
        s && t && p(), t && setTimeout(u, e.statusInterval);
      };
      this.isBusy = function() {
        for (var e = 0, t = i.length; t > e; e++) if (i[e].status === o.QUEUED || i[e].status === o.WAITING) return !0;
        return !1;
      };
      var c = function(e, t) {
        var n, s, l, u, c, p = null;
        for (n = 0, s = i.length; s > n; n++) if (i[n].resource === e) {
          p = i[n];
          break;
        }
        if (null != p && p.status === o.WAITING) for (p.status = t, a = Date.now(), l = e.tags.length, 
        n = 0, s = r.length; s > n; n++) u = r[n], c = 0 === u.tags.length ? !0 : e.tags.intersects(u.tags), 
        c && d(p, u);
      };
      this.onLoad = function(e) {
        c(e, o.LOADED);
      }, this.onError = function(e) {
        c(e, o.ERROR);
      }, this.onTimeout = function(e) {
        c(e, o.TIMEOUT);
      };
      var d = function(e, t) {
        var n, r, a, s, l = 0, u = 0;
        for (n = 0, r = i.length; r > n; n++) a = i[n], s = !1, s = 0 === t.tags.length ? !0 : a.resource.tags.intersects(t.tags), 
        s && (u++, (a.status === o.LOADED || a.status === o.ERROR || a.status === o.TIMEOUT) && l++);
        t.callback({
          resource: e.resource,
          loaded: e.status === o.LOADED,
          error: e.status === o.ERROR,
          timeout: e.status === o.TIMEOUT,
          completedCount: l,
          totalCount: u
        });
      }, p = this.log = function(e) {
        if (window.console) {
          var n = Math.round((Date.now() - t) / 1e3);
          window.console.log("PxLoader elapsed: " + n + " sec");
          for (var r = 0, a = i.length; a > r; r++) {
            var s = i[r];
            if (e || s.status === o.WAITING) {
              var l = "PxLoader: #" + r + " " + s.resource.getName();
              switch (s.status) {
               case o.QUEUED:
                l += " (Not Started)";
                break;

               case o.WAITING:
                l += " (Waiting)";
                break;

               case o.LOADED:
                l += " (Loaded)";
                break;

               case o.ERROR:
                l += " (Error)";
                break;

               case o.TIMEOUT:
                l += " (Timeout)";
              }
              s.resource.tags.length > 0 && (l += " Tags: [" + s.resource.tags.all.join(",") + "]"), 
              window.console.log(l);
            }
          }
        }
      };
    }
    function n(e) {
      if (this.all = [], this.first = null, this.length = 0, this.lookup = {}, e) {
        if (Array.isArray(e)) this.all = e.slice(0); else if ("object" == typeof e) for (var t in e) e.hasOwnProperty(t) && this.all.push(t); else this.all.push(e);
        this.length = this.all.length, this.length > 0 && (this.first = this.all[0]);
        for (var n = 0; n < this.length; n++) this.lookup[this.all[n]] = !0;
      }
    }
    n.prototype.intersects = function(e) {
      if (0 === this.length || 0 === e.length) return !1;
      if (1 === this.length && 1 === e.length) return this.first === e.first;
      if (e.length < this.length) return e.intersects(this);
      for (var t in this.lookup) if (e.lookup[t]) return !0;
      return !1;
    }, "function" == typeof define && define.amd && define("PxLoader", [], function() {
      return t;
    }), e.PxLoader = t;
  }(this), Date.now || (Date.now = function() {
    return new Date().getTime();
  }), Array.isArray || (Array.isArray = function(e) {
    return "[object Array]" === Object.prototype.toString.call(e);
  }), PxLoader.prototype.addImage = function(e, t, n) {
    var i = new PxLoaderImage(e, t, n);
    return this.add(i), i.img;
  }, "function" == typeof define && define.amd && define("PxLoaderImage", [], function() {
    return PxLoaderImage;
  }));
  var ThirdpresenceAdTagUtils_v3 = function() {
    function getCookie(e) {
      for (var t = e + "=", n = _config.document.cookie.split(";"), i = 0; i < n.length; i++) {
        for (var r = n[i]; " " == r.charAt(0); ) r = r.substring(1);
        if (0 == r.indexOf(t)) return r.substring(t.length, r.length);
      }
      return "";
    }
    var api = {}, _config = null;
    api.setConfig = function(e) {
      _config = e;
    }, api.loadData = function(e) {
      var t = new XMLHttpRequest();
      return t.open("GET", e, !1), t.send(), t.responseText;
    }, api.setLogger = function(e) {
      switch (e) {
       case "loggly-pixel":
        this.log = function(e, t, n) {
          this.sendImpression("https://logs-01.loggly.com/inputs/9ac6b2e7-69e1-4bec-9653-44ff100e2616.gif?ipAddress=" + e.clientip + "&account=" + e.account + "&adid=" + e.adid + "&event=" + encodeURIComponent(t) + "&data=" + (encodeURIComponent(n) || ""));
        };
        break;

       case "loggly":
        _LTracker = _LTracker || [], _LTracker.push({
          logglyKey: "9ac6b2e7-69e1-4bec-9653-44ff100e2616"
        }), this.log = function(e, t, n) {
          _LTracker && _LTracker.push({
            ipAddress: e.clientIP,
            account: e.account,
            adid: e.adid,
            event: t,
            data: n || ""
          });
        };
      }
    }, api.log = function() {}, api.isMraid = function() {
      return "undefined" != typeof mraid ? 1 : 0;
    }, api.isMraidContainerVisible = function(e) {
      var t = !1;
      if (this.isMraid()) {
        var n = mraid.getState();
        if (api.consoleLog(_config, "isMraidContainerVisible - mraid state: " + n), "hidden" !== n && "loading" !== n) {
          var i = !1, r = mraid.isViewable() || e;
          if (api.consoleLog(_config, "isMraidContainerVisible - mraid viewable: " + r), "boolean" == typeof r ? i = r : "true" === r && (i = !0), 
          i) {
            var a = this.mraidExpandSize();
            api.consoleLog(_config, "isMraidContainerVisible - size w: " + a.width + " h: " + a.height), 
            t = a.width > 0 && a.height > 0 ? !0 : !1;
          }
        }
      }
      return api.consoleLog(_config, "isMraidContainerVisible: " + t), t;
    }, api.setViewPort = function(e) {
      if (this.isMraid()) {
        var t = _config.document.querySelector("meta[name=viewport]"), n = "width=" + e + ", initial-scale=1.0, maximum-scale=1.0", i = "";
        if ("function" == typeof AFMA_AddEventListener && (n = "width=device-width, initial-scale=1.0, maximum-scale=1.0", 
        i += ", user-scalable=no"), t) t.setAttribute("content", n + i); else {
          var r = _config.document.getElementsByTagName("head")[0], a = _config.document.createElement("meta");
          a.name = "viewport", a.setAttribute("content", n + i), r.appendChild(a);
        }
      }
    }, api.getViewPortScale = function() {
      var e = _config.document.getElementsByTagName("viewport")[0], t = 1;
      if (e) {
        var n = e.getAttribute("initial-scale");
        n > 0 && (t = n);
      }
      return t;
    }, api.expandToFullScreen = function() {
      if (this.isMraid() && "loading" !== mraid.getState()) {
        var e = mraid.getExpandProperties();
        e.width = _config.document.body.clientWidth, e.height = _config.document.body.clientHeight, 
        mraid.setExpandProperties(e);
      }
    }, api.getContainerSize = function(e) {
      var t, n = window;
      try {
        t = window.top.orientation, n = window.top;
      } catch (i) {
        t = window.orientation;
      }
      var r = {
        w: n.innerWidth,
        h: n.innerHeight,
        fs: !1
      }, a = 1, o = 90 === t || -90 === t || 270 === t ? !0 : !1, s = _config.document.getElementById("tpr_vpaid_container" + e.tagId), l = _config.document.getElementById("tpr_video" + _config.tagId), u = _config.document.fullscreenElement || _config.document.mozFullScreenElement || _config.document.webkitFullscreenElement || _config.document.msFullscreenElement;
      if (r.fs = u && (u === s || u == l), u) r.w = n.screen.width, r.h = n.screen.height; else if ("banner" === e.adplacement) e.placementwidth > 0 && e.placementheight && (r.w = e.placementwidth, 
      r.h = e.placementheight); else if (n.screen && n.screen.width && n.screen.height) if (this.isAndroid()) {
        var c = this.mraidExpandSize();
        c.width && c.height && c.width > 0 && c.height > 0 ? (r.w = c.width, r.h = c.height) : (a = n.screen.height / n.screen.width, 
        r.w = _config.document.documentElement.clientWidth, r.h = _config.document.documentElement.clientHeight > 0 ? _config.document.documentElement.clientHeight : _config.document.documentElement.clientWidth * a), 
        e.usedevicepixels && (r.w *= n.devicePixelRatio, r.h *= n.devicePixelRatio);
      } else this.isIOS() && (o ? (r.w = n.screen.height, r.h = n.screen.width) : (r.w = n.screen.availWidth, 
      r.h = n.screen.availHeight));
      return api.consoleLog(_config, "width: " + r.w + " height: " + r.h + " pixel ratio: " + a + " device pixel: " + window.devicePixelRatio + " view port: " + this.getViewPortScale()), 
      r;
    }, api.mraidExpandSize = function() {
      var e = {
        width: 0,
        height: 0
      };
      if (this.isMraid() && "loading" !== mraid.getState()) {
        if ("2.0" === mraid.getVersion()) {
          if (mraid.getMaxSize && mraid.getMaxSize()) {
            api.consoleLog(_config, "mraidExpandSize - getMaxSize - width: " + mraid.getMaxSize().width || "N/A");
            var t = mraid.getMaxSize();
            t && t.width && !isNaN(t.width) && t.height && !isNaN(t.height) && (e = t);
          }
          mraid.getScreenSize && mraid.getScreenSize() && api.consoleLog(_config, "mraidExpandSize - getScreenSize - width: " + mraid.getScreenSize().width || "N/A"), 
          mraid.getDefaultPosition && mraid.getDefaultPosition() && api.consoleLog(_config, "mraidExpandSize - getDefaultPosition - width: " + mraid.getDefaultPosition().width || "N/A");
        }
        e && e.width && e.height || (e = mraid.getExpandProperties()), api.consoleLog(_config, "mraidExpandSize - getExpandProperties - width: " + e.width + " height: " + e.height);
      }
      return e;
    }, api.replaceClass = function(e, t, n) {
      e.className.indexOf(t) >= 0 ? e.className = e.className.replace(t, n) : e.className.indexOf(n) < 0 && (e.className = e.className + " " + n);
    }, api.countFrames = function() {
      for (var e = 0, t = window; t !== t.parent; ) e++, t = t.parent;
      return e;
    }, api.isIphone = function() {
      var e = navigator.userAgent;
      return /iPod/i.test(e) || /iPhone/i.test(e) ? !0 : !1;
    }, api.isIpad = function() {
      return /iPad/i.test(navigator.userAgent) ? !0 : !1;
    }, api.isIOS = function() {
      return this.isIphone() || this.isIpad();
    }, api.isIOS7orGreater = function() {
      return /(iPhone|iPod|iPad)/i.test(navigator.userAgent) && /OS [7-9](.*) like Mac OS X/i.test(navigator.userAgent) ? !0 : !1;
    }, api.isSmallScreen = function() {
      return screen && screen.width > 320;
    }, api.isOpera = function() {
      return /^Opera/i.test(navigator.userAgent) ? !0 : !1;
    }, api.isAndroid = function() {
      return /Android/i.test(navigator.userAgent) ? !0 : !1;
    }, api.getAndroidVersion = function() {
      var e = navigator.userAgent.match(/Android\s+([\d\.]+)/);
      return e && e.length > 1 ? parseFloat(e[1]) : version = /Firefox/i.test(navigator.userAgent) ? 4 : 2;
    }, api.getVASTProxyDomain = function() {
      var e;
      return e = "thirdpresence.com" === _config.domain ? "https://vp.thirdpresence.com" : "https://up32yul1c2.execute-api.eu-west-1.amazonaws.com/staging";
    }, api.parseDomain = function(e) {
      var t;
      if (e && e.length > 0) {
        var n = e.match(/^https?\:\/\/([^\/:?#]+)(?:[\/:?#]|$)/i);
        t = n && n[1];
      }
      return t || "";
    }, api.getDeviceInfo = function() {
      var e, t, n = {
        os: "",
        osv: "0",
        make: "",
        model: "",
        mobile: !1
      }, i = navigator.userAgent;
      if (/iPod/i.test(i)) n.os = "iOS", n.osv = (i.match(/\b[0-9]+_[0-9]+(?:_[0-9]+)?\b/) || [ "" ])[0].replace(/_/g, "."), 
      n.make = "Apple", n.model = "iPod", n.mobile = !0; else if (/iPhone/i.test(i)) n.os = "iOS", 
      n.osv = (i.match(/\b[0-9]+_[0-9]+(?:_[0-9]+)?\b/) || [ "" ])[0].replace(/_/g, "."), 
      n.make = "Apple", n.model = "iPhone", n.mobile = !0; else if (/iPad/i.test(i)) n.os = "iOS", 
      n.osv = (i.match(/\b[0-9]+_[0-9]+(?:_[0-9]+)?\b/) || [ "" ])[0].replace(/_/g, "."), 
      n.make = "Apple", n.model = "iPad", n.mobile = !0; else if (/Android/i.test(i)) {
        if (n.os = "Android", n.mobile = !0, e = /\Android.([\d\.]+).*;\s(\w*;\s)?(.*)\sBuild.*\)/i, 
        t = e.exec(i)) {
          n.osv = t[1] || "0";
          var r = t[3] || "";
          /HTC/i.test(r) ? (n.make = "HTC", e = /HTC\s(.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /ASUS/i.test(r) ? (n.make = "ASUS", 
          e = /ASUS\s(.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /ALCATEL/i.test(r) ? (n.make = "ALCATEL", 
          e = /ALCATEL\s(.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /BLU/i.test(r) ? (n.make = "BLU", 
          e = /BLU\s(.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /ME17\d/i.test(r) ? (n.make = "ASUS", 
          n.model = r) : /Nexus/i.test(r) ? (n.make = "Google", n.model = r) : /Lenovo/i.test(r) ? (n.make = "Lenovo", 
          e = /Lenovo\s(.*)/i) : /IdeaTab/i.test(r) ? (n.make = "Lenovo", n.model = r) : /Huawei/i.test(i) ? (n.make = "Huawei", 
          n.model = r) : /SGP\d/i.test(r) ? (n.make = "Sony", n.model = r) : /LT[1-9]\d/i.test(r) ? (n.make = "Sony", 
          n.model = r) : /HP/i.test(r) ? (n.make = "HP", e = /HP\s(.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /A1-/i.test(r) || /B11-/i.test(r) ? (n.make = "Acer", 
          n.model = r) : /GT-/i.test(r) ? (n.make = "Samsung", e = /(GT-.*)/i, t = e.exec(r), 
          n.model = t ? t[1] : "") : /SM-/i.test(r) ? (n.make = "Samsung", e = /(SM-.*)/i, 
          t = e.exec(r), n.model = t ? t[1] : "") : /SPH-/i.test(r) ? (n.make = "Samsung", 
          e = /(SPH-.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /SCH-/i.test(r) ? (n.make = "Samsung", 
          e = /(SCH-.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /SGH-/i.test(r) ? (n.make = "Samsung", 
          e = /(SGH-.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /DROID/i.test(r) ? (n.make = "Motorola", 
          e = /(DROID.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /XT/i.test(r) ? (n.make = "Motorola", 
          e = /(XT.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /LG-/i.test(r) ? (n.make = "LG", 
          e = /(LG-.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /VS/i.test(r) ? (n.make = "LG", 
          e = /(VS.*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /Z[1-9]/i.test(r) ? (n.make = "ZTE", 
          e = /(Z[1-9].*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /NX[1-9]/i.test(r) ? (n.make = "NEXTBOOK", 
          e = /(NX[1-9].*)/i, t = e.exec(r), n.model = t ? t[1] : "") : /C5[1-9]/i.test(r) ? (n.make = "Kyocera", 
          e = /(C5[1-9].*)/i, t = e.exec(r), n.model = t ? t[1] : "") : n.model = r;
        }
      } else /Windows.Phone/i.test(i) || /WPDesktop/i.test(i) ? (n.os = "WindowsPhone", 
      n.osv = (i.match(/Windows.Phone\s([0-9]+\.[0-9])/) || [ "" ])[1] || 8, n.mobile = !0, 
      /NOKIA/i.test(i) && (n.make = "Nokia", e = /NOKIA;\s(.*?)(;|\))/i, t = e.exec(i), 
      n.model = t ? t[1] : "")) : /BlackBerry/i.test(i) || navigator.userAgent.match(/BB10/i) ? (n.os = "BlackBerry", 
      i.indexOf("Version/") >= 0 ? (e = /Version\/(.*?)\s/i, t = e.exec(i), n.osv = t ? t[1] : "") : (e = /BlackBerry.*\/(.*?)\s/i, 
      t = e.exec(i), n.osv = t ? t[1] : ""), n.mobile = !0) : /Windows/i.test(i) ? (n.os = "Windows", 
      e = /Windows\sNT\s(.*?)(;|\)|\s)/i, t = e.exec(i), n.osv = t ? t[1] : "") : /Mac\sOS/i.test(i) && (n.os = "MacOS", 
      e = /Mac\sOS\sX\s(.*?)(;|\)|\s)/i, t = e.exec(i), n.osv = t ? t[1] : "");
      return n;
    }, api.sendImpression = function(e) {
      if (e && 0 == e.indexOf("http")) {
        var t = new Date().getTime();
        e = e.replace(/\[timestamp\]/gi, t), e = e.replace(/\[TIMESTAMP\]/gi, t), e = e.replace(/\[cachebusting\]/gi, t), 
        e = e.replace(/\[CACHEBUSTING\]/gi, t);
        var n = _config.document;
        n.images ? new Image().src = e : n.write('<p><img src="' + e + '" height="1" width="1" alt=""/></p>');
      }
    }, api.getStaticHTML = function() {
      var e = ' <style>div.tpr_css_ad_container{background-color:transparent;overflow:hidden;width:100%;height:100%;margin:auto !important;padding:0 !important;position:relative}div.tpr_css_skip_container{position:absolute;display:none;top:5px;left:0;right:0;margin:0 !important;z-index:1000000000;background-color:rgba(255,0,0,0);pointer-events:none}div.tpr_css_close_button{display:none;color:white;text-align:center;font-family:sans-serif;font-size:small;padding-left:1.5em;padding-right:1.5em;padding-top:.7em;padding-bottom:.7em;min-width:4em;pointer-events:auto;border-style:solid;border-color:white;border-left-width:0;border-top-width:1px;border-bottom-width:1px;border-right-width:1px}div.tpr_css_close_button_right{right:0;position:absolute;border-left-width:1px;border-top-width:1px;border-bottom-width:1px;border-right-width:0}div.tpr_css_skip_message{color:white;margin-left:5px}div.tpr_css_video_screen{background-color:transparent;z-index:1000;margin:0 !important;overflow:hidden;width:0;height:0;position:absolute;top:0;left:0;right:0;bottom:0}div.tpr_css_video_poster{background-repeat:no-repeat;background-size:contain;background-position:center;margin:auto auto !important;width:100%;height:100%;display:none;z-index:5}div.tpr_css_vpaid_container{width:100%;height:100%;position:absolute;top:0;left:0;background-color:transparent;z-index:1000}div.tpr_css_video_overlay{width:100%;height:100%;position:absolute;top:0;left:0;background-color:transparent;z-index:9999999999}div.tpr_css_video_controls{position:absolute;width:100%;height:60px;left:0;right:0;margin:0 !important;pointer-events:none;background-color:rgba(255,0,0,0)}div.tpr_css_mute{cursor:pointer;z-index:10;height:40px;width:40px;margin:10px 10px !important;pointer-events:auto;display:inline-block}div.tpr_css_mute_btn{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3QweChknJN/xWQAABERJREFUeNrt3b1P6zAQAPDzA5q0hI+Zb6gQGZG6woDUjpVYkPg3mN7a8f0dTOxdkRCisHUPtLRFAjEhUQmJlibxWygSJUWpYye2czeGUMH9uIttWptQSgEjufiDKUAABMBAAATAQAAESEN4nge9Xg88z5Pi55lOS+IppXB7e0sdx/m6Zts22LZNEEBwuK4LzWaTnp2d/fiabdtYASJjMBjA/f19YPLxGRBDv5c5+cwVUKvV6Pn5ORQKBSiXy0TW5DcaDamTzwQwTD4AQL1eBwCgsiH81vOVb0HD5A+jXq9DtVqNvKQ6GAy4/EK+7yuTfCaAQqHw4xoPhJmZmcgIvu/D3d2dMslnAiiXy0QkwsfHB3PPVy35zKMgkQiZTIbpL1+FBy7XYahIBN3bDreJ2Ofoh36Ohr4hxDE6UmWoKXQillQlqNx2uM+E40ZQve0IWYqIE0GX5HMFiAvBcRxtks8dQDSCbskXAiAKQcfkCwPgjaBr8oUC8ELQOfnCAaIi6J78WABYEdKQ/MhLEUHx8vLyr9Pp/O12u+B5HpRKJcKybNFoNCANwQ2g3+9DrVajz8/P0Gw2v65fX1/TSqUyMcK4e7EFBYTneXB5eUmvrq6+JX8YlUqFsrSjcfciwEi0Wi16c3Pz6z2IIBAgbL9GBEEAr6+voe9FBAEArutOdD8icAbwfX/i70EEjgCsn7REhAQrABEkqABEkAQgzQiJt6BxkRYEaSoAAOD09JSmDUEqgKDX0R1BSoCnp6fUVIJUz4AhAKU0dGJVR5C2BU2SWJURpKqA0ddJA4KUAGmqBKla0LjQGUH6YajuCNK3IN0RlKkAXRGmZayAMAgQ8m0sv90rw5Y1Uu4VEVclLCws4DMgyutERTg4OCBaAMT5DOCNgAATjIJ0ROACYFkWJA2pKgIXgHw+zxWAFUJFBC4A+/v7+ampKSlamWoIXAAWFxdbR0dHkUdDvJ4lKiFwmwfYtk1OTk5K29vbQAjb6I7nP/dVQSC8VzIppeC6LtPGqIQQMAyD606HQfvaVavVwA9+JLEHHpH1AIf393d4eHjQHoHIfIJGv9+HdrutNYLU+4YahgGbm5vk+PhY22eC9Bu3GoYBa2tr2iIQVQ7x6fV60Ol0tGtHymxdbJombGxsaFcJSu0dbZomrK6uckO4uLhIHEG5zbtnZ2e5VUK32/1xLW4EJXdP59mOgiJOBGW3rzdNE1ZWVpRHUPr8AMuyYH19XWkE5Q9wyGazSiNocYJGNpuF5eVlJRG0OcJkbm6O24w5TgStzpDJ5XLKIWh3iE8ul4OlpaVEEBDgM+bn57nNmMMiFItFBBidMceFUCwWYW9vj2nBjuh+pPnb2xs8Pj4GrqLu7u7C4eFhom9P1P4wT8uyYGtrS1glIECIyGQysLOzIyWC9i1oNBzH+TpRVYbTVFMHgC0IAwEQAAMBEAADARAAAwGSjv9J3qYBFdMH1wAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-size:contain;background-position:50%}div.tpr_css_unmute_btn{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3QweChwOGxqdcAAAAzxJREFUeNrtnb9u4kAQxmePW2xsJ+LaAPkDinCZ1BHl9WmQ/BpU9wr3KHmNSCjP4ASC6FLlFApLJLG9VyWKdKdIMQbvjL+vBGllfT/PzC5iZ5QxhqDq9A0WAAAAQAAAABAAAEAdlGUZrddryrLMiuf5XhfjjTF0e3tr4jh+/ywMQwrDUAHAlpWmKc3nc3N1dfXPd2EYIgK2qdfXV7q/v/+v+agBO8j3NpsvGkCWZTSbzaw2X2wK+iznIwI+ydVlKM9zNuZbBUBrvTGEPM/p7u6OjfnW1QCtNb28vBTO+dzMt7IIN5vNQm8+h4IrchfEMe2I2QVx2WqKjADOaYc9AO5phz0AKeazBBDHsRjz2QGQZj4rABLNZwNAqvksAEg233oA0s23GkAdzN/KTxGPj4+/l8vlr9Vq9eW/fnieRxcXFypJEqqD+aUCeH5+pul0ah4eHmg+nxda4/z8nIiIkiT5QzVRKQCyLKPr62tzc3Oz0Tp1vKtQSg1YLBYbm/8RgDHmBwB8QbPZrJSHQQQU1NPTUykPk+d57UCUAiBNU0RAlQDe3lwAqAhAWcZ9KMIAUEUElLUOIgApCCkIKQgRwC8CcA5ADQAAALCgBiAFIQJwEAOACgEgBSF1oAYAAFIQIgAAsAviAaBsIQUhAlADAKAC47ALKqggCBABVQIYDAalAkAEfFGj0WjQaDQQAVUBaLfbi/F4vPEuBgA2UBiGajKZ/Dw9PSWlinWCrOM2VJX91hljKE3TQo1RlVLkOM7OOh2enZ3R5eWlrL6hSinSWpPWuvAaWms6OjpSURThkl5VarVadHJyoqIoAoCq5DiOeAjWX9R2HIcODw/FQmDRqsDzPDo+PhYJgU2zDtd1RUJg1a7GdV3q9XqiILBr2OT7vqhIYNmyTFI6Yts10XVd6na77CGwbtwaBMHbiRkAqjwxc4YgYoBDq9WiTqfDEoKYCRp7e3ssT8yiRph4nscOgrgZMp7n0cHBARsIIof47O/vszkxi52i5Ps+Cwii54j5vm/9YU38MM8gCKjf71sLoRbTVJvNJg2HQyshqLr9FyeO4/eJqjZMU1W4YIcUBAAQAAAABAAAAAEAAEC71V+Q/Pry9e/mAAAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-size:contain;background-position:50%}div.tpr_css_playpause{border:1px solid #fff;z-index:10;margin:20px 20px !important;border:none !important;height:20px;width:20px;cursor:pointer;pointer-events:auto;display:inline-block}div.tpr_css_big_play{display:none;margin:auto auto auto auto !important;z-index:5;border:none !important;top:0;bottom:0;left:0;right:0;cursor:pointer;width:100px;height:100px;position:absolute;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHIAAAByCAYAAACP3YV9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTAvMDcvMTBWu+4GAAAgAElEQVR4nO19ebwWZdn/95pnOfvCJngUUEBRwKXXXDBT0wyNtCwlTQzSfF0wrbRfZPoiZoUvbplLvpmgpeaSGYRJgpmalrZpgAkoCqhscs7hHM7yPDP39/fHbPfMme05nKw+n67PZ87M3Ot1X9/7Wu57zjMjJPEf+vcn45/NwH9oYCgPAONX9VRQhQDkH8NNZZQHMBrAWAAjAewBYDiAQc5RByAHoNYp3wXAArATQKtzbAbwNoANAF4H8BYA830bQRT1Q7yvTai2gayM3kcQg4OqBvABAIcB+C8AE2CDKc654Bw52JbGcPJEa809FGzAygBKsAGmk7YawF8AvAzgj7ABf/+on+LtB5DvIwnGAPgogCMAHACg6BzVzuECV4ZS7TTNrTTLnSiXdqierg4Aonp6ugDAqK6usc+1DSgUGyVfqJd8fhAMY7jTjgvsUNgTxQV4FYDnAPwawBvv19ArpX9FIIcAOAXAVNhmswCgBraJrALZw3JpnbV969reNSvXtT+y4PXOZb/o2JUO6084taHpMzPGVI2bMCY3ZLd9pFAcDZEa2GA2AzgIwPmwze8SAIsAvLcrffaLEsyukPR8JEGIWzKikhvfCghQAPGLRfVBAiKhBjRD5zTh3h8EwXQAx4KshqAWkHqAeZbLb5qb3/lr+yM/emn7D6/fVNno+0eDz/vaiMbTzzm0sNseB0uhsBcAE0QnbB/bS8FvhfgxBC/7gvFXAPaVOEmuIHwJ0xGOMCQWSbCutPuw2yBIu63XJlY7QK7s9jsWpzuKx4DLi9uaiACkw4DTrZ3kXNo5bhNRJKDNNOVoAucKcCDBKgCNAqmjVV5fWrfmmc1zL36+5y8vdKfIfVfWUKleqfoDk2uGz7n1yOJe+xwl+fxoAN0QdIDoge1LfwTgGU0NHKZogyZ2Ny7OnmhBUETDn75WeKyFJoELvFeOeG1ijQ3kvit7nGp0mws25DHoguf2K6AEdVG0Fujc6e06cwli+71ZhBwoYA2BRgFobd/2u+3/d93S1p/ctjVGrlGgDTSQseAOmj5r2KALZp+Uax7yIadYqwDdBFcIcBsgv/fNDT0F0e1ZX7ZdqejXeozm5/dFgljtAbmi25k5AbUK2U0tT2NMRIOJvkZrPGh8CwCOhOCrII6DoBpAExR7yxtef+Lt8z+5rLxxXTlCfoy5/keRxFx7VNhz78Iedy46oTByzIkiUkVIKwQ9AH8D4EZANtglHesmQbMqInA3Y1zZ2+bSSRH2gcBuzr4T2Epkm1YNSK+czrk+KZzG/Xt9qDrIUXUBCAogzgVwLgV1QjQDVOUNb/xy/Rkf/rXa0aZCrWYFbyCATTKviaAajc3GqAeemVIYNfYTttNDG4guAHfBNrnlQHXXNmrwBGUe8kehsgFOnKTVkyKAdJt1/KpXwXbCvsoL/IYoflk3wPHOdpGJAOYC2FfsKLDW2r7tNxtnfPTh0purSyHZMHQOUxaAk8CNAy1VC7X0PvnFvfYt7nnvstOM5qEfEUE3gDbYa9I5AFZGcUg/vPCY9uSqa3CYAQ15AljjArnP37ocVQVAp7oAffZhHc+tO2l6wY/fuXstFAOCGQBmgWggOAimuWHrdZff0f7gD7cFhxV5HU5LKtcfzQwDEgVmmg8N5DdN++KQYbNv+JLkCyMBbAXQQcEPAC4QiPLgoRcKeXDRCTa9weim18HEt7W+qVtzQBjICOcrWlNe2OKtK+IdsUCaAF5H4EhAGgWs7n3t5Z+uP/3Ip0NCidPAJPD6Y3YrNZ9ZQI0Fe9Qjvz+2uO+BZwAsAWgXyO8IzBagzY8iIr1gH3iD5fTO7bTVB9Q4m+YMBSiO06Vjzv1r2gX0GUF4DtouSwCyH8kHCBxNYAQss3Pz3IuvCIHI0BGX7h4qdA5fu/f6UUleUj9ZefVo/WlHPL1l7qwrYFltAIYSPBrE/ST3o1fa10pf9o48HXkHGqUmcBcbd0qQxD6vdGlq7nPUJ3DVzlHk5B0G4CYCQwQYojrafrfu+HH3sLc7rE1JGhhXNk4TKzGzWcypfh11zqyhUlUjey9fO8NobD6axDbY5vYrArwYZqyPbN1YI2IQ7qYAAKw5sFZ/jKVsn+cqHen5SG8iwF8T+pqo98uPAbidQAuAIT0v/2HBG0ftsTAFxDjNiNMQFXMdqRmRMojW1KjrNJ6iNDQwPvZ2842j9ljY8/KLPwLQJMAIgLcD+FhAwVzT5zZKgMoNLTULSbdxFdBIx7QSoO4j4W8VOa2KU44UrzF73eN2wjMIzCMxBGRVx88WzNv4+eOejxFg+D7NtMUJNaqdrEcWfrLyFdeORxvP/sjvdjxy93Uka0AZSuJ/QXyWgWrO2pL6vYuv1pzn8/xkIYlxf93ZR3/d6NMOVN1FrT0DbFDd2JkAMBPAVwgMEpLbrv/6te333b7Vayp41gdbyTVC11Fp4es4ympOw2mVXEe21zz94t2GXP7dKx3BtQJyM8iF7orAG4LeCu0m3A2AkOyx9qA6WyM9VQ4YEDrRKOF6R5Ke+aWbR5wM4lIAg4W0tnzz3DkZQUwyV3EmM87MhjUtTROT0pPMaZI2Rmlin/G3/eTWLVu+ed4ckBaBwSC/AuBk0DWTdlEdDyclSvaee/NNq9Odbza13hU9bXcbcCbNMQSuITAIJDddftbVHY8/1BYziDTwwsJCqEwl4A1UOf0M9OUxDdRIMDuW/LR109fOniMkCTSTuJrkMZ6QfPnawY6LS8BJBiNaJ9gRrRuGtNNHH/oZOIDkPICDAOS3zLlgzs7li9ojQAvfp830MIBRwk4DNk6waVoa11cUoHGgxoEZ0Nadyx7r2DLngqsFzAEYBMh1IA/0Be8AB3phjYeV16KvkoaXSj9w8aMnRzd1TbQz9gRxG4khAGra775hXsei+1qhdQGfkgaZpqVZtSdre2mTKU17s7YXBWYf2XQsuq+17e4b5wGsAziMwK0A9vTMJwE4zxxtvygeuHoU6wHph7R69wQUQEUvzalYTeAGgsNEMKjrN7/8/nvfn7MxI4hpJihNA9N8V7ieFToPRJtJfCeNMxLM974/Z2PX07+8BUADiGEkbgBQ7ZYgCCr3TA+HQGuAv7MTtKehwkFt/DqICQB2M99dv3jTV89cEWyyD8NJsz9JI5K0IK78QBxZrEPaGNI0MyCvTV89c2X5nTcXCzCUwASQs/24xdUiaEGtDqhdztFI6vnavRsfuWtMngDi0wAHo9Tz6vqpExeFmEqapWlamDaz03xiWOsqvY/zmUmWpNLxRMkJALDhEwcsZqnn70IOJuVUAifYSIlX0X1I4W752PfiA+mCqDftPfnwWRhG4koI6wCU3z772FsQpP6CWMlMz+Izk7Qirfyu8NJfMD16++xjvw+gDGEDiKtIDHO1y9tpo6ZovlqGTasOoH5PkJgNYiiBps4l999aWrvSfY7Y30GkmaGsguwPYFnKJ/ERV7+/kxkAUFq7stS55IHbAGmE/d+EV9Ap5UKkX+uBqR+1wlVfAZW2RqGA5PEAjhfIEHS0vbB1zgVroxgJURzzcb4oK6hxdQfSL1YKXjgtafxxcgIAbJ1z/hruaH1OgEEkjiVxvBvoiLsUVHYVfVM1sLPjrRmdREcbiyAuA1hPsHfj5476scZAFENxGoqEgYdBzmLi4nxcku/LUi/rBAH6jkGvGzX+JGC9+41nTv4JyRLAeiEvB1H0ClBrSGvF1khtiWGXogMkAGAmyD0h0tzz0tP3mO+u1/85KqspiSoTNfg0rRgI7atUS5PSk8ZTqWw8sja/bfb+6Zkfi8hgAi0EZnoAOrhQwY9roGuko4ueQwUh9tbbDIg0omy+tWnWKX8OMVcJo0lCSDJXWQBMWi/uavmsPMaNsRIZedC8e+HJf6JpvgWiEcRMAoOo+iqznaYHO4Cvie4lOYNEEyANOx64dQHSqT+aGBZOf7QwaVL0p1yadqZNuixySKUd992yAAYaQTaAmOltgPsAeTt2/oNlRegBqxDNBD4LQQNK3Stbv/8/Ubs3WU1JnBD1vCxCiwMlTuOypGcBP423tLFlBTYAcuutV29AqWelQBpBTiPR7G0CEPC28RDYEHCeRfsx7udA1gNS3373/Pu1jsKUxVzEDSxJGFmFOZBH2iRKmoT90co47fTS2n80/34K6wjUg/wc4D/ch3L+FwSeaXWfRNNtuorg6YA0wOxd27Yg8MOZyNmTcJ82oDitiBNiHAhZ/WOW8lknUxT/aWNPk10A2LYF12+CWV4r9l7s6SCq3NVFhEYqhPzjFBCDADR1P/P4Y4inrAPQy6RpYRSYBMB8Pn8gsoGUxEOl9RN5iimXVRZJWulR99OLH3M0cgiBKXRqaj/+8oMdBXpggvg0BLUAt2+9YuaroU7jrisBNGo2h4XkCg7u9UMPPXTV2WeffTOAYRHCjQMqq1+MawOIBjGK9yxHmszC19h65Tl/B9R2wKiF4qfdNb9yNQ/a8sP7WQe5F8GDCDSqTet/g3iKMg/hcxYA42Z1n7QJEybgzjvvHPXggw/e+ZGPfOTLAKq0Mknms1IzGqd9SRqZBdAoOUXJsg+pTRueobCewEFC7OVhpgPpKaOdcSKIvBCFbVefvzyioygA07QxLT1pdge0Q0R4yimn4Oc///mx11133f1jx46dElGuP0caoElWpL/jjpNlHzm/N/eCp4QsACiQ6kT73z/8nbjA61ls58kTBKiFKr/R+8rvk35gmjTL0gaSdTYHNEDE9wpVVVW45JJL8k8++eSsL33pS/cWi8Vx2HUwk/xjpdoXB1yavCKp5+UXuqCsNwWoA93/iRXQMf62aVXe0+eRAMZQUG+uX/N8TJtZtTMLmFGCQyhPIWKgIkIRYUtLC+bPnz946dKlt5x22mnzADQl9JekdVnBREKZSrUyTZ4BsjaufY5ALYG9SY4CiNDTD6+Zo0DmBCi23jrnRS+17wwCopmMYywpLwxUkpkFYIMYHuTkyZNx3333HXTXXXc9cMQRR3zBGVsSUC4PceY1Dih9skXxX+n4s8gWALD9lqteBFAEWCDxIYZ3dtw1JMEPAVIFqE09v1+2MyysmI7C6XFmI01DojSmj7ZGgWgYBg3DoIjg85//vLF48eIzrrzyykdHjBgxGemaB0T3m5WnLOOLkkcWeQao5/fLdgq5GZQagEfBeeQIBJ9HGiAOAlDHjva+P8zsy0TcWS+XZkKyHn18JOADGGayubmZc+bMqV62bNk1X/ziFxfA/i1KGKQkTUyLTrOAlkUecedYQNnZthKCKhIHEsy5JXWNHAeiXoRVpTWvrIpotBIm4gaRNvi0gMejMICuz9TBHj9+PO64445Rjz322L0nnXTSlbCXK2namQXMtGg1anxR8klTBoTKo7z65ZUAi1BsADGWwS06AsQkkgZp5Nt/+J1XEU9xsyXOZMTN1kpmdqDtKBAT+MXUqVPlkUceOe6mm25aNGnSpE/FtO0tcRAN3oDwHsqLosSxtN313VdBKRDIkTjATdfXkfsKUBSoHaUVL8UtO6JmTNR1lkFUIiBPA3QQwxqok66hIsKqqipefPHFhccff/zSL3/5y49WVVXtj/hI1eUpi2mNG1MWeWS5DlBpxUvdItxhAEWS4910z7QCHE9IFS3z3Zg24tQ+zHBc3aT8qH76CCAMYlTlNHBbWlo4f/78QU899dTtZ5xxxi2wX06hg5ZlKZFlDFnkod+H247th2b5XQJFEPsE15EgQIwmWEB3x4aYjuM6iLvfFdOUptV9KAnAqLKHH34477333gMXLlz4s8mTJ18I+718A81vlomQdB89nq7ODYTkAY4O/ztkDYhBQhSs1m2btEaSBJNVG9PqVyyAMGBZzGtUvmEYPOuss4wlS5ZMu+aaaxa1tLR8uAJe+qOpOiWZ2cSyVtu2TULmSQwiaL/10inXouzFZd7csHZzSoNZmIsCOU3DsszuTCBGgRcHqIiwoaEB3/jGN6qXL19+9XnnnXcPgD0RD1p/xhCVn0SJ+Q5GOSdI3RPwtugwBABIGKVX/7ItoY2ojuI6zaLRlQxsQMxrUplx48bh9ttv33Px4sULp06d+j+wXy+aha+sY43Li7qOpdKrf9lG+z21oP3c2Nuia4aigDR6V/5xR5bGEpjJUrZSgCPrZPWJaRRuZ8qUKXjooYc+fPPNN/9s4sSJpwHBf3vKwHtW6hf/vX/7QztAg6TADta8dWQzHWZLr7zQlbHTtPuo+mnmKI1iy1QKalJ5EWGhUMBFF12Ue+KJJ/77sssu+2l9ff2kCF7SxpRE/ZZnacWL3c5jRwNkE+AvP2oBGAQsmFEvZ8xMcYOqpHwmygKcu4UXtY2Xtb1hw4bh29/+dtPSpUvnn3HGGTfC/k1GmCod465ZErMMAS0AhiLqAD9qFZACOzONsjJRqZmJqpvJB8VtpCfdx9WLa+eQQw7BwoULx99zzz0LjzzyyPNhv6I7K1Uii0zlSLEEFLHNq7aOhBhQtgMdANqVGTcgfu8fRdOmTZNf/epXU9etW/c/xxxzTFowFKaBGxtJUsQNevSf1REiA/VBl6QX+P0j674vVCwW0djYWH/ooYc2VFh1wMZGUpx/X7UA9ysDJBWgRKksMyb4KsPkcv1lXBCsn9gWSQmbSaWU6OZUKdWnvhP1JZJej6SUy+WtS5YsuenMM89cCf/7ImlUiSyylsuBVHT+aSdvM4gu2nuMOeQL2IWAJwrkJOD7PUOjwAtTFHhJ7aXkd61ater/DjnkkOXwPw7jUtZXiGYpn075AkjklPK+LOQCyTZAFBSkeMARtaW/PBu1BAkDknYfVT9uUO6RpumxZbIAGy6fMa+8efPmR0ePHr0QQQ0MW40wn2lgJb2lMureo8LEw2pAQEhFkXbAC3bQZr9jh6o48dCmFAayMJVWNm0GZzKtWUxjFoppR3V0dPz26KOP/tTo0aMXRPAURZW6k37xXzXpsCaASgGAog+kENuhABKqMP7gqHVSEgNxzPQHsLSyieQEAGkmMrVMqVRaMW/evDOHDBnynRdffDHJz2QdQ1J+VhPtUWHfg4dSwXJ+ir4d8E3r2865bLSMGQ5gRUwblZhPRqRlNUdhAdHNC5vQKJPqAhUuF8Wwnm6a5tvPPvvstR/72MfWIviRtLgjbgxx5SqZuLFk7DFmOEnLfoIlbwMukEA3gFYSQ3NNQ3YPNZYUqITBqmSdpAMUBVokkEA2MN30JAbcfKXUjnXr1t243377Pev0owczSaY+nFYJRYGcqazRNGSESVgEWgF2Ad7yAwDxFgzuxaq6kTENMeI66T4LQJUIK3GSRGlhWlkApe3bt98zfPjw+xEEMI6HSo6kcemUdB8NbnX9nrBYhuJbbpL/n+bgalropeRHxIw/qoMosxFXN4tJCbcdOMJruqjKST5Qy1NdXV2PH3TQQSdFgJhkUnX+0saQRR76fbjt2H6U5HdXZC+INe6s9Rez5GuKVlkpNBb2/2Dc1lNcR3F+IGowWWZu+PBMXRjMNND0AwBLpdKfrr322k82NTXNX7VqFdH3o6E6T1n9ZCXjzSrDSCrs/8EaZaGRiiWCq1075f/0nFhBJRYUzbqZs/ePayihk4ECLVVA4YV+lmWIaZpvLF++/At1dXWXz507tzOibX2NGAXggPAeyouixLHUz/h/+5PKBGGBeMX9v1b/Q6DE6xB2kuzN7TVhIoA/a426/i3sJ6POElE2bZBuXff3GnpZNy2wFRbegtPB1P2kUuq9V199df7BBx/s/pYlakEf7k8izpEWIqadJA0MyyHqHE7z0o0xkyaYCr0kdwJ43ZWyF+wQtKDwijLVcKOmMU4jo4ANn8OdR0W2lQwWcMB0zaOb6Gpm+BGVY0q733nnnR/uvffej2ltRPURBUgWf5lFG5PGlARmrFayqnGCKrEbxMsELdFNK5w3JxPyHIluZWFE8YPH1cU1FtF5mOEoxpKOsMCi/JbrBvoMUimlB0LWtm3bHh05cuSn9t5770VaW1FHmEc9PStPlYAbllGaPANU/OBxdZaF4SR7SD4HJQi85tN/Iwt/R0VFxXLdOVcdFtFxkupHMZolLxzyGzF5Xt8xPpGdnZ0vnH766Z9paWm5c8uWLW5baQCG0+NADEyoBP4rHX8W2QIA6s696jCQJhUtEM/rvz3XvjJAQGE9wXW0sFN2HzM5QlhxzITz4gaQRRMRygsLymHZj1h7e3tXX3/99TMHDx58zS9+8YuehP7C2pUEdJhHfQJUoplJckmTZ4BkxJjJVNgp5DqCb4H0frHsPsZypQMAv1bK2sdSubH5CYfVmKtejPsdiNthUtCj78ikga8HOi7pgU4fH1kulzc/8cQTN0ybNm2Fk27o+aHrNGuSZC2SAp4sR3jcaTLpQ/kJh9VYKjdGWea7pPza/r8OXxzaOtI7P0EFUymUGy6/5bgYJuK0MItwotLTzJoBwBg6dKgiKZZl7XzppZduamxsPG/atGmvIl3DshxJ2hoHYFr0mjU9LMs+cm68/JbjlKJJBRPgUu+lu3rUqsXwgOBNUF6mZdWzeY9jACxBNOka6d5HaaVe1r2O0j493T276QqAUSwWd77xxhtPTJo06T701XZ/KgYpsE8b4idJ2DpYOn9J2pimpVF9I5QfSaq55RiWVQeJlwGuC3/h0/eR7puvFEDgUWWhS5kc3PD1O9yfbiWZiSyzMG3gUes3fYFutLS0nDtp0qQHQnViNdg5chFpUeXj2kCoTBSY/TWzaTIFADR87bbxysJgZaougo+C+i9tNdMa/BgIAaqlpNpuKXbmDj3x04inSgF0+4wbfBjEQLnOzk59Sy1rsBLVR3+Dnay8Z5VF+D6S8kdM/YxlcSeJ7SCWAvA0ru/bIQNfFZBeAg/TtDosZexT+9lL9Y30yFmTcJ82gCQNyerD4jQv6UgqH9VXkvZmndBpskIoHbXTLtndtGQcLXaCfBhkr+0fBXbAo2mkWzPwBTTiARI7LQsdxdMuOSuqkwxMx83aqFmcpDlRQqwEtKxH1smUxn9U2TRZhWUKAKg6/dIzlckOZakOQn4Kx2oStlJC/6GrB57S7C7RSuJBmtYOU+Un1s785qgQM1GMxTGbZO7SgIoDLQ70JG3L6i+zTqKsY8sip7BsUTvzipFllZ+gLLUDwIMgt7vBauCF5tBMq/95HtfEEgAXUqHDMrmjMPW8GUin/mhlHGiVaF6cEPtbrhJNzTK+ONkkUuHj582wTNVJhQ6Q93jfYAF8qPp8wMXVRWVnOkmtIBcq02q3TIxq+NaD/xViKorBuEGEBZIk1EqFnQudB7J8Vh7jxliJjDyAG7710w+YljGaFjsILHQCHTj/BgnA+bqgU97QcdS/keWaWwILQbxjmaoN44/4vAxt8R999Y/RODCTtLAS7RmoIwsv/dHEuDK+UIe25DF+8gxlqR1U3AjyHt1Q6rFp4MGyp6IumN6ZIFECeb2y2GWWWWi8+cnpUZ1nGITbX9zsBioTbiV+MEt+LqKPpAPoOwa9btT4k8yrd99087KzTZNVyrI6QV5PotfbIHefVHlPrHzB9Unso5nAcio+pcpWm2nUfbjuK9/bJ8RYFMXNvriBx5mrJK0YKC3N2lcaz2GQk4ALywkAUHfpTfuUjNoPqbJqo4WnACy3zaj4H20h/QrBd9E5pMU6nir7q87vKMX3LFO1y+GfvNgYtV8xgpE0M6KXqwS8JNCyAN+f8kl8JIFaqRw8TIxR+xVl8qkXqbK1nZbaCuA7vpsLRqnhyNXwwLIvArsFzvc/AAgIbgXxLctU7WaJufp5i2chSP0dRKU+Ss8fCMCytJeV10rHH6D6eYtnWSUWlcmdJK4lsdWxiM5nB+ED4wAZ2NnRX6vs+0bHV7pp9sLzSZCLVFm1lq3c/o13Pv+JCBD7A2bSTA9fZ/V9ld5HgRrFx66MJ0pOAIDGO1842VS5/S3LaiWxCOSvvZ0bukX1SNU/e0BqvtBv3p4GCCorAeC7JF81y+o9s273T9VfcfckrZZOu2oykwS5qz4xqyZXymOaCQ7LBwBQf8Xdk8y6EZ+0yqpVKa6C8Lu68gUUK2Q1A1Gru9B0NdNdR9qvx3Zek+3WVugh+FUqbrPKqt2aeOwl1ed+K2rXJwrMuEGGyyaZvbiJEVUvab3Y3zazaGFUm2GZAACqp8/eQ0049mKzpFoti5tF4TIQPQJ3TW+jpS31Ncsa8pEC90s89rW/6HTrir1JS3Eb3AhilmWqLVZJdRjHTZ9dPHHm4ChGYwZaiTlN82GVtJfFSsT1V0l7mUAsHnf6IOOk82dbpupWltoG8EsENvi+zw5S7Pd0uJjqJlIinn44hZS7IQsfeT8Ksq+dBl8BMFuVVbtVolU4e86cwlGfbIwALw3MuIAhyawJksGNE3YWn5hm3hHRXhqIfUAtHH5iY+Hc/51rli1llVUbwNmwHxpr26Wa2LUdGur2NbBFp9UTzQ4LguXtT8TCN73kb0lcbZrm9nLJQvGim+cWjz61WWM+fE7TFl0wYUDTtDKr9lZSLgrANF8aBaJ+RvHoU5uLl9xxtVmyaJVUK4k5IH4beJqo4+AFnhpWwdWIr5G+xlIH36/pVaar8fbSRLAIxE2qbG0v91i5/Pk3zq2aes7QuEHEDDhOA+PKVAJW1vyo9pMsR5Im6mMNjL/q4zOGFf77xmvMXlUwy6oNxM0gFlGXsSNn8XfXgkGOBHHygAREW3poqhz1yV4nz4tibdVcSOJ7lqlazV6LxhlXzq298LqxEcClgZmmsUC0YLOCmFYnzhxW4hejxggAqL3wurHGmXOuLvealmma20HeRGChLXTxUKRz74uewUNbGnqdkUTuztV2b25bouEmQe7cfBIQgcOA3agApwOYLXmjKV/MNebfXrGw8xunPB+qrZ/DaeH8uLRw3YGgJE2KM5VxFiechvrvLjrSbJk40yqrDmWpNqK+TXEAAAYVSURBVBDzADxMvZq23NMbcCGhVsSXPWGev6/mI6GHtQHlC+y4B/ywF/x4vT9M4CvKVFvNXqvd3H3iufULXpmJQnWsv0Bw5lZiTpNMcBIlmcxKzGwmU4pCtdQveGVmacTEL1gl1W6ZaguIr9IB0a9gL/9ERzI8TcN+UpO8EVkB0JAMt6CDSc92e1WIZ0Ceoyy1ttxrbSqx5vC6BSuuKU6ZHl6eJJmiOGHG+ago/5UWzSb5vCz9J7kKAEBxyvTBdQtWfquEmiOssrnFMtVaEOeQ+K0r08BqAvCWGuJYWzqCDey1egrn42Kb1h+sDoIG8bB2/39SAooOJ4VaDQm30AzIPBEcaeSl0Sjkagrb1j7QedmUpxGkKJMZl16pedXzkjQ1zTRGmsuEdNTfsPRYc+i4M82y1a3KbCX4BwCzBWgLVvGl60oeIVmH7wn9v1oF1gX7+lGrOz30NYxQ/ydYf9+PgLdh4BJ1W2zXbwM4S5Hfs8pqq9mr2nsHjz2r7t41VxWnTNdfARPlc/T7NNOWtJaL0sQ4s5qlrzBvCKWjOGX6kLofr7myNGjs58q9ql2V1TaStwoxywXRjx2DMhMw4K48KLzdNnEraqg4TJCEccdr2oxA30LadZ/JAkAkZIkDdQQCTiRwjYjsaxSMplxOagpWx2+6rvz0w2rTuvB7bOI0NJyftUyY4jQzSgPjyvTJN3YbVaj7zi+mlXINx1gmu5WpdpBcA+AqAN4nqmxZ+RrlCsoXa0DaWnfsm2JHPFAXjHeAvP21IIJx1UP5iRSwCgQoBQjPBeRcw0CdkTOacsWcyu94+/HO2Scvxc52FdNC+Dqup12hSs2uT3VNRv28RVOsxj2nmmVlWKZqo8WdENwN4C6AZbeaa9fs8DPUToxsRddECVewE9WFOpBeNiEizr4r4cS53iwC7JngtamvUWyba9+7dsFJJ8RuChgJ8nJAjpac1OQKucG5vPTk29/+Vde105epLeuj3jSVFdSBolTtNHYbVai98icfNZv3ONEqs8YqqzYq1QXiGYDzAdngMmuLUJOTC6aLnrfs8AHz/CVFk6FTQm9DCHXhfj6Qvut0na+PuB7s+LmayxUn0gqmau25vQeM9mSBzKJwUs4wao280WjkRRXKHc+Xfnbzr0pP3PNejJAjY+yYslkoCqhYDS2eOHNI8TOXnlQuNBypTBrKUh2WxS4h/kbgNoAv6G7F/uuHMX4HeuCiK2SwrC8/aCX9AJMAeJGnkX8Papw+S1yQxHHErjbSMROisUv6/tK9cCeUW9fRWkJssyFyNMDzIDgwZxjVkpN6w5CqfB7rjffefLb7B19/wVr9554UMAYayADlxh1cXXPR/CPVkL2OKpsYRYs9lqU6aL/r5m8AfgjgmTBHnt8TzUm5/tHzjY7FCyurV9a3km4mhY4cnadWsxwg5ba/I8qhusN01zTBKSValNVXMtQBDDcGrS03SXAwgekAjhFItZGTWiMvtRApFAp8U3Zs/nN52f1/LD12x5YkoQ8UFU+9aHjx+M8dqhp3O7hcltFUsGipnUqxC2QPiWcEuI/220+gyy8cD2q4BK1oUEV9TyRBW9Y36tQLA5y1nw7kvwwNBXAygKkAxoohBSMndWJItRhSZRjSnTest6Srda3a8Pc3Sssfet38w+Mdu9Jh/vCPNxSP/+xYY+T4MawbvI+pjNHKYjUVe6nYrSx2UbEM4HXYvxddDCDLh25SqJLoMaGVf1EgdRoL4AQAhwOYBEFRDCkahlErBooikocgLyKmkUObAdUqtDpglTtQ7rHB7e3eKQIDVbW1IMFCdQNyhQZKroEwBlsWGknmQZgkLCr2Kkt1OWZTAVgF4DkAT8IG8l+OOGs/5NNLYSAmTX/pdef4AYAaEB+gxUMtyzoUwHgAeQgMESmISF4MDIPkRghyBnLV9vZjbbNoK13CgqIJC6BFZZkkN5M0HTtmAlgD4GUAfwXwIoDWf8K4K6Z0IP95IIapG8DzzgHY393YC/bnafck2AILw2F/YKUJQJ1Tptop3wOgDPsd4O0A3gOwGcA7ADbCnjBvOmX+7UjC//j6H/r3pP8Pg9hQQHfQS8YAAAAASUVORK5CYII=);background-repeat:no-repeat;background-size:contain}div.tpr_css_info_text{display:none;z-index:1000;color:lightgray;bottom:0;width:100%;position:absolute;height:30px;vertical-align:middle !important;text-align:center !important;font-size:smaller !important}div.tpr_css_secondary_screen{display:none;z-index:1000;background-color:black;margin:0 !important;overflow:hidden;width:0;height:0;position:absolute;top:0;left:0;right:0;bottom:0}div.tpr_css_secondary_screen_bg{background-repeat:no-repeat;background-size:contain;background-position:center;margin:auto auto !important;width:100%;height:100%}div.tpr_css_info_container{position:absolute;top:50px;left:0;display:none;color:white;text-align:center !important;margin:auto auto !important;overflow:hidden;z-index:10000000;width:100%}.tpr_css_spinner{margin:auto auto !important;top:100px;width:40px;height:40px;position:relative}.tpr_css_click_tracker{position:absolute;top:0;left:0;width:100%;height:100%}.tpr-wait-circle{width:100%;height:100%;position:absolute;left:0;top:0}.tpr-wait-circle:before{content:"";display:block;margin:0 auto !important;width:18%;height:18%;background-color:#dadada;border-radius:100%;-webkit-animation:tpr-wait-fadedelay 1.2s infinite ease-in-out both;animation:tpr-wait-fadedelay 1.2s infinite ease-in-out both;animation-delay:.00s;-webkit-animation-delay:.00s}.tpr-wait-circle2{transform:rotate(30deg);-webkit-transform:rotate(30deg)}.tpr-wait-circle3{transform:rotate(60deg);-webkit-transform:rotate(60deg)}.tpr-wait-circle4{transform:rotate(90deg);-webkit-transform:rotate(90deg)}.tpr-wait-circle5{transform:rotate(120deg);-webkit-transform:rotate(120deg)}.tpr-wait-circle6{transform:rotate(150deg);-webkit-transform:rotate(150deg)}.tpr-wait-circle7{transform:rotate(180deg);-webkit-transform:rotate(180deg)}.tpr-wait-circle8{transform:rotate(210deg);-webkit-transform:rotate(210deg)}.tpr-wait-circle9{transform:rotate(240deg);-webkit-transform:rotate(240deg)}.tpr-wait-circle10{transform:rotate(270deg);-webkit-transform:rotate(270deg)}.tpr-wait-circle11{transform:rotate(300deg);-webkit-transform:rotate(300deg)}.tpr-wait-circle12{transform:rotate(330deg);-webkit-transform:rotate(330deg)}.tpr-wait-circle2:before{animation-delay:-1.1s;-webkit-animation-delay:-1.1s}.tpr-wait-circle3:before{animation-delay:-1.00s;-webkit-animation-delay:-1.00s}.tpr-wait-circle4:before{animation-delay:-0.9s;-webkit-animation-delay:-0.9s}.tpr-wait-circle5:before{animation-delay:-0.8s;-webkit-animation-delay:-0.8s}.tpr-wait-circle6:before{animation-delay:-0.7s;-webkit-animation-delay:-0.7s}.tpr-wait-circle7:before{animation-delay:-0.6s;-webkit-animation-delay:-0.6s}.tpr-wait-circle8:before{animation-delay:-0.5s;-webkit-animation-delay:-0.5s}.tpr-wait-circle9:before{animation-delay:-0.4s;-webkit-animation-delay:-0.4s}.tpr-wait-circle10:before{animation-delay:-0.3s;-webkit-animation-delay:-0.3s}.tpr-wait-circle11:before{animation-delay:-0.2s;-webkit-animation-delay:-0.2s}.tpr-wait-circle12:before{animation-delay:-0.1s;-webkit-animation-delay:-0.1s}@-webkit-keyframes tpr-wait-fadedelay{0.00%{opacity:0}39%{opacity:0}40%{opacity:1}100%{opacity:0}}@keyframes tpr-wait-fadedelay{0.00%{opacity:0}39%{opacity:0}40%{opacity:1}100%{opacity:0}}</style><div class="tpr_css_skip_container" id="tpr_skip_container[TAGID]"><div class="tpr_css_close_button" id="tpr_close_button[TAGID]"></div><div class="tpr_css_skip_message" id="tpr_skip_message[TAGID]"></div></div><div class="tpr_css_video_screen" id="tpr_video_screen[TAGID]">	<div class="tpr_css_vpaid_container" id="tpr_vpaid_container[TAGID]">	</div>	<video id="tpr_video[TAGID]" width="100%" height="100%" style="z-index:-1" webkit-playsinline>	</video>	<div class="tpr_css_video_overlay" id="tpr_video_overlay[TAGID]">		<a id="tpr_click_tracker[TAGID]" class="tpr_css_click_tracker" href="" target="_blank"></a>		<div class="tpr_css_video_controls" id="tpr_video_controls[TAGID]">			<span><div class="tpr_css_playpause tpr_css_play_btn" id="tpr_playpause_btn[TAGID]"></div></span>			<span><div class="tpr_css_mute tpr_css_mute_btn" id="tpr_mute_btn[TAGID]"><div><input id="tpr_volume_slider[TAGID]" style="visibility:hidden;width:50px;position:absolute;right:20px;bottom:20px;z-index:20;" type="range" min=0 max=100 value=0></div></div></span>			<span><div class="tpr_css_progress_info" id="tpr_progess_info[TAGID]"></div></span>		</div>		<div class="tpr_css_big_play" id="tpr_bigplay_btn[TAGID]">		</div>		<div class="tpr_css_info_text" id="tpr_info_text[TAGID]">		</div>	</div></div><div class="tpr_css_secondary_screen" id="tpr_secondary_screen[TAGID]">	<a id="tpr_secondary_click_tracker[TAGID]" class="tpr_css_click_tracker" href="" target="_blank"></a>	<div class="tpr_css_secondary_screen_bg" id="tpr_secondary_screen_bg[TAGID]">	</div></div><div class="tpr_css_info_container" id="tpr_info_container[TAGID]"></div>';
      return e;
    }, api.insertAndExecute = function(e, t) {
      var n = _config.document.getElementById(e);
      n.innerHTML = t;
      var i, r = [], a = n.childNodes;
      for (i = 0; a[i]; i++) !this.nodeName(a[i], "script") || a[i].type && "text/javascript" !== a[i].type.toLowerCase() || r.push(a[i].parentNode ? a[i].parentNode.removeChild(a[i]) : a[i]);
      var o;
      for (o in r) this.evalScript(r[o]);
    }, api.nodeName = function(e, t) {
      return e.nodeName && e.nodeName.toUpperCase() === t.toUpperCase();
    }, api.evalScript = function(e) {
      var t = e.text || e.textContent || e.innerHTML || "", n = _config.document.getElementsByTagName("head")[0] || _config.document.documentElement, i = _config.document.createElement("script");
      i.type = "text/javascript", t ? i.appendChild(document.createTextNode(t)) : i.src = e.src, 
      n.insertBefore(i, n.firstChild), n.removeChild(i), e.parentNode && e.parentNode.removeChild(e);
    }, api.addCssRule = function(e, t) {
      var n = null, i = e.getElementsByClassName("progressbarStyle");
      0 === i.length ? (n = _config.document.createElement("style"), n.type = "text/css", 
      n.className = "progressbarStyle", e.appendChild(n)) : n = i[0];
      var r = n.sheet || n.styleSheet;
      return r.insertRule(t, r.cssRules.length), r;
    }, api.animationSupport = function(e) {
      var t = {
        animation: !1,
        animationstring: "animation",
        keyframeprefix: "",
        pfx: ""
      }, n = "Webkit Moz O ms Khtml".split(" ");
      if (e.style.animationName && (t.animation = !0), t.animation === !1) for (var i = 0; i < n.length; i++) if (void 0 !== e.style[n[i] + "AnimationName"]) {
        t.pfx = n[i], t.animationstring = t.pfx + "Animation", t.keyframeprefix = "-" + t.pfx.toLowerCase() + "-", 
        t.animation = !0;
        break;
      }
      return t;
    }, api.decodeHTML = function(e) {
      return e.replace(/&apos;/g, "'").replace(/&quot;/g, '"').replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&amp;/g, "&");
    }, api.encodeHTML = function(e) {
      return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
    }, api.consoleLog = function(e, t) {
      "none" !== e.debug && t && console.log(t);
    }, api.canPlayMediaType = function(e) {
      if ("application/x-shockwave-flash" === e) return api.getDeviceInfo().mobile ? "" : "probably";
      if ("application/javascript" === e || "application/x-javascript" === e) return "probably";
      if (_config.usecssplayer) return "video/x-tpv" === e ? "probably" : "";
      var t = document.createElement("video");
      return t.canPlayType(e);
    }, api.createVASTURL = function(e, t, n, i, r, a, o) {
      var s = t ? "vpaid.jsp" : "vast.jsp", l = "&";
      l += i ? "playerid=" + i : "adid=" + n, r && (l += "&adp=" + r), l += "&pid=tpr-" + e.tagtype + "-" + (api.isMraid() ? "mraid" : "mweb"), 
      a && (l += "&tojson=1"), o && (l += "&dspcache=true"), e.publisher && (l += "&publisher=" + e.publisher), 
      e.clientip && (l += "&ipaddress=" + e.clientip), e.deviceid && (l += "&deviceid=" + e.deviceid), 
      e.deviceid_ios && (l += "&deviceid_ios=" + e.deviceid_ios), e.deviceid_android && (l += "&deviceid_android=" + e.deviceid_android), 
      l += "&useragent=" + encodeURIComponent(navigator.userAgent), e.donottrack && (l += "&donottrack=" + e.donottrack), 
      e.application && (l += "&application=" + e.application), e.site && (l += "&site=" + e.site), 
      e.custom1 && (l += "&custom1=" + e.custom1), e.custom2 && (l += "&custom2=" + e.custom2), 
      e.custom3 && (l += "&custom3=" + e.custom3), e.custom4 && (l += "&custom4=" + e.custom4), 
      e.custom5 && (l += "&custom5=" + e.custom5), e.custom6 && (l += "&custom6=" + e.custom6), 
      e.custom7 && (l += "&custom7=" + e.custom7), e.custom8 && (l += "&custom8=" + e.custom8), 
      e.custom9 && (l += "&custom9=" + e.custom9), e.ctd && (l += "&ctd=" + e.ctd), e.bundleid && (l += "&bundleid=" + e.bundleid), 
      e.appstoreurl && (l += "&appstoreurl=" + e.appstoreurl), e.appname && (l += "&appname=" + e.appname), 
      e.appversion && (l += "&appversion=" + e.appversion), e.segments && (l += "&segments=" + e.segments), 
      e.geo_lat && (l += "&geo_lat=" + e.geo_lat), e.geo_lon && (l += "&geo_lon=" + e.geo_lon), 
      e.country && (l += "&country=" + e.country), e.region && (l += "&region=" + e.region), 
      e.city && (l += "&city=" + e.city);
      var u = api.getDeviceInfo();
      return u && (l += "&deviceos=" + encodeURIComponent(u.os), l += "&deviceosv=" + encodeURIComponent(u.osv), 
      l += "&devicemake=" + encodeURIComponent(u.make), l += "&devicemodel=" + encodeURIComponent(u.model)), 
      e.scheme + "//a." + e.domain + "/" + e.account + "/" + s + "?v=3&m=3&ts=" + Date.now() + l;
    }, api.replaceMacros = function(e, t, n, i, r) {
      var a = new Date().getTime();
      t = t.replace(/\[timestamp\]/gi, a), t = t.replace(/\[TIMESTAMP\]/gi, a), t = t.replace(/\[cachebusting\]/gi, a), 
      t = t.replace(/\[CACHEBUSTING\]/gi, a), t = t.replace(/\[CACHE_BREAKER\]/gi, a), 
      t = t.replace(/\[CUSTOMER_ID\]/gi, e.account), t = t.replace(/\[CUSTOM_TRACKING_DATA\]/gi, e.ctd), 
      t = t.replace(/\[AD_ID\]/gi, r ? r : i), t = t.replace(/\[PARENTADID\]/gi, i), t = t.replace(/\[PLAYERID\]/gi, api.isMraid() ? "tpr-mraid" : "tpr-mweb"), 
      t = t.replace(/\[PRICE\]/gi, n ? n.price : 0), t = t.replace(/\[PUBLISHER\]/gi, e.publisher), 
      t = t.replace(/\[DOMAIN\]/gi, api.parseDomain(decodeURIComponent(e.publisher))), 
      t = t.replace(/\[IPADDRESS\]/gi, e.clientip), t = t.replace(/\[DEVICEID\]/gi, e.deviceid), 
      t = t.replace(/\[DEVICEID_IOS\]/gi, e.deviceid_ios), t = t.replace(/\[DEVICEID_ANDROID\]/gi, e.deviceid_android), 
      t = t.replace(/\[CARRIER\]/gi, e.carrier), t = t.replace(/\[USERAGENT\]/gi, encodeURIComponent(navigator.userAgent)), 
      t = t.replace(/\[DONOTTRACK\]/gi, e.donottrack), t = t.replace(/\[APPLICATION\]/gi, e.application), 
      t = t.replace(/\[SITE\]/gi, e.site), t = t.replace(/\[CUSTOM1\]/gi, e.custom1), 
      t = t.replace(/\[CUSTOM2\]/gi, e.custom2), t = t.replace(/\[CUSTOM3\]/gi, e.custom3), 
      t = t.replace(/\[CUSTOM4\]/gi, e.custom4), t = t.replace(/\[CUSTOM5\]/gi, e.custom5), 
      t = t.replace(/\[CUSTOM6\]/gi, e.custom6), t = t.replace(/\[CUSTOM7\]/gi, e.custom7), 
      t = t.replace(/\[CUSTOM8\]/gi, e.custom8), t = t.replace(/\[CUSTOM9\]/gi, e.custom9), 
      t = t.replace(/\[BUNDLEID\]/gi, _config.bundleid), t = t.replace(/\[APPSTOREURL\]/gi, _config.appstoreurl), 
      t = t.replace(/\[APPNAME\]/gi, _config.appname), t = t.replace(/\[APPVERSION\]/gi, _config.appversion), 
      t = t.replace(/\[SEGMENTS\]/gi, _config.segments), t = t.replace(/\[GEO_LAT\]/gi, _config.geo_lat), 
      t = t.replace(/\[GEO_LON\]/gi, _config.geo_lon), t = t.replace(/\[COUNTRY\]/gi, _config.country), 
      t = t.replace(/\[REGION\]/gi, _config.region), t = t.replace(/\[CITY\]/gi, _config.city);
      var o = api.getContainerSize(e);
      t = t.replace(/\[WIDTH\]/gi, o.w), t = t.replace(/\[HEIGHT\]/gi, o.h);
      var s = api.getDeviceInfo();
      return s && (t = t.replace(/\[DEVICEOS\]/gi, encodeURIComponent(s.os)), t = t.replace(/\[DEVICEOSV\]/gi, encodeURIComponent(s.osv)), 
      t = t.replace(/\[DEVICEMAKE\]/gi, encodeURIComponent(s.make)), t = t.replace(/\[DEVICEMODEL\]/gi, encodeURIComponent(s.model))), 
      t;
    }, api.doAjaxRequest = function(c) {
      var timeout = !1, conf = c, xmlHttpTimeout, xmlHttp = new XMLHttpRequest(), measurementData, measurementCookieData;
      conf.doMeasurement && (measurementData = [ "", "", "", "", "" ], measurementCookieData = []), 
      xmlHttp.onreadystatechange = function(e) {
        var regex, trimmedUrl, existingMeasurements, existingMeasurementUrlPosition, i;
        if (measurementData && (1 === xmlHttp.readyState ? measurementData[0] = new Date().getTime() : 2 === xmlHttp.readyState ? measurementData[1] = new Date().getTime() : 3 === xmlHttp.readyState && ("" === measurementData[2] ? measurementData[2] = new Date().getTime() : measurementData[3] = new Date().getTime())), 
        4 === xmlHttp.readyState) {
          if (measurementData) {
            for (measurementData[4] = new Date().getTime(), "" === measurementData[3] && (measurementData[3] = measurementData[2]), 
            i = 0; 4 > i; i++) measurementCookieData[i] = measurementData[i + 1] >= measurementData[i] && "" !== measurementData[i] ? measurementData[i + 1] - measurementData[i] : -1;
            regex = /(http:\/\/)?(https:\/\/)?([^\/]*)(.*)/, trimmedUrl = conf.url.replace(regex, "$3");
            try {
              if ("undefined" != typeof Storage && localStorage) {
                if (existingMeasurements = localStorage.tprMeasurements) for (existingMeasurements = JSON.parse(existingMeasurements), 
                i = 0; i < existingMeasurements.length; i++) existingMeasurements[i].url === trimmedUrl && (existingMeasurementUrlPosition = i); else existingMeasurements = [];
                existingMeasurementUrlPosition > -1 ? existingMeasurements[existingMeasurementUrlPosition] = {
                  url: trimmedUrl,
                  ip: conf.clientIP,
                  values: measurementCookieData
                } : existingMeasurements.push({
                  url: trimmedUrl,
                  ip: conf.clientIP,
                  values: measurementCookieData
                }), localStorage.tprMeasurements = JSON.stringify(existingMeasurements);
              }
            } catch (e) {}
          }
          xmlHttpTimeout && clearTimeout(xmlHttpTimeout);
          var response = {
            status: timeout ? -1 : xmlHttp.status,
            responseText: timeout ? "timeout occured" : xmlHttp.responseText,
            headers: parseHeaders(xmlHttp.getAllResponseHeaders())
          };
          if (200 === xmlHttp.status) {
            if ("function" == typeof conf.success) try {
              response.responseObject = "JSON" === conf.type ? eval("(" + xmlHttp.responseText + ")") : "XML" === conf.type ? convertVastXMLToJSON(api.parseXML(xmlHttp.responseText)) : null, 
              conf.success(response);
            } catch (e) {
              response.responseText = "Badly formatted response", conf.failure(response);
            }
          } else "function" == typeof conf.failure && conf.failure(response);
        }
      }, xmlHttp.open(conf.method || "GET", conf.url, !0);
      var data = conf.data ? conf.data : null;
      "JSON" === conf.contentType ? xmlHttp.setRequestHeader("Content-Type", "application/json; charset=utf-8") : data = "string" != typeof data ? JSON.stringify(data) : null, 
      xmlHttp.setRequestHeader("Accept", "*/*"), xmlHttp.withCredentials = conf.cors === !0, 
      xmlHttp.send(data), -1 !== conf.timeout && (xmlHttpTimeout = setTimeout(function() {
        timeout = !0, xmlHttp.abort();
      }, conf.timeout || 3e3));
    }, api.parseXML = function(e) {
      var t = new DOMParser(), n = t.parseFromString(e, "text/xml");
      return n;
    }, api.parseJSON = function(e) {
      var t = null;
      try {
        t = JSON.parse(e);
      } catch (n) {}
      return t;
    }, api.parseVASTTime = function(e) {
      if (e && e.length > 7) {
        var t = 3600 * parseInt(e.slice(0, 2));
        return t += 60 * parseInt(e.slice(3, 5)), t += parseInt(e.slice(6, 8));
      }
      return 0;
    }, api.parseVideoRef = function(e) {
      var t, n;
      if (/\.2mdn\.net\/MotifFiles\/.*\?/i.test(e)) n = /\.2mdn\.net\/MotifFiles\/(.*)\?/i.exec(e), 
      t = n ? "2mdn.net/MotifFiles/" + n[1] : e; else if (/\.2mdn\.net\/videoplayback\?id/i.test(e)) n = /\.2mdn\.net\/videoplayback\?id=(.*?)&/i.exec(e), 
      t = n ? "2mdn.net/" + n[1] : e; else if (/\.2mdn\.net\/videoplayback\/id\//i.test(e)) n = /\.2mdn\.net\/videoplayback\/id\/(.*?)\//i.exec(e), 
      t = n ? "2mdn.net/" + n[1] : e; else if (/\.gvt1\.com\/videoplayback\?id/i.test(e)) n = /\.gvt1\.com\/videoplayback\?id=(.*?)&/i.exec(e), 
      t = n ? "gvt1.com/" + n[1] : e; else if (/\.gvt1\.com\/videoplayback\/id\//i.test(e)) n = /\.gvt1\.com\/videoplayback\/id\/(.*?)\//i.exec(e), 
      t = n ? "gvt1.com/" + n[1] : e; else if (/\.googlesyndication\.com\/videoplayback\?id/i.test(e)) n = /\.googlesyndication\.com\/videoplayback\?id=(.*?)&/i.exec(e), 
      t = n ? "googlesyndication.com/" + n[1] : e; else if (/\.googlesyndication\.com\/videoplayback\/id\//i.test(e)) n = /\.googlesyndication\.com\/videoplayback\/id\/(.*?)\//i.exec(e), 
      t = n ? "googlesyndication.com/" + n[1] : e; else if (/\.spotxcdn\.com\/media\/videos\/orig\//i.test(e)) {
        var n = /\.spotxcdn\.com\/media\/videos\/orig\/(.*)?/i.exec(e);
        t = n ? "spotxcdn.com/" + n[1] : e;
      } else t = e;
      return t;
    }, api.doProxyVideo = function(e) {
      var t = api.getVASTProxyDomain() + "/resolveFinalUrl?target=" + encodeURIComponent(e.sourceURL);
      api.doAjaxRequest({
        url: t,
        type: "JSON",
        cors: !1,
        timeout: 5e3,
        success: function(t) {
          var n = t.responseObject;
          n.url ? (e.sourceURL = n.url, api.doProxyVideoFinal(e)) : n.error && e.failure("url resolver failed: " + n.error + " url: " + e.sourceURL);
        },
        failure: function(t) {
          e.failure("url resolver failed: " + t.status + " url: " + e.sourceURL);
        }
      });
    }, api.doProxyVideoFinal = function(e) {
      var t = "&referenceid=" + encodeURIComponent(api.parseVideoRef(e.sourceURL)), n = encodeURIComponent(JSON.stringify({
        vasturls: e.requestURLs
      })), i = e.config.scheme + "//api." + e.config.domain + "/03-13/video?action=proxyVideo&m=4&sessionId=" + e.config.sessionid + t + "&ts=" + new Date().getTime() + "&url=" + encodeURIComponent(e.sourceURL) + "&description=" + n;
      api.doAjaxRequest({
        url: i,
        type: "JSON",
        timeout: 5e3,
        cors: !1,
        success: function(t) {
          var n = t.responseObject, i = null, r = null;
          if (n.renders) {
            var a, o = 0, s = null, l = null, u = "none", c = e.config.usecssplayer ? 1e7 : 520;
            for (a = 0; a < n.renders.length; a++) {
              var d = n.renders[a].type;
              if (d) {
                if (e.config.usecssplayer && "video/x-tpv" === d) {
                  u = d, o = f, s = n.renders[a].source;
                  break;
                }
                var p = api.canPlayMediaType(d);
                if ("progressive" === n.renders[a].delivery && "" !== p) {
                  var f = parseInt(n.renders[a].bitrate, 10), m = api.canPlayMediaType(u);
                  "video/webm" === d ? l = n.renders[a].source : c >= f && (!s || f > o || "probably" === p && "probably" !== m) && (u = d, 
                  o = f, s = n.renders[a].source);
                }
              }
            }
            s ? r = s : i = "no valid format for video id " + n.videoid;
          } else n.source ? r = n.source : n.error ? i = "No media file available for " + n.videoid + " error: " + n.error + " url: " + e.sourceURL : n.errorresponse && (i = "No media file available: message: " + (n.message ? n.message : "No message"));
          i ? e.failure(i) : e.success(r, "video");
        },
        failure: function(t) {
          e.failure("video proxy failure with error code " + t.status + " url: " + e.sourceURL);
        }
      });
    };
    var parseHeaders = function(e) {
      for (var t, n = e.split(/\:\s|\s/), i = null, r = {}; i = n.shift(); ) t ? (r[t] = i, 
      t = null) : t = i;
      return r;
    }, convertVastXMLToJSON = function(e) {
      var t;
      if (e && e.childNodes) if (1 !== e.childNodes.length || e.childNodes[0].localName || "MediaFile" === e.localName || "Tracking" === e.localName || "StaticResource" === e.localName || "CompanionClickThrough" === e.localName || "Extensions" === e.localName || "CustomTracking" === e.localName || "Sources" === e.localName) {
        t = {};
        var n = !1;
        (/s$/i.test(e.localName) || "VideoAdServingTemplate" === e.localName || "VAST" === e.localName || "CustomTracking" === e.localName) && (n = !0, 
        t = []);
        var i, r = !1;
        for (i = 0; i < e.childNodes.length; i++) "#cdata-section" === e.childNodes[i].nodeName && (r = !0);
        for (i = 0; i < e.childNodes.length; i++) if ("AdParameters" === e.localName || "VASTAdTagURI" === e.localName || "Impression" === e.localName) "#cdata-section" === e.childNodes[i].nodeName && (1 === e.childNodes.length || 0 === i ? t = e.childNodes[i].nodeValue : e.childNodes[i].nodeValue && (t = ("object" == typeof t ? "" : t) + e.childNodes[i].nodeValue)); else if ("MediaFile" === e.localName || "Tracking" === e.localName || "ClickTracking" === e.localName || "ClickThrough" === e.localName || "StaticResource" === e.localName || "CompanionClickThrough" === e.localName) "#cdata-section" === e.childNodes[i].nodeName ? 1 === e.childNodes.length || 0 === i ? t = {
          localName: e.localName,
          url: e.childNodes[i].nodeValue ? e.childNodes[i].nodeValue.trim() : ""
        } : e.childNodes[i].nodeValue && (t.url = (void 0 === t.url ? "" : t.url) + e.childNodes[i].nodeValue.trim()) : e.textContent && !r && (t = {
          localName: e.localName,
          url: e.textContent ? e.textContent.trim() : ""
        }); else if (e.childNodes[i].localName) {
          var a = convertVastXMLToJSON(e.childNodes[i]);
          if ("Extensions" === e.localName) {
            var o = {};
            if ("Sources" === e.childNodes[i].localName) {
              var s = e.childNodes[i].childNodes[0].nodeValue;
              s = JSON.parse(s), o[e.childNodes[i].localName] = s;
            } else o[e.childNodes[i].localName] = a;
            t.push(o);
          } else if ("Impression" === e.childNodes[i].localName) a && ("string" == typeof a || a instanceof String) && (t.Impression ? "string" == typeof t.Impression || t.Impression instanceof String ? t.Impression = [ t.Impression, a ] : t.Impression.push(a) : t.Impression = a); else {
            if (e.childNodes[i].attributes && "object" == typeof a) {
              var l;
              for (l = 0; l < e.childNodes[i].attributes.length; l++) a[e.childNodes[i].attributes[l].localName] = e.childNodes[i].attributes[l].nodeValue;
            }
            n ? t.push(a) : t[e.childNodes[i].localName] = a;
          }
        }
        if ("Linear" === e.localName && e.attributes) for (l = 0; l < e.attributes.length; l++) t[e.attributes[l].localName] = e.attributes[l].nodeValue;
      } else switch (e.localName) {
       case "ClickThrough":
        t = {
          localName: e.localName,
          url: e.childNodes[0].nodeValue ? e.childNodes[0].nodeValue.trim() : ""
        };
        break;

       default:
        t = e.childNodes[0].nodeValue;
      }
      return t;
    };
    return api;
  };
  (function(e, t) {
    function n() {
      return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
        var t = 0 | 16 * Math.random(), n = "x" == e ? t : 8 | 3 & t;
        return n.toString(16);
      });
    }
    function i() {
      this.key = !1;
    }
    function r(e, t) {
      e.key = t, e.setSession(), a(e);
    }
    function a(e) {
      e.inputUrl = o + (e.logglyCollectorDomain || s) + "/inputs/" + e.key + l;
    }
    var o = "http" + ("https:" === t.location.protocol ? "s" : "") + "://", s = "logs-01.loggly.com", l = ".gif?", u = "logglytrackingsession", c = u.length + 1;
    i.prototype = {
      setSession: function(e) {
        e ? (this.session_id = e, this.setCookie(this.session_id)) : this.session_id || (this.session_id = this.readCookie(), 
        this.session_id || (this.session_id = n(), this.setCookie(this.session_id)));
      },
      push: function(e) {
        var t = typeof e;
        if (e && ("object" === t || "string" === t)) {
          var n = this;
          setTimeout(function() {
            if ("string" === t) e = {
              text: e
            }; else {
              if (e.logglyCollectorDomain) return n.logglyCollectorDomain = e.logglyCollectorDomain, 
              void 0;
              if (e.logglyKey) return r(n, e.logglyKey), void 0;
              if (e.session_id) return n.setSession(e.session_id), void 0;
            }
            n.key && n.track(e);
          }, 0);
        }
      },
      track: function(t) {
        t.sessionId = this.session_id;
        try {
          var n = new Image(), i = "PLAINTEXT=" + encodeURIComponent(JSON.stringify(t));
          n.src = this.inputUrl + i;
        } catch (r) {
          e && e.console && "function" == typeof e.console.log && (console.log("Failed to log to loggly because of this exception:\n" + r), 
          console.log("Failed log data:", t));
        }
      },
      readCookie: function() {
        var e = t.cookie, n = e.indexOf(u);
        if (0 > n) return !1;
        var i = e.indexOf(";", n + 1);
        return i = 0 > i ? e.length : i, e.slice(n + c, i);
      },
      setCookie: function(e) {
        t.cookie = u + "=" + e;
      }
    };
    var d = e._LTracker, p = new i();
    if (d && d.length) {
      var f = 0, m = d.length;
      for (f = 0; m > f; f++) p.push(d[f]);
    }
    e._LTracker = p, e.LogglyTracker = i;
  })(window, document);
  var ThirdpresenceVASTManager_v3 = function() {
    var e = {}, t = null, n = null, i = null, r = 0, a = [], o = 0, s = 5, l = null, u = -1, c = {
      OK: 0,
      REQUEST_FAILED: 1,
      INVALID_RESPONSE: 2,
      VASTPROXY: 3,
      NO_AD: 4,
      NO_MEDIA: 5,
      MAX_NUMBER_OF_WRAPPERS_EXCEEDED: 6,
      VIDEOPROXY: 7
    }, d = function(e, t, n, i, r, a, o) {
      this.requestId = 0, this.started = !1, this.completed = !1, this.cancelled = !1, 
      this.errorCode = c.OK, this.errorText = "", this.url = e, this.usingProxy = !1, 
      this.timeout = r || 5e3, this.forceNoCORS = !1, this.measure = a || !1, this.data = i || {}, 
      this.adid = t || "", this.dsid = n, this.tier = o || 0;
    }, p = function(e) {
      i.consoleLog(n, "onRequestCompleted:" + e.requestId), r--, e.completed = !0, f(), 
      setTimeout(function() {
        t && !e.cancelled && (e.errorCode === c.OK ? t("request_complete", e) : t("request_failed", e));
      }, 0);
    }, f = function() {
      for (var e = 0; s > r && e < a.length; ) a[e].started || a[e].cancelled || (0 === r && (u = a[e].tier), 
      a[e].tier <= u && (r++, h(a[e]))), e++;
    }, m = function(e) {
      if (l && l.VAST && e) for (var t = 0; t < l.VAST.length; ++t) {
        var n = l.VAST[t];
        if (n.id === e) return t;
      }
      return -1;
    }, h = function(e) {
      i.consoleLog(n, "requestVAST: " + e.requestId + " : " + e.url), e.started = !0, 
      t("request_started", e);
      var r = m(e.dsid);
      if (0 === e.data.wrapperCount) {
        if (e.data.vast) return g(e, e.data.vast, 0), void 0;
        if (r >= 0) return g(e, l, r), void 0;
      }
      var a = e.url;
      a = i.replaceMacros(n, a, e.data, e.adid, e.dsid);
      var o = e.forceNoCORS ? !1 : !0;
      -1 !== a.indexOf("a.thirdpresence.com") || -1 !== a.indexOf("a.thirdpresence.mobi") || -1 !== a.indexOf("a.demotp.com") || -1 !== a.indexOf("a." + n.domain) ? o = !1 : -1 !== a.indexOf("//my.mobfox.com") || -1 !== a.indexOf("//video1.fastclick.net") || -1 !== a.indexOf("//a.collective-media.net") ? (o = !1, 
      e.usingProxy = !0) : e.usingProxy && (o = !1), e.data.requestUrls || (e.data.requestUrls = []), 
      e.data.requestUrls.length > 0 && a.length > 30 ? e.data.requestUrls.push(encodeURIComponent(a.substring(0, 27) + "...")) : e.data.requestUrls.push(a), 
      e.usingProxy ? i.doAjaxRequest({
        url: i.getVASTProxyDomain() + "/proxy?target=" + a.replace(/(\r\n|\n|\r)/gm, ""),
        type: "XML",
        cors: !1,
        method: "GET",
        timeout: e.timeout,
        success: function(t) {
          g(e, t.responseObject, 0);
        },
        failure: function(t) {
          e.errorCode = c.REQUEST_FAILED, e.errorText = "Request failed: " + t.status, p(e);
        }
      }) : i.doAjaxRequest({
        url: a,
        type: "XML",
        doMeasurement: e.measure,
        clientIP: n.clientIP,
        cors: o,
        timeout: e.timeout,
        success: function(t) {
          t.headers && t.headers["X-Tpr-Origin"] && (n.clientorigin = t.headers["X-Tpr-Origin"]), 
          g(e, t.responseObject, 0);
        },
        failure: function(t) {
          0 === t.status && o || n.clientorigin && -1 === n.clientorigin.indexOf("http") ? (e.forceNoCORS = !0, 
          h(e)) : (e.errorCode = c.REQUEST_FAILED, e.errorText = "Request failed: " + t.status, 
          p(e));
        }
      });
    }, g = function(e, t, n) {
      var i = !1;
      t ? t.proxy && t.proxy.error ? (e.errorCode = c.VASTPROXY, e.errorText = "remote error: " + vastData.proxy.error.code + " error detail: " + vastData.proxy.error.detail) : t.VAST ? i = v(e, t, n) : (e.errorCode = c.INVALID_RESPONSE, 
      e.errorText = "Invalid response") : (e.errorCode = c.INVALID_RESPONSE, e.errorText = "Invalid response"), 
      i || ("waterfall" === e.data.adType || e.data.src || e.errorCode || (e.errorCode = c.NO_MEDIA, 
      e.errorText = "No media file"), p(e));
    }, v = function(e, t, r) {
      var a = !1;
      if (t.VAST) {
        var o, s = t.VAST;
        if (s && s[r]) if (s[r].Wrapper) {
          var l = s[r].Wrapper.Creatives && s[r].Wrapper.Creatives[0] ? s[r].Wrapper.Creatives[0] : null;
          l && l.Linear && y(l.Linear, e.data), s[r].Wrapper.Impression && b(s[r].Wrapper, e.data);
          var u = s[r].Wrapper.VASTAdTagURI, d = null, f = s[r].Wrapper.Extensions;
          if (f) for (var m = 0; m < f.length; ++m) f[m].CustomTracking ? y(f[m], e.data) : f[m].Sources && (d = f[m].Sources);
          d && d.fall ? (e.data.adType = "waterfall", e.data.fallbackInfos = d.fall || [], 
          e.data.maxAutoReplayCount = d.replaycount ? d.replaycount - 1 : 3600) : s[r].Wrapper.waterfall ? (e.data.adType = "waterfall", 
          e.data.fallbackInfos = s[r].Wrapper.waterfall || []) : u && (e.data.wrapperCount = e.data.wrapperCount ? e.data.wrapperCount + 1 : 1, 
          e.data.wrapperCount <= 10 ? (e.url = u, h(e), a = !0) : (i.consoleLog(n, "Maximum number of wrappers exceeded"), 
          e.errorCode = c.MAX_NUMBER_OF_WRAPPERS_EXCEEDED, e.errorText = "Maximum number of VAST wrappers exceeded"));
        } else o = s[r];
        if (o && o.InLine && o.InLine.Creatives) {
          var g, v, _;
          for (_ = 0; _ < o.InLine.Creatives.length; _++) {
            var l = o.InLine.Creatives[_];
            if (l) if (l.Linear) {
              g = o.InLine.Creatives[0].Linear, e.data.duration = i.parseVASTTime(l.Linear.Duration);
              var x = l.Linear.skipoffset;
              e.data.skipoffset = x ? "%" === x.slice(-1) ? e.data.duration * x.slice(0, -1) / 100 : i.parseVASTTime(x) : null;
            } else l.CompanionAds && (v = l.CompanionAds);
          }
          var f = o.InLine.Extensions || [], k = null, I = null;
          if (n.usecssplayer ? k = w(g, [ "video/x-tpv" ], 313e3, !0, !1, e.data) : i.getDeviceInfo().mobile ? (k = w(g, [ "video/mp4", "video/3gpp" ], n.maxbitrate || 520, !1, !1, e.data), 
          k && (I = w(g, [ "video/webm" ], 520, !1, !1, e.data), e.data.mediaType = "video")) : (k = w(g, [ "video/mp4", "video/webm" ], n.maxbitrate || 1600, !1, !1, e.data), 
          k && (I = w(g, [ "video/mp4", "video/webm" ], 800, !1, !1, e.data), e.data.mediaType = "video")), 
          k || (k = w(g, [ "application/javascript", "application/x-javascript" ], n.maxbitrate || 1600, !1, !0, e.data), 
          k && (i.consoleLog(n, "activating js player"), e.data.mediaType = "js")), k || i.getDeviceInfo().mobile || (k = w(g, [ "application/x-shockwave-flash", "video/x-flv" ], n.maxbitrate || 1600, !1, !0, e.data), 
          k && (i.consoleLog(n, "activating swf player"), e.data.mediaType = "flash")), A(v, e.data), 
          y(g, e.data), f) for (var m = 0; m < f.length; ++m) f[m].CustomTracking && y(f[m], e.data);
          b(o.InLine, e.data), k ? (e.data.src = k, e.data.fallbackSrc = I) : (k = w(g, [ "video/mp4", "video/3gpp", "video/webm", "video/x-flv" ], 1e4, !0, !1, e.data), 
          k && (i.doProxyVideo({
            sourceURL: k,
            requestURLs: e.data.requestUrls,
            config: n,
            success: function(t, n) {
              e.data.src = t, e.data.mediaType = n, p(e);
            },
            failure: function(t) {
              e.errorCode = c.VIDEOPROXY, e.errorText = t, p(e);
            }
          }), a = !0));
        }
      }
      return a;
    }, y = function(e, t) {
      if (e.VideoClicks) {
        t.clickTracks || (t.clickTracks = []);
        var n, i = e.VideoClicks.length;
        for (n = 0; i > n; n++) switch (e.VideoClicks[n].localName) {
         case "ClickThrough":
          t.url = e.VideoClicks[n].url;
          break;

         case "ClickTracking":
          t.clickTracks.push(e.VideoClicks[n].url);
          break;

         default:
          e.VideoClicks[n] && ("string" == typeof e.VideoClicks[n] || e.VideoClicks[n] instanceof String) && t.clickTracks.push(e.VideoClicks[n]);
        }
      }
      var r = e.TrackingEvents || e.CustomTracking;
      if (r) {
        t.events || (t.events = []);
        var a;
        for (a = 0; a < r.length; a++) r[a] && r[a] && t.events.push(r[a]);
      }
    }, b = function(e, t) {
      if (e.Impression) if (t.impressions || (t.impressions = []), "string" == typeof e.Impression || e.Impression instanceof String) {
        var n = e.Impression.split("#separator#");
        if (n) {
          var i;
          for (i = 0; i < n.length; i++) n[i] && t.impressions.push(n[i]);
        }
      } else {
        var r;
        for (r = 0; r < e.Impression.length; r++) e.Impression[r] && t.impressions.push(e.Impression[r]);
      }
    }, w = function(e, t, r, a, o, s) {
      var l = null;
      if (e.MediaFiles) {
        var u, c = 0, d = "none";
        for (u = 0; u < e.MediaFiles.length; u++) {
          var p = e.MediaFiles[u].type, f = e.MediaFiles[u].apiFramework;
          if (t && t.indexOf(p) > -1) {
            var m = i.canPlayMediaType(p), h = e.MediaFiles[u].url ? e.MediaFiles[u].url.trim() : null;
            if (o && "VPAID" === f && "application/x-shockwave-flash" === e.MediaFiles[u].type && "" !== m) {
              s.adParams = e.AdParameters ? e.AdParameters.trim() : "", l = h, i.consoleLog(n, "parseMediaFile: VPAID, found SWF");
              break;
            }
            if (o && "VPAID" === f && "application/javascript" === e.MediaFiles[u].type && "" !== m) {
              s.adParams = e.AdParameters ? e.AdParameters.trim() : "", l = h, i.consoleLog(n, "parseMediaFile: VPAID, found JS");
              break;
            }
            var g = a || "" !== m;
            if (("progressive" === e.MediaFiles[u].delivery || "streaming" === e.MediaFiles[u].delivery && h && 0 === h.indexOf("http") && "video/mp4" === e.MediaFiles[u].type) && g) {
              var v = parseInt(e.MediaFiles[u].bitrate, 10) || 1, y = i.canPlayMediaType(d);
              r >= v && (!l || v > c || "probably" === m && "probably" !== y) && (d = p, c = v, 
              l = h, i.consoleLog(n, "parseMediaFile: found " + d));
            }
          }
        }
      }
      return l && (l = l.replace(/[\n\r]/g, "")), l;
    }, A = function(e, t) {
      if (e) {
        var n, i = 0;
        for (n = 0; n < e.length; ++n) {
          var r = e[n];
          if (r && r.StaticResource) {
            var a = "image/", o = r.StaticResource.creativeType;
            o && o.slice(0, a.length) === a && r.height > i && (i = r.height, t.companion = r);
          }
        }
      }
    };
    return e.init = function(e, r, a) {
      n = e, i = r, t = a, s = e.simultaneousrequests || s;
    }, e.setDemandSourcesData = function(e) {
      l = e;
    }, e.load = function(e, t, r, s, l, c, p) {
      var m = new d(e, t, r, s, l, c, p);
      return o++, m.requestId = o, a.push(m), u > p && (u = -1), i.consoleLog(n, "load VAST:" + m.requestId), 
      f(), o;
    }, e.cancel = function(t) {
      var n = e.get(t);
      n.cancelled = !0;
    }, e.remove = function(e) {
      var t;
      for (t = 0; t < a.length; ++t) if (a[t].requestId === e) return a.splice(t, 1), 
      void 0;
    }, e.get = function(e) {
      var t;
      for (t = 0; t < a.length; ++t) if (a[t].requestId === e) return a[t];
    }, e.getRequests = function() {
      return a;
    }, e;
  }, ThirdpresenceAdPlayer_v3 = function() {
    var e, t, n, r, a, o, s, l, u, c, d, p, f, m, h, g, v, y, b, w, A, _, x, k, I, T, E, C, S, N, L, P, D, O, M, R, B, U, V, j, z, H, F, q, G, W, Q, J, X, K, Y, Z, $, et, tt, nt, it, rt, at, ot, st, lt, ut, ct, dt, pt, ft, mt, ht, gt, vt, yt, bt, wt, At, _t, xt, kt, It, Tt, Et, Ct, St, Nt, Lt, Pt, Dt, Ot, Mt, Rt, Bt, Ut, Vt, jt, zt, Ht, Ft, qt, Gt, Wt, Qt, Jt, Xt, Kt, Yt, Zt = {}, $t = function() {
      function e() {
        if (!F) {
          try {
            var e = R.getElementsByTagName("body")[0].appendChild(g("span"));
            e.parentNode.removeChild(e);
          } catch (t) {
            return;
          }
          F = !0;
          for (var n = V.length, i = 0; n > i; i++) V[i]();
        }
      }
      function t(e) {
        F ? e() : V[V.length] = e;
      }
      function n(e) {
        if (typeof M.addEventListener != C) M.addEventListener("load", e, !1); else if (typeof R.addEventListener != C) R.addEventListener("load", e, !1); else if (typeof M.attachEvent != C) v(M, "onload", e); else if ("function" == typeof M.onload) {
          var t = M.onload;
          M.onload = function() {
            t(), e();
          };
        } else M.onload = e;
      }
      function i() {
        U ? r() : a();
      }
      function r() {
        var e = R.getElementsByTagName("body")[0], t = g(S);
        t.setAttribute("type", P);
        var n = e.appendChild(t);
        if (n) {
          var i = 0;
          (function() {
            if (typeof n.GetVariable != C) {
              var r = n.GetVariable("$version");
              r && (r = r.split(" ")[1].split(","), W.pv = [ parseInt(r[0], 10), parseInt(r[1], 10), parseInt(r[2], 10) ]);
            } else if (10 > i) return i++, setTimeout(arguments.callee, 10), void 0;
            e.removeChild(t), n = null, a();
          })();
        } else a();
      }
      function a() {
        var e = j.length;
        if (e > 0) for (var t = 0; e > t; t++) {
          var n = j[t].id, i = j[t].callbackFn, r = {
            success: !1,
            id: n
          };
          if (W.pv[0] > 0) {
            var a = h(n);
            if (a) if (!y(j[t].swfVersion) || W.wk && W.wk < 312) if (j[t].expressInstall && s()) {
              var c = {};
              c.data = j[t].expressInstall, c.width = a.getAttribute("width") || "0", c.height = a.getAttribute("height") || "0", 
              a.getAttribute("class") && (c.styleclass = a.getAttribute("class")), a.getAttribute("align") && (c.align = a.getAttribute("align"));
              for (var d = {}, p = a.getElementsByTagName("param"), f = p.length, m = 0; f > m; m++) "movie" != p[m].getAttribute("name").toLowerCase() && (d[p[m].getAttribute("name")] = p[m].getAttribute("value"));
              l(c, d, n, i);
            } else u(a), i && i(r); else w(n, !0), i && (r.success = !0, r.ref = o(n), i(r));
          } else if (w(n, !0), i) {
            var g = o(n);
            g && typeof g.SetVariable != C && (r.success = !0, r.ref = g), i(r);
          }
        }
      }
      function o(e) {
        var t = null, n = h(e);
        if (n && "OBJECT" == n.nodeName) if (typeof n.SetVariable != C) t = n; else {
          var i = n.getElementsByTagName(S)[0];
          i && (t = i);
        }
        return t;
      }
      function s() {
        return !q && y("6.0.65") && (W.win || W.mac) && !(W.wk && W.wk < 312);
      }
      function l(e, t, n, i) {
        q = !0, k = i || null, I = {
          success: !1,
          id: n
        };
        var r = h(n);
        if (r) {
          "OBJECT" == r.nodeName ? (_ = c(r), x = null) : (_ = r, x = n), e.id = D, (typeof e.width == C || !/%$/.test(e.width) && parseInt(e.width, 10) < 310) && (e.width = "310"), 
          (typeof e.height == C || !/%$/.test(e.height) && parseInt(e.height, 10) < 137) && (e.height = "137"), 
          R.title = R.title.slice(0, 47) + " - Flash Player Installation";
          var a = W.ie && W.win ? "ActiveX" : "PlugIn", o = "MMredirectURL=" + M.location.toString().replace(/&/g, "%26") + "&MMplayerType=" + a + "&MMdoctitle=" + R.title;
          if (typeof t.flashvars != C ? t.flashvars += "&" + o : t.flashvars = o, W.ie && W.win && 4 != r.readyState) {
            var s = g("div");
            n += "SWFObjectNew", s.setAttribute("id", n), r.parentNode.insertBefore(s, r), r.style.display = "none", 
            function() {
              4 == r.readyState ? r.parentNode.removeChild(r) : setTimeout(arguments.callee, 10);
            }();
          }
          d(e, t, n);
        }
      }
      function u(e) {
        if (W.ie && W.win && 4 != e.readyState) {
          var t = g("div");
          e.parentNode.insertBefore(t, e), t.parentNode.replaceChild(c(e), t), e.style.display = "none", 
          function() {
            4 == e.readyState ? e.parentNode.removeChild(e) : setTimeout(arguments.callee, 10);
          }();
        } else e.parentNode.replaceChild(c(e), e);
      }
      function c(e) {
        var t = g("div");
        if (W.win && W.ie) t.innerHTML = e.innerHTML; else {
          var n = e.getElementsByTagName(S)[0];
          if (n) {
            var i = n.childNodes;
            if (i) for (var r = i.length, a = 0; r > a; a++) 1 == i[a].nodeType && "PARAM" == i[a].nodeName || 8 == i[a].nodeType || t.appendChild(i[a].cloneNode(!0));
          }
        }
        return t;
      }
      function d(e, t, n) {
        var i, r = h(n);
        if (W.wk && W.wk < 312) return i;
        if (r) if (typeof e.id == C && (e.id = n), W.ie && W.win) {
          var a = "";
          for (var o in e) e[o] != Object.prototype[o] && ("data" == o.toLowerCase() ? t.movie = e[o] : "styleclass" == o.toLowerCase() ? a += ' class="' + e[o] + '"' : "classid" != o.toLowerCase() && (a += " " + o + '="' + e[o] + '"'));
          var s = "";
          for (var l in t) t[l] != Object.prototype[l] && (s += '<param name="' + l + '" value="' + t[l] + '" />');
          r.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + a + ">" + s + "</object>", 
          z[z.length] = e.id, i = h(e.id);
        } else {
          var u = g(S);
          u.setAttribute("type", P);
          for (var c in e) e[c] != Object.prototype[c] && ("styleclass" == c.toLowerCase() ? u.setAttribute("class", e[c]) : "classid" != c.toLowerCase() && u.setAttribute(c, e[c]));
          for (var d in t) t[d] != Object.prototype[d] && "movie" != d.toLowerCase() && p(u, d, t[d]);
          r.parentNode.replaceChild(u, r), i = u;
        }
        return i;
      }
      function p(e, t, n) {
        var i = g("param");
        i.setAttribute("name", t), i.setAttribute("value", n), e.appendChild(i);
      }
      function f(e) {
        var t = h(e);
        t && "OBJECT" == t.nodeName && (W.ie && W.win ? (t.style.display = "none", function() {
          4 == t.readyState ? m(e) : setTimeout(arguments.callee, 10);
        }()) : t.parentNode.removeChild(t));
      }
      function m(e) {
        var t = h(e);
        if (t) {
          for (var n in t) "function" == typeof t[n] && (t[n] = null);
          t.parentNode.removeChild(t);
        }
      }
      function h(e) {
        var t = null;
        try {
          t = R.getElementById(e);
        } catch (n) {}
        return t;
      }
      function g(e) {
        return R.createElement(e);
      }
      function v(e, t, n) {
        e.attachEvent(t, n), H[H.length] = [ e, t, n ];
      }
      function y(e) {
        var t = W.pv, n = e.split(".");
        return n[0] = parseInt(n[0], 10), n[1] = parseInt(n[1], 10) || 0, n[2] = parseInt(n[2], 10) || 0, 
        t[0] > n[0] || t[0] == n[0] && t[1] > n[1] || t[0] == n[0] && t[1] == n[1] && t[2] >= n[2] ? !0 : !1;
      }
      function b(e, t, n, i) {
        if (!W.ie || !W.mac) {
          var r = R.getElementsByTagName("head")[0];
          if (r) {
            var a = n && "string" == typeof n ? n : "screen";
            if (i && (T = null, E = null), !T || E != a) {
              var o = g("style");
              o.setAttribute("type", "text/css"), o.setAttribute("media", a), T = r.appendChild(o), 
              W.ie && W.win && typeof R.styleSheets != C && R.styleSheets.length > 0 && (T = R.styleSheets[R.styleSheets.length - 1]), 
              E = a;
            }
            W.ie && W.win ? T && typeof T.addRule == S && T.addRule(e, t) : T && typeof R.createTextNode != C && T.appendChild(R.createTextNode(e + " {" + t + "}"));
          }
        }
      }
      function w(e, t) {
        if (G) {
          var n = t ? "visible" : "hidden";
          F && h(e) ? h(e).style.visibility = n : b("#" + e, "visibility:" + n);
        }
      }
      function A(e) {
        var t = /[\\\"<>\.;]/, n = null != t.exec(e);
        return n && typeof encodeURIComponent != C ? encodeURIComponent(e) : e;
      }
      var _, x, k, I, T, E, C = "undefined", S = "object", N = "Shockwave Flash", L = "ShockwaveFlash.ShockwaveFlash", P = "application/x-shockwave-flash", D = "SWFObjectExprInst", O = "onreadystatechange", M = window, R = document, B = navigator, U = !1, V = [ i ], j = [], z = [], H = [], F = !1, q = !1, G = !0, W = function() {
        var e = typeof R.getElementById != C && typeof R.getElementsByTagName != C && typeof R.createElement != C, t = B.userAgent.toLowerCase(), n = B.platform.toLowerCase(), i = n ? /win/.test(n) : /win/.test(t), r = n ? /mac/.test(n) : /mac/.test(t), a = /webkit/.test(t) ? parseFloat(t.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : !1, o = !1, s = [ 0, 0, 0 ], l = null;
        if (typeof B.plugins != C && typeof B.plugins[N] == S) l = B.plugins[N].description, 
        !l || typeof B.mimeTypes != C && B.mimeTypes[P] && !B.mimeTypes[P].enabledPlugin || (U = !0, 
        o = !1, l = l.replace(/^.*\s+(\S+\s+\S+$)/, "$1"), s[0] = parseInt(l.replace(/^(.*)\..*$/, "$1"), 10), 
        s[1] = parseInt(l.replace(/^.*\.(.*)\s.*$/, "$1"), 10), s[2] = /[a-zA-Z]/.test(l) ? parseInt(l.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0); else if (typeof M.ActiveXObject != C) try {
          var u = new ActiveXObject(L);
          u && (l = u.GetVariable("$version"), l && (o = !0, l = l.split(" ")[1].split(","), 
          s = [ parseInt(l[0], 10), parseInt(l[1], 10), parseInt(l[2], 10) ]));
        } catch (c) {}
        return {
          w3: e,
          pv: s,
          wk: a,
          ie: o,
          win: i,
          mac: r
        };
      }();
      return function() {
        W.w3 && ((typeof R.readyState != C && "complete" == R.readyState || typeof R.readyState == C && (R.getElementsByTagName("body")[0] || R.body)) && e(), 
        F || (typeof R.addEventListener != C && R.addEventListener("DOMContentLoaded", e, !1), 
        W.ie && W.win && (R.attachEvent(O, function() {
          "complete" == R.readyState && (R.detachEvent(O, arguments.callee), e());
        }), M == top && function() {
          if (!F) {
            try {
              R.documentElement.doScroll("left");
            } catch (t) {
              return setTimeout(arguments.callee, 0), void 0;
            }
            e();
          }
        }()), W.wk && function() {
          return F ? void 0 : /loaded|complete/.test(R.readyState) ? (e(), void 0) : (setTimeout(arguments.callee, 0), 
          void 0);
        }(), n(e)));
      }(), function() {
        W.ie && W.win && window.attachEvent("onunload", function() {
          for (var e = H.length, t = 0; e > t; t++) H[t][0].detachEvent(H[t][1], H[t][2]);
          for (var n = z.length, i = 0; n > i; i++) f(z[i]);
          for (var r in W) W[r] = null;
          W = null;
          for (var a in $t) $t[a] = null;
          $t = null;
        });
      }(), {
        registerObject: function(e, t, n, i) {
          if (W.w3 && e && t) {
            var r = {};
            r.id = e, r.swfVersion = t, r.expressInstall = n, r.callbackFn = i, j[j.length] = r, 
            w(e, !1);
          } else i && i({
            success: !1,
            id: e
          });
        },
        getObjectById: function(e) {
          return W.w3 ? o(e) : void 0;
        },
        embedSWF: function(e, n, i, r, a, o, u, c, p, f) {
          var m = {
            success: !1,
            id: n
          };
          W.w3 && !(W.wk && W.wk < 312) && e && n && i && r && a ? (w(n, !1), t(function() {
            i += "", r += "";
            var t = {};
            if (p && typeof p === S) for (var h in p) t[h] = p[h];
            t.data = e, t.width = i, t.height = r;
            var g = {};
            if (c && typeof c === S) for (var v in c) g[v] = c[v];
            if (u && typeof u === S) for (var b in u) typeof g.flashvars != C ? g.flashvars += "&" + b + "=" + u[b] : g.flashvars = b + "=" + u[b];
            if (y(a)) {
              var A = d(t, g, n);
              t.id == n && w(n, !0), m.success = !0, m.ref = A;
            } else {
              if (o && s()) return t.data = o, l(t, g, n, f), void 0;
              w(n, !0);
            }
            f && f(m);
          })) : f && f(m);
        },
        switchOffAutoHideShow: function() {
          G = !1;
        },
        ua: W,
        getFlashPlayerVersion: function() {
          return {
            major: W.pv[0],
            minor: W.pv[1],
            release: W.pv[2]
          };
        },
        hasFlashPlayerVersion: y,
        createSWF: function(e, t, n) {
          return W.w3 ? d(e, t, n) : void 0;
        },
        showExpressInstall: function(e, t, n, i) {
          W.w3 && s() && l(e, t, n, i);
        },
        removeSWF: function(e) {
          W.w3 && f(e);
        },
        createCSS: function(e, t, n, i) {
          W.w3 && b(e, t, n, i);
        },
        addDomLoadEvent: t,
        addLoadEvent: n,
        getQueryParamValue: function(e) {
          var t = R.location.search || R.location.hash;
          if (t) {
            if (/\?/.test(t) && (t = t.split("?")[1]), null == e) return A(t);
            for (var n = t.split("&"), i = 0; i < n.length; i++) if (n[i].substring(0, n[i].indexOf("=")) == e) return A(n[i].substring(n[i].indexOf("=") + 1));
          }
          return "";
        },
        expressInstallCallback: function() {
          if (q) {
            var e = h(D);
            e && _ && (e.parentNode.replaceChild(_, e), x && (w(x, !0), W.ie && W.win && (_.style.display = "block")), 
            k && k(I)), q = !1;
          }
        }
      };
    }(), en = {}, tn = "video", nn = null, rn = null, an = !1, on = !1, sn = !1, ln = {}, un = 0, cn = !1, dn = 0, pn = 0, fn = !1, mn = 0, hn = "hidden", gn = {
      SUCCEED: 0,
      PLAYBACK_FAILED: 1,
      REQUEST_FAILED: 3,
      NO_AD: 4,
      NO_MEDIA: 5,
      VPAID_ERROR: 6,
      NO_DEMAND_SOURCES: 7,
      MEDIA_EXPIRED: 8
    }, vn = {
      IDLE: 0,
      LOADING: 1,
      LOADED: 2
    }, yn = "//e.thirdpresence.com/vast/v1/tracking/", bn = "//d7r7g91nimrgh.cloudfront.net/tracking/a.gif", wn = "//d1c13tt6n7tja5.cloudfront.net/static/b2.mp4", An = 36e5, _n = 60;
    return Zt.init = function(t, n, i, r) {
      if (Lt = !1, Pt = !1, gt = n, Dt = !1, kt = !1, Ft = r, xt = r && n.autoplay, vt = i, 
      Tt = [], Et = n.waterfallindex > 0 || n.waterfallstartindex > 0 || n.waterfallloopindex > 0 ? !0 : !1, 
      Ct = 3600, yt = null, pt = gt.adid, It = window.orientation + ":" + window.screen.width + ":" + window.screen.height, 
      jt = "unknown", Nt = vn.IDLE, Gt = Date.now(), St = "", zt = !1, wt = !1, qt = !1, 
      mt = t, Yt = new ThirdpresenceVASTManager_v3(), Yt.init(gt, vt, B), !pt || "null" == pt) return v("error_adtag", "", "ad id not defined", en), 
      Jt("error", "Configuration error: ad not found"), void 0;
      if (vt.isOpera() && vt.getDeviceInfo().mobile) return console.log("Opera mobile not supported"), 
      Jt("error", "Browser not supported"), void 0;
      if (Jt("loading"), Nt = vn.LOADING, mt.autoplay = gt.usecssplayer && gt.autoplay ? !0 : !1, 
      mt.muted = _t = gt.startmuted, mt.showmute = gt.showmute, gt.videoposter && !Ft && (mt.poster = gt.videoposter), 
      mt.addEventListener("canplay", E, !0), mt.addEventListener("canplaythrough", E, !0), 
      mt.addEventListener("playing", L, !0), mt.preload = vt.getDeviceInfo().mobile ? "none" : "auto", 
      vt.isMraid() && !gt.usecssplayer && (zt = !0, mt.src = gt.scheme + wn, mt.load()), 
      window.addEventListener("orientationchange", k), window.addEventListener("resize", k), 
      gt.document.addEventListener("webkitfullscreenchange", function() {
        D();
      }, !1), gt.document.addEventListener("mozfullscreenchange", function() {
        D();
      }, !1), gt.document.addEventListener("fullscreenchange", function() {
        D();
      }, !1), bt = gt.autoplay || xt, hn in gt.document ? (hn = "hidden", gt.document.addEventListener("visibilitychange", k)) : "mozHidden" in gt.document ? (hn = "mozHidden", 
      gt.document.addEventListener("mozvisibilitychange", k)) : "webkitHidden" in gt.document ? (hn = "webkitHidden", 
      gt.document.addEventListener("webkitvisibilitychange", k)) : "msHidden" in gt.document ? (hn = "msHidden", 
      gt.document.addEventListener("msvisibilitychange", k)) : "onfocusin" in gt.document ? gt.document.onfocusin = gt.document.onfocusout = k : window.onpageshow = window.onpagehide = window.onfocus = window.onblur = k, 
      ht = "undefined" != typeof gt.document[hn] ? !gt.document[hn] : !0, ht = vt.isMraid() ? ht && vt.isMraidContainerVisible(gt.ignoremraidviewable) : ht, 
      vt.isMraid() && (vt.consoleLog(gt, "mraid detected"), jt = mraid.getState(), "loading" === jt ? (vt.consoleLog(gt, "waiting for mraid to get ready on state " + mraid.getState()), 
      mraid.addEventListener("ready", O)) : O()), gt.video_url) e(gt.video_url); else if (gt.vast_url) Yt.load(gt.vast_url, pt, null, null, 1e4, !0); else if (gt.demandsources && gt.demandsources.fall.length > 0) {
        Tt = gt.demandsources.fall;
        var o = gt.demandsources.replaycount;
        Ct = o ? o - 1 : 3600, St = "waterfall", Tt ? a() || R(gn.NO_DEMAND_SOURCES) : (v("error_adtag", "", "no demand sources found", en), 
        Jt("error", "Configuration error: no demand sources found"));
      } else if (gt.vast) {
        var s = {};
        s.vast = gt.vast, s.wrapperCount = 0, Yt.load(null, pt, null, s, 1e4, !0);
      } else {
        var l = vt.createVASTURL(gt, !1, pt, null);
        Yt.load(l, pt, null, null, 1e4, !0);
      }
      m();
    }, Zt.cleanup = function() {
      mt && (mt.removeEventListener("timeupdate", T, !0), mt.removeEventListener("canplay", E, !0), 
      mt.removeEventListener("canplaythrough", E, !0), mt.removeEventListener("ended", C, !0), 
      mt.removeEventListener("pause", L, !0), mt.removeEventListener("play", L, !0), mt.removeEventListener("playing", L, !0), 
      mt.removeEventListener("loadedmetadata", P, !0), mt.removeEventListener("error", S, !0), 
      mt.removeEventListener("volumechange", N, !0)), vt.isMraid() && (mraid.removeEventListener("viewableChange", I), 
      mraid.removeEventListener("stateChange", I), mraid.removeEventListener("sizeChange", I), 
      mraid.removeEventListener("error", M)), window.removeEventListener("orientationchange", k), 
      window.removeEventListener("resize", k), hn in gt.document ? (hn = "hidden", gt.document.removeEventListener("visibilitychange", k)) : "mozHidden" in gt.document ? (hn = "mozHidden", 
      gt.document.removeEventListener("mozvisibilitychange", k)) : "webkitHidden" in gt.document ? (hn = "webkitHidden", 
      gt.document.removeEventListener("webkitvisibilitychange", k)) : "msHidden" in gt.document && (hn = "msHidden", 
      gt.document.removeEventListener("msvisibilitychange", k)), mt = null;
    }, Zt.getSkipOffset = function() {
      return en && en.skipoffset ? gt.closedelaymax ? Math.min(en.skipoffset, gt.closedelaymax) : en.skipoffset : gt.closedelaymax || 0;
    }, Zt.getBufferedPercentage = function() {
      return mn;
    }, Zt.canSkip = function() {
      var e = Zt.getSkipOffset();
      if (e >= 0) {
        var t = mt.currentTime;
        return t >= e ? !0 : !1;
      }
      return !1;
    }, Zt.skip = function() {
      Zt.canSkip() && (Jt("skipped"), n());
    }, Zt.stop = function() {
      qt = !0, n();
    }, Zt.setDelegate = function(e) {
      Jt = e;
    }, Zt.getState = function() {
      var e = "loading";
      return Nt !== vn.LOADED || sn || ("flash" === tn ? e = "playing" : "js" === tn ? e = !on && an || Zt.getLinear() && (an || Lt) ? "paused" : "playing" : mt && (e = wt ? "loading" : !mt.paused || mt.ended && !Lt ? "playing" : "paused")), 
      e;
    }, Zt.getDuration = function() {
      var e = 0;
      if (Nt === vn.LOADED && !sn) if (en.duration && (e = en.duration ? en.duration : 0), 
      "js" === tn || "flash" === tn) {
        if (nn && nn.getAdDuration) {
          var t = nn.getAdDuration();
          t > 0 && (e = t);
        }
        e = Math.min(e, en.vpaidmaxplaytime || _n);
      } else e = mt.duration > 0 ? mt.duration : e;
      return vt.consoleLog(gt, "getDuration: " + e), e;
    }, Zt.getRemainingTime = function() {
      var e = 0;
      if (Nt === vn.LOADED && !sn) {
        var t = Zt.getDuration();
        e = t, "js" === tn ? Zt.getLinear() && nn && nn.getAdRemainingTime && (e = nn.getAdRemainingTime(), 
        (0 >= e || e > t) && (e = t)) : "flash" !== tn && (e = t - mt.currentTime, e = Math.max(0, parseFloat(e.toPrecision(12)))), 
        vt.consoleLog(gt, "getRemainingTime: " + e);
      }
      return e;
    }, Zt.getLinear = function() {
      return "js" === tn && nn && nn.getAdLinear ? nn.getAdLinear() : !0;
    }, Zt.getExpanded = function() {
      return "js" === tn && nn && nn.getExpanded ? nn.getAdExpanded() : !1;
    }, Zt.togglePlayPause = function() {
      if (vt.consoleLog(gt, "togglePlayPause"), Nt === vn.IDLE) f(!0); else if (Nt === vn.LOADING) bt = !0; else if (c()) {
        if ("flash" === tn) {
          var e = gt.document.getElementById("VPAIDPlayer" + gt.tagId);
          e ? e.play() : f(!0);
        } else if ("js" === tn) nn && !sn ? on ? an ? (nn.resumeAd(), an = !1) : (nn.pauseAd(), 
        an = !0) : (V(), an = !1) : f(!0); else if (mt) {
          if (wt) return;
          mt.paused ? (Jt("playing"), Lt = !1, Lt && (mt.style.display = "block"), wt = bt = !0, 
          t()) : mt.pause();
        }
      } else R(gn.MEDIA_EXPIRED);
    }, Zt.isPlayPending = function() {
      return bt;
    }, Zt.toggleMute = function(e) {
      if ("flash" === tn) {
        var t = gt.document.getElementById("VPAIDPlayer" + gt.tagId);
        if (t && t.isMuted) {
          var n = t.isMuted();
          n ? t.unmute() : t.mute(), _t = !n, e || _(n ? "unmute" : "mute", null, en);
        }
      } else mt && (mt.muted = _t = !mt.muted, e || _(mt.muted ? "mute" : "unmute", null, en));
    }, Zt.isMuted = function() {
      if ("flash" === tn) {
        var e = gt.document.getElementById("VPAIDPlayer" + gt.tagId);
        e && e.isMuted && (_t = e.isMuted());
      } else mt && (_t = mt.muted);
      return _t;
    }, Zt.setVolume = function(e) {
      if ("flash" === tn) {
        var t = gt.document.getElementById("VPAIDPlayer" + gt.tagId);
        if (t && t.isMuted) {
          var n = t.isMuted();
          n && e > 0 ? (t.unmute(), _t = !1) : n || 0 !== e || (t.mute(), _t = n);
        }
      } else mt && (mt.muted = _t = e > 0 ? !1 : !0, mt.volume = e);
    }, Zt.getVolume = function() {
      var e = 0;
      if ("flash" === tn) {
        var t = gt.document.getElementById("VPAIDPlayer" + gt.tagId);
        if (t && t.isMuted) {
          var n = t.isMuted();
          e = n ? 0 : 1;
        }
      } else if (mt) return mt.volume;
      return e;
    }, Zt.resize = function(e, t, n, i, r, a) {
      if ("flash" !== tn) {
        if (a || (mt.style.zIndex = r ? 2147483647 : -1), gt.document.getElementById("tpr_ad_container" + gt.tagId).style.zIndex = 0, 
        "js" === tn && nn && !sn && !r) {
          rn.style.left = "0px", rn.style.top = "0px";
          var o = r ? "fullscreen" : "normal";
          nn.resizeAd(e, t, o);
        }
        mt.width = e, mt.height = t, a || r || (mt.style.width = e + "px", mt.style.height = t + "px", 
        mt.style.position = "absolute", mt.style.top = n + "px", mt.style.left = i + "px");
      }
    }, Zt.isVPAID = function() {
      return "js" === tn || "flash" === tn;
    }, Zt.isVPAIDActive = function() {
      return "js" === tn && on && !sn;
    }, Zt.getClickThroughUrl = function(e) {
      var t = null;
      return e ? gt.secondaryaction_clickthrough ? t = gt.secondaryaction_clickthrough : en.companion && en.companion.CompanionClickThrough && en.companion.CompanionClickThrough.url ? t = en.companion.CompanionClickThrough.url : gt.landingpage_url && (t = gt.landingpage_url) : en.url ? t = en.url : gt.landingpage_url && (t = gt.landingpage_url), 
      t && /^http(s)?%3A%2F%2F/.test(t) && (t = decodeURIComponent(t)), t && (gt.ext_clicktracker_url && (t = gt.ext_clicktracker_url + encodeURIComponent(t)), 
      t = vt.replaceMacros(gt, t, en, pt, yt)), t;
    }, Zt.sendVisibleTracking = function() {
      _("viewable", null, en);
    }, Zt.sendClickTracking = function(e) {
      if (!en.clicktracked) if (en.clicktracked = !0, e) gt.secondaryaction_clickthrough ? (gt.secondaryaction_clicktracking && x(gt.secondaryaction_clicktracking, null, en), 
      _("secondary_click", null, en)) : en.companion && en.companion.CompanionClickTracking && x(en.companion.CompanionClickTracking, null, en); else {
        if (en.clickTracks) {
          var t;
          for (t = 0; t < en.clickTracks.length; ++t) x(en.clickTracks[t], null, en);
        }
        gt.ext_clicktracker_pixel_url && x(gt.ext_clicktracker_pixel_url, null, en);
      }
      Jt("clickthrough");
    }, Zt.getCompanionAd = function() {
      var e = en.companion;
      return e && e.StaticResource && e.StaticResource.url ? e.StaticResource.url : null;
    }, Zt.getFallbackAdTagInfo = function() {
      return ft;
    }, Zt.getAdType = function() {
      return St;
    }, Zt.isExpired = function() {
      return Pt;
    }, Zt.restart = function() {
      Ct = Ct || 1, f(!0);
    }, Zt.getCurrentAdInfo = function() {
      return yt ? o(yt) : null;
    }, V = function() {
      if (nn && !sn) {
        Ft || (mt.style.display = "block"), vt.consoleLog(gt, "js_playVideo"), nn.startAd();
        var e = vt.getContainerSize(gt);
        nn && nn.resizeAd(e.w, e.h, "normal");
      }
    }, j = function() {
      vt.consoleLog(gt, "js_stop"), sn || (nn ? (H(), Wt = setTimeout(function() {
        Q();
      }, 2e3), nn.stopAd()) : Q());
    }, q = function() {
      vt.consoleLog(gt, "vpaid_adImpression"), g(!0, !0);
    }, G = function() {
      vt.consoleLog(gt, "vpaid_adLoaded"), Nt = vn.LOADED, an = !1, Jt("loaded"), Jt("metadataready"), 
      rn.style.left = "0px", rn.style.top = "0px", "js" === tn && (nn.setAdVolume(_t ? 0 : mt.volume), 
      (!vt.getDeviceInfo().mobile || gt.usecssplayer || vt.isMraid() || xt || Ft) && bt && ht ? V() : (an = !0, 
      Jt("paused")));
    }, W = function() {
      vt.consoleLog(gt, "vpaid_adStarted: " + Zt.getLinear() + " : " + Zt.getExpanded()), 
      gt.document.getElementById("tpr_video_overlay" + gt.tagId).style.pointerEvents = "none", 
      gt.document.getElementById("tpr_mute_btn" + gt.tagId).style.pointerEvents = "auto", 
      an = !1, on = !0, xt = !0, mt.loop = !1, Dt = !0, "js" === tn && r(), Jt("playing"), 
      setTimeout(function() {
        gt.usecssplayer || mt.paused || mt.error || 0 != mt.currentTime || mt.play();
      }, 1e3), z();
    }, X = function() {
      vt.consoleLog(gt, "vpaid_adPlaying"), gt.document.getElementById("tpr_video_overlay" + gt.tagId).style.pointerEvents = "none", 
      gt.document.getElementById("tpr_mute_btn" + gt.tagId).style.pointerEvents = "auto", 
      an = !1, Jt("playing"), z();
    }, K = function() {
      vt.consoleLog(gt, "vpaid_adPaused"), an = !0, Jt("paused"), H();
    }, Q = function() {
      vt.consoleLog(gt, "vpaid_adStopped"), H(), sn || (sn = !0, Nt = vn.IDLE, setTimeout(function() {
        dt(function(e) {
          if (e) sn = !1, on = !1, fn ? (fn = !1, R(gn.VPAID_ERROR, "VPAID error")) : gt.autoreplay && "waterfall" !== St && !qt ? f(!0) : R(gn.SUCCEED); else if (mt) return setTimeout(function() {
            Q();
          }, 100), void 0;
        });
      }, 500));
    }, J = function() {
      Jt("skipped");
    }, Z = function() {
      vt.consoleLog(gt, "vpaid_adVideoStart"), Mt = !0, an = !1, Jt("playing");
    }, $ = function() {
      vt.consoleLog(gt, "vpaid_adVideoFirstQuartile"), _("firstQuartile", null, en), Rt = !0;
    }, et = function() {
      vt.consoleLog(gt, "vpaid_adVideoMidpoint"), _("midpoint", null, en), Bt = !0;
    }, tt = function() {
      vt.consoleLog(gt, "vpaid_adVideoThirdQuartile"), _("thirdQuartile", null, en), Ut = !0;
    }, nt = function() {
      cn = !0, Lt || (vt.consoleLog(gt, "vpaid_adVideoComplete"), _("complete", null, en), 
      Vt = !0);
    }, ut = function() {
      Zt.sendClickTracking(!1);
    }, ct = function() {
      _t = Zt.isMuted(), Jt("volumechanged");
    }, Y = function(e, t, n) {
      if (H(), vt.consoleLog(gt, "vpaid_adClickThru"), n) {
        e && (en.url = e, Jt("clickurlupdated"));
        var i = gt.document.getElementById("tpr_click_tracker" + gt.tagId), r = gt.document.createEvent("MouseEvents");
        r.initEvent("click", !0, !0), i.dispatchEvent(r);
      }
    }, it = function(e) {
      H(), vt.consoleLog(gt, "vpaid_adError"), v("error_vpaid", "", "error detail: " + e, en), 
      fn = !0, n();
    }, rt = function(e) {
      vt.consoleLog(gt, "vpaid_adDurationChange: " + e), z(), Jt && Jt("durationchange");
    }, at = function() {
      vt.consoleLog(gt, "vpaid_adLinearChange: " + nn.getAdLinear()), z(), Jt && Jt("linearchange");
    }, ot = function() {
      vt.consoleLog(gt, "vpaid_adExpandedChange: " + nn.getAdExpanded()), Jt && Jt("expandedchange");
    }, st = function() {
      vt.consoleLog(gt, "vpaid_adSkippableStateChange: " + nn.getAdSkippableState()), 
      Jt && Jt("skippablestatechange");
    }, lt = function(e) {
      vt.consoleLog(gt, "vpaid_adLog:" + e);
    }, z = function() {
      if (H(), !sn) {
        var e = 1e3 * (Zt.getRemainingTime() + 1);
        vt.consoleLog(gt, "vpaid_setPlayTimer: " + e), Wt = setTimeout(function() {
          F(!0);
        }, e), "undefined" != typeof Qt && clearTimeout(Qt), pn = dn === Zt.getRemainingTime() ? pn + 1 : 0, 
        dn = Zt.getRemainingTime(), 15 > pn && (Qt = setTimeout(z, 1e3));
      }
    }, H = function() {
      Wt && (clearTimeout(Wt), Wt = null);
    }, F = function(e) {
      vt.consoleLog(gt, "VPAID timeout: " + e), Wt = null, e ? n() : it("swf player timeout");
    }, Zt.swf_adLoaded = function(e) {
      G(e);
    }, Zt.swf_adStarted = function(e) {
      W(e);
    }, Zt.swf_adStopped = function(e) {
      Q(e);
    }, Zt.swf_adImpression = function(e) {
      q(e);
    }, Zt.swf_adVideoStart = function(e) {
      Z(e);
    }, Zt.swf_adVideoFirstQuartile = function(e) {
      $(e);
    }, Zt.swf_adVideoMidpoint = function(e) {
      et(e);
    }, Zt.swf_adVideoThirdQuartile = function(e) {
      tt(e);
    }, Zt.swf_adVideoComplete = function(e) {
      nt(e);
    }, Zt.swf_adClickThruTracking = function(e) {
      ut(e);
    }, Zt.swf_adClickThru = function(e) {
      Y(e);
    }, Zt.swf_adError = function(e) {
      it(e);
    }, Zt.swf_adDurationChange = function(e) {
      rt(e);
    }, dt = function(e) {
      if (H(), !mt) return !0;
      if (gt.document.getElementById("tpr_video_overlay" + gt.tagId).style.pointerEvents = "auto", 
      gt.document.getElementById("tpr_mute_btn" + gt.tagId).style.pointerEvents = "auto", 
      "flash" === tn) {
        var t = gt.document.getElementById("VPAIDPlayer" + gt.tagId);
        t && (t.style.display = "none", t.stop && t.stop()), setTimeout(function() {
          if ($t.removeSWF("VPAIDPlayer" + gt.tagId), tn = "video", null === gt.document.getElementById("VPAIDPlayer" + gt.tagId)) {
            var t = gt.document.getElementById("tpr_vpaid_container" + gt.tagId);
            if (t) for (;t.hasChildNodes(); ) t.removeChild(t.lastChild);
            e(!0);
          } else e(!1);
        }, 1e3);
      } else "js" === tn ? (U(!0), ln.slot = null, ln.videoSlot = null, setTimeout(function() {
        var t = gt.document.getElementById("tpr_vpaid_container" + gt.tagId);
        if (t) for (;t.hasChildNodes(); ) t.removeChild(t.lastChild);
        nn = null, rn = null, tn = "video", mt && mt.resetState && mt.resetState(), e(!0);
      }, 1e3)) : e(!0);
    }, k = function(e) {
      var n = {
        focus: !0,
        focusin: !0,
        pageshow: !0,
        blur: !1,
        focusout: !1,
        pagehide: !1
      }, i = e || window.event;
      if (ht = i && i.type in n ? n[i.type] : this[hn] ? !1 : !0, ht = vt.isMraid() ? ht && vt.isMraidContainerVisible(gt.ignoremraidviewable) : ht, 
      vt.consoleLog(gt, "onVisiblityChanged: " + ht), D(), vt.isMraid() || !vt.isIphone() || gt.usecssplayer) {
        if ("video" === tn) mt && (Jt && Jt("visibilitychanged", ht), ht ? mt.paused && !Lt && bt && t() : mt.paused || (bt = !0, 
        mt.pause())); else if ("flash" === tn) {
          Jt && Jt("visibilitychanged", ht);
          var r = gt.document.getElementById("VPAIDPlayer" + gt.tagId);
          r && (ht ? Mt && !Lt && r.play() : r.pause());
        } else "js" === tn && (Jt && Jt("visibilitychanged", ht), nn && !sn && (ht ? an && !Lt && (on ? (nn.resumeAd(), 
        an = !1, vt.consoleLog(gt, "resuming js"), Jt("playing")) : bt && (V(), an = !1)) : an || (nn.pauseAd(), 
        an = !0, vt.consoleLog(gt, "pausing js"), Jt("paused"))));
        !bt && !wt || Ft || g();
      }
    }, T = function() {
      vt.consoleLog(gt, "onProgressUpdate " + this.id);
      var e = 0, t = 0, n = 0;
      if (e = mt.currentTime, t = mt.duration, n = Math.floor(100 / t * e), vt.consoleLog(gt, "onProgressUpdate: " + e + "/" + t), 
      e > 0 && (zt = !1), Nt === vn.LOADED) {
        if (Jt && Jt("progress", n), "video" !== tn) return;
        e > 0 && ht && (g(!0), bt = !1, wt = !1), !en.skipenabled && e >= Zt.getSkipOffset() && (en.skipenabled = !0, 
        Jt("skippablestatechange")), Mt || (Mt = !0, xt = !0, vt.log(gt, "Player started")), 
        !Rt && e >= t / 4 && (Rt = !0, _("firstQuartile", null, en), vt.log(gt, "Player firstQ")), 
        !Bt && e >= t / 2 && (Bt = !0, _("midpoint", null, en), vt.log(gt, "Player midpoint")), 
        !Ut && e >= 3 * (t / 4) && (Ut = !0, _("thirdQuartile", null, en), vt.log(gt, "Player thirdQ")), 
        !Lt && t > 1 && e >= t - 1 && (Xt || (Xt = setTimeout(function() {
          Xt = null, C();
        }, 2e3)));
      }
    }, E = function() {
      if (vt.consoleLog(gt, "onVideoReady"), "js" !== tn && "flash" !== tn) {
        if ("video" === tn) {
          if (mt.src == Ht && (bt = bt || gt.autoplay), Nt === vn.LOADED) return;
          mt.src == Ht && (Nt = vn.LOADED, Jt("loaded"), Jt("durationchange"));
        }
        Nt !== vn.LOADED || wt ? Jt("starting") : Jt("paused"), wt && !Ft && g(), t();
      }
    }, C = function() {
      "js" !== tn && (Xt && (clearTimeout(Xt), Xt = null), vt.consoleLog(gt, "onVideoCompleted"), 
      !Vt && Mt && Ut && (Vt = !0, _("complete", null, en)), Lt || Nt !== vn.LOADED || (vt.log(gt, "Player finished", ""), 
      gt.autoreplay && "waterfall" !== St && !qt ? f() : R(gn.SUCCEED)));
    }, L = function() {
      if (vt.consoleLog(gt, "onPlayStateChanged - paused: " + mt.paused), Mt || gt.usecssplayer !== !1 || xt || (mt.muted = gt.startmuted), 
      "js" === tn) {
        if (sn || !on) return;
        an = mt.paused;
      }
      Jt && Nt === vn.LOADED && (setTimeout(function() {
        Jt("resize", It);
      }, 100), mt.paused ? Jt("paused") : Jt("playing"));
    }, P = function() {
      vt.consoleLog(gt, "metadata ready"), Jt && Jt("metadataready");
    }, S = function() {
      if ("js" !== tn) {
        vt.consoleLog(gt, "video error");
        var t = mt.error && mt.error.code ? mt.error.code : "NA";
        if (v("error_playback", t, "error code: " + t + " src: " + mt.src, en), yt) {
          var n = o(yt);
          n && (n.errorCount += 1);
        }
        en && en.fallbackSrc ? (e(en.fallbackSrc), en.fallbackSrc = null) : R(gn.PLAYBACK_FAILED, "Media playback error: " + t);
      }
    }, N = function() {
      Jt("volumechange");
    }, D = function() {
      vt.consoleLog(gt, "onResize");
      var e = vt.mraidExpandSize(), n = window.orientation + ":" + window.screen.width + ":" + window.screen.height + ":" + gt.document.body.clientWidth + ":" + gt.document.body.clientHeight;
      e.width && e.height && (n = n + ":" + e.width + ":" + e.height), n !== It && (vt.consoleLog(gt, "Window size changed: " + n), 
      It = n, Jt && (setTimeout(function() {
        Jt("resize", It);
      }, 100), setTimeout(D, 3e3))), zt && (vt.consoleLog(gt, "nativePlayPending: play video"), 
      t());
    }, M = function(e) {
      vt.consoleLog(gt, "onMraidError " + (e || ""));
    }, O = function() {
      vt.consoleLog(gt, "onMraidReady - placement type: " + mraid.getPlacementType()), 
      jt = "default", mraid.removeEventListener("ready", O), mraid.addEventListener("viewableChange", I), 
      mraid.addEventListener("stateChange", I), mraid.addEventListener("sizeChange", I), 
      mraid.addEventListener("error", M), !gt.autoexpand && "undefined" == typeof window.smaato_bridge || "inline" !== mraid.getPlacementType() || (kt = !0, 
      mraid.expand()), Jt && Jt("mraidready"), k(), vt.isAndroid() && t();
    }, I = function(e) {
      vt.consoleLog(gt, "onMraidStateChange");
      var t = mraid.getState();
      vt.consoleLog(gt, "mraid state change from " + jt + " to " + t), "hidden" !== t || Lt || (vt.consoleLog(gt, "Ad closed while not completed"), 
      _("close", null, en)), "video" === tn && kt && "default" === t && mt.pause(), jt = t, 
      setTimeout(function() {
        k(e);
      }, 100);
    }, R = function(e, t) {
      if (!Ft && mt && (mt.style.display = "none"), Kt && (clearTimeout(Kt), Kt = null), 
      qt) return ft = null, p(), Jt("ended"), void 0;
      if (vt.log(gt, "Player finished", e + ":" + t), vt.consoleLog(gt, "Player finished", e + ":" + t), 
      (e !== gn.SUCCEED || gt.waterfallplaythrough) && "waterfall" === St && !At && !qt) {
        if (bt = bt || xt, yt = null, d()) return;
        if (ft) return Lt = !0, Dt = !0, Jt("fallbackadavailable", ft), void 0;
        if (l()) return At = !0, void 0;
      }
      return gt.autoreplay && "waterfall" === St && !qt ? (f(), void 0) : (Dt || (e = gn.NO_AD, 
      t = "No fill"), Lt = !0, Jt && (e ? (vt.consoleLog(gt, "playback completed with error: " + t), 
      Jt("error", t)) : (vt.consoleLog(gt, "playback completed"), Jt("ended"))), void 0);
    }, B = function(e, t) {
      var n = !1;
      if ("request_started" === e && t.dsid && 1 === t.data.wrapperCount && h(t.dsid, t.data), 
      "request_complete" === e) "waterfall" === t.data.adType ? (St = t.data.adType, Tt = t.data.fallbackInfos, 
      Ct = t.data.maxAutoReplayCount, a(), Yt.remove(t.requestId)) : yt || d() || (n = !0); else if ("request_failed" === e) {
        if (t.dsid && 1 === t.errorCode && !Dt) {
          var i = o(t.dsid);
          i && (i.errorCount += 1);
        }
        2 === t.errorCode && _("error", 100, t.data), 5 !== t.errorCode && v("error_vast_error", t.errorCode, t.errorText, t.data), 
        Yt.remove(t.requestId), yt || d() || (n = !0);
      }
      n && (Dt ? R(gn.SUCCEED) : R(gn.NO_AD, "No fill"));
    }, o = function(e) {
      for (i = 0; i < Tt.length; ++i) {
        var t = Tt[i];
        if (t && t.adid === e) return t;
      }
      return null;
    }, c = function() {
      if (en.valid && !Mt) {
        var e = new Date(en.valid), t = new Date();
        if (t > e) return !1;
      }
      return !0;
    }, d = function() {
      p();
      for (var t = !1, n = Yt.getRequests(), i = 0; i < n.length; i++) {
        var r = n[i];
        if (r.completed && r.data.src) {
          en = r.data, yt = r.dsid, tn = en.mediaType || "video", Yt.remove(r.requestId), 
          t = !0, e(en.src);
          break;
        }
        r.completed || r.cancelled || (t = !0);
      }
      return t;
    }, l = function() {
      var e;
      for (e = 0; e < Tt.length; ++e) {
        var t = Tt[e];
        if ("STATIC" === t.type) {
          var n = t.enabled;
          if (t.errorCount = t.errorCount || 0, n && t.errorCount < 20) {
            var i = t.adid ? t.adid : null, r = {};
            r.price = t.price || 0, r.requestTimeout = t.timeout > 0 ? 1e3 * t.timeout : 5e3, 
            r.vpaidTimeout = t.vpaidtimeout > 0 ? 1e3 * t.vpaidtimeout : 1e4, r.vpaidmaxplaytime = t.vpaidmaxplaytime ? t.vpaidmaxplaytime : _n, 
            r.tagImpression = t.tagImpression || null, r.wrapperCount = 0, r.skipenabled = !1, 
            r.vast = t.vast;
            var a = t.url ? t.url : vt.createVASTURL(gt, !1, i, null, pt);
            return Yt.load(a, pt, i, r, r.requestTimeout, !0, 0), !0;
          }
          break;
        }
      }
      return !1;
    }, s = function() {
      var e = !1;
      if (Tt) for (var t = -1; t < Tt.length - 1; ) {
        t += 1;
        var n;
        for (n = 0; n < Tt.length; ++n) {
          var i = Tt[n];
          if (i && i.order === t) {
            var r = i.enabled;
            i.errorCount = i.errorCount || 0, Et && r && (-1 !== gt.waterfallloopindex ? r = gt.waterfallloopindex <= t : -1 !== gt.waterfallstartindex ? (r = gt.waterfallstartindex <= t, 
            r && (Et = !1)) : r = gt.waterfallindex === t);
            var a = Date.now(), o = "STATIC" === i.type || "ADTAG" === i.type ? 0 : Math.max(i.replayIntervalMin || 30, 5), s = "STATIC" === i.type || "ADTAG" === i.type ? 0 : Math.max(i.requestIntervalMin || 5, 5);
            if (!r || i.lastImpressionTS + 1e3 * o > a || i.lastRequestTS + 1e3 * s > a || i.errorCount > 20) vt.consoleLog(gt, "skipping item at index: " + n); else if ("ADTAG" === i.type) u(i); else if ("STATIC" !== i.type) {
              var l = i.adid ? i.adid : null, c = {};
              c.price = i.price || 0, c.requestTimeout = i.timeout > 0 ? 1e3 * i.timeout : 5e3, 
              c.vpaidTimeout = i.vpaidtimeout > 0 ? 1e3 * i.vpaidtimeout : 1e4, c.vpaidmaxplaytime = i.vpaidmaxplaytime ? i.vpaidmaxplaytime : _n, 
              c.tagImpression = i.tagImpression || null, c.wrapperCount = 0, c.vast = i.vast;
              var d = i.url ? i.url : vt.createVASTURL(gt, !1, l, null, pt);
              i.lastRequestTS = Date.now(), Yt.load(d, pt, l, c, c.requestTimeout, !0, i.tier), 
              e = !0, Jt("demandrequest");
            }
          }
        }
      }
      return e;
    }, u = function(e) {
      ft = {
        tag: decodeURIComponent(e.tag),
        timeout: e.timeout > 0 ? 1e3 * e.timeout : null,
        impressionUrl: gt.scheme + yn + gt.account + "/" + pt + "?ts=" + Date.now() + b("fallbacktagimpression")
      };
    }, p = function() {
      en = {}, ln = {}, an = !1, on = !1, sn = !1, yt = null, Ht = null, Nt = vn.IDLE, 
      Ot = !1, Mt = !1, Rt = !1, Bt = !1, Ut = !1, Vt = !1, qt = !1, mn = 0;
    }, f = function(e) {
      if (Date.now() < Gt + An || e) if (Lt = !1, bt = !0, ft = null, Dt = !1, At = !1, 
      p(), Jt("loading"), "waterfall" === St) {
        if (0 >= Ct) return vt.consoleLog(gt, "Maximum waterfall loop count reached"), Pt = !0, 
        Jt("ended"), void 0;
        Ct--;
        var t = Ot || e ? 0 : gt.waterfallloopdelay;
        setTimeout(function() {
          s() || (vt.consoleLog(gt, "No valid waterfall item found, restart"), f());
        }, t);
      } else {
        var n = vt.createVASTURL(gt, !1, pt);
        Yt.load(n, pt, null, null, 1e4, !0);
      } else Pt = !0, Jt("ended");
    }, A = function() {
      vt.consoleLog(gt, "checkJSLoaded");
      var e = rn.contentWindow || rn, t = e.getVPAIDAd;
      if (t && "function" == typeof t) vt.consoleLog(gt, "js vpaid: fn: '" + t + "'"), 
      nn = t(), vt.consoleLog(gt, "js vpaid: creative: '" + nn + "'"); else if (10 > un) return un++, 
      setTimeout(function() {
        A();
      }, 100), void 0;
      if (nn) {
        vt.consoleLog(gt, "js vpaid: got creative"), U(!1), vt.consoleLog(gt, "js vpaid: callbacks subscribed");
        var n = gt.document.getElementById("tpr_vpaid_container" + gt.tagId);
        ln.slot = n, ln.videoSlot = mt, ln.videoSlotCanAutoPlay = !0;
        var i = vt.getContainerSize(gt), r = {
          AdParameters: en.adParams
        };
        nn.initAd(i.w, i.h, "normal", 300, r, ln), vt.consoleLog(gt, "js vpaid: ad inited");
      } else it("cannot initialize JS VPAID creative");
    }, U = function(e) {
      if (nn) {
        var t = {
          AdImpression: q,
          AdLoaded: G,
          AdStarted: W,
          AdPlaying: X,
          AdPaused: K,
          AdStopped: Q,
          AdSkipped: J,
          AdClickThru: Y,
          AdVideoStart: Z,
          AdVideoFirstQuartile: $,
          AdVideoMidpoint: et,
          AdVideoThirdQuartile: tt,
          AdVideoComplete: nt,
          AdDurationChange: rt,
          AdLinearChange: at,
          AdExpandedChange: ot,
          AdSkippableStateChange: st,
          AdError: it,
          AdLog: lt,
          AdVolumeChange: ct
        };
        try {
          for (var n in t) e ? nn.unsubscribe(t[n], n) : nn.subscribe(t[n], n);
        } catch (i) {}
      }
    }, e = function(e) {
      if (vt.consoleLog(gt, "prepareVideo: " + e), !c()) return R(gn.MEDIA_EXPIRED), void 0;
      Ht = e.replace(/\/\/m\.cdn\.cloud\.thirdpresence\.com/gi, "//d1c13tt6n7tja5.cloudfront.net"), 
      Nt = vn.LOADING, bt = bt || xt || gt.autoplay, Jt("preparing");
      var t = gt.document.getElementById("tpr_vpaid_container" + gt.tagId);
      if ("flash" === tn) {
        Ft || (mt.style.display = "none"), t.style.display = "block";
        var n = gt.document.createElement("div");
        n.id = "tpr_video_swf" + gt.tagId, n.style.zIndex = 5, n.style.width = "100%", n.style.height = "100%", 
        t.appendChild(n);
        var i = {
          swfSource: encodeURIComponent(Ht),
          startMuted: _t,
          autoReplay: gt.autoreplay && "waterfall" !== St,
          adParams: encodeURIComponent(en.adParams),
          tagId: gt.tagId,
          consoleLogging: "none" !== gt.debug ? "true" : "false"
        }, a = {
          menu: "false",
          scale: "noScale",
          allowFullscreen: "true",
          allowScriptAccess: "always",
          bgcolor: "#000000",
          wmode: "opaque"
        }, o = {
          id: "VPAIDPlayer" + gt.tagId
        };
        H();
        var s = en.vpaidTimeout || 1e4;
        return Wt = setTimeout(function() {
          F(!1);
        }, s), $t.embedSWF(gt.scheme + "//d1c13tt6n7tja5.cloudfront.net/players/tpr-vpaid-player/v7/VPAIDPlayer.swf", "tpr_video_swf" + gt.tagId, "100%", "100%", "10.0.0", gt.scheme + "//drl1rvlm11uo1.cloudfront.net/mobiletag/vpaid/expressInstall.swf", i, a, o, function(e) {
          H(), e.success ? (document.getElementById("tpr_video_overlay" + gt.tagId).style.pointerEvents = "none", 
          document.getElementById("tpr_mute_btn" + gt.tagId).style.pointerEvents = "auto") : swf_adError("Failed to init swf");
        }), Jt("vpaidloading"), void 0;
      }
      return Ft || (mt.style.display = "block"), "js" === tn ? (Ft || (mt.src = gt.scheme + wn), 
      t.style.display = "block", rn = gt.document.createElement("iframe"), rn.id = "tpr_video_js_iframe" + gt.tagId, 
      rn.style.zIndex = 0, rn.style.left = "0px", rn.style.top = "0px", rn.style.width = "100%", 
      rn.style.height = "100%", rn.style.backgroundColor = "transparent", rn.style.borderWidth = "0", 
      t.appendChild(rn), rn.contentDocument.write(vt.decodeHTML("&lt;body&gt;&lt;script src=&quot;" + Ht + "&quot;&gt;&lt;/script&gt;&lt;/body&gt;")), 
      Jt("vpaidloading"), vt.consoleLog(gt, "js vpaid: init dom done"), un = 0, setTimeout(function() {
        A();
      }, 100), void 0) : (Dt = !0, t.style.display = "none", mt.addEventListener("timeupdate", T, !0), 
      mt.addEventListener("canplay", E, !0), mt.addEventListener("canplaythrough", E, !0), 
      mt.addEventListener("ended", C, !0), mt.addEventListener("pause", L, !0), mt.addEventListener("play", L, !0), 
      mt.addEventListener("playing", L, !0), mt.addEventListener("loadedmetadata", P, !0), 
      mt.addEventListener("error", S, !0), mt.addEventListener("volumechange", N, !0), 
      mt.loop = !1, mt.src = Ht, mt.load(), r(), "none" !== mt.preload || gt.usecssplayer || setTimeout(function() {
        E();
      }, 1e3), !bt && !wt || Ft || g(), void 0);
    }, r = function() {
      Kt && (clearTimeout(Kt), Kt = null), Kt = setTimeout(function() {
        if (Kt = null, mt && mt.buffered) {
          var e = mt.buffered.length;
          if (e > 0) {
            var t = mt.duration, n = mt.buffered.end(e - 1), i = t > 0 ? 100 * (n / t) : 0;
            if (i !== mn && (mn = i, Jt("buffering", i)), i >= 100) return;
          }
          r();
        }
      }, 250);
    }, t = function() {
      "js" !== tn && "flash" !== tn && (Ft || (mt.style.display = "block"), vt.consoleLog(gt, "doPlayVideo: " + mt.src + ":" + bt + ":" + ht), 
      mt.src && bt && (ht || Nt === vn.LOADING && zt) && (vt.consoleLog(gt, "trying to to play"), 
      mt.play()));
    }, n = function() {
      if ("js" === tn) j(); else if ("flash" === tn) {
        var e = gt.document.getElementById("VPAIDPlayer" + gt.tagId);
        e && e.stop ? (Wt = setTimeout(function() {
          Q();
        }, 2e3), e.stop()) : Q();
      } else mt && (mt.pause(), Ft || (mt.src = gt.scheme + wn)), R(gn.SUCCEED);
    }, _ = function(e, t, n) {
      if (n.events) {
        var i;
        for (i = 0; i < n.events.length; i++) if (n.events[i] && n.events[i].event === e) {
          var r = n.events[i].URL || n.events[i].url || n.events[i];
          r && ("string" == typeof r || r instanceof String) && x(r, t, n);
        }
      }
      if (gt.vastevents) {
        var i;
        for (i = 0; i < gt.vastevents.length; i++) if (gt.vastevents[i] && gt.vastevents[i].event === e) {
          var r = gt.vastevents[i].url;
          r && ("string" == typeof r || r instanceof String) && x(r, t, n);
        }
      }
      "error" !== e && Jt(e);
    }, x = function(e, t, n) {
      e && (e = e.replace(/\[ERRORCODE\]/gi, t || 900), e = vt.replaceMacros(gt, e, n, pt, yt), 
      vt.sendImpression(e, t));
    }, a = function() {
      var e = !1, t = !1, n = [];
      if (Tt) {
        var i;
        for (i = 0; i < Tt.length; ++i) {
          var r = Tt[i];
          r.adid ? r.vast ? t = !0 : n.push(r.adid) : "ADTAG" === r.type && (t = !0);
        }
      }
      if (n.length > 0) {
        var a = vt.createVASTURL(gt, !1, n.join(";"), null, pt, !0, !0);
        a = vt.replaceMacros(gt, a, en, pt, yt), vt.doAjaxRequest({
          url: a,
          type: "JSON",
          cors: !1,
          timeout: -1,
          success: function(e) {
            e.responseObject && e.responseObject.VAST && Yt.setDemandSourcesData(e.responseObject), 
            s() || R(gn.NO_DEMAND_SOURCES, "No demand sources");
          },
          failure: function(e) {
            v("error_tp_request_failure", e.status, "demand source vast request failed with error code: " + e.status + " text: " + e.responseText + "  url: " + a, en), 
            R(gn.REQUEST_FAILED, "Request failed: " + e.status + " " + e.responseText);
          }
        }), e = !0;
      } else t && (e = s());
      return e;
    }, m = function() {
      var e = gt.scheme + yn + gt.account + "/" + pt + "?ts=" + Date.now() + b("tagimpression") + "&ccsplayer=" + gt.usecssplayer;
      x(e), gt.impression_url && x(gt.impression_url), en.tagImpression && x(en.tagImpression);
    }, h = function(e, t) {
      gt.demandrequesttracking && e && -1 === e.search(pt) && _("demandrequest", null, t);
    }, g = function(e, t) {
      var n = !1;
      if ("flash" !== tn && "js" !== tn || !t ? "flash" !== tn && "js" !== tn && Ht && (ht || e) && !Ot && (Ot = !0, 
      n = !0) : n = !0, n) {
        if (vt.consoleLog(gt, "Sending video impression"), en.impressions) {
          var i;
          for (i = 0; i < en.impressions.length; ++i) x(en.impressions[i], null, en);
        }
        if (gt.vastevents) {
          var i;
          for (i = 0; i < gt.vastevents.length; i++) !gt.vastevents[i] || "impression" !== gt.vastevents[i].event && "Impression" !== gt.vastevents[i].event || x(gt.vastevents[i].url, null, en);
        }
        if (_("start", null, en), Jt("impression"), en.usingProxy) {
          var r = yt ? w() : pt, a = JSON.stringify({
            vasturls: en.requestUrls
          });
          Ht && -1 !== Ht.indexOf("thirdpresence.com");
          var s = gt.scheme + yn + gt.account + "/" + r + "?ts=" + Date.now() + b("tpr_p_videoimpression") + "&detail=" + encodeURIComponent(a);
          x(s, null, en);
        }
        if (yt) {
          var l = o(yt);
          l && (l.lastImpressionTS = Date.now());
        }
      }
    }, v = function(e, t, n, i) {
      var r = yt ? w() : pt, a = e + ":" + t, o = gt.scheme + bn + "?c=" + gt.account + "&adid=" + r + "&ts=" + Date.now() + b(a) + "&errorCode=" + t + "&reason=" + encodeURIComponent(n);
      x(o, null, i);
    }, y = function(e) {
      var t = yt ? w() : pt;
      gt.scheme + bn + "?c=" + gt.account + "&adid=" + t + "&ts=" + Date.now() + b("novastad") + "&detail=" + encodeURIComponent(e);
    }, b = function(e) {
      var t = yt ? "&adp=" + pt : "";
      t += "&e=" + e, gt.publisher && (t += "&aid=" + gt.publisher), gt.deviceid && (t += "&sid=" + gt.deviceid), 
      gt.ctd && (t += "&tid=" + gt.ctd);
      try {
        if ("undefined" != typeof Storage && localStorage) {
          var n = localStorage.tprMeasurements;
          if (n) {
            var i = JSON.parse(n);
            if (i.length > 0) {
              var r = i.shift();
              t += "&tpm=" + r.url + "|" + r.ip + "|" + r.values[0] + "|" + r.values[1] + "|" + r.values[2] + "|" + r.values[3], 
              localStorage.tprMeasurements = JSON.stringify(i);
            }
          }
        }
      } catch (a) {}
      return t;
    }, w = function() {
      return yt && -1 === yt.search(pt) ? pt + "__source__" + yt : yt;
    }, Zt;
  }, ThirdpresenceCSSPlayer_v3 = function() {
    function e() {
      if (!p) {
        p = [];
        for (var e = 0; e < A.imageLengths.length; e++) n(e);
      }
    }
    function t() {
      if (c) for (var e = 0; e < c.length; e++) clearTimeout(c[e]);
      p = null;
    }
    function n(e) {
      c = c || [], c[e] = setTimeout(function() {
        if (A) {
          var t = A.offset + parseInt(A.imageLengths[e]);
          p[e] = A.slice(A.offset, t), A.offset = t;
        }
      }, 10 * e);
    }
    function i(t) {
      if (p || e(), u) for (var n = 0; n < u.length; n++) clearTimeout(u[n]);
      u = [];
      for (var n = t; n < A.imageLengths.length; n++) r(n, t);
    }
    function r(e, t) {
      u[e] = setTimeout(function() {
        if (p) {
          var t = p[e];
          if (d.onload = function() {
            window.URL.revokeObjectURL(d.src);
          }, d.src = window.URL.createObjectURL(t), 0 === e % l.fps) {
            var n = parseInt(e / l.fps);
            if (j(n), e === A.imageLengths.length - 1) setTimeout(function() {
              z();
            }, 1e3 / l.fps); else if (h.halted) {
              for (var i = e; i < u.length; i++) clearTimeout(u[i]);
              u = [];
            } else W.muted || W.play();
          }
        }
      }, (e - t) * A.imageDelay);
    }
    function a() {
      i(h.currentTime * l.fps);
    }
    var o = {}, s = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
    /(Windows|iemobile)/g.test(navigator.userAgent);
    var l, u, c, d, p, f = null, m = null, h = null, g = null, v = null, y = null, b = 0, w = 0, A = null, _ = null, x = null, k = function() {
      v || (v = f.document.createElement("div"), v.id = "tpr_cssplayer_poster" + f.tagId, 
      v.style.zIndex = 1, v.style.top = "0px", v.style.width = "100%", v.style.height = "100%", 
      v.style.display = h.poster ? "block" : "none", v.style.background = "url(" + h.poster + ")", 
      v.style.backgroundSize = "contain", v.style.backgroundRepeat = "no-repeat", v.style.backgroundPosition = "center center", 
      h.appendChild(v));
    }, I = function(e) {
      var e = e.replace(/\/\/m\.cdn\.cloud\.thirdpresence\.com/gi, "//d1c13tt6n7tja5.cloudfront.net");
      h.currentSrc = e, m.doAjaxRequest({
        url: e,
        type: "JSON",
        cors: !1,
        timeout: 5e3,
        success: function(e) {
          C(m.parseJSON(e.responseText));
        },
        failure: function(e) {
          B(2, "Getting Video JSON failed with response status: " + e.status);
        }
      });
    }, T = function() {
      h.currentSrc = null, h.error = null, h.paused = !0, h.readyState = 0, h.networkState = 4, 
      h.halted = !1, h.isBlob = !1, t(), A = null, _ && (clearTimeout(_), _ = null), S();
    }, E = function(e, t) {
      var n = f.document.createElement("style");
      n.type = "text/css", e.appendChild(n);
      var i = n.sheet || n.styleSheet;
      return i.insertRule(t, i.cssRules.length), i;
    }, C = function(e) {
      h.videoInfo = e, S();
      var t = "0x0";
      b = 0, w = 0;
      var n = Number.MAX_VALUE, i = 0, r = {
        w: h.offsetWidth,
        h: h.offsetHeight
      }, a = !1;
      if (window.URL) for (var o = 0; o < h.videoInfo.videos.length; o++) "blob" === h.videoInfo.videos[o].type && (a = !0);
      for (o = 0; o < h.videoInfo.videos.length; o++) {
        var u = h.videoInfo.videos[o];
        if (!(a && "blob" !== u.type || !a && "blob" === u.type)) {
          var c = parseInt(u.resolution.split("x")[0]), d = parseInt(u.resolution.split("x")[1]);
          c <= r.w && d <= r.h && c > b && d > w ? (t = h.videoInfo.videos[o].resolution, 
          b = parseInt(t.split("x")[0]), w = parseInt(t.split("x")[1]), a && (l = u)) : n > c * d && (n = c * d, 
          i = o);
        }
      }
      0 === b && (t = h.videoInfo.videos[i].resolution, b = parseInt(t.split("x")[0]), 
      w = parseInt(t.split("x")[1]), a && (l = h.videoInfo.videos[i])), h.isBlob = a, 
      h.videoWidth = r.w, h.videoHeight = r.h, g && g.parentNode || (g = f.document.createElement("div"), 
      g.id = "tpr_cssplayer_container" + f.tagId, g.style.zIndex = 0, g.style.width = "100%", 
      g.style.height = "100%", g.style.top = "0px", g.style.left = "0px", g.style.display = f.videoposter ? "none" : "block", 
      h.appendChild(g));
      for (var p = !1, v = 0; v < h.videoInfo.audios.length; v++) if ("aac" === h.videoInfo.audios[v].type && s ? p = !0 : "mp3" === h.videoInfo.audios[v].type && (p = !0), 
      p) {
        var y = "";
        "http" != h.videoInfo.audios[v].url.substring(0, 4) && (y += h.currentSrc.replace(/\?.*$/, "").replace(/\/[^\/]*$/, "") + "/"), 
        W.audioUrl = y + h.videoInfo.audios[v].url;
        break;
      }
      W.init(g), W.load();
      var _ = 0, k = 0, I = 0;
      h.videoInfo.frameCount = 0;
      var T = f.document.createElement("div");
      if (T.id = "tpr_video_css" + f.tagId, T.style.width = "100%", T.style.height = "100%", 
      T.style.top = "0x", T.style.left = "0x", g.appendChild(T), h.isBlob) {
        I = parseInt(l.fps);
        var C = h.currentSrc.replace(/\?.*$/, "").replace(/\/[^\/]*$/, "") + "/" + l.framebaseurl + l.name;
        (function(e) {
          var t = new XMLHttpRequest();
          t.onload = function() {
            4 === this.readyState && 200 === this.status && h.src && (A = this.response, N());
          }, t.open("GET", e, !0), t.responseType = "blob", t.send();
        })(C);
      } else {
        for (var o = 0; o < h.videoInfo.videos.length; o++) {
          var u = h.videoInfo.videos[o], L = u.segment.split("x");
          if (_ = parseInt(L[0]), k = parseInt(L[1]), u.resolution == t && _ > 0 && k > 0) {
            if (I = parseInt(u.fps), h.videoInfo.frameCount = Math.ceil(h.videoInfo.length * I / (_ * k)), 
            "naming-template" == u.frameencoding) {
              var P = !0;
              "http" == u.framebaseurl.substring(0, 4) && (P = !1);
              for (var D = u.frametemplate.match(/\{SEGMENT:(\d*)\}/)[1], O = parseInt(D) || 1, v = 0; v < h.videoInfo.frameCount; v++) {
                var M, R = u.frametemplate.split("{")[0] + F(v, O) + u.frametemplate.split("}")[1];
                M = P ? h.currentSrc.replace(/\?.*$/, "").replace(/\/[^\/]*$/, "") + "/" + u.framebaseurl + R : u.framebaseurl + R, 
                h.sprites[v] = M;
              }
              break;
            }
            for (var v = 0; v < h.videoInfo.length; v++) {
              var B = u.frames[v];
              h.sprites[v] = B;
            }
            break;
          }
        }
        for (var q = H(g), v = 0; k > v; v++) E(g, "@" + q.keyframeprefix + "keyframes tpr-css-play-" + v + "-" + f.tagId + " {0% {background-position: 0px -" + v * w + "px}100% {background-position: -" + _ * b + "px -" + v * w + "px}}"), 
        E(g, ".tpr-frame-plr-play-" + v + "-" + f.tagId + " { " + q.keyframeprefix + "animation: tpr-css-play-" + v + "-" + f.tagId + " 1s steps(" + I + ") 1; } ");
        var G = Date.now().toString();
        f.preloadframes && (imageLoader = new PxLoader(), imageLoader.addCompletionListener(function(e) {
          e.resource.tags.first === G && (U(), V());
        }, G));
        for (var v = 0; v < h.videoInfo.frameCount; v++) {
          var Q = "tpr-frame-plr-" + f.tagId + "-" + v;
          if ("banner" == f.adplacement) {
            var J = -(b - f.placementwidth), X = -(w - f.placementheight) / 2;
            b < f.placementwidth && (J = (f.placementwidth - b) / 2), w < f.placementheight && (X = (f.placementheight - w) / 2);
          }
          var K = f.document.createElement("div");
          K.className = Q, K.style.position = "absolute", K.style.top = .5 * (r.h - w) + "px", 
          K.style.left = .5 * (r.w - b) + "px", K.style.width = b + "px", K.style.height = w + "px", 
          K.style.background = "url(" + h.sprites[v] + ")", K.style.backgroundPosition = "0px 0px", 
          K.style.backgroundRepeat = "no-repeat", K.setAttribute("data-frame", v), K.setAttribute("data-framenext", v == h.videoInfo.frameCount - 1 ? 0 : v + 1), 
          K.setAttribute("data-line", 0), T.appendChild(K), f.preloadframes && imageLoader.addImage(h.sprites[v], G), 
          K.style.display = 0 == v ? "block" : "none";
          for (var Y = function(e) {
            if (clearTimeout(x), h.halted) {
              var t = Y.bind(this);
              return x = setTimeout(t, 197), void 0;
            }
            var n = parseInt(this.getAttribute("data-line"));
            if ("undefined" != typeof e && "animationend" === e.type && (this.style.backgroundPosition = "-" + (_ - 1) * b + "px -" + n * w + "px"), 
            !h.ended) {
              var i = parseInt(this.getAttribute("data-frame")), r = parseInt(this.getAttribute("data-framenext")), a = 0, o = 0, s = !1;
              if (k - 1 > n) {
                o = n + 1;
                var l = "tpr-frame-plr-play-" + n + "-" + f.tagId, u = "tpr-frame-plr-play-" + o + "-" + f.tagId;
                m.replaceClass(this, l, u);
              } else this.style.zIndex = "-5000", s = !0;
              this.setAttribute("data-line", o);
              var c = 0 === o ? (i + 1) * k : 0 === i ? o : i * k + o, a = c * _ / I;
              if (a <= h.videoInfo.length && setTimeout(function() {
                s && r > i && (latestFrame.style.display = "none"), j(a);
              }, 25), W.muted || W.play(), 0 === o) if (r > i) {
                var d = "tpr-frame-plr-" + f.tagId + "-" + r, p = h.getElementsByClassName(d);
                p && p[0] && (p[0].style.display = "block", p[0].className = p[0].className + " tpr-frame-plr-play-0-" + f.tagId);
              } else setTimeout(function() {
                z();
              }, 200);
            }
          }, Z = [ "webkit", "moz", "MS", "o", "" ], $ = "AnimationEnd", et = 0; et < Z.length; et++) {
            var tt = Z[et] + $;
            Z[et] || (tt = Z[et] + $.toLowerCase()), K.addEventListener(tt, Y, !0);
          }
        }
        f.preloadframes ? imageLoader.start(G) : (U(), setTimeout(function() {
          V();
        }, 1));
      }
    }, S = function() {
      if (_ && (clearTimeout(_), _ = null), g) {
        if (g.hasChildNodes()) for (var e = 0; e < g.childNodes.length; ++e) g.removeChild(g.childNodes[e]);
        ({
          w: h.parentNode.offsetWidth,
          h: h.parentNode.offsetHeight
        }), h.videoWidth = h.parentNode.offsetWidth, h.videoHeight = h.parentNode.offsetHeight, 
        h.audioUrl = null, h.sprites = [], h.paused = !0;
      }
    }, N = function() {
      var e = new FileReader();
      A.offset = parseInt(l.headerlength), e.onloadend = function() {
        h.src && (A.imageLengths = e.result.split(";"), A.imageCount = A.imageLengths.length, 
        A.imageWidth = l.resolution.split("x")[0], A.imageHeight = l.resolution.split("x")[1], 
        A.position = 0, A.imageDelay = parseInt(1e3 / l.fps), L());
      };
      var t = A.slice(0, A.offset);
      e.readAsText(t);
    }, L = function() {
      h.src && (h.readyState = 4, h.duration = Math.ceil(A.imageCount / l.fps), q("durationchange"), 
      q("loadedmetadata"), j(0), q("resize"), q("progress"), q("canplay"), q("canplaythrough"), 
      e(), h.autoplay || h.pendingPlay ? (q("play"), P()) : q("pause"));
    }, P = function() {
      h.paused && (h.paused = !1, h.ended = !1, g && (v.style.display = "none", g.style.display = "block", 
      d = new Image(), g.firstChild.appendChild(d), d.style.marginLeft = "" + parseInt((g.firstChild.clientWidth - b) / 2) + "px", 
      d.style.marginTop = "" + parseInt((g.firstChild.clientHeight - w) / 2) + "px", i(0)), 
      q("playing"));
    }, D = function() {
      if (h.paused) {
        if (h.paused = !1, h.ended = !1, g) {
          v.style.display = "none", g.style.display = "block";
          var e = "tpr-frame-plr-" + f.tagId + "-" + 0, t = h.getElementsByClassName(e);
          t && t[0] && (t[0].className = t[0].className + " tpr-frame-plr-play-0-" + f.tagId, 
          t[0].style.display = "block"), !_ && h.duration > 0 && (_ = setTimeout(function() {
            clearTimeout(_), _ = null, z();
          }, 1e3 * (h.duration + 2 - h.currentTime)));
        }
        q("playing");
      }
    }, O = function() {
      if (_ && (clearTimeout(_), _ = null), h.videoInfo) {
        for (var e = 0; e < h.videoInfo.frameCount; e++) {
          var t = "tpr-frame-plr-" + f.tagId + "-" + e, n = h.getElementsByClassName(t);
          if (n && n[0]) if (n[0].className = t, n[0].style.zIndex = 0, n[0].setAttribute("data-line", 0), 
          0 == e) {
            n[0].style.display = "block";
            var i = n[0].cloneNode(!0);
            n[0].parentNode.insertBefore(i, n[0]), n[0].parentNode.removeChild(n[0]);
          } else n[0].style.display = "none";
        }
        h.currentTime = 0, h.paused = !0, h.ended = !1, q("pause");
      }
    }, M = function() {
      h.played = {
        length: 1,
        start: function() {
          return 0;
        },
        end: function(e) {
          return 0 === e ? h.currentTime : 0;
        }
      };
    }, R = function() {
      h.buffered = {
        length: 1,
        start: function() {
          return 0;
        },
        end: function(e) {
          return 0 === e ? 4 === h.readyState ? h.duration : 0 : 0;
        }
      };
    }, B = function(e, t) {
      console.log("Media player failed: " + e + " " + t), h.error = e, h.paused = !0, 
      h.stalled = !0, h.readyState = 0, h.networkState = 4, S(), q("error"), q("stalled");
    }, U = function() {
      h.readyState = 1, h.duration = h.videoInfo.length, q("durationchange"), q("loadedmetadata");
    }, V = function() {
      h.readyState = 4, R(), M(), j(0), q("loadeddata"), q("resize"), q("progress"), q("canplay"), 
      q("canplaythrough"), h.autoplay || h.pendingPlay ? (q("play"), D()) : q("pause");
    }, j = function(e) {
      h.currentTime = e, W.setCurrentTime(e), q("timeupdate");
    }, z = function() {
      _ && (clearTimeout(_), _ = null), h.ended || (h.ended = !0, h.paused = !0, h.halted = !1, 
      h.networkState = 1, h.loop ? h.play() : q("ended"));
    }, H = function(e) {
      var t = {
        animation: !1,
        animationstring: "animation",
        keyframeprefix: "",
        pfx: ""
      }, n = "Webkit Moz O ms Khtml".split(" ");
      if (e.style.animationName && (t.animation = !0), t.animation === !1) for (var i = 0; i < n.length; i++) if (void 0 !== e.style[n[i] + "AnimationName"]) {
        t.pfx = n[i], t.animationstring = t.pfx + "Animation", t.keyframeprefix = "-" + t.pfx.toLowerCase() + "-", 
        t.animation = !0;
        break;
      }
      return t;
    }, F = function(e, t) {
      var n = t - e.toString().length + 1;
      return Array(+(n > 0 && n)).join("0") + e;
    }, q = function(e) {
      var t = document.createEvent("Event");
      t.initEvent(e, !0, !0), h.dispatchEvent(t);
    }, G = {};
    G.load = function() {
      if (h.readyState = 0, h.muted = !0, h.currentSrc = null, R(), M(), h.paused || h.pause(), 
      W.stop(), !h.src) {
        var e = h.getAttribute("src");
        e && (h.src = e);
      }
      h.src ? (h.currentSrc = h.src, h.loadedUrl = h.src, h.networkState = 2, S(), k(h.poster), 
      h.src.indexOf(".json") === h.src.length - 5 ? I(h.src) : m.doProxyVideo({
        sourceURL: h.src,
        requestURLs: "",
        config: f,
        success: function(e) {
          I(e);
        },
        failure: function(e) {
          B(2, e);
        }
      }), q("loadstart")) : (h.currentSrc = null, h.networkState = 4, B(4, "Failed"));
    }, G.play = function() {
      q("play"), 4 === h.readyState && h.loadedUrl === h.src ? h.halted ? (h.isBlob ? a() : (("undefined" == typeof _ || null === _) && (_ = setTimeout(function() {
        _ = null, z();
      }, 1e3 * (h.duration + 2 - h.currentTime))), W.play()), h.halted = !1, h.paused = !1) : ((h.ended || h.paused) && (O(), 
      W.pause(), W.setCurrentTime(0)), W.play(), h.isBlob ? P() : D(), h.halted = !1, 
      h.paused = !1) : (2 !== h.networkState && h.load(), 2 === h.networkState && (h.pendingPlay = !0));
    }, G.pause = function() {
      _ && (clearTimeout(_), _ = null), h.pendingPlay = !1, h.paused || (W.pause(), h.halted = !0, 
      h.paused = !0, q("pause"));
    }, G.canPlayType = function(e) {
      return "video/mp4" === e || "video/webm" === e || "video/x-tpv" === e ? "probably" : "";
    }, G.addTextTrack = function() {
      return null;
    }, G.autoplay = !1, G.buffered = {
      length: 0,
      start: function() {},
      end: function() {}
    }, G.controls = !1, G.currentSrc = null, G.currentTime = 0, G.defaultMuted = !0, 
    G.defaultPlaybackRate = 1, G.duration = 0/0, G.ended = !1, G.error = null, G.mediaGroup = null, 
    G.muted = !0, G.networkState = 0, G.paused = !1, G.halted = !1, G.playbackRate = 1, 
    G.played = {
      length: 0,
      start: function() {},
      end: function() {}
    }, G.preload = !0, G.readyState = 0, G.seekable = {
      length: 0,
      start: function() {},
      end: function() {}
    }, G.seeking = !1, G.src = null, G.startDate = new Date(0), G.textTracks = null, 
    G.videoTracks = null, G.loop = !1, G.volume = 0, G.videoWidth = 0, G.videoHeight = 0, 
    G.addEventListener = function(e, t) {
      Node.prototype.addEventListener.apply(h, arguments), h.eventList[e] || (h.eventList[e] = []);
      for (var n = h.eventList[e], i = 0; i != n.length; i++) if (n[i] === t) return;
      n.push(t);
    }, G.removeEventListener = function(e, t) {
      if (Node.prototype.removeEventListener.apply(h, arguments), h.eventList[e]) {
        for (var n = h.eventList[e], i = 0; i != n.length; ) {
          var r = n[i];
          if (t) {
            if (r === t) {
              n.splice(i, 1);
              break;
            }
            i++;
          } else Node.prototype.removeEventListener.call(h, e, r), n.splice(i, 1);
        }
        0 == n.length && delete h.eventList[e];
      }
    }, G.removeAllEventListeners = function() {
      for (var e in h.eventList) {
        for (var t = h.eventList[e], n = 0; n < t.length; n++) Node.prototype.removeEventListener.call(h, e, t[n]);
        delete h.eventList[e];
      }
    }, G.resetState = function() {
      h.src = null, h.removeAllEventListeners();
    }, G.pendingPlay = !1, G.sprites = [], G.videoInfo = null, G.loadedUrl = null, G.eventList = {}, 
    G.tprwatch = function(e, t) {
      var n = this[e], i = n, r = function() {
        return t.call(this, e, i, i), i;
      }, a = function(r) {
        n = i, i = r, t.call(this, e, n, i);
      };
      delete this[e] && (Object.defineProperty ? Object.defineProperty(this, e, {
        get: r,
        set: a
      }) : Object.prototype.__defineGetter__ && Object.prototype.__defineSetter__ && (Object.prototype.__defineGetter__.call(this, e, r), 
      Object.prototype.__defineSetter__.call(this, e, a)));
    }, G.tprunwatch = function(e) {
      var t = this[e];
      delete this[e], this[e] = t;
    };
    var W = new function() {
      function e(e, t) {
        var n = new XMLHttpRequest();
        n.open("GET", e, !0), n.responseType = "arraybuffer", n.onload = function() {
          i.decodeAudioData(n.response, t);
        }, n.send();
      }
      var t = 0, n = !1, i = null, r = null, a = null, o = null, l = null, u = !0, c = null, d = !1, p = !0, m = !1, h = 1, g = {
        IDLE: 0,
        PAUSED: 1,
        STARTED: 2
      }, v = g.IDLE;
      this.audioUrl = null, this.setVideoPauseState = function(e) {
        p = e;
      }, this.init = function(e) {
        c = e;
      }, this.initContext = function() {
        var e = window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.oAudioContext || window.msAudioContext;
        if (e) try {
          i = null, n = !1;
        } catch (t) {}
      }, this.load = function() {
        if (u = !0, m = !1, this.stop(), this.initContext(), this.audioUrl) if (n) e(this.audioUrl, function(e) {
          o = e, v = g.PAUSED, d && !u && this.play();
        }); else {
          r = f.document.createElement("audio");
          var t = f.document.createElement("source");
          t.src = this.audioUrl, t.type = "audio/mpeg", r.appendChild(t), r.autoplay = !1, 
          r.loop = !1, r.onerror = function() {
            r = null, v = g.IDLE;
          }, r.load(), v = g.PAUSED;
        }
      }, this.setCurrentTime = function(e) {
        t = e, v !== g.IDLE && r && r.paused && r.currentTime && (r.currentTime = e);
      }, this.pause = function() {
        v === g.STARTED && (n ? a && (a.stop ? a.stop(0) : a.noteOff && a.noteOff(0), v = g.PAUSED) : r && (r.pause(), 
        v = g.PAUSED));
      }, this.stop = function() {
        this.pause(), n ? i && (i.close && i.close(), i = null, a = null, o = null) : r = null, 
        v = g.IDLE, m = !1;
      }, this.play = function() {
        if (v === g.PAUSED && !u) if (n) {
          if (!i || !o) return d = !0, void 0;
          d = !1, a = i.createBufferSource(), a.buffer = o, a.loop = !1, l = i.createGain ? i.createGain() : i.createGainNode(), 
          a.connect(l), l.connect(i.destination), l.gain.value = u ? 0 : 1, a.start ? a.start(0, t) : a.noteOn ? a.noteOn(0, t) : a.noteGrainOn && a.noteGrainOn(0, t, o.duration - t), 
          v = g.STARTED;
        } else if (r) try {
          s && (r.play(), r.pause()), r.muted = u, r.currentTime = t || .001, r.play(), v = g.STARTED;
        } catch (e) {}
      }, this.setMute = function(e) {
        u = e, p || (e ? this.pause() : this.play());
      }, this.setVolume = function(e) {
        var t = f.document.getElementById("tpr_volume_slider" + f.tagId);
        t && (t.value = 100 * e), r && (r.volume = e), h = e;
      }, this.getVolume = function() {
        return h;
      };
    }();
    return o.createVideoTag = function(e) {
      for (var t in G) G.hasOwnProperty(t) && (e[t] = G[t]);
      return h = e, h.tprwatch("muted", function(e, t, n) {
        return n !== t ? (W.setMute(n), n && W.setVolume(0), h.volume = n ? 0 : W.getVolume(), 
        q("volumechange"), n) : void 0;
      }), h.tprwatch("volume", function(e, t, n) {
        return n !== t ? (h.muted = n > 0 ? !1 : !0, W.setVolume(n), h.volume = n, q("volumechange"), 
        n) : void 0;
      }), h.tprwatch("paused", function(e, t, n) {
        return n !== t ? (W.setVideoPauseState(n), n) : void 0;
      }), h.tprwatch("src", function(e, t, n) {
        return n !== t ? (T(), n) : void 0;
      }), y = setInterval(function() {
        if (!h) return clearInterval(y), y = null, void 0;
        h.src || (h.loadedUrl = null, h.networkState = 3);
        for (var e = h.getElementsByTagName("source"), t = 0; t < e.length; ++t) {
          var n = e[t].getAttribute("type");
          if (h.canPlayType(n)) {
            var i = e[t].getAttribute("src");
            h.src !== i && (h.src = i, h.load());
            break;
          }
        }
      }, 100), e;
    }, o.init = function(e, t) {
      f = e, m = t, window.addEventListener("resize", function() {
        setTimeout(function() {
          var e = f.document.getElementById("tpr_video_css" + f.tagId);
          if (e && e.hasChildNodes()) for (var t = {
            w: h.offsetWidth,
            h: h.offsetHeight
          }, n = 0; n < e.childNodes.length; ++n) e.childNodes[n].style.top = .5 * (t.h - w) + "px", 
          e.childNodes[n].style.left = .5 * (t.w - b) + "px", e.childNodes[n].style.width = b + "px", 
          e.childNodes[n].style.height = w + "px";
        }, 1);
      }, !0);
    }, o;
  }, ThirdpresenceAdTag_v3 = function() {
    var e, t, n, i, r, a, o, s, l, u, c, d, p, f, m, h, g, v, y, b, w, A, _, x, k, I, T, E, C, S, N, L, P, D, O, M, R, B, U, V, j, z, H, F = {};
    return F.init = function(i, s, l, u) {
      T = s, _ = i, E = !0, P = !1, D = !1, C = !1, L = !1, O = !1, M = !1, R = 5e3, I = T.getContainerSize(_), 
      U = 0, V = !1, T.setViewPort("device-width");
      var c = _.document.getElementById("tpr_video" + _.tagId);
      if (u) c.style.display = "none", x = u, V = !0; else if (x = c, i.usecssplayer) {
        var p = new ThirdpresenceCSSPlayer_v3();
        p.init(i, s);
        var v = p.createVideoTag(_.document.createElement("div"));
        v.id = x.id, v.style.top = "0px", v.style.width = "100%", v.style.height = "100%", 
        v.style.margin = "0px !important", v.style.zIndex = "-1", x.parentNode.replaceChild(v, x), 
        x = v;
      }
      x || T.consoleLog(_, "ERROR: HTML5 Player not rendered"), "banner" === _.adplacement || l || (_.document.body.style.padding = "0px", 
      _.document.body.style.margin = "0px");
      var y = _.document.getElementById("tpr_close_button" + _.tagId);
      _.closebuttontext && (y.innerHTML = _.closebuttontext), ("right" === i.closebuttonlocation || "bottomright" === i.closebuttonlocation) && T.replaceClass(y, "tpr_css_close_button", "tpr_css_close_button tpr_css_close_button_right");
      var b = _.document.getElementById("tpr_playpause_btn" + _.tagId);
      b && (b.style.display = "none", b.onclick = h);
      var w = _.document.getElementById("tpr_bigplay_btn" + _.tagId);
      w && (w.onclick = h);
      var S = _.document.getElementById("tpr_volume_slider" + _.tagId);
      i.showcssvolume && (S.style.visibility = "visible");
      var N = function() {
        k && k.setVolume(S.value / 100);
      };
      S.oninput = N, S.onchange = N, S.onclick = function(e) {
        void 0 !== e && (e.stopPropagation(), e.preventDefault());
      };
      var B = _.document.getElementById("tpr_mute_btn" + _.tagId);
      B && (B.style.display = "none", B.onclick = g);
      var j = _.document.getElementById("tpr_info_text" + _.tagId);
      j && (j.style.display = "none");
      var z = _.document.getElementById("tpr_ad_container" + _.tagId);
      t(z);
      var H = _.document.getElementById("tpr_video_screen" + _.tagId);
      t(H);
      var F = _.document.getElementById("tpr_secondary_screen" + _.tagId);
      if (t(F), k = new ThirdpresenceAdPlayer_v3(), window.tpr_player_objs = window.tpr_player_objs || {}, 
      window.tpr_player_objs[_.tagId] = k, k.setDelegate(n), k.init(x, _, T, V), i.secondaryaction_image_url) {
        var q = _.document.getElementById("tpr_secondary_screen_bg" + _.tagId);
        q.style.backgroundImage = "url(" + i.secondaryaction_image_url + ")";
      }
      for (var G = z.getElementsByClassName("tpr_css_click_tracker"), W = 0; W < G.length; ++W) null == G[W].onclick && (G[W].onclick = A);
      f(), e(), m(), d(), setTimeout(function() {
        k && (e(), "winterstitial" === _.adplacement && (_.startclosehidden ? (o(), k.isPlayPending() && r(!1)) : (C = !0, 
        a())));
      }, 500);
    }, m = function() {
      _.showprogress && (j = _.document.createElement("div"), j.className = "tpr_video_progressbar" + _.tagId, 
      j.style.position = "absolute", j.style.bottom = "0px", j.style.left = "0px", j.style.width = "0%", 
      j.style.height = "2px", j.style.backgroundColor = _.progressbarcolor, j.style.opacity = "0.5", 
      j.pauseLoopCount = 0, _.document.getElementById("tpr_video_screen" + _.tagId).appendChild(j));
    }, F.setProgressBar = function() {
      if (H = null, j && k && !P) {
        var e = F.getDuration() - F.getRemainingTime();
        if (j.currentPosition === e ? j.pauseLoopCount++ : j.pauseLoopCount = 0, j.currentPosition = e, 
        0 !== e && j.pauseLoopCount < 10 && "playing" === k.getState()) {
          var t = _.document.getElementById("tpr_video_screen" + _.tagId);
          z && z.cssRules.length > 0 && z.deleteRule(0), F.pauseProgressBar();
          var n = Math.min(Math.round(10 * F.getRemainingTime()) / 10, 1);
          z = T.addCssRule(t, ".tpr_video_progressbar" + _.tagId + " { " + T.animationSupport(t).keyframeprefix + "transition: width " + n + "s linear;}");
          var i = 100 * ((e + n) / F.getDuration());
          j.style.width = i + "%", F.getRemainingTime() >= 1 && (H = setTimeout(F.setProgressBar, 1e3));
        } else H = setTimeout(F.setProgressBar, 100);
      }
    }, F.pauseProgressBar = function() {
      j && (j.style.width = 100 * ((F.getDuration() - F.getRemainingTime()) / F.getDuration()) + "%");
    }, F.stopProgressBar = function() {
      j && (j.style.width = "0px"), H && (clearTimeout(H), H = null);
    }, F.play = function() {
      var e = _.document.getElementById("tpr_ad_container" + _.tagId);
      e.style.visibility = "visible", ("paused" == k.getState() || "loading" == k.getState() && !M) && k.togglePlayPause();
    }, F.pause = function() {
      "playing" != k.getState() || M || k.togglePlayPause();
    }, F.stop = function() {
      var e = _.document.getElementById("tpr_ad_container" + _.tagId);
      _.removeonstop && (e.style.visibility = "hidden"), k.stop();
    }, F.setVolume = function(e) {
      k.setVolume(e);
    }, F.getVolume = function() {
      return k.getVolume();
    }, F.getBufferedPercentage = function() {
      return k.getBufferedPercentage();
    }, F.setMute = function(e) {
      k.isMuted() !== e && g();
    }, F.getAdLinear = function() {
      return M ? !0 : k.getLinear();
    }, F.getAdExpanded = function() {
      return M ? !1 : k.getExpanded();
    }, F.getMute = function() {
      return k.isMuted();
    }, F.getState = function() {
      return k.getState();
    }, F.resize = function(e, t) {
      T.consoleLog(_, "API resize: " + e + "," + t), _.placementwidth = e, _.placementheight = t, 
      d(), p();
    }, F.getWidth = function() {
      return T.getContainerSize(_).w;
    }, F.getHeight = function() {
      return T.getContainerSize(_).h;
    }, F.skip = function() {
      k.canSkip() && k.skip();
    }, F.getSkipState = function() {
      return k.canSkip();
    }, F.getDuration = function() {
      return M ? R : k.getDuration();
    }, F.getRemainingTime = function() {
      return M ? -1 : k.getRemainingTime();
    }, F.getClickThroughUrl = function() {
      return k.getClickThroughUrl(P);
    }, F.sendVisibleTracking = function() {
      return k.sendVisibleTracking();
    }, F.getCurrentAdInfo = function() {
      return k.getCurrentAdInfo();
    }, F.cleanup = function() {
      k.cleanup();
      var e = _.document.getElementById("tpr_ad_container" + _.tagId);
      e.parentNode.removeChild(e), x = null, k = null, window.tpr_player_objs[_.tagId] = null;
    }, n = function(t, n) {
      if (T.consoleLog(_, "ThirdpresenceAdTag_v3: event received: " + t), k) {
        if ("loading" === t) d(), c(!0); else if ("vpaidloading" === t) d(), p(), c(!1), 
        P = !1, E = !1; else if ("ended" === t) E = !1, P = !0, c(!1), u(!1), a(), y(); else if ("playing" === t) d(), 
        p(), c(!1), P = !1, E = !1, D || (D = !0, r(!1)); else if ("paused" === t) u(!1), 
        c(!1), d(); else if ("skipped" === t) (T.isMraid() || "winterstitial" === _.adplacement) && s(); else if ("error" === t) E = !1, 
        P = !0, u(!1), c(!1), a(), y(); else if ("metadataready" === t) E = !1, c(!1), d(), 
        p(); else if ("orientationchange" === t || "resize" === t) d(); else if ("mraidready" === t) d(), 
        o(); else if ("visibilitychanged" === t) n && (d(), r(!1)); else if ("fallbackadavailable" === t) E = !1, 
        P = !0, O = !0, D = !0, r(!0), c(!1), y(); else if ("progress" === t && n > 1 && 50 > n && (u(_.showclicktext, "Click for more information"), 
        !_.usecssplayer)) {
          var i = _.document.getElementById("tpr_video_overlay" + _.tagId);
          i.style.webkitTransform = "scale(1)";
        }
        f(), e(), _.eventhandler && (_.eventhandler(t, n), "error" === t && _.eventhandler("ended"));
      }
    }, d = function() {
      _.expandtofullscreen && T.expandToFullScreen();
      var e = _.document.getElementById("tpr_video_screen" + _.tagId), n = _.document.getElementById("tpr_secondary_screen" + _.tagId), r = _.document.getElementById("tpr_ad_container" + _.tagId);
      I = T.getContainerSize(_);
      var a = _.document.getElementById("iawrapper");
      a && (iawrapper.style.width = "100%", iawrapper.style.height = "100%"), T.consoleLog(_, "updateSize: " + I.w + "x" + I.h), 
      t(r), t(e), t(n), i();
    }, p = function() {
      if (!P) {
        var e = _.document.getElementById("tpr_video_screen" + _.tagId);
        e.style.zIndex = 1e3, e.style.display = "block";
        var t = _.document.getElementById("tpr_secondary_screen" + _.tagId);
        t.style.display = "none", t.style.zIndex = -1;
      }
    }, e = function() {
      T.consoleLog(_, "updateButtonStates: player state:" + k.getState() + ":" + P + ":" + D);
      var e = _.document.getElementById("tpr_playpause_btn" + _.tagId);
      e && (T.isIphone() ? e.style.display = "none" : "paused" === k.getState() ? T.replaceClass(e, "tpr_css_pause_btn", "tpr_css_play_btn") : T.replaceClass(e, "tpr_css_play_btn", "tpr_css_pause_btn"));
      var t = _.document.getElementById("tpr_bigplay_btn" + _.tagId);
      t && (t.style.display = _.showbigplay && ("paused" === k.getState() && !k.isVPAIDActive() || P && D) ? "block" : "none");
      var n = _.document.getElementById("tpr_mute_btn" + _.tagId);
      n && (T.isIOS() && !_.usecssplayer || !_.showmute || P || !D ? n.style.display = "none" : k.isMuted() ? (T.replaceClass(n, "tpr_css_unmute_btn", "tpr_css_mute_btn"), 
      n.style.display = "block") : (T.replaceClass(n, "tpr_css_mute_btn", "tpr_css_unmute_btn"), 
      n.style.display = "block"));
    }, r = function(e) {
      if ((e || !L) && C) {
        if (O) N = _.closedelayfallbackad; else {
          var t = 0;
          t = k.getDuration();
          var n = k.getSkipOffset();
          N = Math.min(n, isNaN(t) || 1 > t ? n : Math.floor(t));
        }
        S || (S = setInterval(function() {
          N -= 1, E || (!_.pressplaytocontinue || D || O ? _.showclosetimer && l(!0, "You can close the ad in " + N + " seconds") : (l(!0, "Click to play video and close ad"), 
          u(!0, "No thanks", v))), 0 >= N && a();
        }, 1e3), L = !0);
      }
    }, o = function() {
      if ((T.isMraid() || "winterstitial" === _.adplacement) && _.startclosehidden && (!P || O)) {
        T.consoleLog(_, "hiding close button"), C = !0;
        var e = _.document.getElementById("tpr_skip_container" + _.tagId);
        if (e && (e.style.display = "block"), T.isMraid()) {
          var t = _.document.getElementById("iaClose");
          if (t) t.style.display = "none"; else {
            mraid.useCustomClose(!0);
            var n = mraid.getExpandProperties();
            n.useCustomClose = !0, n.isModal = !0, mraid.setExpandProperties(n);
          }
        }
      }
    }, a = function() {
      if (S && (clearInterval(S), S = null), C) {
        T.consoleLog(_, "showing close button");
        var e = _.document.getElementById("tpr_skip_container" + _.tagId);
        e && (e.style.display = "block"), l(!1), _.showclicktext && D || u(!1);
        var t = _.document.getElementById("iaClose");
        if (t) t.style.display = "block"; else {
          var n = _.document.getElementById("tpr_close_button" + _.tagId);
          n.style.display = "table", n.onclick = v, C = !1;
        }
      }
    }, l = function(e, t) {
      var n = _.document.getElementById("tpr_skip_message" + _.tagId);
      n && (e ? (n.innerHTML = t, n.style.display = "block") : (n.innerHTML = "", n.style.display = "none"));
    }, u = function(e, t, n) {
      var i = _.document.getElementById("tpr_info_text" + _.tagId);
      i && (e ? (i.innerHTML = t, i.style.display = "block", n && (i.onclick = n)) : (i.innerHTML = "", 
      i.style.display = "none"));
    }, c = function(e) {
      if (e) {
        if (!B) {
          B = _.document.createElement("div"), B.id = "tpr_spinner" + _.tagId, B.className = "tpr_css_spinner", 
          B.style.top = U;
          var t = _.document.getElementById("tpr_video_screen" + _.tagId);
          t.appendChild(B);
          var n;
          for (n = 1; 12 >= n; ++n) {
            var i = _.document.createElement("div");
            i.className = "tpr-wait-circle" + n + " tpr-wait-circle", B.appendChild(i);
          }
        }
      } else if (B) {
        var t = _.document.getElementById("tpr_video_screen" + _.tagId);
        t.removeChild(B), B = null;
      }
    }, s = function() {
      if (k.stop(), T.isMraid()) mraid.close(); else {
        var e = _.document.getElementById("tpr_ad_container" + _.tagId);
        e.style.visibility = "hidden";
      }
    }, h = function(t) {
      "waterfall" === k.getAdType() && P ? (M = !1, k.restart()) : k.togglePlayPause(), 
      P = !1, e(), t.stopPropagation(), t.preventDefault();
    }, g = function(t) {
      k.toggleMute(!1), e(), void 0 !== t && (t.stopPropagation(), t.preventDefault());
    }, v = function(e) {
      _.eventhandler && _.eventhandler("close"), s(), e.stopPropagation(), e.preventDefault();
    }, y = function() {
      var e = _.document.getElementById("tpr_secondary_screen_bg" + _.tagId), t = _.secondaryaction_image_url, n = _.secondaryaction_html_url, i = O ? k.getFallbackAdTagInfo() : null, r = null;
      if (!t) if (n || i && i.tag) {
        if (!M) if (M = !0, e.innerHTML = "", e.style.backgroundImage = null, _.secondaryscreen_uses_iframe) if (T.countFrames() < _.maxframes) {
          var a = document.createElement("IFRAME");
          if (a.style.cssText = "width:100%;height:100%;border:0", a.setAttribute("seamless", ""), 
          a.setAttribute("scrolling", "false"), e.appendChild(a), n) a.src = _.secondaryaction_html_url; else {
            r = i.tag;
            var o = "&lt;img src=&quot;" + i.impressionUrl + "&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute; visibility:hidden&quot; alt=&quot;&quot;&gt;>", s = a.contentDocument, l = "&lt;body style=&quot;border:0;margin:0;width:100%;height:100%;overflow:hidden;&quot;&gt;&lt;script&gt;window.inDapIF = true;&lt;/script&gt;", u = o + "&lt;/body&gt;";
            s.open().write(T.decodeHTML(l)), s.write(i.tag), s.write(T.decodeHTML(u)), s.close();
          }
        } else console.log("Fallback ad not displayed - frame count exceeded"); else {
          r = i.tag, T.insertAndExecute("tpr_secondary_screen_bg" + _.tagId, r);
          var o = document.createElement("img");
          o.src = i.impressionUrl, o.height = 0, o.width = 0, o.style = "position:absolute; visibility:hidden", 
          e.appendChild(o);
        }
      } else t = k.getCompanionAd(), t && (e.innerHTML = "", e.style.backgroundImage = "url(" + t + ")");
      var c = _.document.getElementById("tpr_secondary_click_tracker" + _.tagId);
      if (c.style.display = M ? "none" : "block", r || t || n) {
        var d = _.document.getElementById("tpr_video_screen" + _.tagId);
        d.style.zIndex = -1, d.style.display = "none";
        var p = _.document.getElementById("tpr_secondary_screen" + _.tagId);
        p.style.display = "block", p.style.zIndex = 1e3, R = i && i.timeout ? i.timeout : _.fallbackdisplaytime, 
        _.eventhandler && (_.eventhandler("loaded"), _.eventhandler("metadataready"), _.eventhandler("playing")), 
        R > 0 && setTimeout(w, R);
      } else if (_.removeonstop) {
        var f = _.document.getElementById("tpr_ad_container" + _.tagId);
        f.style.visibility = "hidden";
      }
    }, b = function() {
      var e = _.document.getElementById("tpr_secondary_screen_bg" + _.tagId);
      e.innerHTML = "", P = !1, M = !1, k.restart();
    }, w = function() {
      _.autoreplay && !k.isExpired() ? b() : _.eventhandler && (_.eventhandler("fallbackdisplayed"), 
      _.eventhandler("ended"));
    }, A = function(e) {
      var t = this.href, n = !1;
      k.isVPAID() || P || (x.paused ? (x.play(), n = !0) : (_.visibilitymeasurer && (_.triggerViewabilityMeasurement = !0), 
      x.pause())), t && x.paused && (("empty:" === t || T.isMraid() || _.externalclickhandler) && (n = !0), 
      "empty:" !== t && (T.isMraid() && mraid.open(t), k.sendClickTracking(P))), n && (e.stopPropagation(), 
      e.preventDefault());
    }, f = function() {
      for (var e = k.getClickThroughUrl(P), t = _.document.getElementById("tpr_ad_container" + _.tagId), n = t.getElementsByClassName("tpr_css_click_tracker"), i = 0; i < n.length; ++i) n[i].href = e ? e : "empty:";
    }, t = function(e) {
      e.style.width = I.w + "px", e.style.height = I.h + "px";
    }, i = function() {
      var e = 0, t = 0;
      e = x.videoWidth, t = x.videoHeight, (k.isVPAID() || _.usecssplayer || V || 0 >= e && 0 >= t) && (e = I.w, 
      t = I.h);
      var n, i, r, a, o = t / e, s = I.h / I.w;
      s >= o ? (i = Math.round(I.w * o), n = I.w, r = Math.round((I.h - i) / 2), a = 0) : (i = Math.round(I.h), 
      n = Math.round(I.h / o), r = 0, a = Math.round((I.w - n) / 2)), k && k.resize(n, i, r, a, I.fs, V), 
      T.consoleLog(_, "Video tag rect : " + r + "," + a + "," + n + "," + i);
      var l = _.document.getElementById("tpr_video_controls" + _.tagId), u = i + r - l.offsetHeight;
      if (l.style.top = u + "px", U = Math.round(.5 * (I.h - 40)) + "px", B && (B.style.top = U), 
      "bottomleft" === _.closebuttonlocation || "bottomright" === _.closebuttonlocation) {
        var c = _.document.getElementById("tpr_close_button" + _.tagId);
        c.style.top = .7 * I.h + "px";
      }
    }, F;
  }, ThirdpresencePlayerApi_v3 = function() {
    this._player = null, this._config = null, this._utils = null, this._loaded = !1, 
    this._started = !1, this._playing = !1, this._paused = !1, this._eventCallbacks = {}, 
    this._stopTimer = null;
    var e, t, n = !1, i = this;
    this.initPlayer = function(e, n, r) {
      i._config.eventhandler = function(e, t) {
        i.handleEvent(e, t);
      }, i._utils = e, i._player = new ThirdpresenceAdTag_v3(), i._player.init(i._config, e, n, r), 
      t = i._config.document.getElementById("tpr_ad_container" + i._config.tagId);
    };
    var r = function(e) {
      function t() {
        document[s] && (o = -1);
        var t = e.getBoundingClientRect().top, n = e.getBoundingClientRect().bottom, i = n - t, a = parseInt(e.style.height.substring(0, e.style.height.length - 2), 10), u = e.getBoundingClientRect().left, c = e.getBoundingClientRect().right, d = c - u, p = parseInt(e.style.width.substring(0, e.style.width.length - 2), 10), f = 242500 > i * d ? 50 : 30, m = Math.min(c, l.innerWidth), h = Math.min(n, l.innerHeight);
        (Math.abs(i - a) > 1 || Math.abs(d - p) > 1) && (o = -1), i * d * f / 100 > (m - u) * (h - t) && (o = -1), 
        20 === o && r(), o++;
      }
      function r() {
        n = !0, u.stop(), i._player.sendVisibleTracking();
      }
      var a, o, s, l, u = this;
      "undefined" != typeof document.hidden ? s = "hidden" : "undefined" != typeof document.mozHidden ? s = "mozHidden" : "undefined" != typeof document.msHidden ? s = "msHidden" : "undefined" != typeof document.webkitHidden && (s = "webkitHidden"), 
      this.start = function() {
        if (e && e.id && "" !== e.id) {
          for (l = window; null === l.document.getElementById(e.id) && l !== l.parent; ) l = l.parent;
          o = 0, a = setInterval(t, 100);
        }
      }, this.stop = function() {
        clearInterval(a);
      }, this.trigger = function() {
        r();
      };
    };
    this.startViewabilityMeasurement = function() {
      !this._config.visibilitymeasurer || e || n || (e = new r(t), e.start());
    }, this.stopViewabilityMeasurement = function() {
      this._config.visibilitymeasurer && e && ("undefined" != typeof this._config.triggerViewabilityMeasurement ? (delete this._config.triggerViewabilityMeasurement, 
      e.trigger()) : e.stop(), e = null);
    }, this.setProgressBar = function() {
      this._player && this._player.setProgressBar();
    }, this.pauseProgressBar = function() {
      this._player && this._player.pauseProgressBar();
    }, this.stopProgressBar = function() {
      this._player && this._player.stopProgressBar();
    }, this.handleEvent = function(e, t) {
      if (i._player && (i._loaded || "loaded" === e || "preparing" === e || "error" === e || "ended" === e)) switch (e) {
       case "preparing":
       case "loaded":
        i._loaded || (i._loaded = !0, i.invokeCallback("AdLoaded"));
        break;

       case "playing":
        i._playing || (i._playing = !0, i._paused = !1, i.setProgressBar(), i.startViewabilityMeasurement(), 
        i._started || (i._started = !0, i.invokeCallback("AdStarted")), i.invokeCallback("AdPlaying"));
        break;

       case "paused":
        i._started && !i._paused && (i._playing = !1, i._paused = !0, i.pauseProgressBar(), 
        i.stopViewabilityMeasurement(), i.invokeCallback("AdPaused"));
        break;

       case "skipped":
        i.invokeCallback("AdSkipped"), i._playing = !1, i._paused = !0, i.stopProgressBar();
        break;

       case "fallbackdisplayed":
        i.invokeCallback("AdFallbackDisplayed");
        break;

       case "ended":
        i.stopViewabilityMeasurement(), i._playing = !1, i._paused = !0, i.stopProgressBar(), 
        i._stopTimer && (clearTimeout(i._stopTimer), i._stopTimer = null), setTimeout(function() {
          i._player && i.cleanup();
        }, 100);
        break;

       case "error":
        i._playing = !1, i._paused = !0, i._loaded || i.invokeCallback("AdLoaded"), i.stopViewabilityMeasurement(), 
        i.invokeCallback("AdError", t ? [ t ] : null);
        break;

       case "resize":
        i.invokeCallback("AdSizeChange");
        break;

       case "volumechange":
        i.invokeCallback("AdVolumeChange");
        break;

       case "metadataready":
       case "durationchange":
        i.invokeCallback("AdDurationChange");
        break;

       case "progress":
        i.invokeCallback("AdRemainingTimeChange");
        break;

       case "impression":
        i.invokeCallback("AdImpression");
        break;

       case "start":
        i.invokeCallback("AdVideoStart");
        break;

       case "firstQuartile":
        i.invokeCallback("AdVideoFirstQuartile");
        break;

       case "midpoint":
        i.invokeCallback("AdVideoMidpoint");
        break;

       case "thirdQuartile":
        i.invokeCallback("AdVideoThirdQuartile");
        break;

       case "complete":
        i.invokeCallback("AdVideoComplete");
        break;

       case "clickthrough":
        var n = i._player.getClickThroughUrl();
        i.invokeCallback("AdClickThru", [ n, "", !0 ]);
        break;

       case "close":
        i.invokeCallback("AdUserClose");
        break;

       case "linearchange":
        i.invokeCallback("AdLinearChange");
        break;

       case "expandedchange":
        i.invokeCallback("AdExpandedChange");
        break;

       case "skippablestatechange":
        i.invokeCallback("AdSkippableStateChange");
        break;

       case "buffering":
        i.invokeCallback("TPRVideoBuffering");
      }
    }, this.invokeCallback = function(e, t) {
      var n = i._eventCallbacks[e];
      n && (t = t || [], this._utils.consoleLog(this._config, "API: invoke callback: " + e), 
      n.func.apply(n.object, t));
    };
  };
  ThirdpresencePlayerApi_v3.prototype.startAd = function() {
    this._player && this._loaded && (this._utils.consoleLog(this._config, "API: startAd"), 
    this._player.play());
  }, ThirdpresencePlayerApi_v3.prototype.pauseAd = function() {
    this._player && (this._utils.consoleLog(this._config, "API: pauseAd"), this._player.pause());
  }, ThirdpresencePlayerApi_v3.prototype.stopAd = function() {
    if (this._player) {
      this._utils.consoleLog(this._config, "API: stopAd"), this._config.removeonstop = !0, 
      this._player.stop();
      var e = this;
      this._stopTimer = setTimeout(function() {
        e._stopTimer = null, e._player && e.cleanup();
      }, 1e3);
    }
  }, ThirdpresencePlayerApi_v3.prototype.resizeAd = function(e, t, n) {
    this._utils.consoleLog(this._config, "API: resizeAd"), this._player && this._player.resize(e, t, n);
  }, ThirdpresencePlayerApi_v3.prototype.resumeAd = function() {
    this._utils.consoleLog(this._config, "API: resumeAd"), this._player && this._player.play();
  }, ThirdpresencePlayerApi_v3.prototype.expandAd = function() {
    this._utils.consoleLog(this._config, "API: expandAd");
  }, ThirdpresencePlayerApi_v3.prototype.collapseAd = function() {
    this._utils.consoleLog(this._config, "API: collapseAd");
  }, ThirdpresencePlayerApi_v3.prototype.skipAd = function() {
    this._utils.consoleLog(this._config, "API: skipAd"), this._player && this._player.skip();
  }, ThirdpresencePlayerApi_v3.prototype.subscribe = function(e, t, n) {
    this._eventCallbacks && t && e && (this._eventCallbacks[t] = {
      func: e,
      obj: n
    });
  }, ThirdpresencePlayerApi_v3.prototype.unsubscribe = function(e) {
    this._eventCallbacks && e && this._eventCallbacks[e] && delete this._eventCallbacks[e];
  }, ThirdpresencePlayerApi_v3.prototype.getAdLinear = function() {
    return this._utils.consoleLog(this._config, "API: getAdLinear"), this._player ? this._player.getAdLinear() : !0;
  }, ThirdpresencePlayerApi_v3.prototype.getAdWidth = function() {
    return this._utils.consoleLog(this._config, "API: getAdWidth"), this._player ? this._player.getWidth() : 0;
  }, ThirdpresencePlayerApi_v3.prototype.getAdHeight = function() {
    return this._utils.consoleLog(this._config, "API: getAdHeight"), this._player ? this._player.getHeight() : 0;
  }, ThirdpresencePlayerApi_v3.prototype.getAdExpanded = function() {
    return this._utils.consoleLog(this._config, "API: getAdExpanded"), this._player ? this._player.getAdExpanded() : !1;
  }, ThirdpresencePlayerApi_v3.prototype.getAdSkippableState = function() {
    return this._utils.consoleLog(this._config, "API: getAdSkippableState"), this._player ? this._player.getSkipState() : !0;
  }, ThirdpresencePlayerApi_v3.prototype.getAdRemainingTime = function() {
    return this._utils.consoleLog(this._config, "API: getAdRemainingTime"), this._player ? this._player.getRemainingTime() : -2;
  }, ThirdpresencePlayerApi_v3.prototype.getAdDuration = function() {
    return this._utils.consoleLog(this._config, "API: getAdDuration"), this._player ? this._player.getDuration() : -2;
  }, ThirdpresencePlayerApi_v3.prototype.setAdVolume = function(e) {
    this._utils.consoleLog(this._config, "API: setAdVolume"), this._player && this._player.setVolume(e);
  }, ThirdpresencePlayerApi_v3.prototype.getAdVolume = function() {
    return this._utils.consoleLog(this._config, "API: getAdVolume"), this._player ? this._player.getVolume() : 0;
  }, ThirdpresencePlayerApi_v3.prototype.getAdCompanions = function() {
    return "";
  }, ThirdpresencePlayerApi_v3.prototype.getAdIcons = function() {
    return !1;
  }, ThirdpresencePlayerApi_v3.prototype.setMute = function(e) {
    this._player && this._player.setMute(e);
  }, ThirdpresencePlayerApi_v3.prototype.getMute = function() {
    return this._player ? this._player.getMute() : !1;
  }, ThirdpresencePlayerApi_v3.prototype.getCurrentAdInfo = function() {
    return this._player ? this._player.getCurrentAdInfo() : !1;
  }, ThirdpresencePlayerApi_v3.prototype.getBufferedPercentage = function() {
    return this._player ? this._player.getBufferedPercentage() : !1;
  }, ThirdpresencePlayerApi_v3.prototype.cleanup = function() {
    this.invokeCallback("AdStopped"), this._config && this._config.removeonstop && (this._player && this._player.cleanup(), 
    this._loaded = !1, this._config = null, this._utils = null, this._player = null, 
    this._eventCallbacks = {});
  };
  var ThirdpresenceVPAIDWrapper_v3 = function() {
    function fixVideojsIframe(e) {
      "undefined" != typeof e && "undefined" != typeof e.parentElement && e.className.indexOf("vjs-tech") >= 0 && e.parentElement.getElementsByTagName("iframe").length > 0 && "about:blank" === e.parentElement.getElementsByTagName("iframe")[0].src && (e.parentElement.getElementsByTagName("iframe")[0].style.border = 0);
    }
    ThirdpresencePlayerApi_v3.call(this);
    var _utils = new ThirdpresenceAdTagUtils_v3(), _customization, _autoUnmuteUsed = !1, _slot, _videoSlot, _this = this;
    this.initContainer = function() {
      if ("undefined" == typeof ThirdpresenceAdTagUtils_v3) return setTimeout(_this.initContainer, 50), 
      void 0;
      var e = _this._config.document.createElement("div");
      e.id = "tpr_ad_container" + _this._config.tagId, e.className = "tpr_css_ad_container", 
      "banner" === _this._config.adplacement ? (e.style.width = isNaN(_this._config.placementwidth) ? _this._config.placementwidth : _this._config.placementwidth + "px", 
      e.style.height = isNaN(_this._config.placementheight) ? _this._config.placementheight : _this._config.placementheight + "px") : (e.style.width = "100%", 
      e.style.height = "100%"), e.style.visibility = _videoSlot ? "hidden" : "visible", 
      _slot && (e.style.margin = "0px !important"), e.style.position = _videoSlot ? "absolute" : "relative", 
      e.style.top = "0px", e.style.left = "0px", e.style.backgroundColor = _this._config.backgroundcolor;
      var t;
      if ("undefined" != typeof TPR_TESTING_ON_LOCALHOST) {
        var n = "http://127.0.0.1/new/test/adtag/assets/static.v3.debug.html";
        t = _utils.loadData(n);
      } else t = _utils.getStaticHTML();
      if (t = t.replace(/\[TAGID\]/g, _this._config.tagId), e.innerHTML = t, _slot) _slot.appendChild(e); else {
        for (var i = document.getElementById("tprBanner" + _this._config.tagId), r = document.getElementsByTagName("head")[0], a = i.parentNode, o = !1; a && r; ) a === r && (o = !0), 
        a = a.parentNode;
        "winterstitial" === _this._config.adplacement ? (e.style.zIndex = 6e6, e.style.top = "0px", 
        e.style.position = "absolute", document.body.appendChild(e)) : o ? document.body.appendChild(e) : i.parentElement.appendChild(e);
      }
      _utils.setConfig(_this._config), _utils.setLogger(_this._config.logger), _this.initPlayer(_utils, _slot, _videoSlot), 
      _this._config.unmuteonhover && _this.setHoverUnmute(e), _utils.log(_this._config, "Tag loaded", "");
    }, this.setHoverUnmute = function(e) {
      e.onmouseover = function() {
        !_autoUnmuteUsed && _this._player && (_this._player.setMute(!1), _autoUnmuteUsed = !0);
      };
    }, this.ensureHttpScheme = function(e, t) {
      return e ? /^((http|https)(:\/\/|%3A%2F%2F))/.test(e) ? e : t + "//" + e : null;
    }, this.encodeURIAndTruncate = function(e, t) {
      if (e) {
        if (e.length > 0) {
          for (var n, i = t; (n = encodeURIComponent(e.substring(0, i))).length > t && i > 0; ) i -= 1;
          return n;
        }
        return "";
      }
      return e;
    }, this.setDefaultConfig = function(e, t, n) {
      var i = e;
      i.document = t && t.ownerDocument ? t.ownerDocument : document, i.tagId || (i.tagId = "_" + Date.now()), 
      i.tagtype || (i.tagtype = "unknown"), i.videoposter || (i.videoposter = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="), 
      i.logger || (i.logger = "none"), i.debug || (i.debug = "none"), i.closebuttonlocation || (i.closebuttonlocation = "left"), 
      i.closebuttontext || (i.closebuttontext = null), i.secondaryaction_image_url || (i.secondaryaction_image_url = null), 
      i.secondaryaction_html_url || (i.secondaryaction_html_url = null), i.secondaryaction_clickthrough || (i.secondaryaction_clickthrough = null), 
      i.secondaryaction_clicktracking || (i.secondaryaction_clicktracking = null), i.impression_url || (i.impression_url = null), 
      i.landingpage_url || (i.landingpage_url = i.clickthrough || null), i.ext_clicktracker_url || (i.ext_clicktracker_url = null), 
      i.ext_clicktracker_pixel_url || (i.ext_clicktracker_pixel_url = null), i.video_url || (i.video_url = null), 
      i.vast || (i.vast = null), i.vast_url || (i.vast_url = null), i.deviceid || (i.deviceid = null), 
      i.deviceid_ios || (i.deviceid_ios = ""), i.deviceid_android || (i.deviceid_android = ""), 
      i.publisher || (i.publisher = _this.parsePublisher(i, i.scheme)), i.vastevents || (i.vastevents = null), 
      i.progressbarcolor || (i.progressbarcolor = "#22c0ee"), i.autoreplay = n ? !1 : i.autoreplay || !1, 
      i.backgroundcolor = n ? "transparent" : i.backgroundcolor || (t ? "transparent" : "black"), 
      i.ctd = _this.encodeURIAndTruncate(i.ctd || "", 128), i.adplacement = n ? "banner" : i.adplacement || "banner", 
      "undefined" == typeof i.showprogress && (i.showprogress = !0), "undefined" == typeof i.showbigplay && (i.showbigplay = !0), 
      "undefined" == typeof i.pressplaytocontinue && (i.pressplaytocontinue = !1), "undefined" == typeof i.showclicktext && (i.showclicktext = !1), 
      "undefined" == typeof i.startclosehidden && (i.startclosehidden = !1), "undefined" == typeof i.showclosetimer && (i.showclosetimer = !0), 
      "undefined" == typeof i.expandtofullscreen && (i.expandtofullscreen = !1), "undefined" == typeof i.startmuted && (i.startmuted = n ? n.muted : !1), 
      "undefined" == typeof i.showmute && (i.showmute = i.startmuted), "undefined" == typeof i.ignoremraidviewable && (i.ignoremraidviewable = !1), 
      "undefined" == typeof i.usedevicepixels && (i.usedevicepixels = !1), "undefined" == typeof i.autoexpand && (i.autoexpand = !1), 
      "undefined" == typeof i.preloadframes && (i.preloadframes = !1), "undefined" == typeof i.waterfallplaythrough && (i.waterfallplaythrough = !1), 
      "undefined" == typeof i.demandrequesttracking && (i.demandrequesttracking = !0), 
      "undefined" == typeof i.unmuteonhover && (i.unmuteonhover = !1), "undefined" == typeof i.visibilitymeasurer && (i.visibilitymeasurer = !0), 
      "undefined" == typeof i.showcssvolume && (i.showcssvolume = !1), "undefined" == typeof i.removeonstop && (i.removeonstop = !0), 
      "undefined" == typeof i.externalclickhandler && (i.externalclickhandler = !1), "undefined" == typeof i.secondaryscreen_uses_iframe && (i.secondaryscreen_uses_iframe = !0), 
      ("undefined" == typeof i.simultaneousrequests || null === i.simultaneousrequests) && (i.simultaneousrequests = 5), 
      ("undefined" == typeof i.closedelaymax || null === i.closedelaymax) && (i.closedelaymax = 0), 
      ("undefined" == typeof i.closedelayfallbackad || null === i.closedelayfallbackad) && (i.closedelayfallbackad = 4), 
      ("undefined" == typeof i.vpaidtimeout || null === i.vpaidtimeout) && (i.vpaidtimeout = 10), 
      ("undefined" == typeof i.waterfallloopdelay || null === i.waterfallloopdelay) && (i.waterfallloopdelay = 5e3), 
      ("undefined" == typeof i.waterfallindex || null === i.waterfallindex) && (i.waterfallindex = -1), 
      ("undefined" == typeof i.waterfallstartindex || null === i.waterfallstartindex) && (i.waterfallstartindex = -1), 
      ("undefined" == typeof i.waterfallloopindex || null === i.waterfallloopindex) && (i.waterfallloopindex = -1), 
      ("undefined" == typeof i.fallbackdisplaytime || null === i.fallbackdisplaytime) && (i.fallbackdisplaytime = n ? 5e3 : 0), 
      ("undefined" == typeof i.maxbitrate || null === i.maxbitrate) && (i.maxbitrate = 0), 
      ("undefined" == typeof i.maxframes || null === i.maxframes) && (i.maxframes = 10), 
      i.carrier = i.carrier ? encodeURIComponent(i.carrier) : "", i.application = i.application ? encodeURIComponent(i.application) : "", 
      i.site = i.site ? encodeURIComponent(i.site) : "", i.custom1 = i.custom1 ? encodeURIComponent(i.custom1) : "", 
      i.custom2 = i.custom2 ? encodeURIComponent(i.custom2) : "", i.custom3 = i.custom3 ? encodeURIComponent(i.custom3) : "", 
      i.custom4 = i.custom4 ? encodeURIComponent(i.custom4) : "", i.custom5 = i.custom5 ? encodeURIComponent(i.custom5) : "", 
      i.custom6 = i.custom6 ? encodeURIComponent(i.custom6) : "", i.custom7 = i.custom7 ? encodeURIComponent(i.custom7) : "", 
      i.custom8 = i.custom8 ? encodeURIComponent(i.custom8) : "", i.custom9 = i.custom9 ? encodeURIComponent(i.custom9) : "", 
      i.bundleid = i.bundleid ? encodeURIComponent(i.bundleid) : "", i.appstoreurl = i.appstoreurl ? encodeURIComponent(i.appstoreurl) : "", 
      i.appname = i.appname ? encodeURIComponent(i.appname) : "", i.appversion = i.appversion ? encodeURIComponent(i.appversion) : "", 
      i.segments = i.segments ? encodeURIComponent(i.segments) : "", i.geo_lat = i.geo_lat ? encodeURIComponent(i.geo_lat) : "", 
      i.geo_lon = i.geo_lon ? encodeURIComponent(i.geo_lon) : "", i.country = i.country ? encodeURIComponent(i.country) : "", 
      i.region = i.region ? encodeURIComponent(i.region) : "", i.city = i.city ? encodeURIComponent(i.city) : "", 
      i.usecssplayer = i.tprvideoformat ? _utils.getDeviceInfo().mobile ? "auto" === i.tprvideoformat || "on" === i.tprvideoformat ? !0 : !1 : "on" === i.tprvideoformat ? !0 : !1 : n ? !1 : i.usecssplayer || !1, 
      _this._config = i;
    }, this.parsePublisher = function(e, t) {
      var n = null;
      if (e && (n = e.publisher_url ? _this.ensureHttpScheme(e.publisher_url, t) : e.publisher), 
      !n) {
        try {
          n = top.location.href;
        } catch (i) {}
        n || (n = document.referrer || "");
      }
      return n = /^applewebdata:\/\//.test(n) || /^file:\/\//.test(n) || /^data:/.test(n) ? "" : _this.encodeURIAndTruncate(n || "", 512);
    }, this.loadVAST = function(e, t) {
      var n = new XMLHttpRequest();
      e.domain = e.domain || "thirdpresence.com", e.publisher = _this.parsePublisher(e, e.scheme);
      var i = _utils.createVASTURL(e, !0, e.adid, e.playerid, null, !0, !1);
      n.open("GET", i, !0), n.onreadystatechange = function() {
        if (4 === this.readyState && 200 === this.status) {
          var i;
          if (0 !== this.responseText.indexOf("<?xml")) {
            var r = JSON.parse(this.responseText);
            r.VAST && r.VAST[0] && r.VAST[0].InLine && r.VAST[0].InLine.Creatives && r.VAST[0].InLine.Creatives[0] && r.VAST[0].InLine.Creatives[0].Linear && (i = r.VAST[0].InLine.Creatives[0].Linear.adparameters);
          }
          if (i) {
            if (i.player && (e.adid = i.player.adid, i.player.attributes)) for (var a in i.player.attributes) e[a] || (e[a] = i.player.attributes[a]);
            i.env && (e.donottrack = i.env.donottrack, e.sessionid = i.env.session_id, e.clientip = i.env.clientip), 
            e.clientorigin = n.getResponseHeader("X-Tpr-Origin"), e.vast = i.vast, e.demandsources = i.ds;
          }
          t(e);
        }
      }, n.send();
    }, this.initAd = function(width, height, viewMode, desiredBitrate, creativeData, environmentVars) {
      var success = !1, params = creativeData.AdParameters;
      if (params) {
        var paramsObj = eval("(" + params + ")");
        if (paramsObj && paramsObj.env) {
          var customization = paramsObj && paramsObj.player ? paramsObj.player.attributes : {};
          customization.adid = paramsObj.adid || paramsObj.player ? paramsObj.player.adid : null, 
          customization.playerid = paramsObj.playerid || null, customization.account = paramsObj.env.account, 
          customization.scheme = paramsObj.env.scheme || "", customization.domain = paramsObj.env.domain || "thirdpresence.com", 
          customization.donottrack = paramsObj.env.donottrack, customization.sessionid = paramsObj.env.session_id, 
          customization.clientip = paramsObj.env.clientip, customization.vast = paramsObj.vast, 
          customization.demandsources = paramsObj.ds, customization.tagtype = customization.tagtype || customization.sessionid ? "vpaid" : "api", 
          paramsObj.player && customization.sessionid ? _this.initAdInternal(width, height, customization, environmentVars) : _this.loadVAST(customization, function(e) {
            e ? _this.initAdInternal(width, height, e, environmentVars) : console.log("Failed to load player");
          }), success = !0;
        }
      }
      success || console.log("Invalid CreativeData object - AdParameters not valid");
    }, this.loadAndInitAd = function(e, t) {
      this.loadVAST(e, function(e) {
        envVars = {}, envVars.slot = t || null, envVars.videoSlotCanAutoPlay = !0, height = e.placementheight || e.height || 0, 
        width = e.placementwidth || e.width || 0, _this.initAdInternal(width, height, e, envVars);
      });
    }, this.initAdInternal = function(e, t, n, i) {
      _slot = i.slot, _videoSlot = i.videoSlot, n.placementwidth = e ? e : _slot ? _slot.offsetWidth : 0, 
      n.placementheight = t ? t : _slot ? _slot.offsetHeight : 0, this.setDefaultConfig(n, _slot, _videoSlot), 
      _this.initContainer(), fixVideojsIframe(_videoSlot);
    };
  };
  ThirdpresenceVPAIDWrapper_v3.prototype = new ThirdpresencePlayerApi_v3(), ThirdpresenceVPAIDWrapper_v3.prototype.constructor = ThirdpresenceVPAIDWrapper_v3, 
  ThirdpresenceVPAIDWrapper_v3.prototype.handshakeVersion = function() {
    return "2.0";
  }, getVPAIDAd = function() {
    return new ThirdpresenceVPAIDWrapper_v3();
  }, parent !== self && parent.postMessage("tpr_player_loaded", "*");
  var tpr_player = null, ThirdpresenceUnityPlayer_v3 = function() {
    var e, t, n, i, r, a, o, s, l, u = null, c = !1, d = !1, p = !1, f = !1, m = !1, h = {}, g = !1, v = this, y = {
      duration_default: 6e4,
      timeout_start_ad: 3e3,
      close_button_location: "bottomright",
      close_button_text: "SKIP AD",
      close_button_delay: 5
    };
    t = function(t) {
      e(), g = setTimeout(r, t);
    }, e = function() {
      g && (clearTimeout(g), g = null);
    }, i = function(e, t, n) {
      if (e.VAST && e.VAST[0]) e = i(e.VAST[0], t, n); else if (e.InLine) e = i(e.InLine, t, n); else if (e.Creatives && e.Creatives[0]) e = i(e.Creatives[0], t, n); else if (e.Linear && t && (e.Linear.MediaFiles = [ {
        localName: "MediaFile",
        delivery: "progressive",
        type: "video/mp4",
        bitrate: 400,
        width: 300,
        height: 169,
        url: t
      } ], e.Linear.TrackingEvents = e.Linear.TrackingEvents || [], e.Linear.TrackingEvents && n)) {
        var r, a;
        for (r = 0; r < n.length; r++) a = n[r], a.localName = "Tracking", e.Linear.TrackingEvents.push(a);
      }
      return e;
    }, n = function(e, t) {
      if (e.ds && e.ds.fall && t.videosource) {
        var n, r, a = e.ds.fall;
        for (n = 0; n < a.length; ++n) if ("STATIC" === a[n].type) {
          r = a[n].vast, r && (r = i(r, t.videosource, t.events));
          break;
        }
      }
      return e;
    }, r = function() {
      a(new Error("Timeout occurred"), null);
    }, a = function(t) {
      e(), p || (d = !1, f = !1, p = !0, s && (t ? s(t, null) : s(null, {
        adtype: m ? "performance" : "brand"
      }))), u && v.stopAd();
    }, o = function(n, i) {
      if (!p) {
        if ("AdLoaded" === n) c = !0, f && (f = !1, u.startAd()); else if ("AdPlaying" === n) {
          d = !0;
          var r = u.getCurrentAdInfo();
          r && "STATIC" === r.type && (m = !0);
          var o = u.getAdDuration() || y.duration_default;
          t(1e3 * (o + 5));
        } else if ("AdPaused" === n) d = !1, e(); else if ("AdVideoComplete" === n) a(); else if ("AdError" === n) a(new Error("Ad failed")); else if ("AdStopped" === n) a(); else if ("AdSkipped" === n) a(); else if ("AdDurationChange" === n) {
          if (d) {
            var s = u.getAdRemainingTime();
            s > 0 && t(1e3 * (s + 2));
          }
        } else if ("AdLinearChange" === n) {
          var g = u.getAdLinear();
          g || (d = !1, e());
        } else "AdClickThru" === n && l && l(i);
        var v = h[n];
        if (v) {
          var b = i || [];
          v.func.apply(v.object, b);
        }
      }
    }, this.initAd = function(e) {
      if (u && v.stopAd(), e && e.ad) {
        u = getVPAIDAd(), u.subscribe(function(e) {
          o("AdLoaded", e);
        }, "AdLoaded", v), u.subscribe(function(e) {
          o("AdPlaying", e);
        }, "AdPlaying", v), u.subscribe(function(e) {
          o("AdPaused", e);
        }, "AdPaused", v), u.subscribe(function(e) {
          o("AdVideoComplete", e);
        }, "AdVideoComplete", v), u.subscribe(function(e) {
          o("AdError", e);
        }, "AdError", v), u.subscribe(function(e) {
          o("AdStopped", e);
        }, "AdStopped", v), u.subscribe(function(e) {
          o("AdSkipped", e);
        }, "AdSkipped", v), u.subscribe(function(e) {
          o("AdDurationChange", e);
        }, "AdDurationChange", v), u.subscribe(function(e) {
          o("AdLinearChange", e);
        }, "AdLinearChange", v), u.subscribe(function(e) {
          o("AdClickThru", e);
        }, "AdClickThru", v);
        var t = {}, i = JSON.parse(e.ad);
        i.player = i.player || {}, i.player.attributes = i.player.attributes || {}, i.player.attributes.showbigplay = !1, 
        i.player.attributes.externalclickhandler = !0, i.player.attributes.tagtype = "unity", 
        i.player.attributes.adplacement = "winterstitial", i.player.attributes.closebuttonlocation = y.close_button_location, 
        i.player.attributes.closebuttontext = y.close_button_text, i.player.attributes.startclosehidden = !0, 
        i.player.attributes.showclosetimer = !1, i.player.attributes.closedelaymax = y.close_button_delay, 
        e.fallback && (i = n(i, e.fallback)), t.AdParameters = JSON.stringify(i);
        var r = {};
        r.slot = document.body, u.initAd(null, null, null, null, t, r);
      }
    }, this.showAd = function(e, n) {
      s = n, l = e, n && (p ? n(new Error("ad already displayed"), null) : (t(y.timeout_start_ad), 
      c ? u.startAd() : f = !0));
    }, this.stopAd = function() {
      u.unsubscribe("AdLoaded"), u.unsubscribe("AdPlaying"), u.unsubscribe("AdPaused"), 
      u.unsubscribe("AdVideoComplete"), u.unsubscribe("AdError"), u.unsubscribe("AdStopped"), 
      u.unsubscribe("AdSkipped"), u.unsubscribe("AdDurationChange"), u.unsubscribe("AdLinearChange"), 
      u.unsubscribe("AdClickThru"), u.stopAd(), u = null, s = null, l = null, d = !1, 
      p = !1, c = !1, m = !1, f = !1;
    }, this.subscribe = function(e, t, n) {
      h && t && e && (h[t] = {
        func: e,
        obj: n
      });
    }, this.unsubscribe = function(e) {
      h && e && h[e] && delete h[e];
    };
  }, init = function(e) {
    tpr_player = new ThirdpresenceUnityPlayer_v3(), tpr_player.initAd(e);
  }, showAd = function(e, t) {
    tpr_player.showAd(e, t);
  };
  define("thirdpresence_player", function() {}), define("thirdpresence/tp_player_controller", [ "exports", "module", "thirdpresence_player", "backbone", "util" ], function(e, t, n, i, r) {
    function a(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    a(n), a(i);
    var o = a(r);
    t.exports = {
      initThirdpresencePlayer: function(e) {
        init(e);
      },
      showBrandAd: function(e) {
        console.log("BrandAd ShowBrandAd"), showAd(function(t) {
          console.log("BrandAd Click intercepted: " + t), t && t.length && (e.navigateTo(t), 
          e.close());
        }, function(t, n) {
          console.log("BrandAd Displaying ad completed with response: " + n + " error: " + t), 
          e.close(null);
        });
      },
      sendStartEvent: function(e) {
        var t = [];
        t.push({}), t.push({
          type: "ads.events.brand.v1",
          msg: {
            event: "win",
            ts: Date.now(),
            campaign_id: e.id
          }
        });
        var n = t.map(function(e) {
          return JSON.stringify(e);
        }).join("\n");
        o["default"].xhrCall("https://httpkafka.unityads.unity3d.com/v1/events", "POST", n, !0, 5, 3e4, function() {}, function(e) {
          e && console.log("BrandAd sendStartEvent completion callback data: " + JSON.stringify(e));
        }), console.log("BrandAd sendStartEvent END");
      }
    };
  }), define("controllers/native", [ "exports", "module", "zepto", "underscore", "backbone", "collections/campaigns", "collections/zones", "collections/items", "models/campaign", "models/zone", "models/item", "models/properties", "i18n!", "thirdpresence/tp_player_controller" ], function(e, t, n, i, r, a, o, s, l, u, c, d, p, f) {
    function m(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var h = m(n), g = m(i), v = m(r), y = m(a), b = m(o), w = m(s);
    m(l), m(u);
    var A = m(c), _ = m(d), x = m(p);
    m(f), t.exports = function() {
      this.campaigns = null, this.zones = null, this.item = null, this.items = null, this.properties = null, 
      this.init = function(e) {
        this.campaigns = new y["default"](e.campaignData.data.campaigns, {
          parse: !0
        }), this.campaigns.forEach(function(e) {
          e.set("completed", !1);
        }), "zones" in e.campaignData.data && e.campaignData.data.zones && (this.zones = new b["default"](e.campaignData.data.zones)), 
        "item" in e.campaignData.data && e.campaignData.data.item && (this.item = new A["default"](e.campaignData.data.item)), 
        "items" in e.campaignData.data && e.campaignData.data.items && (this.items = new w["default"](e.campaignData.data.items)), 
        delete e.campaignData.data.campaigns, delete e.campaignData.data.zones, delete e.campaignData.data.item, 
        delete e.campaignData.data.items;
        var t = e.campaignData.data;
        delete e.campaignData, this.properties = new _["default"](g["default"].extend(e, t), {
          parse: !0
        });
        var n = new RegExp([ "cn", "it", "jp", "ru", "tw", "fr", "kr", "fi" ].join("|"), "i");
        return this.properties.get("country").match(n) || x["default"].setLng("en"), this._send = "android" === this.properties.get("platform") && "applifierimpactnative" in window && window.applifierimpactnative.handleWebEvent ? this._sendAndroid : "android" === this.properties.get("platform") && "unityadsnativebridge" in window && window.unityadsnativebridge.handleWebEvent ? this._sendAndroidNew : "ios" === this.properties.get("platform") && this.properties.get("sdkVersion") >= 1300 ? this.properties.get("sdkVersion") < 1405 ? this._sendIosNew : this._sendIosNewHttps : this._sendIos, 
        this.campaigns.length ? (v["default"].trigger("init", e), this._send("initComplete"), 
        "true") : "false";
      }, this.setView = function(e, t) {
        return v["default"].trigger("setView", e, t), "true";
      }, this.handleNativeEvent = function(e, t) {
        return v["default"].trigger(e, t), "true";
      }, this.playVideo = function(e, t) {
        v["default"].trigger("playVideo", e, t), this._send("playVideo", {
          campaignId: e.get("id"),
          rewatch: t || !1
        });
      }, this.appStore = function(e, t, n) {
        var i = this.properties.get("deviceType").match(/android/i), r = "ipad" === this.properties.get("deviceType"), a = this.properties.get("iOSVersion") >= 8;
        this.properties.get("sdkVersion") < 1404 && !i && a && !r && (n = !0), this._send("appStore", {
          clickUrl: e,
          iTunesId: t,
          bypassAppSheet: n || !1
        });
      }, this.navigateTo = function(e) {
        this._send("navigateTo", {
          clickUrl: e
        });
      }, this.close = function(e) {
        this._send("close", {
          view: e
        });
      }, this._sendAndroid = function(e, t) {
        console.log(window.applifierimpactnative.handleWebEvent(e, JSON.stringify({
          data: t || {}
        })));
      }, this._sendAndroidNew = function(e, t) {
        console.log(window.unityadsnativebridge.handleWebEvent(e, JSON.stringify({
          data: t || {}
        })));
      }, this._sendIosNew = function(e, t) {
        h["default"].post("http://nativebridge.unityads.unity3d.com/", JSON.stringify({
          type: e,
          data: t || {}
        }), function(e) {
          console.log(e);
        });
      }, this._sendIosNewHttps = function(e, t) {
        h["default"].post("https://nativebridge.unityads.unity3d.com/", JSON.stringify({
          type: e,
          data: t || {}
        }), function(e) {
          console.log(e);
        });
      }, this._sendIos = function(e, t) {
        h["default"].post("http://client.impact.applifier.com/", JSON.stringify({
          type: e,
          data: t || {}
        }), function(e) {
          console.log(e);
        });
      };
    };
  }), define("controllers/events", [ "exports", "module", "backbone", "zepto", "event_tracking" ], function(e, t, n, i, r) {
    function a(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var o = a(n), s = a(i), l = a(r);
    t.exports = function(e) {
      var t = "https://log.applifier.com/impact";
      o["default"].on("open", function(n) {
        var i = {
          applicationId: e.properties.get("gameId"),
          tid: e.properties.get("gamerId"),
          type: "open",
          view: "none",
          ab_group: e.properties.get("ab_group"),
          campaigns: n.pluck("id")
        }, r = e.properties.get("zone");
        r && (i.zone = r), console.log("Sending open event for parameters: " + i.applicationId + ", " + i.tid + ", " + i.campaigns.join(", ") + (i.zone ? ", " + i.zone : "")), 
        s["default"].post(t, i);
      }), o["default"].on("scroll", function(n) {
        try {
          var i = {
            applicationId: e.properties.get("gameId"),
            tid: e.properties.get("gamerId"),
            type: "scroll",
            view: "offer",
            ab_group: e.properties.get("ab_group"),
            campaign: n.get("id")
          }, r = e.properties.get("zone");
          r && (i.zone = r), console.log("Sending scroll event for parameters: " + i.applicationId + ", " + i.tid + ", " + i.campaign + (i.zone ? ", " + i.zone : "")), 
          s["default"].post(t, i);
        } catch (a) {}
      }), o["default"].on("click", function(n) {
        var i = {
          applicationId: e.properties.get("gameId"),
          tid: e.properties.get("gamerId"),
          type: "click",
          view: "mobile",
          ab_group: e.properties.get("ab_group"),
          campaign: n.get("id")
        }, r = e.properties.get("zone");
        r && (i.zone = r), console.log("Sending click event for parameters: " + i.applicationId + ", " + i.tid + ", " + i.campaign + (i.zone ? ", " + i.zone : "")), 
        s["default"].post(t, i);
      }), o["default"].on("close", function(n) {
        var i = {
          applicationId: e.properties.get("gameId"),
          tid: e.properties.get("gamerId"),
          type: "close",
          ab_group: e.properties.get("ab_group"),
          view: n
        }, r = e.properties.get("zone");
        r && (i.zone = r), console.log("Sending close event for parameters: " + i.applicationId + ", " + i.tid + ", " + i.view + (i.zone ? ", " + i.zone : "")), 
        s["default"].post(t, i);
      }), o["default"].on("googleAnalyticsEvent", function(e) {
        l["default"].parseAndTrackEvents(e.events);
      }), o["default"].on("reset:impact", function() {
        o["default"].off("googleAnalyticsEvent"), o["default"].off("close"), o["default"].off("click"), 
        o["default"].off("open"), o["default"].off("scroll");
      });
    };
  }), define("views/page", [ "exports", "module", "backbone" ], function(e, t, n) {
    function i(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var r = i(n);
    t.exports = r["default"].View.extend({
      className: "page-container",
      close: function(e) {
        e && e.preventDefault(), this.closed || (this.closed = !0, r["default"].trigger("close", this.pageName), 
        this.nativeInterface.close(this.pageName));
      },
      initialize: function() {
        this.nativeInterface = this.options.nativeInterface;
      },
      templateData: function() {
        return this.collection ? this.collection.toJSON() : this.model ? this.model.toJSON() : {};
      },
      render: function() {
        return this.$el.html(this.template(this.templateData())), this.hide(), this;
      },
      show: function() {
        this.$el.css("visibility", "visible"), this.closed = !1;
      },
      visible: function() {
        return "visible" === this.$el.css("visibility");
      },
      hide: function() {
        this.$el.css("visibility", "hidden");
      }
    });
  }), define("text", [ "module" ], function(e) {
    var t, n, i, r, a = [ "Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.4.0" ], o = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, s = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im, l = "undefined" != typeof location && location.href, u = l && location.protocol && location.protocol.replace(/\:/, ""), c = l && location.hostname, d = l && (location.port || void 0), p = {}, f = e.config && e.config() || {};
    return t = {
      version: "2.0.7",
      strip: function(e) {
        if (e) {
          e = e.replace(o, "");
          var t = e.match(s);
          t && (e = t[1]);
        } else e = "";
        return e;
      },
      jsEscape: function(e) {
        return e.replace(/(['\\])/g, "\\$1").replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n").replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r").replace(/[\u2028]/g, "\\u2028").replace(/[\u2029]/g, "\\u2029");
      },
      createXhr: f.createXhr || function() {
        var e, t, n;
        if ("undefined" != typeof XMLHttpRequest) return new XMLHttpRequest();
        if ("undefined" != typeof ActiveXObject) for (t = 0; 3 > t; t += 1) {
          n = a[t];
          try {
            e = new ActiveXObject(n);
          } catch (i) {}
          if (e) {
            a = [ n ];
            break;
          }
        }
        return e;
      },
      parseName: function(e) {
        var t, n, i, r = !1, a = e.indexOf("."), o = 0 === e.indexOf("./") || 0 === e.indexOf("../");
        return -1 !== a && (!o || a > 1) ? (t = e.substring(0, a), n = e.substring(a + 1, e.length)) : t = e, 
        i = n || t, a = i.indexOf("!"), -1 !== a && (r = "strip" === i.substring(a + 1), 
        i = i.substring(0, a), n ? n = i : t = i), {
          moduleName: t,
          ext: n,
          strip: r
        };
      },
      xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/,
      useXhr: function(e, n, i, r) {
        var a, o, s, l = t.xdRegExp.exec(e);
        return l ? (a = l[2], o = l[3], o = o.split(":"), s = o[1], o = o[0], !(a && a !== n || o && o.toLowerCase() !== i.toLowerCase() || (s || o) && s !== r)) : !0;
      },
      finishLoad: function(e, n, i, r) {
        i = n ? t.strip(i) : i, f.isBuild && (p[e] = i), r(i);
      },
      load: function(e, n, i, r) {
        if (r.isBuild && !r.inlineText) return i(), void 0;
        f.isBuild = r.isBuild;
        var a = t.parseName(e), o = a.moduleName + (a.ext ? "." + a.ext : ""), s = n.toUrl(o), p = f.useXhr || t.useXhr;
        !l || p(s, u, c, d) ? t.get(s, function(n) {
          t.finishLoad(e, a.strip, n, i);
        }, function(e) {
          i.error && i.error(e);
        }) : n([ o ], function(e) {
          t.finishLoad(a.moduleName + "." + a.ext, a.strip, e, i);
        });
      },
      write: function(e, n, i) {
        if (p.hasOwnProperty(n)) {
          var r = t.jsEscape(p[n]);
          i.asModule(e + "!" + n, "define(function () { return '" + r + "';});\n");
        }
      },
      writeFile: function(e, n, i, r, a) {
        var o = t.parseName(n), s = o.ext ? "." + o.ext : "", l = o.moduleName + s, u = i.toUrl(o.moduleName + s) + ".js";
        t.load(l, i, function() {
          var n = function(e) {
            return r(u, e);
          };
          n.asModule = function(e, t) {
            return r.asModule(e, u, t);
          }, t.write(e, l, n, a);
        }, a);
      }
    }, "node" === f.env || !f.env && "undefined" != typeof process && process.versions && process.versions.node ? (n = require.nodeRequire("fs"), 
    t.get = function(e, t, i) {
      try {
        var r = n.readFileSync(e, "utf8");
        0 === r.indexOf("﻿") && (r = r.substring(1)), t(r);
      } catch (a) {
        i(a);
      }
    }) : "xhr" === f.env || !f.env && t.createXhr() ? t.get = function(e, n, i, r) {
      var a, o = t.createXhr();
      if (o.open("GET", e, !0), r) for (a in r) r.hasOwnProperty(a) && o.setRequestHeader(a.toLowerCase(), r[a]);
      f.onXhr && f.onXhr(o, e), o.onreadystatechange = function() {
        var t, r;
        4 === o.readyState && (t = o.status, t > 399 && 600 > t ? (r = new Error(e + " HTTP status: " + t), 
        r.xhr = o, i(r)) : n(o.responseText), f.onXhrComplete && f.onXhrComplete(o, e));
      }, o.send(null);
    } : "rhino" === f.env || !f.env && "undefined" != typeof Packages && "undefined" != typeof java ? t.get = function(e, t) {
      var n, i, r = "utf-8", a = new java.io.File(e), o = java.lang.System.getProperty("line.separator"), s = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(a), r)), l = "";
      try {
        for (n = new java.lang.StringBuffer(), i = s.readLine(), i && i.length() && 65279 === i.charAt(0) && (i = i.substring(1)), 
        null !== i && n.append(i); null !== (i = s.readLine()); ) n.append(o), n.append(i);
        l = String(n.toString());
      } finally {
        s.close();
      }
      t(l);
    } : ("xpconnect" === f.env || !f.env && "undefined" != typeof Components && Components.classes && Components.interfaces) && (i = Components.classes, 
    r = Components.interfaces, Components.utils["import"]("resource://gre/modules/FileUtils.jsm"), 
    t.get = function(e, t) {
      var n, a, o = {}, s = new FileUtils.File(e);
      try {
        n = i["@mozilla.org/network/file-input-stream;1"].createInstance(r.nsIFileInputStream), 
        n.init(s, 1, 0, !1), a = i["@mozilla.org/intl/converter-input-stream;1"].createInstance(r.nsIConverterInputStream), 
        a.init(n, "utf-8", n.available(), r.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER), 
        a.readString(n.available(), o), a.close(), n.close(), t(o.value);
      } catch (l) {
        throw new Error((s && s.path || "") + ": " + l);
      }
    }), t;
  }), define("text!templates/impact/end-screen.html", [], function() {
    return '<div class="btn-watch-again-region <%= data.endscreenAlt %>"><a class="btn-watch-again">&#8635;</a></div>\n<div class="btn-close-region <%= data.endscreenAlt %>"><a class="btn-close">&#32;</a></div>\n<div class="campaign-container <%= data.endscreenAlt %>">\n  <div class="game-background" style="background-image: url(<%= data.endScreenPortrait %><%= data.endScreen ? \'), url(\' + data.endScreen + \');\' : \');\' %>"></div>\n  <div class="end-screen-info-background">\n    <div class="end-screen-stripe"></div>\n    <div class="end-screen-info">\n      <div class="game-info">\n        <div class="game-icon" style="background-image: url(<%= data.gameIcon %>)"></div>\n        <div class="name-container"><%= data.gameName %></div>\n      </div>\n      <div class="store-container">\n        <a class="store-button"></a>\n        <div class="game-store-info">\n          <span class="game-rating"><span class="game-rating-mask <%= data.ratingAlt %>">&#9733;&#9733;&#9733;&#9733;&#9733;</span>&#9733;&#9733;&#9733;&#9733;&#9733;</span>\n          <br class="game-rating-br">\n          <span class="game-rating-count">(<span class="game-rating-count-number">0</span><span class="game-rating-postfix"> <%= data.i18n.t("Ratings") %></span>)</span>\n        </div>\n      </div>\n      <div class="download-container">\n        <a class="btn-download"><span class="download-text"><%= data.i18n.t("Download For Free") %></span><span class="download-text-alt">GET IT NOW!</span><span class="buy-text" style="display: none">Download Now</span></a>\n      </div>\n      <div class="store-badge-container">\n        <a class="btn-store-badge"></a>\n      </div>\n      <div class="unityads-logo"></div>\n    </div>\n    <div class="privacy-button">&#9432;</div>\n  </div>\n</div>';
  }), define("views/impact/endScreen", [ "exports", "module", "backbone", "zepto", "underscore", "i18n!", "util", "event_tracking", "views/page", "text!templates/impact/end-screen.html" ], function(e, t, n, i, r, a, o, s, l, u) {
    function c(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var d = c(n), p = c(i), f = c(r), m = c(a), h = c(o), g = c(s), v = c(l), y = c(u);
    f["default"].templateSettings.variable = "data", t.exports = v["default"].extend({
      pageName: "completed",
      template: f["default"].template(y["default"]),
      events: {
        "tap .btn-close-region": "close",
        "tap .btn-close": "close",
        "tap .game-background": "download",
        "tap .btn-download": "download",
        "tap .store-button": "download",
        "tap .game-icon": "download",
        "tap .store-badge-container": "download",
        "tap .btn-watch-again-region": "watchAgain",
        "tap .btn-watch-again": "watchAgain",
        "tap .privacy-button": "privacyButton"
      },
      initialize: function() {
        this.constructor.__super__.initialize.apply(this, arguments), this.currentBackgroundOrientation = "landscape", 
        this.resizeHandler = f["default"].bind(function(e) {
          this.currentBackgroundOrientation !== e && this.switchBackground(this.currentBackgroundOrientation = e);
        }, this), d["default"].on("orientation", this.resizeHandler);
      },
      render: function() {
        var e = this.constructor.__super__.render.apply(this, arguments);
        this.model.get("gameIcon") || this.$(".game-icon").remove();
        var t = parseInt(this.model.get("gameId"));
        return (14123 === t || 131622364 === t || 26686 === t || 39650 === t) && (this.$(".download-text-alt").hide(), 
        this.$(".download-text").hide(), this.$(".buy-text").show()), this.renderRatings(this.model.get("rating"), this.model.get("ratingCount")), 
        e;
      },
      renderRatings: function(e, t) {
        e && t ? (this.$(".game-rating-mask").css("width", e + "%"), this.$(".game-rating-count-number").text(t)) : this.$(".game-store-info").css("visibility", "hidden");
      },
      templateData: function() {
        var e = this.constructor.__super__.templateData.apply(this, arguments);
        return e.i18n = m["default"], e;
      },
      handleAttribution: function(e, t, n) {
        var i = this.model.get("attributionUrlXHR");
        i ? h["default"].xhrCall(h["default"].addUrlParameters(e, {
          _: Date.now()
        }), "GET", null, !0, 10, 3e4, function() {
          t && t();
        }, function(e) {
          n && n(e);
        }) : h["default"].createIframe(h["default"].addUrlParameters(e, {
          _: Date.now()
        }), 10, 3e4, function() {
          t && t();
        }, function() {
          n && n();
        });
      },
      viewAttributionHandler: function() {
        var e = this.model.get("viewAttributionUrl");
        e && this.handleAttribution(e);
      },
      initAutoClose: function() {
        var e = this.nativeInterface.properties.get("autoCloseAfterSeconds");
        e && e > 0 && (console.log("Auto closing in " + e + " seconds"), this.autoCloseTimer = setTimeout(p["default"].proxy(function() {
          this.close();
        }, this), 1e3 * e));
      },
      switchBackground: function(e) {
        var t = this.$(".game-background");
        t.css("background-image", t.css("background-image").split(",").reverse().join(",")), 
        console.log("Switched end screen background to: " + e);
      },
      download: function(e) {
        e.preventDefault(), e.currentTarget && g["default"].trackEvent("endscreen", "clicked", e.currentTarget.className);
        var t = this.nativeInterface.properties.get("zone"), n = this.model.get("clickUrl");
        t && (n = h["default"].addUrlParameters(n, {
          zone: this.nativeInterface.properties.get("zone")
        }));
        var i = this.model.get("id"), r = this.model.get("customClickUrl"), a = this.model.get("ignoreImpressionTracking"), o = this.model.get("startAttributionUrl"), s = this.model.get("viewAttributionUrl"), l = this.model.get("clickAttributionUrl"), u = this.model.get("serverSideClickAttribution");
        if (g["default"].trackEvent("click", "called", i), h["default"].xhrCall(h["default"].addUrlParameters(n, {
          redirect: !1
        }), "GET", null, !0, 10, 3e4, function() {
          g["default"].trackEvent("click", "retried", i);
        }), !this.nativeInterface.properties.get("deviceType").match(/android/i) && this.nativeInterface.properties.get("iOSVersion") >= 8 && (n = "http://itunes.apple.com/" + this.model.get("appStoreCountry") + "/app/id" + this.model.get("iTunesId")), 
        u) this.nativeInterface.appStore(n, this.model.get("iTunesId"), this.model.get("bypassAppSheet")); else if (l) this.model.get("clickAttributionUrlFollowRedirects") ? this.nativeInterface.appStore(l) : (this.handleAttribution(l), 
        this.nativeInterface.appStore(n, this.model.get("iTunesId"), this.model.get("bypassAppSheet"))); else if (o || s) this.nativeInterface.appStore(n, this.model.get("iTunesId"), this.model.get("bypassAppSheet")); else if (a && -1 !== r.indexOf("gree-apps.net")) {
          var c = r.replace("&no_redirect=true", "");
          this.nativeInterface.appStore(c);
        } else if (a && -1 !== r.indexOf("ad-x.co.uk")) {
          var d = r.replace("&redirect=off", "");
          this.nativeInterface.appStore(d);
        } else if (-1 !== r.indexOf("adtrack.king.com")) if (this.nativeInterface.properties.get("deviceType").match(/android/i)) {
          var p = r.replace("&linkId=NO_REDIRECT", "");
          this.nativeInterface.appStore(p);
        } else h["default"].createIframe(r, 10, 3e4), this.nativeInterface.appStore(n, this.model.get("iTunesId"), this.model.get("bypassAppSheet")); else if (-1 !== r.indexOf("hastrk")) {
          var f = r.replace("action=impression", "action=click").replace("action%3Dimpression", "action%3Dclick");
          h["default"].createIframe(f, 10, 3e4), this.nativeInterface.appStore(n, this.model.get("iTunesId"), this.model.get("bypassAppSheet"));
        } else !this.nativeInterface.properties.get("deviceType").match(/android/i) && this.nativeInterface.properties.get("iOSVersion") < 6 ? this.nativeInterface.appStore("http://itunes.apple.com/" + this.model.get("appStoreCountry") + "/app/id" + this.model.get("iTunesId")) : this.nativeInterface.appStore(n, this.model.get("iTunesId"), this.model.get("bypassAppSheet"));
      },
      watchAgain: function(e) {
        e.preventDefault();
        var t = this;
        this.watchAgainTriggered || (this.watchAgainTriggered = !0, g["default"].trackEvent("endscreen", "clicked", "rewatch"), 
        this.nativeInterface.playVideo(this.model, !0), setTimeout(function() {
          t.watchAgainTriggered = !1;
        }, 1e3));
      },
      privacyButton: function(e) {
        e.preventDefault(), d["default"].trigger("showPrivacy");
      },
      show: function() {
        var e = p["default"]("body");
        e.hasClass("landscape") && "landscape" !== this.currentBackgroundOrientation ? this.switchBackground(this.currentBackgroundOrientation = "landscape") : e.hasClass("portrait") && "portrait" !== this.currentBackgroundOrientation && this.switchBackground(this.currentBackgroundOrientation = "portrait"), 
        this.constructor.__super__.show.apply(this, arguments);
      },
      close: function(e) {
        this.autoCloseTimer && (clearTimeout(this.autoCloseTimer), this.autoCloseTimer = null), 
        e && !this.closed && g["default"].trackEvent("endscreen", "clicked", "close"), this.constructor.__super__.close.apply(this, arguments);
      },
      remove: function() {
        d["default"].off("orientation", this.resizeHandler), this.constructor.__super__.remove.apply(this, arguments);
      }
    });
  }), define("text!templates/impact/none.html", [], function() {
    return '<div class="btn-close-region"><a class="btn-close">&#32;</a></div>\n';
  }), define("views/none", [ "exports", "module", "underscore", "views/page", "text!templates/impact/none.html" ], function(e, t, n, i, r) {
    function a(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var o = a(n), s = a(i), l = a(r);
    o["default"].templateSettings.variable = "data", t.exports = s["default"].extend({
      pageName: "none",
      template: o["default"].template(l["default"]),
      events: {
        "tap .btn-close-region": "close",
        "tap .btn-close": "close"
      },
      setItem: function() {}
    });
  }), define("views/popup", [ "exports", "module", "backbone", "zepto" ], function(e, t, n, i) {
    function r(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var a = r(n), o = r(i);
    t.exports = a["default"].View.extend({
      className: "popup-background",
      initialize: function() {
        this.positionProxy = o["default"].proxy(this.position, this), this.nativeInterface = this.options.nativeInterface;
      },
      templateData: function() {
        return this.collection ? this.collection.toJSON() : this.model ? this.model.toJSON() : {};
      },
      render: function() {
        return this.$el.html(this.template(this.templateData())), this.position(), this.$el.css("visibility", "hidden"), 
        this;
      },
      show: function() {
        this.$el.css("visibility", "visible"), this.position(), window.addEventListener("resize", this.positionProxy);
      },
      hide: function() {
        window.removeEventListener("resize", this.positionProxy), this.$el.css("visibility", "hidden");
      },
      position: function() {
        this.$el.css("line-height", window.innerHeight + "px");
      }
    });
  }), define("text!templates/impact/spinner.html", [], function() {
    return '<div class="spinner-container">\n  <div class="spinner-animation"></div>\n  <div class="spinner-text"></div>\n</div>';
  }), define("views/spinner", [ "exports", "module", "backbone", "zepto", "underscore", "i18n!", "event_tracking", "views/popup", "text!templates/impact/spinner.html" ], function(e, t, n, i, r, a, o, s, l) {
    function u(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var c = u(n), d = u(i), p = u(r), f = u(a), m = u(o), h = u(s), g = u(l);
    t.exports = h["default"].extend({
      template: p["default"].template(g["default"]),
      textMap: {
        loading: f["default"].t("Loading") + "...",
        buffering: f["default"].t("Buffering") + "..."
      },
      initialize: function() {
        this.constructor.__super__.initialize.apply(this, arguments), c["default"].on("showSpinner", this.show, this), 
        c["default"].on("hideSpinner", this.hide, this);
      },
      render: function() {
        var e = this.constructor.__super__.render.apply(this, arguments), t = this.nativeInterface.properties.get("customOptions");
        return t && t.bufferingBackground && this.$el.css("background", t.bufferingBackground), 
        e;
      },
      show: function(e) {
        var t = e && e.textKey && e.textKey.length && e.textKey in this.textMap ? e.textKey : "loading";
        if (this.$(".spinner-text").text(this.textMap[t]), "buffering" === t) {
          var n = this;
          this.showCloseTimer || (this.showCloseTimer = setTimeout(function() {
            m["default"].trackEvent("video", "buffering", "cancel_shown");
            var e = n.tempClose = d["default"]('<a class="btn-close" style="z-index: 1000">&#215;</a>');
            e.on("tap", function(t) {
              m["default"].trackEvent("video", "buffering", "cancel_pressed"), t.preventDefault(), 
              e.remove(), n.hide(), n.nativeInterface.close("buffering");
            }), d["default"]("body").append(e);
          }, 5e3));
        } else this.constructor.__super__.show.apply(this, arguments);
      },
      hide: function() {
        this.showCloseTimer && (this.tempClose && (this.tempClose.remove(), this.tempClose = null), 
        clearTimeout(this.showCloseTimer), this.showCloseTimer = null), this.constructor.__super__.hide.apply(this, arguments);
      }
    });
  }), define("text!templates/impact/error.html", [], function() {
    return '<div class="error-container">\n  <div class="error-text"></div>\n  <a class="btn-ok">Ok</a>\n</div>';
  }), define("views/error", [ "exports", "module", "backbone", "zepto", "underscore", "i18n!", "event_tracking", "views/popup", "text!templates/impact/error.html" ], function(e, t, n, i, r, a, o, s, l) {
    function u(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var c = u(n);
    u(i);
    var d = u(r), p = u(a), f = u(o), m = u(s), h = u(l);
    t.exports = m["default"].extend({
      template: d["default"].template(h["default"]),
      textMap: {
        unknownError: p["default"].t("Unknown error"),
        videoPlaybackError: p["default"].t("Video playback error")
      },
      events: {
        "click .btn-ok": "hide"
      },
      initialize: function() {
        this.constructor.__super__.initialize.apply(this, arguments), c["default"].on("showError", this.show, this), 
        c["default"].on("hideError", this.hide, this);
      },
      show: function(e) {
        var t = e && e.textKey && e.textKey.length && e.textKey in this.textMap ? e.textKey : "unknownError", n = this.textMap[t];
        if ("videoPlaybackError" === t) {
          var i = this.nativeInterface.properties.get("platform");
          "ios" === i && this.nativeInterface.lastCampaignId ? (this.nativeInterface.campaigns.get(this.nativeInterface.lastCampaignId).set({
            error: "videoPlaybackError"
          }), f["default"].trackEvent("error", "Video playback error", this.nativeInterface.lastCampaignId)) : "android" === i && (this.nativeInterface.lastError = "videoPlaybackError");
        }
        this.$(".error-text").text(n), this.constructor.__super__.show.apply(this, arguments);
      }
    });
  }), define("text!templates/impact/privacy.html", [], function() {
    return '<div class="privacy-container <%= data.privacy %>">\n  <div class="privacy-text">\n    This advertisement has been served by Unity Ads.\n    Unity Ads collects and uses information gathered through your use of your apps in order to create an individualized and more relevant user experience, to predict your preferences, and to show you ads that are more likely to interest you (“personalized ads”).\n    Please read our Privacy Policy <a href="http://unity3d.com/legal/privacy-policy">Privacy Policy</a> for a full description of our data practices.\n    You may be able to opt-out of Unity Ads’ collection and use of your mobile app data for personalized ads through your device settings.\n  </div>\n  <div class="privacy-simple-text">\n    This advertisement has been served by Unity Ads. Please read our <a href="http://unity3d.com/legal/privacy-policy">Privacy Policy</a> for a full description of our data practices.\n  </div>\n  <div class="btn-ok">Ok</div>\n</div>\n';
  }), define("views/privacy", [ "exports", "module", "backbone", "zepto", "underscore", "i18n!", "util", "views/popup", "text!templates/impact/privacy.html" ], function(e, t, n, i, r, a, o, s, l) {
    function u(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    var c = u(n);
    u(i);
    var d = u(r), p = u(a);
    u(o);
    var f = u(s), m = u(l);
    d["default"].templateSettings.variable = "data", t.exports = f["default"].extend({
      template: d["default"].template(m["default"]),
      templateData: function() {
        var e = this.constructor.__super__.templateData.apply(this, arguments);
        return e.i18n = p["default"], e.privacy = this.nativeInterface.properties.get("coppaCompliant") === !0 ? "simple" : "", 
        e;
      },
      initialize: function() {
        this.constructor.__super__.initialize.apply(this, arguments), c["default"].on("showPrivacy", this.show, this);
      },
      events: {
        "click .btn-ok": "hide",
        "click a": "openBrowser"
      },
      openBrowser: function(e) {
        e.preventDefault(), this.nativeInterface.navigateTo(e.target.href);
      }
    });
  }), define("controllers/views", [ "exports", "module", "backbone", "zepto", "underscore", "views/impact/endScreen", "views/none", "views/spinner", "views/error", "views/privacy", "thirdpresence/tp_player_controller" ], function(e, t, n, i, r, a, o, s, l, u, c) {
    function d(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    d(n);
    var p = d(i);
    d(r);
    var f = d(a), m = d(o), h = d(s), g = d(l), v = d(u);
    d(c), t.exports = function(e) {
      var t = p["default"]("body");
      this.views = {
        completed: null,
        none: new m["default"]({
          nativeInterface: e
        })
      }, this.popups = {
        spinner: new h["default"]({
          nativeInterface: e
        }),
        error: new g["default"]({
          nativeInterface: e
        }),
        privacy: new v["default"]({
          nativeInterface: e
        })
      }, t.append(this.views.none.render().$el), this.views.none.$el.addClass("none-screen");
      for (var n in this.popups) this.popups.hasOwnProperty(n) && t.append(this.popups[n].render().$el);
      this.get = function(e) {
        return this.views[e];
      }, this.render = function(n, i) {
        console.log("Rendering: " + n);
        var r = this.views[n];
        switch (r && (r.remove(), r = null), n) {
         case "completed":
          i.get("brandAd") || (this.views.completed = new f["default"]({
            nativeInterface: e,
            model: i,
            properties: e.properties
          }), t.append(this.views.completed.render().$el), this.views.completed.$el.addClass("end-screen"));
        }
      }, this.show = function(e) {
        console.log("Showing: " + e), this.views[e].show();
      }, this.hide = function() {
        console.log("Hiding all views");
        for (var e in this.views) if (this.views.hasOwnProperty(e)) {
          var t = this.views[e];
          t && t.hide();
        }
      };
    };
  }), define("impact", [ "exports", "backbone", "zepto", "underscore", "event_tracking", "controllers/native", "controllers/events", "controllers/views", "thirdpresence/tp_player_controller" ], function(e, t, n, i, r, a, o, s, l) {
    function u(e) {
      return e && e.__esModule ? e : {
        "default": e
      };
    }
    function c(e) {
      b.addClass(e);
    }
    var d = u(t), p = u(n), f = u(i), m = u(r), h = u(a), g = u(o), v = u(s), y = u(l), b = p["default"]("body"), w = function() {
      console.log("Resize handler called");
      var e = b.hasClass("landscape") ? "landscape" : b.hasClass("portrait") ? "portrait" : null, t = window.innerWidth / window.innerHeight >= 1 ? "landscape" : "portrait";
      e ? e !== t && (console.log("Resize handler changing orientation to " + t), b.removeClass(e), 
      b.addClass(t), d["default"].trigger("orientation", t)) : (b.addClass(t), d["default"].trigger("orientation", t));
    };
    window.addEventListener("resize", w), w(), window.addEventListener("touchmove", function(e) {
      return e.preventDefault(), !1;
    });
    var A = new h["default"](), _ = null, x = null;
    d["default"].on("init", function() {
      b.removeClass("iphone ipad android unknown"), "ios" === A.properties.get("platform") ? "11386" === A.properties.get("gameId") ? c("iphone") : "ipad" !== A.properties.get("deviceType") || window.navigator.userAgent.match(/ipad/i) ? c(A.properties.get("deviceType")) : c("iphone") : c(A.properties.get("deviceType")), 
      _ = new g["default"](A), x = new v["default"](A), A.properties.get("disable_ga") || (m["default"].setupGA(), 
      window.onerror = m["default"].trackError), 16 != A.properties.get("gameId") && d["default"].trigger("showSpinner", {
        textKey: "buffering"
      });
    }), d["default"].on("playVideo", function(e, t) {
      t || x.render("completed", e);
    }), d["default"].on("videoCompleted", function(e) {
      setTimeout(w, 1e3), d["default"].trigger("hideSpinner");
      var t = x.get("completed"), n = A.campaigns.get(e.campaignId);
      if (n.get("brandAd")) return y["default"].initThirdpresencePlayer(n.get("brandAd").tp), 
      y["default"].sendStartEvent(n), y["default"].showBrandAd(A), void 0;
      t ? n && 19655 === n.get("gameId") ? x.get("completed").close() : (x.hide(), x.show("completed")) : (x.render("completed", n), 
      x.hide(), x.show("completed"), t = x.get("completed")), t && (m["default"].trackEvent("endscreen", "shown", t.currentBackgroundOrientation), 
      t.initAutoClose()), A.lastError || t.viewAttributionHandler();
      var i = A.properties.get("platform");
      "ios" === i ? A.lastCampaignId = e.campaignId : "android" === i && A.lastError && "videoPlaybackError" === A.lastError && (m["default"].trackEvent("error", "Video playback error", e.campaignId), 
      n.set({
        error: "videoPlaybackError"
      }), A.lastError = null), n.set({
        completed: !0
      });
    });
    var k = f["default"].once(function() {
      m["default"].setupSession(), m["default"].trackPageview();
    });
    d["default"].on("setView", function(e, t) {
      switch (x.hide(), e) {
       case "start":
        var n = t.action, i = (t.itemKey, t.zone);
        "open" === n && (i && A.properties.set("zone", i), k(), d["default"].trigger("open", A.campaigns));
        break;

       case "completed":
        k();
        var r = t.campaignId, a = A.campaigns.get(r);
        if (a && a.get("brandAd")) break;
        var o = x.get("completed");
        (!o && r || r && o.model.get("id") !== r) && a && x.render("completed", a), x.show("completed");
        break;

       case "none":
        x.show("none");
      }
    }), window.unityadsnativebridge && window.unityadsnativebridge.handleWebEvent("loadComplete", '{"data":{}}');
    var I = null;
    window.unityads && window.unityads.cachedCalls && window.unityads.cachedCalls.length && (I = window.unityads.cachedCalls), 
    window.unityads = window.applifierimpact = A, I && (console.dir(I), I.forEach(function(e) {
      window.unityads[e.shift()].apply(window.unityads, e);
    }));
  }), require([ "impact" ]);
})();</script>
  </head>
  <body></body>
</html>
