breakout71/dist/index.html
2025-03-15 10:35:50 +01:00

1 line
No EOL
124 KiB
HTML

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Breakout 71</title><meta name="description" content="A breakout game with roguelite mechanics. Break bricks, catch coins, pick upgrades, repeat. Play for free on mobile and desktop."><link rel="manifest" href="/manifest.webmanifest"><style>*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:Courier New,Courier,Lucida Sans Typewriter,Lucida Typewriter,monospace}body{width:100vw;height:100vh;height:calc(var(--vh,1vh)*100);color:#fff;background-size:120px 120px;background-color:var(--background1);--background1:#030c23;--background2:#03112a;margin:0;padding:0;overflow:hidden}#game{height:100vh;height:calc(var(--vh,1vh)*100);width:100vw;position:absolute;top:0;left:0}#score,#menu{z-index:1;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font:inherit;color:#fff;background:0 0;border:none;min-width:40px;min-height:40px;padding:10px;line-height:20px;position:absolute;top:0}#score:hover,#menu:hover,#score:focus,#menu:focus{cursor:pointer;background:rgba(0,0,0,.3)}#score{right:0}#menu{left:0}@media screen and (orientation:portrait){#menu>span{display:none}}.popup{z-index:10;background:rgba(0,0,0,.9);display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.popup>div{-webkit-transform-origin:50%;-moz-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-moz-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;width:100%;max-width:450px;margin:auto;padding:20px 10px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}.popup>div>*{margin:0;padding:0}.popup>div>h2,.popup>div>p{margin-bottom:20px}.popup>div>section{-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-moz-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;margin-top:20px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}.popup>div>section button{font:inherit;color:#fff;cursor:pointer;text-align:left;background:rgba(0,0,0,.8);border:1px solid #fff;gap:10px;margin-top:-1px;padding:10px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}.popup>div>section button:not([disabled]):hover{z-index:1;border-color:#f1d33b;position:relative}.popup>div>section button:not([disabled]):focus{z-index:1;border-color:#f1d33b;position:relative}.popup>div>section button[disabled]{opacity:.5;-webkit-filter:saturate(0);filter:saturate(0);pointer-events:none}.popup>div>section button>div{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.popup>div>section button>div>em{opacity:.8;display:block}.popup>div>section button.grey-out-unless-hovered:not(:hover){opacity:.6}.popup>div>section button.grey-out-unless-hovered:not(:hover) img{-webkit-filter:saturate(0);filter:saturate(0)}.popup.actionsAsGrid>div{max-width:800px}.popup.actionsAsGrid>div section{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.popup button.close-modale{color:#fff;cursor:pointer;background:0 0;border:none;width:60px;height:60px;position:absolute;top:0;right:0;overflow:hidden}.popup button.close-modale:before{content:"+";font-size:80px;display:inline-block;position:absolute;top:34px;left:26px;-webkit-transform:translate(-50%,-50%)rotate(45deg);-moz-transform:translate(-50%,-50%)rotate(45deg);-ms-transform:translate(-50%,-50%)rotate(45deg);transform:translate(-50%,-50%)rotate(45deg)}.popup button.close-modale:hover{background:#000;font-weight:700}.popup .textAfterButtons{color:rgba(255,255,255,.58)}.popup a[href]{color:inherit}.popup a[href]:hover,.popup a[href]:focus{color:#fff}.progress{color:#fff;text-align:center;background:#1c1c2f;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px;display:block;position:relative;overflow:hidden;-webkit-box-shadow:inset 3px 3px 5px rgba(0,0,0,.5);-moz-box-shadow:inset 3px 3px 5px rgba(0,0,0,.5);box-shadow:inset 3px 3px 5px rgba(0,0,0,.5)}.progress>.progress_bar_part{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;z-index:1;background:#4049ca;-webkit-animation:1s ease-out both grow;animation:1s ease-out both grow;display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-shadow:inset 3px 3px 5px rgba(0,0,0,.5);-moz-box-shadow:inset 3px 3px 5px rgba(0,0,0,.5);box-shadow:inset 3px 3px 5px rgba(0,0,0,.5)}.progress>span{z-index:2;display:block;position:relative}@-webkit-keyframes grow{0%{-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}}@keyframes grow{0%{-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}}#level-recording-container{text-align:center;max-width:400px;margin:40px}#level-recording-container video{max-width:100%;height:auto}#level-recording-container a{display:block}#level-recording-container a video{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;outline:1px solid #fff;margin:20px auto;display:block;-webkit-box-shadow:2px 2px 5px #000;-moz-box-shadow:2px 2px 5px #000;box-shadow:2px 2px 5px #000}@media (min-width:1200px){#level-recording-container{max-width:calc(50vw - 305px);position:absolute;top:40px;left:40px}}.histogram{-webkit-box-align:stretch;-moz-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;gap:10px;margin:10px 0 40px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}.histogram>span{-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-box-pack:end;-moz-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;width:10px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex;position:relative}.histogram>span.active>span{background:#4049ca}.histogram>span>span{background:#1c1c2f;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;width:100%;min-height:1px;display:block}.histogram>span>span>span{pointer-events:none;white-space:nowrap;-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;text-align:center;font-size:13px;display:block;position:absolute;bottom:-20px;left:50%;-webkit-transform:translate(-50%);-moz-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%)}.histogram>span:not(:hover):not(.active)>span>span{opacity:0}h2.histogram-title{color:#3b3f75;font-size:18px}h2.histogram-title strong{color:#4049ca}</style><link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🕹️</text></svg>"></head><body> <button id="menu"><span> menu</span></button> <button id="score"></button> <canvas id="game"></canvas> <script>!function(){function _(_){return _&&_.__esModule?_.default:_}var e,t,r,o,n,i,s,a,l,c,u="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},h={},d={},b=u.parcelRequire94c2;function p(_,e,t,r,o,n,i){try{var s=_[n](i),a=s.value}catch(_){t(_);return}s.done?e(a):Promise.resolve(a).then(r,o)}function m(_){return function(){var e=this,t=arguments;return new Promise(function(r,o){var n=_.apply(e,t);function i(_){p(n,r,o,i,s,"next",_)}function s(_){p(n,r,o,i,s,"throw",_)}i(void 0)})}}function g(_,e,t){return e in _?Object.defineProperty(_,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):_[e]=t,_}function y(_){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(_){return Object.getOwnPropertyDescriptor(t,_).enumerable}))),r.forEach(function(e){g(_,e,t[e])})}return _}function v(_,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(_,Object.getOwnPropertyDescriptors(e)):(function(_,e){var t=Object.keys(_);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(_);t.push.apply(t,r)}return t})(Object(e)).forEach(function(t){Object.defineProperty(_,t,Object.getOwnPropertyDescriptor(e,t))}),_}function f(_,e){(null==e||e>_.length)&&(e=_.length);for(var t=0,r=Array(e);t<e;t++)r[t]=_[t];return r}function k(_){return function(_){if(Array.isArray(_))return f(_)}(_)||function(_){if("undefined"!=typeof Symbol&&null!=_[Symbol.iterator]||null!=_["@@iterator"])return Array.from(_)}(_)||function(_,e){if(_){if("string"==typeof _)return f(_,void 0);var t=Object.prototype.toString.call(_).slice(8,-1);if("Object"===t&&_.constructor&&(t=_.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return f(_,void 0)}}(_)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function W(_,e){var t,r,o,n={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(a){return function(s){if(t)throw TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(n=0)),n;)try{if(t=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,r=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(!(o=(o=n.trys).length>0&&o[o.length-1])&&(6===s[0]||2===s[0])){n=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){n.label=s[1];break}if(6===s[0]&&n.label<o[1]){n.label=o[1],o=s;break}if(o&&n.label<o[2]){n.label=o[2],n.ops.push(s);break}o[2]&&n.ops.pop(),n.trys.pop();continue}s=e.call(_,n)}catch(_){s=[6,_],r=0}finally{t=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,a])}}}null==b&&((b=function(_){if(_ in h)return h[_].exports;if(_ in d){var e=d[_];delete d[_];var t={id:_,exports:{}};return h[_]=t,e.call(t.exports,t,t.exports),t.exports}var r=Error("Cannot find module '"+_+"'");throw r.code="MODULE_NOT_FOUND",r}).register=function(_,e){d[_]=e},u.parcelRequire94c2=b),(0,b.register)("kqXj6",function(_,e){Object.defineProperty(_.exports,"getBundleURL",{get:function(){return t},set:function(_){return t=_},enumerable:!0,configurable:!0});var t,r={};t=function(_){var e=r[_];return e||(e=function(){try{throw Error()}catch(e){var _=(""+e.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/[^)\n]+/g);if(_)return(""+_[2]).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/.+)\/[^/]+$/,"$1")+"/"}return"/"}(),r[_]=e),e}}),"function"==typeof SuppressedError&&SuppressedError;var w={};w=JSON.parse('{"_":"","B":"black","W":"white","g":"#231f20","y":"#ffd300","b":"#6262EA","t":"#5DA3EA","s":"#E67070","r":"#e32119","R":"#ab0c0c","c":"#59EEA3","G":"#A1F051","v":"#A664E8","p":"#E869E8","a":"#5BECEC","C":"#53EE53","S":"#F44848","P":"#E66BA8","O":"#F29E4A","k":"#618227","e":"#e1c8b4","l":"#9b9fa4"}');var S={};S=JSON.parse('[{"name":"71 mini","size":5,"bricks":"bbb____bt__btt__b_t___ttt","svg":23,"color":""},{"name":"Butterfly","bricks":"_________bb_t_t_bbbbb_t_bbbbbbbtbbbb_bbbtbbb____btb____bbbtbbb__bb_t_bb___________________","size":9,"svg":20,"color":""},{"name":"Castle","size":7,"bricks":"s_s_s_ssssssssssBBBssssBBBssttbbbttttbbbtttbtbtbt","svg":16},{"name":"Eyes","size":9,"bricks":"ttttttt__tWWWWWWW_tWrrWttW_tWWWWWWW_ttttttt_____t______ttttt____ttttt_____t_t","svg":null,"color":""},{"name":"Creeper","size":10,"bricks":"___________ccGGccGG__cGccGcGc__GBBccBBc__cBBGcBBc__GccBBGGc__ccBBBBcG__GGBBBBcG__cGBccBGc___________","svg":22},{"name":"Stairs","size":8,"bricks":"tt______tt______bbtt____bbtt____vvbbtt__vvbbtt__ppvvbbttppvvbbtt","svg":14},{"name":"Dots","size":9,"bricks":"b_t_a_c____________b_t_a_c__________P_b_t_a_c__________P_b_t_a____________P_b_t_a","svg":null},{"name":"Lines","size":9,"bricks":"aaaaaaaa___________tttttttt_________aaaaaaaa___________tttttttt_________aaaaaaaa","svg":8,"color":""},{"name":"Heart","size":15,"bricks":"__________________RRR___RRR_____RSSSR_RSSSR___RSWWSSRSSSSSR__RSWSSSSSSSSSR__RSSSSSSSSSSSR__RSWSSSSSSSSSR___RSSSSSSSSSR_____RSSSSSSSR_______RSSSSSR_________RSSSR___________RSR_____________R____________________________________","svg":17,"color":""},{"name":"Swiss","size":7,"bricks":"________RRRRR__RRWRR__RWWWR__RRWRR__RRRRR","svg":13,"color":""},{"name":"Germany","size":6,"bricks":"_______gggg__rrrr__yyyy","svg":null,"color":""},{"name":"France","size":8,"bricks":"_________ttWWrr__ttWWrr__ttWWrr__ttWWrr__ttWWrr________","svg":null,"color":""},{"name":"Smiley","size":8,"bricks":"_________yy__yy__yy__yy__________________yyyyyy___yyyy__________","svg":29,"color":""},{"name":"Labyrinthe","size":11,"bricks":"_______tttS_Stttt_S________t___S__Stt_ttttt____t_____S__ttt_S_S____t___t_tttt_t_S_t____tSt_t_t_Sttt___t_t_____Sttt_tttttS","svg":21},{"name":"Temple","size":11,"bricks":"_______________WWW______WWWWWWW___WWWWWWWWW___b_b_b_b____b_b_b_b____v_v_v_v____P_P_P_P____P_P_P_P____WWWWWWW___WWWWWWWWW_","svg":null,"color":""},{"name":"Pacman","size":12,"bricks":"____yyyy______yyyyyyyy___yyyyByyyyy__yyyyyyyyy__yyyyyyyy____yyyyyy______yyyyyy___S_Syyyyyyyy_____yyyyyyyyy___yyyyyyyyyy___yyyyyyyy______yyyy","svg":7,"color":""},{"name":"Ship","size":11,"bricks":"____sWW________sWWW_______sWWW_______s___OOOOOOOOOOOOOO_OBOBOBOBOO__OOOOOOOO_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb___________","svg":19},{"name":"We come in peace","size":13,"bricks":"________________a_____a_______a___a_______aaaaaaa_____aaBaaaBaa___aaaaaaaaaaa__aaaaaaaaaaa__a_aaaaaaa_a__a_a_____a_a_____aa_aa_____________________________","svg":29,"color":""},{"name":"Space mushroom","size":10,"bricks":"______________WW_______WWWW_____WWWWWW___WWBWWBWW__WWWWWWWW____W__W_____W_WW_W___W_W__W_W","svg":6,"color":""},{"name":"Wololo","size":9,"bricks":"____WW_OOW___WW__OWW__W___OWWWbbbW_WWW_WbW_WOW__WWb__OW__bbb__O___W_W__O___W_W__O","svg":null,"color":""},{"name":"Small heart","size":15,"bricks":"________________________________RRRR___RRRR___RrWWrR_RWWrrR__RWWrrrRWWrrrR__RrrrrrrrrrrrR__RrrrrrrrrrrrR___RrrrrrrrrrR_____RrrrrrrrR_______RrrrrrR_________RrrrR___________RrR_____________R______________________","svg":29,"color":""},{"name":"Eye","size":9,"bricks":"____________ggg_____gWWWg___gWbbbWg_gWWbBbWWg_gWbbbWg___gWWWg_____ggg____________","svg":null,"color":"#5da3ea"},{"name":"Enderman","size":10,"bricks":"___________gggggggg__gggggggg__gggggggg__gggggggg__vvvggvvv__gggggggg__gggggggg__gggggggg_____________________","svg":null,"color":"#154b07"},{"name":"Mushroom","size":16,"bricks":"_____________________rrrrWW________WWrrrrWWWW_____WWrrrrrrWWWW____WrrWWWWrrWWW___rrrWWWWWWrrrrr__rrrWWWWWWrrWWr__WrrWWWWWWrWWWW__WWrrWWWWrrWWWW__WWrrrrrrrrrWWr__WrrWWWWWWWWrrr_____WWBWWBWW_______WWWBWWBWWW______WWWWWWWWWW_______WWWWWWWW____________________","svg":null,"color":""},{"name":"Tulip","size":11,"bricks":"______________R_R_R______RRRRR______RRRRR______RRRRR_______RRR_________k________k_k_k______k_k_k_______kkk_________k________________","svg":17,"color":""},{"name":"Chain","size":7,"bricks":"yyy____yBy____yyyyy____yBy____yyyyy____yBy____yyy","svg":31,"color":""},{"name":"Marion","size":9,"bricks":"rr_____rr_rr___rr__rrr_rrr__rrrrrrr__rr_r_rr__rr___rr__rr___rr__rr___rr_rrr___rrr","svg":27,"color":""},{"name":"Renan","size":9,"bricks":"yyyyyyy___yyyyyyy__yy___yy__yy___yy__yyyyyy___yy_yy____yy__yy___yy___yy_yyy___yyy","svg":3,"color":""},{"name":"Violet Pairs","size":8,"bricks":"b_b_b_b_b_b_b_b__________t_t_t_t_t_t_t_t________b_b_b_b_b_b_b_b","svg":5,"color":""},{"name":"Red Cups","size":11,"bricks":"___________rBr_rBr_rBrrrr_rrr_rrr___________r_rBr_rBr_rr_rrr_rrr_r___________rBr_rBr_rBrrrr_rrr_rrr__________","svg":23,"color":""},{"name":"Cactus","size":10,"bricks":"____G______rG_Gk______G_Gk______kkkk_r_____kkk_G______GkGk_____rGkk_______Gk________kk________kk_____","svg":27,"color":""},{"name":"Sunny Face","size":11,"bricks":"____yyy______yyyyyyy___yyyyyyyyy__yyyyyyyyy_yyyWWyWWyyyyyyyyyyyyyyyyyyyyyyyyy_yyWWWWWyy__yyyWWWyyy___yyyyyyy______yyy","svg":null,"color":"#5da3ea"},{"name":"Mountain","size":9,"bricks":"_______________W_______WWW______GGWW__W_GGGGG_kkkGGGGG_kkkkGGGGkkkkkGGGGkkkkkkGGG_________","svg":15,"color":""},{"name":"Dollar","size":17,"bricks":"________________________G_G______________G_G____________GGGGGGG_________GGGGGGGGG_______GG__G_G__GG______GG__G_G__GG______GG__G_G___________GGGGGGGG__________GGGGGGGG___________G_G__GG______GG__G_G__GG______GG__G_G__GG_______GGGGGGGGG_________GGGGGGG____________G_G______________G_G________________________","svg":null,"color":""},{"name":"Waves","size":8,"bricks":"___bbb____bbb____bbttbbbbbttbbbbttttaatttttaattttaaaaaaa","svg":20,"color":""},{"name":"Box","size":8,"bricks":"yyyyyyyyy______yy_bbbb_yy_b__b_yy_b__b_yy_bbbb_yy______yyyyyyyyy","svg":30,"color":"","squared":false},{"name":"Rose","size":9,"bricks":"__SS______SSSS_____SSSS_____SSSS______SS_k______k_kk_____kk_k______kk________k","svg":4,"color":""},{"name":"Time","size":9,"bricks":"__________WWWWWWW___WWWWW_____yyy_______y________y_______WyW_____WyyyW___yyyyyyy__________","svg":9,"color":"","squared":false},{"name":"Watermelon","size":8,"bricks":"_____Sk_____SSBk___SBSSk__SSSSSk_SSBSSk_SBSSSSk_kSSSkk___kkk____","svg":28,"color":""},{"name":"Worms","size":13,"bricks":"___sssss_______sssssss______WWsWWsss_____WBsBWsss_____WBsBWsss_____WWsWWsss_____sssssss_______ssssss_____WWWWWWss_______WssWs__s_____ssss__sss___sssssssssss__sssssssss_ss","svg":null,"color":"","squared":false},{"name":"Ocean Sunrise","size":8,"bricks":"SSSSSSSSSSSyySSSSSyyyySSSyyyyyySbttttttbbbttttbbbbbttbbbbbbbbbbb","svg":12,"color":""},{"name":"Crosses","size":13,"bricks":"b___b___b___b__v___v___v___vvv_vvv_vvv___v___v___v__p___p___p___ppp_ppp_ppp_ppp___p___p___p__P___P___P___PPP_PPP_PPP___P___P___P__p___p___p___ppp_ppp_ppp_ppp___p___p___p","svg":10,"color":""},{"name":"Negative space","size":9,"bricks":"tttttttttt_t_t_t_t_________b_b_b_b_bbbbbbbbbb_b_b_b_b___________t_t_t_t_ttttttttt_________","svg":null},{"name":"UK","size":11,"bricks":"brbbWrWbbrbbbrbWrWbrbbbbbrWrWrbbbWWWWWrWWWWWrrrrrrrrrrrWWWWWrWWWWWbbbrWrWrbbbbbrbWrWbrbbbrbbWrWbbrb__________","svg":null,"color":""},{"name":"Greece","size":11,"bricks":"ttWttttttttttWttWWWWWWWWWWWttttttttWttWWWWWWttWttttttttWWWWWWWWWWWtttttttttttWWWWWWWWWWWttttttttttt__________","svg":null,"color":""},{"name":"Russia","size":8,"bricks":"________WWWWWWWWWWWWWWWWttttttttttttttttrrrrrrrrrrrrrrrr________________","svg":null,"color":""},{"name":"Ukraine","size":8,"bricks":"________ttttttttttttttttttttttttyyyyyyyyyyyyyyyyyyyyyyyy________","svg":null,"color":""},{"name":"Poland","size":7,"bricks":"________WWWWW__WWWWW__rrrrr__rrrrr_______________","svg":null,"color":""},{"name":"Yellow 71","size":9,"bricks":"_________yyyyy__yyyyyyy_yyy___yy__yy__yyy__yy_yyy___yy_yy____yy_yy____yy__________________","svg":26,"color":""},{"name":"71 on white","size":6,"bricks":"WWWWWWrrrWWrWWrWrrWrWWWrWrWWWrWWWWWW______","svg":null},{"name":"Blue 71","size":8,"bricks":"ttttt__bttttt_bb___ttbbb__tt__bb__tt__bb_tt___bb_tt___bb_tt___bb","svg":null,"color":""},{"name":"Seventy one","size":21,"bricks":"rr_yy_rrry_yrrry_yrrrr_ry_yr__y_yr_ry_y_r_rr_yy_rr_yy_r_ry_y_r_r_ry_yr__y_yr_ry_y_r_rr_y_yrrry_yrrryyy_r_yyy__________________y______________r_____yyyrrry_yrrryyyrr_y_y__yrr_y_yrr_y_yr__y_yyyyrrr_y_rrry_yrrryyy____________________yrrryyyrrr_________yy_r_ry_yrr_____________rrry_yrrryyyyyyyyyyyy_____________________________________________________________________________________________________________________________","svg":null},{"name":"B71","size":10,"bricks":"__________bbbtttt_b_b__b__tbb_b__b__t_b_bbb__t__b_b__b_t__b_b__bt___b_bbb_t__bbb__________","svg":null},{"name":"Pig","size":9,"bricks":"__________PP___PP__PPP_PPP__WWPPPWW__WBPPPBW__PPsssPP__PsBsBsP__PPsssPP___________","svg":null},{"name":"Big Pig","size":15,"bricks":"________________sss_______sss__ss__sssss__ss____sssssssss_____sWBsssssBWs___ssBBsssssBBss__ssss_____ssss__sss_sssss_sss__sss_sBsBs_sss__sss_sssss_sss___sss_____sss____sssssssssss__GGGsssssssssGGGGGGsGsssssGsGGGGGGssGGGGGssGGG_______________","svg":2,"color":""},{"name":"Donkey Kong","size":9,"bricks":"OOr__a___OOr__a___ppppppp_O______a________a____pppppppr_a______b_a___O__ppppppp__","svg":null,"color":""},{"name":"Banana","size":12,"bricks":"_________________e__________eee_________eee_________eee_________eeeyy_____yyeeyyyy___yyyyey_yC___yy_yyy___C_____yyyy_________yyyy_________yyyy","svg":null},{"name":"Fox","size":8,"bricks":"e______eee_OO_eeeeOOOOeeeOBOOBOeOOOOOOOO_WWBBWW___WWWW_____WW___","svg":null},{"name":"Wiki","size":10,"bricks":"_______________________GGGG_____GGkkGG___GkggggkG__GgWWWWgG__GkggggkG___GGkkGG_____GGGG_______________________","svg":null},{"name":"Baby Dog","size":8,"bricks":"_______W__eeeeWWWWeeWeWWWegWegeeeeWWWWee_eWggWe__eWWWWe____WW","svg":null},{"name":"Cute dog","size":9,"bricks":"__________O_____O_OOOWWWOOOOOWWWWWOOOOeWWWWOO_eBeWWBW__eBeWWBW___eWBWW_____WRW____________","svg":null},{"name":"icon:extra_life","size":9,"bricks":"___________rr_rr___rrrrrrr_rrrrrrrrrrrrrrrrrr_rrrrrrr___rrrrr_____rrr_______r_____________","svg":null},{"name":"icon:streak_shots","size":8,"bricks":"_W_W_W__W_W_W_W_tttttt_WttttttW_tttttt_W______W______W_____WWWW","svg":null},{"name":"icon:base_combo","size":8,"bricks":"ttttttttttyyttttttyytyyttttttyyttyyttttttyytyyttttttyytttttttttt________","svg":null},{"name":"icon:slow_down","size":10,"bricks":"_____________kk_______kkkk_____kkkkkkGG__kkkkkkGBG_kkkkkkGGGGkkkkkkGG__GGGGGG____GG__GG_____________","svg":null},{"name":"icon:bigger_puck","size":8,"bricks":"_________tttttt__tttttt______________________W___________WWWWWW_","svg":null},{"name":"icon:viscosity","size":8,"bricks":"________tt______bbtt__ttbbbbttbbbtbbtbbbbbtbbtbbbbbybbybbbbbbbbb","svg":null},{"name":"icon:left_is_lava","size":8,"bricks":"r_______rtttttt_rtttttt_r_______r_______r____W__r_______r_WWW___","svg":null},{"name":"icon:right_is_lava","size":8,"bricks":"_______r_ttttttr_ttttttr_______r_______r_____W_r_______r__WWW__r","svg":null},{"name":"icon:telekinesis","size":8,"bricks":"_____PW_____s______P______s_______P_______s_______P_____WWWWW","svg":null},{"name":"icon:top_is_lava","size":8,"bricks":"rrrrrrrr_tttttt__tttttt____________________W_______________WWW__","svg":null},{"name":"icon:coin_magnet","size":8,"bricks":"__y__y_yy_________y_y_y_y________y_y______________y______WWW____","svg":null},{"name":"icon:skip_last","size":5,"bricks":"_ttt_t_t_ttt_ttt_t_t_ttt_","svg":null},{"name":"icon:multiball","size":8,"bricks":"_________tttttt__tttttt___________W__W____________________WWW___","svg":null},{"name":"icon:smaller_puck","size":8,"bricks":"_________tttttt__tttttt_____________W_____________________WW____","svg":null},{"name":"icon:pierce","size":6,"bricks":"ttttttttttWtttt__ttt__ttt__ttt__tttt","svg":null},{"name":"icon:picky_eater","size":8,"bricks":"rtrtrtrttrtrtrtrrtrtrtrt____________________t_____________WWWW","svg":null},{"name":"icon:metamorphosis","size":8,"bricks":"aaaaaa__aaaa__________W___________ttaatt__tttttt_________WWW","svg":null},{"name":"icon:compound_interest","size":8,"bricks":"_________tttttt__ttt__t______y_____________W__y_________rrWWWrrr","svg":null},{"name":"icon:hot_start","size":7,"bricks":"ttttttttttt_tt_____W_____y_y_____y_____y_y_WWW_y_","svg":null},{"name":"icon:sapper","size":9,"bricks":"_____WW______W__W_tttWttt_yttgggtt__tgggggt__tgggggt__tgggggt__ttgggtt__ttttttt___________","svg":null,"color":"#000000"},{"name":"icon:bigger_explosions","size":8,"bricks":"__r_______ry_rr___ryry__ryyyW_rr_rrWyyy___yryrr__yrry_rr_rr","svg":null},{"name":"icon:extra_levels","size":6,"bricks":"__________b__t_bb_ttt_b__t_bbb____________","svg":null},{"name":"icon:pierce_color","size":8,"bricks":"bb___bbbb__b_bbb_____bbb____bbbbb____bbbbb____bbbbb____bbbbb____","svg":null},{"name":"icon:soft_reset","size":8,"bricks":"___rg_____rrgg___rryggg_rryWggggrryWgggg_ryyggg___rrgg_____rg___","svg":null},{"name":"icon:ball_repulse_ball","size":8,"bricks":"WsP__PsWs______sP______P________________P______Ps______sWsP__PsW","svg":null},{"name":"icon:ball_attract_ball","size":8,"bricks":"__P__P____s__s__PsW__WsP________________PsW__WsP__s__s____P__P__","svg":null},{"name":"icon:puck_repulse_ball","size":8,"bricks":"__________________W_______s___W___P__s______P____________WWW__","svg":null},{"name":"A","size":7,"bricks":"___t_____ttt___t___t__t___t_tttttttt_____tt_____t","svg":null},{"name":"B","size":9,"bricks":"_bbbbb_____bb_bb____bb_bb____bb_bb____bbbb_____bb_bb____bb_bb____bb_bb___bbbbb____","svg":null},{"name":"C","size":8,"bricks":"__rrrr___rrrrrr_rrr___rrrr______rr______rrr___rr_rrrrrr___rrrr","svg":null},{"name":"D","size":8,"bricks":"_GGGGG____GG__G___GG__GG__GG__GG__GG__GG__GG__GG__GG__G__GGGGG","svg":null},{"name":"e","size":8,"bricks":"__tttt___tttttt_tt____tttt____tttttttttttt_______tt__tt___tttt_","svg":null},{"name":"icon:wind","size":9,"bricks":"_ss______s___PPPP_s_________sssssss___________sssssss_s________s___PPPP__ss","svg":null},{"name":"icon:sturdy_bricks","size":7,"bricks":"ttbttttbtttbtt____W_____W_W___W___W_______WWW____","svg":null},{"name":"icon:respawn","size":9,"bricks":"tttt___ttttt__t__ttta_ttt_______________________________W_________________WWW","svg":null},{"name":"Elephant","size":18,"bricks":"_________________________llll_________lll_llllll_lll___lsssllllllllsssl__lsssllllllllsssl__lsssllBllBllsssl__lssllWllllWllssl___ll__llllll__ll_________llll_______________ll______________llll______________ll________________________________________________________________________________________________________________________________________","svg":25,"color":""},{"name":"Orca","size":20,"bricks":"____________________________________________________________________________________________BBBBB____BBB_BBB___BBBBBBB____BBBBB___BBBBBBBBB____BBB___BBBBWBBWWW_____BBBBBBBBBBBWWWW_____BBBBBBBBBBWWWWW_____BBBBBBBBBWWWWW_______BBBBBBBWWWWW___________WWBBWWW______________BBB_BB______________BB__B______________________________________________________________________________________________________________________________","svg":null,"color":"#1c71d8"},{"name":"Shark","size":17,"bricks":"__________________________________________g_______________ggg____________ggggggg_________ggggggggg_______ggggggggggg_____gggggWWWggggg____gBgWWWWWWWgBg___ggWWWWrWrWWWWgg__ggWWWrrrrrWWWgg_ggWWWrrrrrrrWWWggggWWrrrrrrrrrWWgggWWWrWrWrWrWrWWWggWWrrWWWWWWWrrWWggWWWWWWWWWWWWWWWg_________________","svg":null,"color":"#3584e4"},{"name":"Bird","size":13,"bricks":"_______RRR____R____RSSSR___RR__RSSWWWR__RSR_RSWWBWR__RSSRRSWWWWyy_RSSSRSWWWR___RSSSSSSRR_____RRSSyyyy______RSyyyyy___RRRRSyyyy____RSSSRyyy_____RRRR______________________","svg":null,"color":""},{"name":"Tux","size":14,"bricks":"_____gggg________gggggggg_____gggggggggg____gggggggggg___gggggggggggg__gggWBggWBggg__gggBBggBBggg__ggggyyyygggg_ggggggyyggggggggggWWWWWWggggg_gWWWWWWWWg_g__WWWWWWWWWW____WWWWWWWWWW____yyy____yyy__","svg":null,"color":"#62a0ea"},{"name":"Armenia","size":6,"bricks":"_______rrrr__bbbb__yyyy_____________","svg":null,"color":""},{"name":"Austria","size":6,"bricks":"_______rrrr__WWWW__rrrr______","svg":null,"color":""},{"name":"Benin","size":8,"bricks":"_________kkyyyy__kkyyyy__kkrrrr__kkrrrr__________________________","svg":null,"color":""},{"name":"Botswana","size":10,"bricks":"___________tttttttt__tttttttt__tttttttt__WWWWWWWW__BBBBBBBB__WWWWWWWW__tttttttt__tttttttt__tttttttt___________","svg":null,"color":""},{"name":"Bulgaria","size":6,"bricks":"_______WWWW__cccc__rrrr_____________","svg":null,"color":""},{"name":"Canada","size":7,"bricks":"________rWWWr__rWrWr__rWWWr______________________","svg":null,"color":""},{"name":"Chad","size":8,"bricks":"_________bbyyRR__bbyyRR__bbyyRR","svg":null,"color":""},{"name":"China","size":8,"bricks":"_________RRyRRR__RyRyRR__RRyRRR__RRRRRR","svg":null,"color":""},{"name":"Colombia","size":7,"bricks":"________yyyyy__yyyyy__bbbbb__RRRRR_______________","svg":null,"color":""},{"name":"Republic of the Congo","size":7,"bricks":"________kkkyy__kkyyr__kyyrr__yyrrr_______________","svg":null,"color":""},{"name":"Côte d\'Ivoire","size":8,"bricks":"_________OOWWGG__OOWWGG__OOWWGG","svg":null,"color":""},{"name":"Denmark","size":8,"bricks":"_________rrWrrr__rrWrrr__WWWWWW__rrWrrr__rrWrrr","svg":null,"color":""},{"name":"El Salvador","size":8,"bricks":"_________bbbbbb__bbbbbb__WWWkWW__WWkWWW__bbbbbb__bbbbbb","svg":null,"color":""},{"name":"Egypt","size":8,"bricks":"_________RRRRRR__RRRRRR__WWWyWW__WWyWWW__gggggg__gggggg","svg":null,"color":"#1c71d8"},{"name":"Estonia","size":8,"bricks":"_________tttttt__tttttt__gggggg__gggggg__WWWWWW__WWWWWW","svg":null,"color":"#986a44"},{"name":"Finland","size":6,"bricks":"_______WtWW__tttt__WtWW_____________","svg":null,"color":""},{"name":"Gabon","size":5,"bricks":"______CCC__yyy__ttt______","svg":null,"color":""},{"name":"Georgia","size":9,"bricks":"__________WrWrWrW__WWWrWWW__rrrrrrr__WWWrWWW__WrWrWrW__________________","svg":null,"color":""},{"name":"Guinea","size":8,"bricks":"_________rryycc__rryycc__rryycc","svg":null,"color":""},{"name":"Indonesia","size":6,"bricks":"_______rrrr__rrrr__WWWW__WWWW_______","svg":null,"color":""},{"name":"icon:one_more_choice","size":7,"bricks":"ttt____tbbb___tbttt__tbtbbb__btbbb___tbbb____bbb_","svg":null},{"name":"icon:instant_upgrade","size":5,"bricks":"ttt__tbbb_tbbb_tbbb__bbb_","svg":null},{"name":"icon:checkmark_checked","size":6,"bricks":"_WWWWGWBBBGGGGBGGWWGGGBWWBGBBW_WWWW_","svg":null},{"name":"icon:checkmark_unchecked","size":6,"bricks":"_WWWW_WBBBBWWBBBBWWBBBBWWBBBBW_WWWW_","svg":null},{"name":"icon:fullscreen","size":6,"bricks":"WW__WWW____W____________W____WWW__WW","svg":null},{"name":"icon:exit_fullscreen","size":6,"bricks":"_W__W_WW__WW____________WW__WW_W__W_","svg":null}]');var x={};x=JSON.parse('"29033855"');var M=[{requires:"",threshold:0,giftable:!1,id:"extra_life",name:"+1 life",max:7,help:function(_){return"The ball will bounce on the bottom ".concat(_," time").concat(_>1?"s":""," before being lost.")},fullHelp:"Normally, you have one ball per run, and the run is over as soon as you drop it.\n This perk adds a white bar at the bottom of the screen that will save a ball once, and break in the process. \n You'll loose one level of that perk every time a ball bounces at the bottom of the screen. "},{requires:"",threshold:0,id:"streak_shots",giftable:!0,name:"Single puck hit streak",max:1,help:function(_){return"More coins if you break many bricks at once"},fullHelp:"Every time you break a brick, your combo (number of coins per bricks) increases by one. However, as soon as the ball touches your puck, \n the combo is reset to its default value, and you'll just get one coin per brick. So you should try to hit many bricks in one go for more score. \n Once your combo rises above the base value, your puck will become red to remind you that it will destroy your combo to touch it with the ball.\n This can stack with other combo related perks, the combo will rise faster but reset more easily as any of the conditions is enough to reset it. "},{requires:"",threshold:0,id:"base_combo",giftable:!0,name:"+3 base combo",max:7,help:function(_){return"Every brick drops at least ".concat(1+3*_," coins.")},fullHelp:"Your combo (number of coins per bricks) normally starts at 1 at the beginning of the level, and resets to one when you bounce around without hitting anything. \n With this perk, the combo starts 3 points higher, so you'll always get at least 4 coins per brick. Whenever your combo reset, it will go back to 4 and not 1. \n Your ball will glitter a bit to indicate that its combo is higher than one."},{requires:"",threshold:0,giftable:!1,id:"slow_down",name:"Slower ball",max:2,help:function(_){return"Ball moves ".concat(_>1?"even":""," more slowly.")},fullHelp:"The ball starts relatively slow, but every level of your run it will start a bit faster, and it will also accelerate if you spend a lot of time in one level. This perk makes it\n more manageable. You can get it at the start every time by enabling kid mode in the menu."},{requires:"",threshold:0,giftable:!1,id:"bigger_puck",name:"Bigger puck",max:2,help:function(_){return"Easily catch ".concat(_>1?"even":""," more coins.")},fullHelp:"A bigger puck makes it easier to never miss the ball and to catch more coins, and also to precisely angle the bounces (the ball's angle only depends on where it hits the puck). \n However, a large puck is harder to use around the sides of the level, and will make it sometimes unavoidable to miss (not hit anything) which comes with downsides. "},{requires:"",threshold:0,giftable:!1,id:"viscosity",name:"Viscosity",max:3,help:function(_){return"".concat(_>1?"Even slower":"Slower"," coins fall.")},fullHelp:"Coins normally accelerate with gravity and explosions to pretty high speeds. This perk constantly makes them slow down, as if they were in some sort of viscous liquid. \n This makes catching them easier, and combines nicely with perks that influence the coin's movement. "},{requires:"",threshold:0,id:"left_is_lava",giftable:!0,name:"Avoid left side",max:1,help:function(_){return"More coins if you don't touch the left side."},fullHelp:"Whenever you break a brick, your combo will increase by one, so you'll get one more coin from all the next bricks you break.\n However, your combo will reset as soon as your ball hits the left side . \n As soon as your combo rises, the left side becomes red to remind you that you should avoid hitting them. \n The effect stacks with other combo perks, combo rises faster with more upgrades but will also reset if any\n of the reset conditions are met."},{requires:"",threshold:0,id:"right_is_lava",giftable:!0,name:"Avoid right side",max:1,help:function(_){return"More coins if you don't touch the right side."},fullHelp:"Whenever you break a brick, your combo will increase by one, so you'll get one more coin from all the next bricks you break.\n However, your combo will reset as soon as your ball hits the right side . \n As soon as your combo rises, the right side becomes red to remind you that you should avoid hitting them. \n The effect stacks with other combo perks, combo rises faster with more upgrades but will also reset if any\n of the reset conditions are met."},{requires:"",threshold:0,id:"top_is_lava",giftable:!0,name:"Sky is the limit",max:1,help:function(_){return"More coins if you don't touch the top."},fullHelp:"Whenever you break a brick, your combo will increase by one. However, your combo will reset as soon as your ball hit the top of the screen. \n When your combo is above the minimum, a red bar will appear at the top to remind you that you should avoid hitting it. \n The effect stacks with other combo perks."},{requires:"",threshold:0,giftable:!1,id:"skip_last",name:"Easy Cleanup",max:7,help:function(_){return"The last ".concat(_>1?_+" bricks":"brick"," left will self-destruct.")},fullHelp:"You need to break all bricks to go to the next level. However, it can be hard to get the last ones. \n Clearing a level early brings extra choices when upgrading. Never missing the bricks is also very beneficial. \n So if you find it difficult to break the last bricks, getting this perk a few time can help."},{requires:"",threshold:500,id:"telekinesis",giftable:!0,name:"Puck controls ball",max:2,help:function(_){return 1==_?"Control the ball's trajectory.":"Stronger effect on the ball"},fullHelp:"Right after the ball hits your puck, you'll be able to direct it left and right by moving your puck. \n The effect stops when the ball hits a brick and resets the next time it touches the puck. It also does nothing when the ball is going downward after bouncing at the top. "},{requires:"",threshold:1e3,giftable:!1,id:"coin_magnet",name:"Coins magnet",max:3,help:function(_){return 1==_?"Puck attracts coins.":"Stronger effect on the coins"},fullHelp:"Directs the coins to the puck. The effect is stronger if the coin is close to it already. Catching 90% or 100% of coins bring special bonuses in the game. \n Another way to catch more coins is to hit bricks from the bottom. The ball's speed and direction impacts the spawned coin's velocity. "},{requires:"",threshold:1500,id:"multiball",giftable:!0,name:"+1 ball",max:6,help:function(_){return"Start every levels with ".concat(_+1," balls.")},fullHelp:"As soon as you drop the ball in Breakout 71, you loose. With this perk, you get two balls, and so you can afford to lose one. \n The lost balls come back on the next level. Having more than one balls makes some further perks available, and of course clears the level faster."},{requires:"",threshold:2e3,giftable:!1,id:"smaller_puck",name:"Smaller puck",max:2,help:function(_){return 1==_?"Also gives +5 base combo.":"Even smaller puck and higher base combo"},fullHelp:"This makes the puck smaller, which in theory makes some corner shots easier, but really just raises the difficulty. \n That's why you also get a nice bonus of +5 coins per brick for all bricks you'll break after picking this. "},{requires:"",threshold:3e3,id:"pierce",giftable:!0,name:"Piercing",max:3,help:function(_){return"Ball pierces ".concat(3*_," bricks after a puck bounce.")},fullHelp:"The ball normally bounces as soon as it touches something. With this perk, it will continue its trajectory for up to 3 bricks broken. \n After that, it will bounce on the 4th brick, and you'll need to touch the puck to reset the counter. This combines particularly well with Sapper. "},{requires:"",threshold:4e3,id:"picky_eater",giftable:!0,name:"Picky eater",max:1,help:function(_){return"More coins if you break bricks color by color."},fullHelp:"Whenever you break a brick the same color as your ball, your combo increases by one. \n If it's a different color, the ball takes that new color, but the combo resets.\n The bricks with the right color will get a white border. \n Once you get a combo higher than your minimum, the bricks of the wrong color will get a red halo. \n If you have more than one ball, they all change color whenever one of them hits a brick.\n \n "},{requires:"",threshold:5e3,giftable:!1,id:"metamorphosis",name:"Stain",max:1,help:function(_){return"Coins color the bricks they touch."},fullHelp:'With this perk, coins will be of the color of the brick they come from, and will color the first brick they touch in the same color. Coins spawn with the speed\n of the ball that broke them, which means you can aim a bit in the direction of the bricks you want to "paint".\n '},{requires:"",threshold:6e3,id:"compound_interest",giftable:!0,name:"Compound interest",max:1,help:function(){return"+1 combo per brick broken, resets on coin lost"},fullHelp:"Your combo will grow by one every time you break a brick, spawning more and more coin with every brick you break. Be sure however to catch every one of those coins\n with your puck, as any lost coin will decrease your combo by one point. One your combo is above the minimum, the bottom of the play area will\n have a red line to remind you that coins should not go there. This perk combines with other combo perks, the combo will rise faster but reset more easily.\n "},{requires:"",threshold:7e3,id:"hot_start",giftable:!0,name:"Hot start",max:3,help:function(_){return"Start at combo ".concat(15*_+1,", -").concat(_," combo per second")},fullHelp:"At the start of every level, your combo will start at +15 points, but then every second it will be decreased by one. This means the first 15 seconds in a level will spawn\n many more coins than the following ones, and you should make sure that you clear the level quickly. The effect stacks with other combo related perks, so you might be able to raise \n the combo after the 15s timeout, but it will keep ticking down. Every time you take the perk again, the effect will be more dramatic.\n "},{requires:"",threshold:9e3,id:"sapper",giftable:!0,name:"Sapper",max:7,help:function(_){return 1===_?"The first brick broken becomes a bomb.":"The first ".concat(_," bricks broken become bombs.")},fullHelp:'Instead of just disappearing, the first brick you break will be replaced by a bomb brick. Bouncing the ball on the puck re-arms the effect. "Piercing" will instantly\n detonate the bomb that was just placed. Leveling-up this perk will allow you to place more bombs. Remember that bombs impact the velocity of nearby coins, so too many explosions\n could make it hard to catch the fruits of your hard work. \n '},{requires:"",threshold:11e3,id:"bigger_explosions",name:"Kaboom",max:1,giftable:!1,help:function(_){return"Bigger explosions"},fullHelp:"The default explosion clears a 3x3 square, with this it becomes a 5x5 square, and the blowback on the coins is also significantly stronger. "},{requires:"",threshold:13e3,giftable:!1,id:"extra_levels",name:"+1 level",max:3,help:function(_){return"Play ".concat(_+7," levels instead of 7")},fullHelp:"The default run can last a max of 7 levels, after which the game is over and whatever score you reached is your run score. \n Each level of this perk lets you go one level higher. The last levels are often the ones where you make the most score, so the difference can be dramatic."},{requires:"",threshold:15e3,giftable:!1,id:"pierce_color",name:"Color pierce",max:1,help:function(_){return"Balls pierce bricks of their color."},fullHelp:"Whenever a ball hits a brick of the same color, it will just go through unimpeded. \n Once it reaches a brick of a different color, it will break it, take its color and bounce."},{requires:"",threshold:18e3,giftable:!1,id:"soft_reset",name:"Soft reset",max:2,help:function(_){return"Combo grows ".concat(_>1?"even":""," slower but resets less.")},fullHelp:"The combo normally climbs every time you break a brick. This will sometimes cancel that climb, but also limit the impact of a combo reset."},{requires:"multiball",threshold:21e3,giftable:!1,id:"ball_repulse_ball",name:"Personal space",max:3,help:function(_){return 1===_?"Balls repulse balls.":"Stronger repulsion force"},fullHelp:"Balls that are less than half a screen width away will start repulsing each other. The repulsion force is stronger if they are close to each other.\n Particles will jet out to symbolize this force being applied. This perk is only offered if you have more than one ball already."},{requires:"multiball",threshold:25e3,giftable:!1,id:"ball_attract_ball",name:"Gravity",max:3,help:function(_){return 1===_?"Balls attract balls.":"Stronger attraction force"},fullHelp:"Balls that are more than half a screen width away will start attracting each other. The attraction force is stronger when they are furthest away from each other.\n Rainbow particles will fly to symbolize the attraction force. This perk is only offered if you have more than one ball already."},{requires:"",threshold:3e4,giftable:!1,id:"puck_repulse_ball",name:"Soft landing",max:2,help:function(_){return 1===_?"Puck repulses balls.":"Stronger repulsion force"},fullHelp:"When a ball gets close to the puck, it will start slowing down, and even potentially bouncing without touching the puck."},{requires:"",threshold:35e3,giftable:!1,id:"wind",name:"Wind",max:3,help:function(_){return 1===_?"Puck position creates wind.":"Stronger wind force"},fullHelp:"The wind depends on where your puck is, if it's in the center of the screen nothing happens, if it's on the left it will blow leftwise, if it's on the right of the screen\n then it will blow rightwise. The wind affects both the balls and coins."},{requires:"",threshold:4e4,giftable:!1,id:"sturdy_bricks",name:"Sturdy bricks",max:4,help:function(_){return 1===_?"Bricks sometimes resist hits but drop more coins.":"Bricks resist more and drop more coins"},fullHelp:"With level one of this perk, the ball has a 20% chance to bounce harmlessly on bricks, \n but generates 10% more coins when it does break one. \n This +10% is not shown in the combo number. At level 4 the ball has 80% chance of bouncing and brings 40% more coins."},{requires:"",threshold:45e3,giftable:!1,id:"respawn",name:"Respawn",max:4,help:function(_){return 1===_?"The first brick hit of two+ will respawn.":"More bricks can respawn"},fullHelp:"After breaking two or more bricks, when the ball hits the puck, the first brick will be put back in place, provided that space is free and the brick wasn't a bomb.\n Some particle effect will let you know where bricks will appear. Levelling this up lets you respawn up to 4 bricks at a time, but there should always be at least one destroyed.\n "},{requires:"",threshold:5e4,giftable:!1,id:"one_more_choice",name:"+1 choice until run end",max:3,help:function(_){return 1===_?"Further level ups will offer one more option in the list.":"Even more options"},fullHelp:"Every upgrade menu will have one more option. \n Doesn't increase the number of upgrades you can pick. \n "},{requires:"",threshold:55e3,giftable:!1,id:"instant_upgrade",name:"+2 upgrades now",max:2,help:function(_){return 1===_?"-1 choice until run end.":"Even fewer options"},fullHelp:"Immediately pick two upgrades, so that you get one free one and one to repay the one used to get this perk. Every further menu to pick upgrades will have fewer options to choose from."}],z={},R=_(JSON.parse("[\"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20'><path d='M3.25 10h13.5M10 3.25v13.5' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M11 6a5 5 0 01-5 5 5 5 0 01-5-5 5 5 0 015-5 5 5 0 015 5' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20'><path d='M10-10L20 0v10L10 0zM20 0L10-10V0l10 10zm0 10L10 0v10l10 10zm0 10L10 10v10l10 10zM0 20l10-10v10L0 30zm0-10L10 0v10L0 20zM0 0l10-10V0L0 10z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M15.986 4.186 4.1 16.072v.58L16.566 4.186Zm7.62 0 12.38 12.38v-.58l-11.8-11.8Zm12.38 19.248L23.52 35.9h.58l11.886-11.886ZM4.1 23.52v.58l11.8 11.8h.58z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='25' height='25'><path d='M9.19 0v3.93A9.187 9.187 0 003.93 9.19H0m0 6.618h3.93a9.188 9.188 0 005.26 5.26V25m6.619 0v-3.93a9.188 9.188 0 005.261-5.261H25m0-6.618h-3.93A9.188 9.188 0 0015.81 3.93V0' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='29' height='33.487'><path d='M29 20.928v14.813M14.5 12.56v16.745M29-2.559v6.744l-14.5 8.374L0 4.189v-6.745m29 6.742l14.5 8.37m0 16.745L29 20.928l-14.5 8.376L0 20.931l-14.5 8.376m0-16.744L0 4.189m0 31.487V20.931' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='29' height='50.115'><path d='M14.498 16.858L0 8.488.002-8.257l14.5-8.374L29-8.26l-.002 16.745zm0 50.06L0 58.548l.002-16.745 14.5-8.373L29 41.8l-.002 16.744zM28.996 41.8l-14.498-8.37.002-16.744L29 8.312l14.498 8.37-.002 16.745zm-29 0l-14.498-8.37.002-16.744L0 8.312l14.498 8.37-.002 16.745z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='62' height='68'><rect x='0' y='0' width='62' height='68' fill='black'/><path d='M41.845 51.072h3.465v-7.035h-7.076v13.999H52.18V37.21H31.117m0 27.79V37.21M20.389 51.07h-3.466v-7.034H24v13.999H10.055V37.21h21.062m10.728-20.283h3.465v7.035h-7.076V9.964H52.18V30.79H31.117m0-27.789v27.79M20.389 16.927h-3.466v7.035H24V9.964H10.055V30.79h21.062M3 3h56v62H3.126z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='26.55' height='25'><rect x='0' y='0' width='26.55' height='25' fill='black'/><path d='M0 10.86v3.22c2.7.08 4.9 2.31 4.9 5.03V25h3.2v-5.9c0-4.48-3.63-8.16-8.1-8.24ZM18.17 25h3.21v-5.9a5.05 5.05 0 0 1 5.03-5.02h.14v-3.21h-.14a8.27 8.27 0 0 0-8.24 8.24zm3.21-25h-3.21v1.64a5.05 5.05 0 0 1-5.03 5.02A5.05 5.05 0 0 1 8.1 1.64V0H4.89v1.64c0 4.53 3.7 8.24 8.25 8.24 4.53 0 8.24-3.7 8.24-8.24z' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='79.392'><path d='m.135 40.054-14.277-25.722M0 40.054l14.278-25.722M0 40.054v-40m0 40-20-20 20-20 20 20Zm-.135-.716L14.142 65.06M0 39.338-14.278 65.06M0 39.338v40m0-40 20 20-20 20-20-20Zm40.136.716L25.858 14.332M40 40.054l14.278-25.722M40 40.054v-40m-20 20 20-20 20 20-20 20Zm19.865 19.284L54.142 65.06M40 39.338 25.722 65.06M40 39.338v40m20-20-20 20-20-20 20-20Z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='50' height='29.442'><path d='M35.569-17.373 22.959 4.468l-12.61-21.841Zm0 29.442-12.61 21.84-12.61-21.84Zm25-14.721-12.61 21.841-12.61-21.841zm0 29.441-12.61 21.842-12.61-21.842Zm-33.478 0L39.7 4.95l12.61 21.84zM10.569-2.652l-12.61 21.841-12.61-21.841Zm0 29.441-12.61 21.842-12.61-21.842Zm-33.478 0L-10.3 4.95l12.61 21.84zm25-14.72L14.7-9.773l12.61 21.842zm0 29.441L14.7 19.67l12.61 21.841z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='59.428'><path d='M0 70.975V47.881m20-1.692L8.535 52.808v13.239L20 72.667l11.465-6.62V52.808zm0-32.95l11.465-6.62V-6.619L20-13.24 8.535-6.619V6.619L20 13.24m8.535 4.927v13.238L40 38.024l11.465-6.62V18.166L40 11.546zM20 36.333L0 47.88m0 0v23.094m0 0l20 11.548 20-11.548V47.88m0 0L20 36.333m0 0l20 11.549M0 11.547l-11.465 6.619v13.239L0 38.025l11.465-6.62v-13.24L0 11.548v-23.094l20-11.547 20 11.547v23.094M20 36.333V13.24' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='70' height='8'><path d='M-.02 22c8.373 0 11.938-4.695 16.32-9.662C20.785 7.258 25.728 2 35 2c9.272 0 14.215 5.258 18.7 10.338C58.082 17.305 61.647 22 70.02 22M-.02 14.002C8.353 14 11.918 9.306 16.3 4.339 20.785-.742 25.728-6 35-6 44.272-6 49.215-.742 53.7 4.339c4.382 4.967 7.947 9.661 16.32 9.664M70 6.004c-8.373-.001-11.918-4.698-16.3-9.665C49.215-8.742 44.272-14 35-14c-9.272 0-14.215 5.258-18.7 10.339C11.918 1.306 8.353 6-.02 6.002' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='45' height='51.96'><path d='M52.48 44.47a15 15 0 01-14.96 0 15 15 0 00-7.48 12.96M7.48 44.42a15 15 0 01-14.96 0M15 57.44c0-5.35-2.9-10.35-7.52-13.02a15 15 0 017.48-12.97M7.48 18.5a14.97 14.97 0 01-14.98-.03m15.02-.03A15 15 0 0115 5.47a15 15 0 00-4.4-10.62m23.8.05A15 15 0 0030 5.53a15 15 0 017.48 12.96 14.9 14.9 0 0015.02-.03m-22.5 13a15.13 15.13 0 017.52 13.01m-7.56-39a15 15 0 01-14.96 0M7.48 18.5a15 15 0 017.48 12.96 15 15 0 0015.04 0 15 15 0 017.48-12.96' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"45.491\\\" height=\\\"44.293\\\" viewBox=\\\"0 0 12.036 11.719\\\"><path d=\\\"M-.036-.081h12.157V11.82H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.112189;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M.051.134h3.622v3.615h3.981V7.55h4.13v4.006\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='72' height='43.875'><path d='m14.296 7.185 7.236 7.234L36.002-.048l14.47 14.47 7.236-7.233L36-14.518Zm-7.275 7.251 7.258 7.26 7.259-7.26-7.258-7.259zm-28.798 14.76 7.237 7.237L-.023 21.916 14.452 36.39l7.26-7.258L0 7.42Zm50.746 7.193-7.258-7.258-7.26 7.258 7.26 7.26zm57.568.046 7.24-7.238L72 7.42 50.282 29.137l7.259 7.259L72.02 21.918Zm-28.993-.042-7.26-7.258-7.258 7.258 7.26 7.26zm.233 14.742L36 29.358 14.223 51.135l7.258 7.258L36 43.875l14.518 14.517ZM50.453 14.45l7.259 7.26 7.258-7.26-7.258-7.257z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"88.718\\\" height=\\\"59.048\\\" viewBox=\\\"0 0 23.473 15.623\\\"><path d=\\\"M-.036-.081h23.591v15.862H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.180422;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M-1.054 7.864h26.127M-1.185 15.474h26.128M11.545 7.765V-2.431M4.444 8.028v7.389M17.637 8.06v7.39\\\" style=\\\"fill:#fff;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"45.491\\\" height=\\\"44.293\\\" viewBox=\\\"0 0 12.036 11.719\\\"><path d=\\\"M-.036-.081h12.157V11.82H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.112189;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M5.997 9.079c1.941-1.892 5.045-5.609 3.495-6.38-1.43-.71-2.665.599-3.317 1.603-.521-.96-1.47-2.616-2.839-1.655-1.898 1.334.838 5.026 2.661 6.432\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M27.26 5.415c-.55 0-.9.55-.65 1l2.45 4.75c.2.5.85.5 1.15.1l3.15-4.5c.3-.4 0-1.05-.55-1.1zM10.689 8.068c-.406-.051-.822.31-.778.748l.5 5.3c.05.5.6.8 1.05.5l4.55-3.05c.45-.3.4-.95-.05-1.15l-5.1-2.3a.605.605 0 0 0-.172-.048zM2.406 24.584a.635.635 0 0 0-.345.081l-4.75 2.4c-.45.2-.5.85-.1 1.15l4.45 3.15c.4.3 1 0 1.1-.5l.3-5.55c0-.412-.31-.712-.655-.73zm40 0a.635.635 0 0 0-.345.081l-4.75 2.4c-.45.2-.5.85-.1 1.15l4.45 3.15c.4.3 1 0 1.1-.5l.3-5.55c0-.412-.31-.712-.655-.73zm-22.17 3.108a.744.744 0 0 0-.675.723l.4 5.55c.05.5.6.8 1.05.5l4.45-2.95c.45-.25.4-.9-.05-1.15l-4.8-2.6a.702.702 0 0 0-.376-.073z' stroke='none' fill='white'/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"45.701\\\" height=\\\"36.148\\\" viewBox=\\\"0 0 12.092 9.564\\\"><path d=\\\"M-.036-.081h12.157V11.82H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.112189;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\" transform=\\\"translate(0 -.76)\\\"/><path d=\\\"M.049 2.794c2.088-1.328 4.06-1.436 5.864-.036 1.804 1.401 5.21.78 6.074.013M.157 5.687C2.245 4.359 4.217 4.25 6.02 5.65c1.803 1.401 5.21.78 6.074.013M.137 8.792C2.225 7.465 4.197 7.356 6 8.757s5.21.779 6.074.013\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307999;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill;stop-color:#000\\\" transform=\\\"translate(0 -.76)\\\"/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M45.69 13.342c-1.677.945-3.557 1.6-5.48 1.588-1.922-.012-3.795-.691-5.462-1.653-1.668-.962-3.156-2.202-4.637-3.435-1.48-1.232-2.97-2.47-4.641-3.427-1.67-.957-3.547-1.628-5.47-1.628-1.923 0-3.8.67-5.47 1.628-1.67.956-3.161 2.195-4.641 3.427-1.48 1.233-2.97 2.473-4.637 3.435-1.667.962-3.54 1.641-5.463 1.653-1.922.012-3.802-.643-5.478-1.588v13.316c1.676-.945 3.556-1.6 5.478-1.588 1.923.012 3.796.691 5.463 1.653 1.668.962 3.156 2.202 4.637 3.435 1.48 1.232 2.97 2.47 4.641 3.427 1.67.957 3.547 1.628 5.47 1.628 1.923 0 3.8-.67 5.47-1.628 1.67-.956 3.161-2.195 4.641-3.427 1.48-1.233 2.97-2.473 4.637-3.435 1.667-.962 3.54-1.641 5.463-1.653 1.922-.012 3.802.643 5.478 1.588z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"45.491\\\" height=\\\"44.293\\\" viewBox=\\\"0 0 12.036 11.719\\\"><path d=\\\"M-.036-.081h12.157V11.82H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.112189;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M.058.132h6.413V6.34H2.006v4.024h8.68v-8.96H8.303v7.292H3.979\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M3.73 3.095H.034v8.58\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"88.718\\\" height=\\\"59.048\\\" viewBox=\\\"0 0 23.473 15.623\\\"><path d=\\\"M-.036-.081h23.591v15.862H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.180422;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"m23.463 8.674.044-8.608L11.47 6.941-.06.166\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M11.472 6.937v8.574l11.943-6.896M11.507 15.438-.024 8.78\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='40'><path d='M0 0v5.436c.385-.146.767.123 1.163.82.948 1.674 2.214 2.996 3.46 4.294C6.977 13.002 9.2 15.318 9.2 19.995c0 4.679-2.223 6.994-4.577 9.447-1.246 1.299-2.512 2.621-3.46 4.295-.396.698-.777.966-1.163.82V40h1.198v-.005c0-4.678 2.224-6.992 4.579-9.445 1.245-1.298 2.51-2.62 3.459-4.295.654-1.154 1.273-1.154 1.926 0 .95 1.673 2.214 2.997 3.46 4.295 2.353 2.452 4.578 4.767 4.578 9.445V40h.8v-5.442c-.252-.095-.504-.365-.762-.82-.95-1.675-2.214-2.998-3.46-4.296-2.353-2.452-4.576-4.768-4.576-9.447-.001-4.678 2.221-6.993 4.575-9.445 1.246-1.298 2.512-2.62 3.46-4.294.259-.456.511-.725.763-.82V0h-.8c0 4.676-2.224 6.991-4.577 9.442-1.246 1.298-2.512 2.621-3.46 4.296-.653 1.153-1.273 1.153-1.926 0-.948-1.675-2.214-2.998-3.46-4.296C3.424 6.991 1.2 4.676 1.2 0Z' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='50' height='33.333'><path d='M25 .806v2.79h.8V.806Zm0 4.465v2.791h.8v-2.79Zm-2.043 3.902-2.32 1.55.444.665 2.32-1.55-.443-.665zm4.885 0-.444.665 2.32 1.55.445-.665zM-.4 10.61v2.79h.8v-2.79zm50 0v2.79h.8v-2.79zm-30.356 1.042-2.32 1.55.443.666 2.322-1.55-.444-.666zm12.311 0-.444.665 2.32 1.55.445-.664zm3.783 2.566-.444.666 2.321 1.55.444-.666zm-19.852.025-2.32 1.55.444.665 2.32-1.55zm-15.886.77v2.79h.8v-2.79Zm50 0v2.79h.8v-2.79Zm-50 4.465v2.79h.8v-2.79h-.8Zm50 0v2.79h.8v-2.79h-.8zM2.442 23.379l-.444.665 2.32 1.55.445-.665zm45.115 0-2.32 1.55.443.666 2.322-1.55-.444-.666zM6.155 25.86l-.444.665 2.32 1.55.445-.665zm37.69 0-2.322 1.55.444.665 2.321-1.55-.444-.666zM9.937 28.424l-.444.665 2.32 1.55.445-.665-2.321-1.55zm30.11.003-2.321 1.55.444.666 2.321-1.55zM25 29.737v2.79h.8v-2.79z' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='69.282' height='40'><path d='M34.641-20v80m34.64-40L0-20m69.282 80L0 20m69.282 0L0 60m69.282-80L0 20m69.282-40v80M0-20v80M34.64 40l11.547-20m11.547 20l11.547 20M34.641 40h23.094m11.547-20L57.735 40M46.188 20L34.641 40l11.547 20h23.094L80.83 40 69.282 20H46.188zM34.641 40l11.547-20m11.547 20l11.547 20M34.641 40h23.094m11.547-20L57.735 40M46.188 20L34.641 40l11.547 20h23.094L80.83 40 69.282 20H46.188zM34.641 0l11.547-20M57.735 0l11.547 20M34.642 0h23.093m11.547-20L57.735 0M46.188-20L34.641 0l11.547 20h23.094L80.83 0 69.282-20H46.188zM34.641 40L23.094 20M11.547 40L0 60m34.64-20H11.548M0 20l11.547 20m11.547-20l11.547 20-11.547 20H0l-11.547-20L0 20h23.094zM34.641 0L23.094-20M11.547 0L0 20M34.64 0H11.548M0-20L11.547 0m11.547-20L34.641 0 23.094 20H0L-11.547 0 0-20h23.094z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='29' height='50.115'><path d='M14.5 6.628L8.886 3.372v-6.515L14.502-6.4l5.612 3.257-.001 6.514zm0 50.06l-5.613-3.256v-6.515l5.614-3.258 5.612 3.257-.001 6.515zm14.497-25.117l-5.612-3.257v-6.515L29 18.541l5.612 3.257-.001 6.515zm-29 0l-5.612-3.257v-6.515L0 18.541l5.612 3.257v6.515zM14.5 11.82L4.36 5.967l.002-11.706 10.14-5.855L24.638-5.74l-.001 11.707zm0 50.06L4.36 56.028l.002-11.706 10.14-5.855 10.137 5.852-.001 11.707zm14.498-25.118L18.858 30.91l.002-11.707L29 13.349l10.137 5.853-.001 11.706zm-29 0l-10.139-5.852.002-11.707L0 13.349l10.138 5.853-.002 11.706zm14.501-19.905L0 8.488.002-8.257l14.5-8.374L29-8.26l-.002 16.745zm0 50.06L0 58.548l.002-16.745 14.5-8.373L29 41.8l-.002 16.744zM28.996 41.8l-14.498-8.37.002-16.744L29 8.312l14.498 8.37-.002 16.745zm-29 0l-14.498-8.37.002-16.744L0 8.312l14.498 8.37-.002 16.745z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='60' height='60'><path d='M6.13-.002.005 6.125v1.059L6.59 13.77l.013-.014 16.243 16.24L6.617 46.23.535 40.15l10.147-10.153L.004 19.318v1.037l9.644 9.641-9.646 9.65v1.03L12.73 53.402l-6.082 6.082-6.127-6.127.014-.015-.533-.531v1.06l6.127 6.127h1.055l6.586-6.584-.012-.012 16.246-16.246L46.236 53.39l-6.082 6.082-10.15-10.15-10.68 10.677h1.033l9.647-9.644 9.646 9.644h1.034l12.722-12.723 6.082 6.082-6.125 6.125-.013-.011-.528.527h1.057l6.123-6.123V52.81l-6.58-6.58-.016.015L37.16 29.996 53.393 13.77l6.082 6.082-10.15 10.144 10.677 10.678v-1.031l-9.647-9.647 9.647-9.64v-1.038L47.279 6.596 53.361.514l6.13 6.127-.016.013.527.53V6.123L53.879-.002h-1.057l-6.586 6.586.014.012-16.244 16.246L13.77 6.607l6.082-6.08 10.153 10.15L40.684-.001H39.65l-9.646 9.647-9.647-9.647h-1.03L6.601 12.723.52 6.64 6.646.514l.012.013.528-.529H6.13zm7.114 7.113 16.76 16.76 16.762-16.76 6.127 6.127-16.764 16.758 16.764 16.762-6.127 6.127-16.76-16.76-16.762 16.76-6.127-6.127 16.758-16.762L7.117 13.238l6.127-6.127z' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='80' height='97.989'><path d='m40 15.681 20.818-48.593-6.307-14.72-14.51 33.87-14.512-33.87-6.307 14.72zm0 .803-8.204 19.15L40 54.782l8.205-19.15zm14.511 33.872-6.306-14.723L40 54.783l-8.204-19.15-6.307 14.723L40 84.227zm0-29.445-6.306 14.722 6.306 14.723 6.307-14.723zM25.49 50.356l6.307-14.723-6.307-14.722-6.307 14.722zm0-29.445L19.182 6.19l-6.307 14.724 6.307 14.72zm29.022 0 6.307 14.722 6.308-14.72-6.308-14.724zm-14.51 92.76 20.817-48.594-6.307-14.721-14.51 33.871L25.49 50.356l-6.307 14.721zM25.488 50.355l-6.307-14.723-6.307 14.722 6.307 14.722zm29.022 0 6.307 14.721 6.308-14.722-6.308-14.722zm12.615-29.443-6.308 14.72 6.308 14.722 6.307-14.722zm-54.25 29.443 6.307-14.722-6.307-14.72-6.308 14.72zm0-29.442L6.567 6.189.26 20.91l6.307 14.722zm54.25 0 6.308 14.72 6.307-14.722L73.433 6.19zm0 29.442-6.307 14.722L67.126 79.8l6.307-14.722zM12.876 79.8l6.307-14.722-6.307-14.722-6.308 14.722zm0-29.444L6.567 35.633.26 50.356l6.307 14.721zm54.25 0 6.308 14.722 6.307-14.721-6.307-14.723zm0 29.444 6.308 14.723L79.741 79.8l-6.307-14.722zm-54.25 0L6.567 65.077.26 79.8l6.307 14.723z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30'><path d='M9 20.502h0A7.5 7.5 0 0 1 1.5 28 7.5 7.5 0 0 0-6 35.5h0a7.5 7.5 0 0 1-7.5 7.499 7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1-21 35.5h0a7.5 7.5 0 0 1 7.5-7.5A7.5 7.5 0 0 0-6 20.502h0a7.5 7.5 0 1 1 15 0zm15 0h0A7.5 7.5 0 0 1 16.5 28a7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1 9 20.502h0c0-2.072-.84-3.947-2.197-5.303A7.477 7.477 0 0 0 1.5 13.002a7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1-6 5.503h0a7.5 7.5 0 1 1 15 0h0c0 2.07.84 3.945 2.196 5.303a7.476 7.476 0 0 0 5.304 2.196c2.07 0 3.945.84 5.303 2.197A7.471 7.471 0 0 1 24 20.502zm15 0h0A7.5 7.5 0 0 1 31.5 28a7.5 7.5 0 0 0-7.5 7.5h0a7.5 7.5 0 0 1-7.5 7.499 7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1 9 35.5h0a7.5 7.5 0 0 1 7.5-7.5 7.5 7.5 0 0 0 7.5-7.498h0a7.5 7.5 0 1 1 15 0zm0-30h0A7.5 7.5 0 0 1 31.5-2 7.5 7.5 0 0 0 24 5.5h0a7.5 7.5 0 0 1-7.5 7.499 7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1 9 5.5h0A7.5 7.5 0 0 1 16.5-2 7.5 7.5 0 0 0 24-9.498h0a7.5 7.5 0 1 1 15 0zm-22.5 37.5a7.5 7.5 0 0 0-7.5 7.5c0-2.072-.84-3.947-2.197-5.303A7.477 7.477 0 0 0 1.5 28.002 7.5 7.5 0 0 0 9 20.503c0 2.07.84 3.945 2.196 5.303a7.476 7.476 0 0 0 5.304 2.196zm15-15a7.5 7.5 0 0 0-7.5 7.5c0-2.072-.84-3.947-2.197-5.303a7.477 7.477 0 0 0-5.303-2.197A7.5 7.5 0 0 0 24 5.503c0 2.07.84 3.945 2.196 5.303a7.476 7.476 0 0 0 5.304 2.196z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='69.282'><path d='M13.333-3.849v23.094M6.667-15.396l20 11.547M13.333-19.245l20 11.547M20 0v23.094m20-34.641l-6.667 3.849-6.666 3.849L20 0M0-11.547l6.667 3.849 6.666 3.849L20 0m0-23.094l20 11.547v23.094L20 23.094l-6.667-3.849-6.666-3.849L0 11.547v-23.094l6.667-3.849 6.666-3.849zM40-3.769L20 7.698m20-3.849l-16.253 9.384L20 15.396M6.667-7.698v23.094m6.666 50.037v23.094M6.667 53.886l20 11.547M13.333 50.037l20 11.547M20 69.282v23.094m20-34.641l-6.667 3.849-6.666 3.849L20 69.282M0 57.735l6.667 3.849 6.666 3.849L20 69.282m0-23.094l20 11.547v23.094L20 92.376l-6.667-3.849-6.666-3.849L0 80.829V57.735l6.667-3.849 6.666-3.849zm20 19.325L20 76.98m20-3.849L20 84.678M6.667 61.584v23.094m26.666-53.886v23.094m-6.666-34.641l20 11.547M33.333 15.396l20 11.547M40 34.641v23.094m20-34.641l-6.667 3.849-6.666 3.849L40 34.641M20 23.094l6.667 3.849 6.666 3.849L40 34.641m0-23.094l20 11.547v23.094L40 57.735l-6.667-3.849-6.666-3.849L20 46.188V23.094l6.667-3.849 6.666-3.849zm20 19.325L40 42.339m20-3.849L40 50.037M26.667 26.943v23.094M-6.667 30.792v23.094m-6.666-34.641l20 11.547M-6.667 15.396l20 11.547M0 34.641v23.094m20-34.641l-6.667 3.849-6.666 3.849L0 34.641m-20-11.547l6.667 3.849 6.666 3.849L0 34.641m0-23.094l20 11.547v23.094L0 57.735l-6.667-3.849-6.666-3.849L-20 46.188V23.094l6.667-3.849 6.666-3.849zm20 19.325L0 42.339m20-3.849L0 50.037m-13.333-23.094v23.094' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M46.231 19.999a5.937 7.48 0 01-5.937 7.48A5.937 7.48 0 0134.357 20a5.937 7.48 0 015.937-7.48 5.937 7.48 0 015.937 7.48zm-40.421 0a5.937 7.48 0 01-5.937 7.48A5.937 7.48 0 01-6.064 20a5.937 7.48 0 015.937-7.48 5.937 7.48 0 015.937 7.48zm20.21 20.285a5.937 7.48 0 01-5.937 7.48 5.937 7.48 0 01-5.936-7.48 5.937 7.48 0 015.936-7.48 5.937 7.48 0 015.937 7.48zm0-40.57a5.937 7.48 0 01-5.937 7.48 5.937 7.48 0 01-5.936-7.48 5.937 7.48 0 015.936-7.48 5.937 7.48 0 015.937 7.48zM-5.732 46.942c1.676-.944 3.556-1.6 5.478-1.587 1.924.011 3.796.69 5.463 1.653 1.668.962 3.156 2.202 4.637 3.434 1.48 1.233 2.97 2.471 4.641 3.428 1.67.957 3.547 1.627 5.47 1.627 1.924 0 3.8-.67 5.47-1.627s3.161-2.195 4.642-3.428c1.48-1.232 2.968-2.472 4.636-3.434 1.667-.963 3.54-1.642 5.463-1.653 1.922-.012 3.802.643 5.479 1.587V33.628c-1.677.944-3.557 1.6-5.479 1.587-1.923-.011-3.796-.69-5.463-1.653-1.668-.962-3.156-2.202-4.636-3.434-1.48-1.233-2.971-2.471-4.642-3.428-1.67-.957-3.546-1.627-5.47-1.627-1.923 0-3.8.67-5.47 1.627s-3.161 2.195-4.641 3.428c-1.48 1.232-2.97 2.472-4.637 3.434-1.667.963-3.54 1.641-5.463 1.653-1.922.012-3.802-.643-5.478-1.587zM45.647-6.943c-1.677.944-3.557 1.6-5.479 1.587-1.923-.011-3.796-.69-5.463-1.653-1.668-.962-3.156-2.202-4.636-3.434-1.48-1.233-2.971-2.471-4.642-3.428-1.67-.957-3.546-1.627-5.47-1.627-1.923 0-3.8.67-5.47 1.627s-3.161 2.195-4.641 3.428c-1.48 1.232-2.97 2.472-4.637 3.434-1.667.963-3.54 1.642-5.463 1.653-1.922.012-3.802-.643-5.478-1.587V6.372c1.676-.944 3.556-1.6 5.478-1.587 1.924.012 3.796.69 5.463 1.653C6.877 7.4 8.365 8.64 9.846 9.872c1.48 1.233 2.97 2.471 4.641 3.428 1.67.957 3.547 1.627 5.47 1.627 1.924 0 3.8-.67 5.47-1.627s3.161-2.195 4.642-3.428c1.48-1.232 2.968-2.472 4.636-3.434 1.667-.963 3.54-1.642 5.463-1.653 1.922-.012 3.802.643 5.479 1.587z' stroke-width='1' stroke='white' fill='none'/></svg>\"]")),B=_(w),G=_(S),L=_(x),P=document.createElement("canvas"),T=P.getContext("2d",{antialias:!1,alpha:!0}),C={},O=G.map(function(_){var e,t=_.bricks.split("").map(function(_){return B[_]}).slice(0,_.size*_.size),r=function(_,e,t){P.width=40,P.height=40,t?(T.fillStyle=t,T.fillRect(0,0,40,40)):T.clearRect(0,0,40,40);for(var r=40/e,o=0;o<e;o++)for(var n=0;n<e;n++){var i=_[n*e+o];i&&(T.fillStyle=i,T.fillRect(Math.floor(r*o),Math.floor(r*n),Math.ceil(r),Math.ceil(r)))}return'<img alt="" width="'.concat(40,'" height="').concat(40,'" src="').concat(P.toDataURL(),'"/>')}(t,_.size,_.color);return C[_.name]=r,v(y({},_),{bricks:t,icon:r,svg:(e=null!==_.svg&&R[_.svg%R.length],_.color||e||(e=R[function(_){for(var e=0,t=0;t<_.length;t++)e=(e<<5)-e+_.charCodeAt(t),e&=e;return Math.abs(e)}(_.name)%R.length]),e)})}).filter(function(_){return!_.name.startsWith("icon:")}).map(function(_,e){return v(y({},_),{threshold:e<8?0:Math.round(Math.min(10*Math.pow(10,1+(e+_.size)/30),5e3)*e),sortKey:(Math.random()+3)/3.5*_.bricks.filter(function(_){return _}).length})}),H=M.map(function(_){return v(y({},_),{icon:C["icon:"+_.id]})}),E={sound:{default:!0,name:"Game sounds",help:"Can slow down some phones.",afterChange:function(){},disabled:function(){return!1}},"mobile-mode":{default:window.innerHeight>window.innerWidth,name:"Mobile mode",help:"Leaves space for your thumb.",afterChange:function(){_s()},disabled:function(){return!1}},basic:{default:!1,name:"Basic graphics",help:"Better performance on older devices.",afterChange:function(){},disabled:function(){return!1}},pointerLock:{default:!1,name:"Mouse pointer lock",help:"Locks and hides the mouse cursor.",afterChange:function(){},disabled:function(){return!document.body.requestPointerLock}},easy:{default:!1,name:"Kids mode",help:'Start future runs with "slower ball".',afterChange:function(){},disabled:function(){return!1}},record:{default:!1,name:"Record gameplay videos",help:"Get a video of each level.",afterChange:function(){},disabled:function(){return window.location.search.includes("isInWebView=true")}}},A={wallBeep:function(_){_X("sound")&&D(800,X(_))},comboIncreaseMaybe:function(_,e,t){if(_X("sound")){var r=0;!isNaN(I)&&(I<_&&(r=1),I>_&&(r=-1)),j(r,X(e),t),I=_}},comboDecrease:function(){_X("sound")&&j(-1,.5,.5)},coinBounce:function(_,e){_X("sound")&&D(1200,X(_),e,.1,"triangle")},explode:function(_){_X("sound")&&function(){var _=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5,e=Z();if(e){var t=e.createBufferSource();t.buffer=q(e);var o=e.createGain();t.connect(o);var n=e.createBiquadFilter();n.type="lowpass",n.frequency.setValueAtTime(1e3,e.currentTime),o.connect(n);var i=e.createStereoPanner();i.pan.setValueAtTime(2*_-1,e.currentTime),n.connect(i),i.connect(e.destination),i.connect(r),o.gain.setValueAtTime(1,e.currentTime),o.gain.exponentialRampToValueAtTime(.01,e.currentTime+1),n.frequency.exponentialRampToValueAtTime(60,e.currentTime+1),t.start(e.currentTime),t.stop(e.currentTime+1)}}(X(_))},lifeLost:function(_){_X("sound")&&function(_){var e=Z();if(e){var t=[F(e,3e3,"square"),F(e,4500,"square"),F(e,6e3,"square")],o=e.createGain(),n=e.createBufferSource();n.buffer=q(e),t.forEach(function(_){return _.connect(o)}),n.connect(o),o.gain.setValueAtTime(.2,e.currentTime),t.forEach(function(_){return _.start()}),n.start(),t.forEach(function(_){return _.stop(e.currentTime+.2)}),n.stop(e.currentTime+.2),o.gain.exponentialRampToValueAtTime(.001,e.currentTime+.2);var i=e.createStereoPanner();i.pan.setValueAtTime(2*_-1,e.currentTime),o.connect(i),i.connect(e.destination),i.connect(r),o.connect(i)}}(X(_))},coinCatch:function(_){_X("sound")&&D(900,X(_),.8,.1,"triangle")},colorChange:function(_,e){D(400,X(_),e,.5,"sine"),D(800,X(_),.5*e,.2,"square")}};function Z(){if(!t){if(!_X("sound"))return null;r=(t=new(window.AudioContext||window.webkitAudioContext)).createMediaStreamDestination()}return t}function D(){var _=arguments.length>0&&void 0!==arguments[0]?arguments[0]:800,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.1,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"sine",i=Z();if(i){var s=F(i,_,n),a=i.createGain();s.connect(a);var l=i.createStereoPanner();l.pan.setValueAtTime(2*e-1,i.currentTime),a.connect(l),l.connect(i.destination),l.connect(r),a.gain.setValueAtTime(.8*t,i.currentTime),a.gain.exponentialRampToValueAtTime(.001,i.currentTime+o),s.start(i.currentTime),s.stop(i.currentTime+o)}}function q(_){if(!o)for(var e=2*_.sampleRate,t=(o=_.createBuffer(1,e,_.sampleRate)).getChannelData(0),r=0;r<e;r++)t[r]=2*Math.random()-1;return o}function X(_){return Math.max(0,Math.min(1,(_-_4.offsetXRoundedDown)/_4.gameZoneWidthRoundedUp))}var I=NaN,V=6;function j(_,e,t){(V+=_)>11&&(V=0),V<0&&(V=11);var r=function(_){var r=392*Math.pow(1.05945594920268,_),o=Math.abs(_-5.5),n=Math.max(0,t*(1-o/16.5));return D(r,e,n),r.toFixed(2)+" at "+Math.floor(100*n)+"% diff "+o};r(12+V),r(V),r(-12+V)}function F(_,e,t){var r=_.createOscillator();return r.type=t,r.frequency.setValueAtTime(e,_.currentTime),r}function U(_){var e;return _&&(null===(e=Object.values(_))||void 0===e?void 0:e.reduce(function(_,e){return _+e},0))||0}var N=function(_){var e={};return _.forEach(function(_){return e[_.id]=0}),e};function Y(_){var e,t=1+((null===(e=_.perks)||void 0===e?void 0:e.multiball)||0),r=_.puckWidth/(t+1);_.balls=[],_.ballsColor="#FFF",(_.perks.picky_eater||_.perks.pierce_color)&&(_.ballsColor=function(_){var e,t,r={};_.forEach(function(_){return r[_]=(r[_]||0)+1});var o=(t=Math).max.apply(t,k(Object.keys(r).map(function(_){return r[_]})));return(e=Object.keys(r).filter(function(_){return r[_]==o}))[Math.floor(e.length*Math.random())]}(_.bricks.filter(function(_){return _}))||"#FFF");for(var o=0;o<t;o++){var n=_.puckPosition-_.puckWidth/2+r*(o+1),i=Math.random()>.5?_.baseSpeed:-_.baseSpeed;_.balls.push({x:n,previousX:n,y:_.gameZoneHeight-1.5*_.ballSize,previousY:_.gameZoneHeight-1.5*_.ballSize,vx:i,previousVX:i,vy:-_.baseSpeed,previousVY:-_.baseSpeed,sx:0,sy:0,sparks:0,piercedSinceBounce:0,hitSinceBounce:0,hitItem:[],bouncesList:[],sapperUses:0})}}function J(_){var e=_.balls.length,t=_.puckWidth/(e+1);_.balls.forEach(function(e,r){var o=_.puckPosition-_.puckWidth/2+t*(r+1);e.x=o,e.previousX=o,e.y=_.gameZoneHeight-1.5*_.ballSize,e.previousY=e.y,e.vx=Math.random()>.5?_.baseSpeed:-_.baseSpeed,e.previousVX=e.vx,e.vy=-_.baseSpeed,e.previousVY=e.vy,e.sx=0,e.sy=0,e.hitItem=[],e.hitSinceBounce=0,e.piercedSinceBounce=0})}function K(_){return 1+3*_.perks.base_combo+5*_.perks.smaller_puck}function $(_,e,t){var r=_.combo;_.combo=K(_),_.levelTime||(_.combo+=15*_.perks.hot_start),r>_.combo&&_.perks.soft_reset&&(_.combo+=Math.floor((r-_.combo)/(1+_.perks.soft_reset)));var o=Math.max(0,r-_.combo);if(o){for(var n=0;n<o&&n<8;n++)setTimeout(function(){return A.comboDecrease()},100*n);void 0!==e&&void 0!==t&&_.flashes.push({type:"text",text:"-"+o,time:_.levelTime,color:"red",x:e,y:t,duration:150,size:_.puckHeight})}return o}var Q={};Q=b("kqXj6").getBundleURL("ec1j5")+"sw-b71.js","serviceWorker"in navigator&&window.location.search.includes("isPWA=true")&&navigator.serviceWorker.register(Q);var __=document.getElementById("game"),_e=__.getContext("2d",{alpha:!1}),_t=document.createElement("img");function _r(){var _;_4.running||(_4.running=!0,function(){if(_X("record")&&!i){if(!l){c=(l=document.createElement("canvas")).getContext("2d",{antialias:!1,alpha:!1}),a=(s=l.captureStream(0)).getVideoTracks()[0];var _=(Z(),r);_&&s.addTrack(_.stream.getAudioTracks()[0])}l.width=_4.gameZoneWidthRoundedUp,l.height=_4.gameZoneHeight;var e=[],t=new MediaRecorder(s,{videoBitsPerSecond:35e5});i=t,t.start(),i.pause(),t.ondataavailable=function(_){e.push(_.data)},t.onstop=m(function(){var _,t,r,o;return W(this,function(n){switch(n.label){case 0:if((t=new Blob(e,{type:"video/webm"})).size<2e5)return[2];n.label=1;case 1:if(_=document.getElementById("level-recording-container"))return[3,3];return[4,new Promise(function(_){return setTimeout(_,200)})];case 2:return n.sent(),[3,1];case 3:return(r=document.createElement("video")).autoplay=!0,r.controls=!1,r.disablePictureInPicture=!0,r.disableRemotePlayback=!0,r.width=l.width,r.height=l.height,r.loop=!0,r.muted=!0,r.playsInline=!0,r.src=URL.createObjectURL(t),(o=document.createElement("a")).download=function(){var _=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"webm";return"breakout-71-capture-"+new Date().toISOString().replace(/[^0-9\-]+/gi,"-")+"."+_}("webm"),o.target="_blank",o.href=r.src,o.textContent="Download video (".concat((t.size/1e6).toFixed(2),"MB)"),_.appendChild(r),_.appendChild(o),[2]}})})}}(),null===(_=Z())||void 0===_||_.resume(),_X("record")&&(null==i?void 0:i.state)==="paused"&&i.resume(),document.body.className=_4.running?" running ":" paused ")}function _o(_){_4.running&&!_4.pauseTimeout&&(_4.pauseTimeout=setTimeout(function(){_4.running=!1,_4.needsRender=!0,setTimeout(function(){var _;_4.running||null===(_=Z())||void 0===_||_.suspend()},1e3),_K(),_4.pauseTimeout=null,document.body.className=_4.running?" running ":" paused "},Math.min(50*Math.max(0,_4.pauseUsesDuringRun-5),500)),_&&_4.pauseUsesDuringRun++,document.exitPointerLock&&document.exitPointerLock())}_t.src="data:image/svg+xml;base64,"+btoa('<svg width="144" height="144" viewBox="0 0 38.101 38.099" xmlns="http://www.w3.org/2000/svg">\n <path d="m6.1528 26.516c-2.6992-3.4942-2.9332-8.281-.58305-11.981a10.454 10.454 0 017.3701-4.7582c1.962-.27726 4.1646.05953 5.8835.90027l.45013.22017.89782-.87417c.83748-.81464.91169-.87499 1.0992-.90271.40528-.058713.58876.03425 1.1971.6116l.55451.52679 1.0821-1.0821c1.1963-1.1963 1.383-1.3357 2.1039-1.5877.57898-.20223 1.5681-.19816 2.1691.00897 1.4613.50314 2.3673 1.7622 2.3567 3.2773-.0058.95654-.24464 1.5795-.90924 2.3746-.40936.48928-.55533.81057-.57898 1.2737-.02039.41018.1109.77714.42322 1.1792.30172.38816.3694.61323.2797.93044-.12803.45666-.56674.71598-1.0242.60507-.601-.14597-1.3031-1.3088-1.3969-2.3126-.09459-1.0161.19245-1.8682.92392-2.7432.42567-.50885.5643-.82851.5643-1.3031 0-.50151-.14026-.83177-.51211-1.2028-.50966-.50966-1.0968-.64829-1.781-.41996l-.37348.12477-2.1006 2.1006.52597.55696c.45421.48194.5325.58876.57898.78855.09622.41588.07502.45014-.88396 1.4548l-.87173.9125.26339.57979a10.193 10.193 0 01.9231 4.1001c.03996 2.046-.41996 3.8082-1.4442 5.537-.55044.928-1.0185 1.5013-1.8968 2.3241-.83503.78284-1.5526 1.2827-2.4904 1.7361-3.4266 1.657-7.4721 1.3422-10.549-.82035-.73473-.51782-1.7312-1.4621-2.2515-2.1357zm21.869-4.5584c-.0579-.19734-.05871-2.2662 0-2.4545.11906-.39142.57898-.63361 1.0038-.53005.23812.05708.54147.32455.6116.5382.06279.19163.06769 2.1805.0065 2.3811-.12558.40773-.61649.67602-1.0462.57164-.234-.05708-.51615-.30498-.57568-.50722m3.0417-2.6013c-.12313-.6222.37837-1.1049 1.0479-1.0079.18348.0261.25279.08399 1.0071.83911.75838.75838.81301.82362.84074 1.0112.10193.68499-.40365 1.1938-1.034 1.0405-.1949-.0473-.28786-.12558-1.0144-.85216-.7649-.76409-.80241-.81057-.84645-1.0316m.61323-3.0629a.85623.85623 0 01.59284-.99975c.28949-.09214 2.1814-.08318 2.3917.01141.38734.17369.6279.61078.53984.98181-.06035.25606-.35391.57327-.60181.64992-.25279.07747-2.2278.053-2.4097-.03017-.26013-.11906-.46318-.36125-.51374-.61323" fill="#fff" opacity="0.3"/>\n</svg>');var _n=document.createElement("img"),_i=document.createElement("canvas");_n.addEventListener("load",function(){_4.needsRender=!0});var _s=function(){var _,e=__.getBoundingClientRect(),t=e.width,r=e.height;_4.canvasWidth=t,_4.canvasHeight=r,__.width=t,__.height=r,_e.fillStyle=(null===(_=_m())||void 0===_?void 0:_.color)||"black",_e.globalAlpha=1,_e.fillRect(0,0,t,r),_i.width=t,_i.height=r,_4.gameZoneHeight=_X("mobile-mode")?80*r/100:r;var o=Math.round(Math.min(_4.canvasWidth,.73*_4.gameZoneHeight));_4.brickWidth=2*Math.floor(o/_4.gridSize/2),_4.gameZoneWidth=_4.brickWidth*_4.gridSize,_4.offsetX=Math.floor((_4.canvasWidth-_4.gameZoneWidth)/2),_4.offsetXRoundedDown=_4.offsetX,_4.offsetX<_4.ballSize&&(_4.offsetXRoundedDown=0),_4.gameZoneWidthRoundedUp=t-2*_4.offsetXRoundedDown,_i.title="resized",_v(_4.puckPosition),_4.coins=[],_4.flashes=[],_o(!0),J(_4),document.documentElement.style.setProperty("--vh","".concat(.01*window.innerHeight,"px"))};function _a(){_4.baseSpeed=Math.max(3,_4.gameZoneWidth/12/10+_4.currentLevel/3+_4.levelTime/3e4-2*_4.perks.slow_down)}function _l(_){return _4.offsetX+(_%_4.gridSize+.5)*_4.brickWidth}function _c(_){return(Math.floor(_/_4.gridSize)+.5)*_4.brickWidth}function _u(_,e){return _<0||e<0||_>=_4.gridSize||e>=_4.gridSize?-1:_*_4.gridSize+e}function _h(_,e,t,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:150,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:_4.coinSize;if(!_X("basic")){_4.flashes.length>_4.MAX_PARTICLES&&(_=1);for(var i=0;i<_;i++)_4.flashes.push({type:"particle",time:_4.levelTime,size:n,x:e+(Math.random()-.5)*_4.brickWidth/2,y:t+(Math.random()-.5)*_4.brickWidth/2,vx:(Math.random()-.5)*30,vy:(Math.random()-.5)*30,color:r,duration:o,ethereal:!1})}}function _d(){var _="",e=!0,t=!1,r=void 0;try{for(var o,n=H[Symbol.iterator]();!(e=(o=n.next()).done);e=!0)for(var i=o.value,s=0;s<_4.perks[i.id];s++)_+=C["icon:"+i.id]+" "}catch(_){t=!0,r=_}finally{try{e||null==n.return||n.return()}finally{if(t)throw r}}return _}function _b(){return(_b=m(function(){var _,e,t,r,o,n,i,s,a;return W(this,function(l){switch(l.label){case 0:_=(_4.score-_4.levelStartScore)/(_4.levelSpawnedCoins||1),e=1,t=3,r="",o="",n="",_4.levelTime<3e4?(e++,t++,r=" (+1 upgrade and choice)"):_4.levelTime<6e4&&(t++,r=" (+1 choice)"),1===_?(e++,t++,o=" (+1 upgrade and choice)"):_>.9&&(t++,o=" (+1 choice)"),0===_4.levelMisses?(e++,t++,n=" (+1 upgrade and choice)"):_4.levelMisses<=3&&(t++,n=" (+1 choice)"),l.label=1;case 1:var c,u;if(!e--||!(c=t+_4.perks.one_more_choice-_4.perks.instant_upgrade,(u=_g(_4).map(function(_){return v(y({},_),{score:Math.random()+(_4.lastOffered[_.id]||0)})}).sort(function(_,e){return _.score-e.score}).filter(function(_){return _4.perks[_.id]<_.max}).slice(0,c).sort(function(_,e){return _.id>e.id?1:-1})).forEach(function(_){_y(_4,_.id)}),i=u.map(function(_){return{text:_.name+(_4.perks[_.id]?" lvl "+(_4.perks[_.id]+1):""),icon:C["icon:"+_.id],value:_.id,help:_.help(_4.perks[_.id]+1)}})).length)return[3,3];return s="\n <p>You just finished level ".concat(_4.currentLevel+1,"/").concat(_R()," and picked those upgrades so far : </p><p>").concat(_d(),'</p>\n <div id="level-recording-container"></div> \n \n '),[4,_D({title:"Pick an upgrade "+(e?"("+(e+1)+")":""),actions:i,text:"<p>\n You caught ".concat(_4.score-_4.levelStartScore," coins ").concat(o," out of ").concat(_4.levelSpawnedCoins," in ").concat(Math.round(_4.levelTime/1e3)," seconds").concat(r,".\n You missed ").concat(_4.levelMisses," times ").concat(n,". \n ").concat(r&&o&&n&&"Impressive, keep it up !"||(r||o||n)&&"Well done !"||"Try to catch all coins, never miss the bricks or clear the level under 30s to gain additional choices and upgrades.","\n </p>"),allowClose:!1,textAfterButtons:s})];case 2:return a=l.sent(),_4.perks[a]++,"instant_upgrade"===a&&(e+=2),_4.runStatistics.upgrades_picked++,[3,1];case 3:return $(_4,void 0,void 0),Y(_4),[2]}})})).apply(this,arguments)}function _p(_){_$(),_o(!1),_>0&&function(){_b.apply(this,arguments)}(),_4.currentLevel=_,_4.levelTime=0,_4.autoCleanUses=0,_4.lastTickDown=_4.levelTime,_4.levelStartScore=_4.score,_4.levelSpawnedCoins=0,_4.levelMisses=0,_4.runStatistics.levelsPlayed++,$(_4,void 0,void 0),_a(),Y(_4);var e=_m();e.size!==_4.gridSize&&(_4.gridSize=e.size,_s()),_4.coins=[],_4.bricks=k(e.bricks),_4.flashes=[],_n.src="data:image/svg+xml;UTF8,"+e.svg}function _m(){return _4.runLevels[_4.currentLevel%_4.runLevels.length]}function _g(_){return H.filter(function(e){return _.totalScoreAtRunStart>=e.threshold}).filter(function(e){return!(null==e?void 0:e.requires)||_.perks[null==e?void 0:e.requires]})}function _y(_,e){_.lastOffered[e]=Math.round(Date.now()/1e3)}function _v(_){_4.needsRender=!0,_4.puckPosition=_,_4.puckPosition<_4.offsetXRoundedDown+_4.puckWidth/2&&(_4.puckPosition=_4.offsetXRoundedDown+_4.puckWidth/2),_4.puckPosition>_4.offsetXRoundedDown+_4.gameZoneWidthRoundedUp-_4.puckWidth/2&&(_4.puckPosition=_4.offsetXRoundedDown+_4.gameZoneWidthRoundedUp-_4.puckWidth/2),_4.running||_4.levelTime||J(_4)}function _f(_,e){return _u(Math.floor(e/_4.brickWidth),Math.floor((_-_4.offsetX)/_4.brickWidth))}function _k(_){if(_4.bricks[_])return _}function _W(_,e,t){var r,o,n;return null!==(n=null!==(o=null!==(r=_k(_f(_-t,e-t)))&&void 0!==r?r:_k(_f(_+t,e-t)))&&void 0!==o?o:_k(_f(_+t,e+t)))&&void 0!==n?n:_k(_f(_-t,e+t))}function _w(_,e,t){if(!_.destroyed){_.previousX=_.x,_.previousY=_.y,_.x+=_.vx*t,_.y+=_.vy*t,_.sx||(_.sx=0),_.sy||(_.sy=0),_.sx+=_.previousX-_.x,_.sy+=_.previousY-_.y,_.sx*=.9,_.sy*=.9,_4.perks.wind&&(_.vx+=(_4.puckPosition-(_4.offsetX+_4.gameZoneWidth/2))/_4.gameZoneWidth*_4.perks.wind*.5);var r=0,o=0;return _.x<_4.offsetXRoundedDown+e&&(_.x=_4.offsetXRoundedDown+e+(_4.offsetXRoundedDown+e-_.x),_.vx*=-1,o=1),_.y<e&&(_.y=e+(e-_.y),_.vy*=-1,r=1),_.x>_4.canvasWidth-_4.offsetXRoundedDown-e&&(_.x=_4.canvasWidth-_4.offsetXRoundedDown-e-(_.x-(_4.canvasWidth-_4.offsetXRoundedDown-e)),_.vx*=-1,o=1),o+2*r}}function _S(_){return _4.perks.telekinesis&&!_.hitSinceBounce&&_.vy<0}function _x(){try{return JSON.parse(localStorage.getItem("breakout_71_total_score")||"0")}catch(_){return 0}}function _M(_,e){if(_4.running){_o(!0),_$(),function(_){try{localStorage.setItem("breakout_71_total_play_time",JSON.stringify(JSON.parse(localStorage.getItem("breakout_71_total_play_time")||"0")+_))}catch(_){}}(_4.runStatistics.runTime),_4.runStatistics.max_level=_4.currentLevel+1;var t,r,o=-300,n=function(){return"animation-delay:"+(o+=800)+"ms;"},i="",s=_x(),a=s-_4.score,l=(t=[],H.forEach(function(_){_.threshold&&t.push({threshold:_.threshold,title:_.name+" (Perk)"})}),O.forEach(function(_){t.push({threshold:_.threshold,title:_.name+" (Level)"})}),t.filter(function(_){return _.threshold}).sort(function(_,e){return _.threshold-e.threshold}));l.filter(function(_){return _.threshold>a&&_.threshold<s}).forEach(function(_){i+='\n<p class="progress" >\n <span>'.concat(_.title,'</span>\n <span class="progress_bar_part" style="').concat(n(),'"></span>\n</p>\n')});var c=(null===(r=function(_,e){for(var t=_.length;--t;)if(e(_[t],t,_))return _[t]}(l,function(_){return _.threshold<=s}))||void 0===r?void 0:r.threshold)||0,u=l.find(function(_){return _.threshold>s});if(u){var h=(null==u?void 0:u.threshold)-c,d=s-c;e+="Score ".concat(u.threshold-s," more points to reach the next unlock.");var b=(d/h).toFixed(2);i+='\n <p class="progress" >\n <span>'.concat(u.title,'</span>\n <span style="transform: scale(').concat(b,",1);").concat(n(),'" class="progress_bar_part"></span>\n </p>\n\n'),l.slice(l.indexOf(u)+1).slice(0,3).forEach(function(_){i+='\n <p class="progress" >\n <span>'.concat(_.title,"</span> \n </p> \n")})}var p=l.filter(function(_){return _.threshold>a&&_.threshold<s});p.length&&(i+="<p>You unlocked ".concat(p.length," item(s) : ").concat(p.map(function(_){return _.title}).join(", "),"</p>")),_4.combo=1,_D({allowClose:!0,title:_,text:"\n ".concat(_4.isCreativeModeRun?"<p>This test run and its score are not being recorded</p>":"","\n <p>").concat(e,"</p>\n <p>Your total cumulative score went from ").concat(a," to ").concat(s,".</p>\n ").concat(i," \n "),actions:[{value:null,text:"Start a new run",help:""}],textAfterButtons:'<div id="level-recording-container"></div>\n '.concat(function(){var _="";try{var e=JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]");e.sort(function(_,e){return _.score-e.score}).reverse(),(e=e.slice(0,100)).push(v(y({},_4.runStatistics),{perks:_4.perks,appVersion:L})),_4.isCreativeModeRun||localStorage.setItem("breakout_71_runs_history",JSON.stringify(e,null,2));var t=function(_,t,r){var o,n,i,s=e.map(function(_){return t(_)||0}),a=(o=Math).min.apply(o,k(s)),l=(n=Math).max.apply(n,k(s));if(a===l)return"";l-a<10&&(a=Math.max(0,l-10),l=Math.max(l,a+10));var c=Math.min(s.length,10);if(c<3)return"";for(var u=[],h=[],d=0;d<c;d++)u.push(0),h.push(0);var b=(l-a)/u.length,p=function(_){return Math.min(u.length-1,Math.floor((_-a)/b))};if(s.forEach(function(_){if(!isNaN(_)){var e=p(_);u[e]++,h[e]+=_}}),u.filter(function(_){return _}).length<3)return"";var m=(i=Math).max.apply(i,k(u)),g=s[s.length-1],y=p(g),v=u.map(function(_,e){return'<span class="'.concat(e===y?"active":"",'"><span style="').concat("height: ".concat(_/m*80,"px"),'" title="').concat(_," run").concat(_>1?"s":""," between ").concat(Math.floor(a+e*b)," and ").concat(Math.floor(a+(e+1)*b)).concat(r,'"\n ><span>').concat(!_&&" "||e==y&&g+r||Math.round(h[e]/_)+r,"</span></span></span>")}).join("");return'<h2 class="histogram-title">'.concat(_," : <strong>").concat(g).concat(r,'</strong></h2>\n <div class="histogram">').concat(v,"</div>\n ")};_+=t("Total score",function(_){return _.score},""),_+=t("Catch rate",function(_){return Math.round(_.score/_.coins_spawned*100)},"%"),_+=t("Bricks broken",function(_){return _.bricks_broken},""),_+=t("Bricks broken per minute",function(_){return Math.round(_.bricks_broken/_.runTime*6e4)}," bpm"),_+=t("Hit rate",function(_){return Math.round((1-_.misses/_.puck_bounces)*100)},"%"),_+=t("Duration per level",function(_){return Math.round(_.runTime/1e3/_.levelsPlayed)},"s"),_+=t("Level reached",function(_){return _.levelsPlayed},""),_+=t("Upgrades applied",function(_){return _.upgrades_picked},""),_+=t("Balls lost",function(_){return _.balls_lost},""),_+=t("Average combo",function(_){return Math.round(_.coins_spawned/_.bricks_broken)},""),(_+=t("Max combo",function(_){return _.max_combo},""))&&(_="<p>Find below your run statistics compared to your ".concat(e.length-1," best runs.</p>")+_)}catch(_){console.warn(_)}return _}()," \n ")}).then(function(){return _5({levelToAvoid:_m().name})})}}function _z(_,e,t){var r,o=_4.bricks[_];if(o){if("black"===o){delete _4.bricks[_];var n=_l(_),i=_c(_);A.explode(e.x);for(var s=_%_4.gridSize,a=Math.floor(_/_4.gridSize),l=1+_4.perks.bigger_explosions,c=-l;c<=l;c++)for(var u=-l;u<=l;u++){var h=_u(a+u,s+c);if(_4.bricks[h]&&-1!==h){if("black"!==_4.bricks[h]&&_4.perks.sturdy_bricks>5*Math.random())continue;_z(h,e,!0)}}_4.coins.forEach(function(_){var e=_.x-n,t=_.y-i,r=Math.max(_4.brickWidth,Math.abs(e)+Math.abs(t));_.vx+=e/r*10*l/_.weight,_.vy+=t/r*10*l/_.weight}),_4.lastExplosion=Date.now(),_4.flashes.push({type:"ball",duration:150,time:_4.levelTime,size:2*_4.brickWidth,color:"white",x:n,y:i}),_h(7*(1+_4.perks.bigger_explosions),n,i,"white",150,_4.coinSize),e.hitSinceBounce++,_4.runStatistics.bricks_broken++}else if(o){e.hitSinceBounce++;var d=_l(_),b=_c(_);_4.bricks[_]="";var p=_4.combo;_4.perks.sturdy_bricks&&(p+=Math.ceil((10+_4.perks.sturdy_bricks)/10*p)),_4.levelSpawnedCoins+=p,_4.runStatistics.coins_spawned+=p,_4.runStatistics.bricks_broken++;for(var m=_4.MAX_COINS*(_X("basic")?.5:1),g=Math.max(1,Math.ceil(p/(_4.coins.length>_4.MAX_COINS?1:Math.floor(m-_4.coins.length)/3)));p>0;){var y=Math.min(g,p);(y<0||isNaN(y))&&console.error({points:y}),p-=y;var v=d+(Math.random()-.5)*(_4.brickWidth-_4.coinSize),f=b+(Math.random()-.5)*(_4.brickWidth-_4.coinSize);_4.coins.push({points:y,size:_4.coinSize,color:_4.perks.metamorphosis?o:"gold",x:v,y:f,previousX:v,previousY:f,vx:e.previousVX*(.5+Math.random()),vy:e.previousVY*(.5+Math.random()),sx:0,sy:0,a:Math.random()*Math.PI*2,sa:Math.random()-.5,weight:.8+.2*Math.random()})}_4.combo+=Math.max(0,_4.perks.streak_shots+_4.perks.compound_interest+_4.perks.left_is_lava+_4.perks.right_is_lava+_4.perks.top_is_lava+_4.perks.picky_eater-Math.round(Math.random()*_4.perks.soft_reset)),t||((_4.perks.picky_eater||_4.perks.pierce_color)&&o!==_4.ballsColor&&o?(_4.perks.picky_eater&&$(_4,e.x,e.y),A.colorChange(e.x,.8),_4.lastExplosion=_4.levelTime,_4.ballsColor=o,_X("basic")||_4.balls.forEach(function(_){_h(7,_.previousX,_.previousY,o,150,15)})):A.comboIncreaseMaybe(_4.combo,e.x,1)),_4.flashes.push({type:"ball",duration:40,time:_4.levelTime,size:_4.brickWidth,color:o,x:d,y:b}),_h(5+Math.min(_4.combo,30),d,b,o,150,_4.coinSize/2)}_4.bricks[_]||"black"===o||null===(r=e.hitItem)||void 0===r||r.push({index:_,color:o})}}function _R(){return 7+_4.perks.extra_levels}window.addEventListener("resize",_s),window.addEventListener("fullscreenchange",_s),setInterval(function(){var _=__.getBoundingClientRect(),e=_.width,t=_.height;(e!==_4.canvasWidth||t!==_4.canvasHeight)&&_s()},1e3),__.addEventListener("mouseup",function(_){0===_.button&&(_4.running?_o(!0):(_r(),_X("pointerLock")&&__.requestPointerLock()))}),__.addEventListener("mousemove",function(_){document.pointerLockElement===__?_v(_4.puckPosition+_.movementX):_v(_.x)}),__.addEventListener("touchstart",function(_){var e;_.preventDefault(),(null===(e=_.touches)||void 0===e?void 0:e.length)&&(_v(_.touches[0].pageX),_r())}),__.addEventListener("touchend",function(_){_.preventDefault(),_o(!0)}),__.addEventListener("touchcancel",function(_){_.preventDefault(),_o(!0),_4.needsRender=!0}),__.addEventListener("touchmove",function(_){var e;(null===(e=_.touches)||void 0===e?void 0:e.length)&&_v(_.touches[0].pageX)});var _B=document.createElement("canvas"),_G="",_L={};function _P(_,e,t,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n="puck"+e+"_"+t+"_"+r;if(!_L[n]){var i=document.createElement("canvas");i.width=t,i.height=2*r;var s=i.getContext("2d");s.fillStyle=e,s.beginPath(),s.moveTo(0,2*r),s.lineTo(0,1.25*r),s.bezierCurveTo(0,.75*r,t,.75*r,t,1.25*r),s.lineTo(t,2*r),s.fill(),_L[n]=i}_.drawImage(_L[n],Math.round(_4.puckPosition-t/2),_4.gameZoneHeight-2*r+o)}function _T(_,e,t,r,o){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"",i="ball"+e+"_"+t+"_"+n,s=Math.round(t);if(!_L[i]){var a=document.createElement("canvas");a.width=s,a.height=s;var l=a.getContext("2d");l.beginPath(),l.arc(s/2,s/2,Math.round(s/2)-1,0,2*Math.PI),l.fillStyle=e,l.fill(),n&&(l.lineWidth=2,l.strokeStyle=n,l.stroke()),_L[i]=a}_.drawImage(_L[i],Math.round(r-s/2),Math.round(o-s/2))}function _C(_,e,t,r,o,n,i){var s=(Math.round(i/Math.PI*64)%32+32)%32,a="coin with halo_"+e+"_"+t+"_"+n+"_"+("gold"===e?s:"whatever");if(!_L[a]){var l=document.createElement("canvas");l.width=t,l.height=t;var c=l.getContext("2d");c.beginPath(),c.arc(t/2,t/2,t/2,0,2*Math.PI),c.fillStyle=e,c.fill(),"gold"===e&&(c.strokeStyle=n,c.stroke(),c.beginPath(),c.arc(t/2,t/2,t/2*.6,0,2*Math.PI),c.fillStyle="rgba(255,255,255,0.5)",c.fill(),c.translate(t/2,t/2),c.rotate(s/16),c.translate(-t/2,-t/2),c.globalCompositeOperation="multiply",_H(c,"$",e,t-2,t/2,t/2+1),_H(c,"$",e,t-2,t/2,t/2+1)),_L[a]=l}_.drawImage(_L[a],Math.round(r-t/2),Math.round(o-t/2))}function _O(_,e,t,r,o){var n="fuzzy-circle"+e+"_"+t,i=Math.round(3*t);if(!_L[n]){var s=document.createElement("canvas");s.width=i,s.height=i;var a=s.getContext("2d"),l=a.createRadialGradient(i/2,i/2,0,i/2,i/2,i/2);l.addColorStop(0,e),l.addColorStop(1,"transparent"),a.fillStyle=l,a.fillRect(0,0,i,i),_L[n]=s}_.drawImage(_L[n],Math.round(r-i/2),Math.round(o-i/2))}function _H(_,e,t,r,o,n){var i=arguments.length>6&&void 0!==arguments[6]&&arguments[6],s="text"+e+"_"+t+"_"+r+"_"+i;if(!_L[s]){var a=document.createElement("canvas");a.width=r*e.length,a.height=r;var l=a.getContext("2d");l.fillStyle=t,l.textAlign=i?"left":"center",l.textBaseline="middle",l.font=r+"px monospace",l.fillText(e,i?0:a.width/2,a.height/2,a.width),_L[s]=a}_.drawImage(_L[s],i?o:Math.round(o-_L[s].width/2),Math.round(n-_L[s].height/2))}window.addEventListener("visibilitychange",function(){document.hidden&&_o(!0)});var _E=document.getElementById("score"),_A=0,_Z=null;function _D(_){var e=_.title,t=_.text,r=_.actions,o=_.allowClose,n=void 0===o||o,i=_.textAfterButtons,s=void 0===i?"":i,a=_.actionsAsGrid,l=void 0!==a&&a;return _A++,new Promise(function(_){var o,i=function(e){_(e),setTimeout(function(){document.body.removeChild(a)})},a=document.createElement("div");if(document.body.appendChild(a),a.className="popup "+(l?"actionsAsGrid ":""),n){var c=document.createElement("button");c.title="close",c.className="close-modale",c.addEventListener("click",function(_){_.preventDefault(),i(void 0)}),_Z=function(){i(void 0)},a.appendChild(c)}var u=document.createElement("div");if(e){var h=document.createElement("h2");h.innerHTML=e,u.appendChild(h)}if(t){var d=document.createElement("div");d.innerHTML=t,u.appendChild(d)}var b=document.createElement("section");if(u.appendChild(b),null==r||r.filter(function(_){return _}).forEach(function(_){var e=_.text,t=_.value,r=_.help,o=_.disabled,n=_.className,s=_.icon,a=document.createElement("button");a.innerHTML="\n".concat(void 0===s?"":s,"\n<div>\n <strong>").concat(e,"</strong>\n <em>").concat(r||"","</em>\n </div>"),o?a.setAttribute("disabled","disabled"):a.addEventListener("click",function(_){_.preventDefault(),i(t)}),a.className=void 0===n?"":n,b.appendChild(a)}),s){var p=document.createElement("div");p.className="textAfterButtons",p.innerHTML=s,u.appendChild(p)}a.appendChild(u),null===(o=u.querySelector("button:not([disabled])"))||void 0===o||o.focus()}).then(function(_){return _A--,_Z=null,_},function(){_Z=null,_A--})}var _q={};function _X(_){if(void 0===_q[_])try{var e,t,r,o=localStorage.getItem("breakout-settings-enable-"+_);o&&(_q[_]=JSON.parse(o))}catch(_){console.warn(_)}return null!==(r=null!==(t=_q[_])&&void 0!==t?t:null===(e=E[_])||void 0===e?void 0:e.default)&&void 0!==r&&r}function _I(){return _V.apply(this,arguments)}function _V(){return(_V=m(function(){var _;return W(this,function(e){switch(e.label){case 0:return _o(!0),[4,_D({title:" ".concat(_4.score," points at level ").concat(_4.currentLevel+1," / ").concat(_R()),text:"\n ".concat(_4.isCreativeModeRun?"<p>This is a test run, score is not recorded permanently</p>":"","\n <p>Upgrades picked so far : </p>\n <p>").concat(_d(),"</p>\n "),allowClose:!0,actions:[{text:"Resume",help:"Return to your run",value:function(){}},{text:"Restart",help:"Start a brand new run.",value:function(){_5({levelToAvoid:_m().name})}}]})];case 1:return(_=e.sent())&&_(),[2]}})})).apply(this,arguments)}function _j(){return _F.apply(this,arguments)}function _F(){return(_F=m(function(){var _,e,t,r,o,n,i,s,a,l;return W(this,function(c){switch(c.label){case 0:_o(!0),e=[{text:"Resume",help:"Return to your run",value:function(){}},{text:"Starting perk",help:"Try perks and levels you unlocked",value:function(){(function(){_U.apply(this,arguments)})()}}],t=!0,r=!1,o=void 0;try{for(n=function(){var _=s.value;E[_]&&e.push({disabled:E[_].disabled(),icon:_X(_)?C["icon:checkmark_checked"]:C["icon:checkmark_unchecked"],text:E[_].name,help:E[_].help,value:function(){(function(_){_q[_]=!_X(_);try{localStorage.setItem("breakout-settings-enable-"+_,JSON.stringify(_q[_]))}catch(_){console.warn(_)}E[_].afterChange()})(_),_j()}})},i=Object.keys(E)[Symbol.iterator]();!(t=(s=i.next()).done);t=!0)n()}catch(_){r=!0,o=_}finally{try{t||null==i.return||i.return()}finally{if(r)throw o}}return a=(_=Math).max.apply(_,k(H.map(function(_){return _.threshold}))),(document.fullscreenEnabled||document.webkitFullscreenEnabled)&&(null!==document.fullscreenElement?e.push({text:"Exit Fullscreen",icon:C["icon:exit_fullscreen"],help:"Might not work on some machines",value:function(){_Q()}}):e.push({icon:C["icon:fullscreen"],text:"Fullscreen",help:"Might not work on some machines",value:function(){_Q()}})),e.push({text:"Sandbox mode",help:_x()<a?"Unlocks at total score $"+a:"Test any perk combination",disabled:_x()<a,value:function(){return m(function(){var _,e;return W(this,function(t){switch(t.label){case 0:_={},t.label=1;case 1:return[4,_D({title:"Select perks",text:'Select perks below and press "start run" to try them out in a test run. Scores and stats are not recorded.',actionsAsGrid:!0,actions:k(H.map(function(e){return{icon:e.icon,text:e.name,help:(_[e.id]||0)+"/"+e.max,value:e,className:_[e.id]?"":"grey-out-unless-hovered"}})).concat([{text:"Start run",value:"start"}])})];case 2:if(!(e=t.sent()))return[3,3];if("start"===e)return _5({perks:_}),[3,3];return e&&(_[e.id]=((_[e.id]||0)+1)%(e.max+1)),[3,1];case 3:return[2]}})})()}}),e.push({text:"Reset Game",help:"Erase high score and statistics",value:function(){return m(function(){return W(this,function(_){switch(_.label){case 0:return[4,_D({title:"Reset",actions:[{text:"Yes",value:!0},{text:"No",value:!1}],allowClose:!0})];case 1:return _.sent()&&(localStorage.clear(),window.location.reload()),[2]}})})()}}),[4,_D({title:"Breakout 71",text:"",allowClose:!0,actions:e,textAfterButtons:'\n <p>\n <span>Made in France by <a href="https://lecaro.me">Renan LE CARO</a>.</span> \n <a href="https://breakout.lecaro.me/privacy.html" target="_blank">Privacy Policy</a>\n <a href="https://f-droid.org/en/packages/me.lecaro.breakout/" target="_blank">F-Droid</a>\n <a href="https://play.google.com/store/apps/details?id=me.lecaro.breakout" target="_blank">Google Play</a>\n <a href="https://renanlecaro.itch.io/breakout71" target="_blank">itch.io</a> \n <a href="https://gitlab.com/lecarore/breakout71" target="_blank">Gitlab</a>\n <a href="https://breakout.lecaro.me/" target="_blank">Web version</a>\n <a href="https://news.ycombinator.com/item?id=43183131" target="_blank">HackerNews</a>\n <span>v.'.concat(L,"</span>\n </p>\n ")})];case 1:return(l=c.sent())&&l(),[2]}})})).apply(this,arguments)}function _U(){return(_U=m(function(){var _,e,t,r,o;return W(this,function(n){switch(n.label){case 0:return _=_x(),t=Math.round((e=k(H.sort(function(_,e){return _.threshold-e.threshold}).map(function(e){var t=e.name,r=e.id,o=e.threshold,n=e.icon,i=e.fullHelp;return{text:t,help:_>=o?i:"Unlocks at total score ".concat(o,"."),disabled:_<o,value:{perks:g({},r,1)},icon:n}})).concat(k(O.sort(function(_,e){return _.threshold-e.threshold}).map(function(e){var t=_>=e.threshold;return{text:e.name,help:t?"A ".concat(e.size,"x").concat(e.size," level with ").concat(e.bricks.filter(function(_){return _}).length," bricks"):"Unlocks at total score ".concat(e.threshold,"."),disabled:!t,value:{level:e.name},icon:C[e.name]}})))).filter(function(_){return!_.disabled}).length/e.length*100),[4,_D({title:"You unlocked ".concat(t,"% of the game."),text:"\n <p> Your total score is ".concat(_,". Below are all the upgrades and levels the games has to offer.\n ").concat(t<100?"The greyed out ones can be unlocked by increasing your total score. The total score increases every time you score in game.":"","</p> \n "),textAfterButtons:"<p> \nYour high score is ".concat(_4.highScore,". \nClick an item above to start a run with it.\n </p>"),actions:e,allowClose:!0})];case 1:if(!(r=n.sent()))return[3,4];if(o=!_4.currentLevel)return[3,3];return[4,_D({title:"Restart run to try this item?",text:"You're about to start a new run with the selected unlocked item, is that really what you wanted ? ",actions:[{value:!0,text:"Restart game to test item"},{value:!1,text:"Cancel"}]})];case 2:o=n.sent(),n.label=3;case 3:o&&_5(r),n.label=4;case 4:return[2]}})})).apply(this,arguments)}function _N(_,e){return Math.sqrt(Math.pow(_.x-e.x,2)+Math.pow(_.y-e.y,2))}function _Y(){return"hsl(".concat(2*Math.round(_4.levelTime/4)%360,",100%,70%)")}function _J(_,e,t,r){var o=_N(_,e),n=_4.gameZoneWidth/2;if(!(o>n)){var i=(_.x-e.x)/o,s=(_.y-e.y)/o,a=-t*(n-o)/(1.2*n)/3*Math.min(500,_4.levelTime)/500;r&&void 0!==e.vx&&void 0!==e.vy&&(e.vx+=i*a,e.vy+=s*a),_.vx-=i*a,_.vy-=s*a,_4.flashes.push({type:"particle",duration:100,time:_4.levelTime,size:_4.coinSize/2,color:_Y(),ethereal:!0,x:_.x,y:_.y,vx:-(10*i)+_.vx+(Math.random()-.5)*2,vy:-(10*s)+_.vy+(Math.random()-.5)*2}),r&&void 0!==e.vx&&void 0!==e.vy&&_4.flashes.push({type:"particle",duration:100,time:_4.levelTime,size:_4.coinSize/2,color:_Y(),ethereal:!0,x:e.x,y:e.y,vx:10*i+e.vx+(Math.random()-.5)*2,vy:10*s+e.vy+(Math.random()-.5)*2})}}function _K(){_X("record")&&(null==i?void 0:i.state)==="recording"&&(null==i||i.pause())}function _$(){_X("record")&&i&&(null==i||i.stop(),i=null)}function _Q(){try{if(null!==document.fullscreenElement)document.exitFullscreen?document.exitFullscreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen();else{var _=document.documentElement;_.requestFullscreen?_.requestFullscreen():_.webkitRequestFullscreen&&_.webkitRequestFullscreen()}}catch(_){console.warn(_)}}_E.addEventListener("click",function(_){_.preventDefault(),_I()}),document.addEventListener("visibilitychange",function(){document.hidden&&_o(!0)}),null===(n=document.getElementById("menu"))||void 0===n||n.addEventListener("click",function(_){_.preventDefault(),_j()});var _0={ArrowLeft:0,ArrowRight:0,Shift:0};function _1(_,e){_0[_]=e,_4.keyboardPuckSpeed=(_0.ArrowRight-_0.ArrowLeft)*(1+2*_0.Shift)*_4.gameZoneWidth/50}function _2(_){var e=_x(),t=(null==_?void 0:_.level)?O.filter(function(e){return e.name===(null==_?void 0:_.level)}):[],r=O.filter(function(_){return e>=_.threshold}).filter(function(e){return e.name!==(null==_?void 0:_.level)}).filter(function(e){return e.name!==(null==_?void 0:_.levelToAvoid)}).sort(function(){return Math.random()-.5}),o=t.concat(r.slice(0,10).sort(function(_,e){return _.sortKey-e.sortKey})),n=y({},N(H),(null==_?void 0:_.perks)||{}),i={runLevels:o,currentLevel:0,perks:n,puckWidth:200,baseSpeed:12,combo:1,gridSize:12,running:!1,puckPosition:400,pauseTimeout:null,canvasWidth:0,canvasHeight:0,offsetX:0,offsetXRoundedDown:0,gameZoneWidth:0,gameZoneWidthRoundedUp:0,gameZoneHeight:0,brickWidth:0,needsRender:!0,score:0,lastScoreIncrease:-1e3,lastExplosion:-1e3,highScore:parseFloat(localStorage.getItem("breakout-3-hs")||"0"),balls:[],ballsColor:"white",bricks:[],flashes:[],coins:[],levelStartScore:0,levelMisses:0,levelSpawnedCoins:0,lastPlayedCoinGrab:0,MAX_COINS:400,MAX_PARTICLES:600,puckColor:"#FFF",ballSize:20,coinSize:14,puckHeight:20,totalScoreAtRunStart:e,isCreativeModeRun:U(n)>1,pauseUsesDuringRun:0,keyboardPuckSpeed:0,lastTick:performance.now(),lastTickDown:0,runStatistics:{started:Date.now(),levelsPlayed:0,runTime:0,coins_spawned:0,score:0,bricks_broken:0,misses:0,balls_lost:0,puck_bounces:0,upgrades_picked:1,max_combo:1,max_level:0},lastOffered:{},levelTime:0,autoCleanUses:0};if(Y(i),!U(i.perks)){var s=_g(i).filter(function(_){return _.giftable}),a=_X("easy")&&"slow_down"||s[Math.floor(Math.random()*s.length)].id;n[a]=1,_y(i,a)}var l=!0,c=!1,u=void 0;try{for(var h,d=H[Symbol.iterator]();!(l=(h=d.next()).done);l=!0){var b=h.value;i.perks[b.id]&&_y(i,b.id)}}catch(_){c=!0,u=_}finally{try{l||null==d.return||d.return()}finally{if(c)throw u}}return i}document.addEventListener("keydown",function(_){"f"!==_.key.toLowerCase()||_.ctrlKey||_.metaKey?_.key in _0&&_1(_.key,1):_Q()," "===_.key&&!_A&&(_4.running?_o(!0):_r(),_.preventDefault())}),document.addEventListener("keyup",(e=m(function(_){var e,t,r,o,n;return W(this,function(i){if(n=document.querySelector("button:focus"),_.key in _0)_1(_.key,0);else if("ArrowDown"===_.key&&(null==n?void 0:null===(e=n.nextElementSibling)||void 0===e?void 0:e.tagName)==="BUTTON")null==n||null===(t=n.nextElementSibling)||void 0===t||t.focus();else if("ArrowUp"===_.key&&(null==n?void 0:null===(r=n.previousElementSibling)||void 0===r?void 0:r.tagName)==="BUTTON")null==n||null===(o=n.previousElementSibling)||void 0===o||o.focus();else if("Escape"===_.key&&_Z)_Z();else if("Escape"===_.key&&_4.running)_o(!0);else if("m"!==_.key.toLowerCase()||_A){if("s"!==_.key.toLowerCase()||_A){if("r"!==_.key.toLowerCase()||_A)return[2];_5({levelToAvoid:_m().name})}else _I()}else _j();return _.preventDefault(),[2]})}),function(_){return e.apply(this,arguments)}));var _4=_2({});function _5(_){Object.assign(_4,_2(_)),_K(),_p(0)}_5({}),_s(),function _(){_a();var e=performance.now();if(_4.puckWidth=_4.gameZoneWidth/12*(3-_4.perks.smaller_puck+_4.perks.bigger_puck),_4.keyboardPuckSpeed&&_v(_4.puckPosition+_4.keyboardPuckSpeed),_4.running){_4.levelTime+=e-_4.lastTick,_4.runStatistics.runTime+=e-_4.lastTick,_4.runStatistics.max_combo=Math.max(_4.runStatistics.max_combo,_4.combo);var t,r,o,n,i,u=Math.min(4,(e-_4.lastTick)/(1e3/60));u*=+!!_4.running,_4.coins=_4.coins.filter(function(_){return!_.destroyed}),_4.balls=_4.balls.filter(function(_){return!_.destroyed});var h=_4.bricks.filter(function(_){return _&&"black"!==_}).length;if(_4.levelTime>_4.lastTickDown+1e3&&_4.perks.hot_start&&(_4.lastTickDown=_4.levelTime,t=_4.perks.hot_start,r=_4.puckPosition,o=_4.gameZoneHeight-2*_4.puckHeight,n=_4.combo,_4.combo=Math.max(K(_4),_4.combo-t),(i=Math.max(0,n-_4.combo))&&(A.comboDecrease(),void 0!==r&&void 0!==o&&_4.flashes.push({type:"text",text:"-"+i,time:_4.levelTime,color:"red",x:r,y:o,duration:300,size:_4.puckHeight}))),h<=_4.perks.skip_last&&!_4.autoCleanUses&&(_4.bricks.forEach(function(_,e){_&&_z(e,_4.balls[0],!0)}),_4.autoCleanUses++),h||_4.coins.length){if(_4.running||_4.levelTime){var d=!1,b=Math.round(_4.coinSize/2);if(_4.coins.forEach(function(_){if(!_.destroyed){if(_4.perks.coin_magnet){var e=u*(_4.puckPosition-_.x)/(100+Math.pow(_.y-_4.gameZoneHeight,2)+Math.pow(_.x-_4.puckPosition,2))*_4.perks.coin_magnet*100;_.vx+=e,_.sa-=e/10}var t=1-(.03*_4.perks.viscosity+.005)*u;_.vy*=t,_.vx*=t,_.vx>7*_4.baseSpeed&&(_.vx=7*_4.baseSpeed),_.vx<-7*_4.baseSpeed&&(_.vx=-7*_4.baseSpeed),_.vy>7*_4.baseSpeed&&(_.vy=7*_4.baseSpeed),_.vy<-7*_4.baseSpeed&&(_.vy=-7*_4.baseSpeed),_.a+=_.sa,_.vy+=u*_.weight*.8;var r=Math.abs(_.sx)+Math.abs(_.sx),o=_w(_,_.size/2,u);_.y>_4.gameZoneHeight-b-_4.puckHeight&&_.y<_4.gameZoneHeight+_4.puckHeight+_.vy&&Math.abs(_.x-_4.puckPosition)<b+_4.puckWidth/2+_4.puckHeight?(_.destroyed=!0,_4.score+=_.points,_4.lastScoreIncrease=_4.levelTime,function(_){if(!_4.isCreativeModeRun)try{localStorage.setItem("breakout_71_total_score",JSON.stringify(_x()+_))}catch(_){}}(_.points),_4.score>_4.highScore&&!_4.isCreativeModeRun&&(_4.highScore=_4.score,localStorage.setItem("breakout-3-hs",_4.score.toString())),_X("basic")||_4.flashes.push({type:"particle",duration:100+50*Math.random(),time:_4.levelTime,size:_4.coinSize/2,color:_.color,x:_.previousX,y:_.previousY,vx:(_4.canvasWidth-_.x)/100,vy:-_.y/100,ethereal:!0}),Date.now()-_4.lastPlayedCoinGrab>16&&(_4.lastPlayedCoinGrab=Date.now(),A.coinCatch(_.x)),_4.runStatistics.score+=_.points):_.y>_4.canvasHeight+b&&(_.destroyed=!0,_4.perks.compound_interest&&$(_4,_.x,_.y));var n=function(_){var e,t=_.size/2,r=_.x,o=_.y,n=_.previousX,i=_.previousY,s=_W(n,o,t),a=_W(r,i,t),l=void 0===s&&void 0===a&&_W(r,o,t)||void 0;if(void 0!==s||void 0!==l){_.y=_.previousY,_.vy*=-1;var c=_4.bricks[_f(r-t,o+t)],u=_4.bricks[_f(r+t,o+t)];c&&!u&&(_.vx+=1,_.sa-=1),!c&&u&&(_.vx-=1,_.sa+=1)}return(void 0!==a||void 0!==l)&&(_.x=_.previousX,_.vx*=-1),null!==(e=null!=s?s:a)&&void 0!==e?e:l}(_);_4.perks.metamorphosis&&void 0!==n&&_4.bricks[n]&&_.color!==_4.bricks[n]&&"black"!==_4.bricks[n]&&!_.coloredABrick&&(_4.bricks[n]=_.color,_.coloredABrick=!0,A.colorChange(_.x,.3)),(void 0!==n||o)&&(_.vx*=.8,_.vy*=.8,_.sa*=.9,r>20&&!d&&(d=!0,A.coinBounce(_.x,.2)),3>Math.abs(_.vy)&&(_.vy=0))}}),_4.balls.forEach(function(_){return function(_,e){_.previousVX=_.vx,_.previousVY=_.vy;var t,r,o=1+_4.perks.telekinesis+_4.perks.ball_repulse_ball+_4.perks.puck_repulse_ball+_4.perks.ball_attract_ball;_S(_)&&(o+=3,_.vx+=(_4.puckPosition-_.x)/1e3*e*_4.perks.telekinesis),_.vx*_.vx+_.vy*_.vy<_4.baseSpeed*_4.baseSpeed*2?(_.vx*=1+.02/o,_.vy*=1+.02/o):(_.vx*=1-.02/o,_.vy*=1-.02/o),Math.abs(_.vy)<.2*_4.baseSpeed&&(_.vy+=(_.vy>0?1:-1)*.02/o);var n=!0,i=!1,s=void 0;if(_4.perks.ball_repulse_ball)try{for(var a,l,c,u=_4.balls[Symbol.iterator]();!(n=(c=u.next()).done);n=!0){var h=c.value;h.x>=_.x||_J(_,h,_4.perks.ball_repulse_ball,!0)}}catch(_){i=!0,s=_}finally{try{n||null==u.return||u.return()}finally{if(i)throw s}}var d=!0,b=!1,p=void 0;if(_4.perks.ball_attract_ball)try{for(var m,g=_4.balls[Symbol.iterator]();!(d=(m=g.next()).done);d=!0){var y=m.value;y.x>=_.x||function(_,e,t){var r=_N(_,e),o=.5*_4.gameZoneWidth;if(!(r<o)){var n=(_.x-e.x)/r,i=(_.y-e.y)/r,s=t*(r-o)/o*Math.min(500,_4.levelTime)/500;e.vx+=n*s,e.vy+=i*s,_.vx-=n*s,_.vy-=i*s,_4.flashes.push({type:"particle",duration:100,time:_4.levelTime,size:_4.coinSize/2,color:_Y(),ethereal:!0,x:_.x,y:_.y,vx:10*n+_.vx+(Math.random()-.5)*2,vy:10*i+_.vy+(Math.random()-.5)*2}),_4.flashes.push({type:"particle",duration:100,time:_4.levelTime,size:_4.coinSize/2,color:_Y(),ethereal:!0,x:e.x,y:e.y,vx:-(10*n)+e.vx+(Math.random()-.5)*2,vy:-(10*i)+e.vy+(Math.random()-.5)*2})}}(_,y,_4.perks.ball_attract_ball)}}catch(_){b=!0,p=_}finally{try{d||null==g.return||g.return()}finally{if(b)throw p}}if(_4.perks.puck_repulse_ball&&Math.abs(_.x-_4.puckPosition)<_4.puckWidth/2+_4.ballSize*(9+_4.perks.puck_repulse_ball)/10&&_J(_,{x:_4.puckPosition,y:_4.gameZoneHeight},_4.perks.puck_repulse_ball+1,!1),_4.perks.respawn&&(null===(a=_.hitItem)||void 0===a?void 0:a.length)>1&&!_X("basic"))for(var v=0;v<(null===(l=_.hitItem)||void 0===l?void 0:l.length)-1&&v<_4.perks.respawn;v++){var f=_.hitItem[v],k=f.index,W=f.color;if(!_4.bricks[k]&&"black"!==W){var w=Math.random()>.5,S=Math.random()>.5?1:-1,x=Math.random()>.5?1:-1;_4.flashes.push({type:"particle",duration:250,ethereal:!0,time:_4.levelTime,size:_4.coinSize/2,color:W,x:_l(k)+S*_4.brickWidth/2,y:_c(k)+x*_4.brickWidth/2,vx:w?0:-S*_4.baseSpeed,vy:w?-x*_4.baseSpeed:0})}}var M=_w(_,_4.ballSize/2,e);M&&(_4.perks.left_is_lava&&M%2&&_.x<_4.offsetX+_4.gameZoneWidth/2&&$(_4,_.x,_.y),_4.perks.right_is_lava&&M%2&&_.x>_4.offsetX+_4.gameZoneWidth/2&&$(_4,_.x,_.y),_4.perks.top_is_lava&&M>=2&&$(_4,_.x,_.y+_4.ballSize),A.wallBeep(_.x),null===(t=_.bouncesList)||void 0===t||t.push({x:_.previousX,y:_.previousY}));var z=_4.gameZoneHeight-_4.puckHeight-_4.ballSize/2,R=Math.abs(_.x-_4.puckPosition)<_4.ballSize/2+_4.puckWidth/2;if(_.y>z&&_.vy>0&&(R||_4.perks.extra_life&&_.y>z+_4.puckHeight/2)){if(R){var B=Math.sqrt(_.vx*_.vx+_.vy*_.vy),G=Math.atan2(-_4.puckWidth/2,_.x-_4.puckPosition);_.vx=B*Math.cos(G),_.vy=B*Math.sin(G),A.wallBeep(_.x)}else if(_.vy*=-1,_4.perks.extra_life=Math.max(0,_4.perks.extra_life-1),A.lifeLost(_.x),!_X("basic"))for(var L=0;L<10;L++)_4.flashes.push({type:"particle",ethereal:!1,color:"red",destroyed:!1,duration:150,size:_4.coinSize/2,time:_4.levelTime,x:_.x,y:_.y,vx:Math.random()*_4.baseSpeed*3,vy:3*_4.baseSpeed});_4.perks.streak_shots&&$(_4,_.x,_.y),_4.perks.respawn&&_.hitItem.slice(0,-1).slice(0,_4.perks.respawn).forEach(function(_){var e=_.index,t=_.color;_4.bricks[e]||"black"===t||(_4.bricks[e]=t)}),_.hitItem=[],_.hitSinceBounce||(_4.runStatistics.misses++,_4.levelMisses++,$(_4,_.x,_.y),_4.flashes.push({type:"text",text:"miss",duration:500,time:_4.levelTime,size:1.5*_4.puckHeight,color:"red",x:_4.puckPosition,y:_4.gameZoneHeight-2*_4.puckHeight})),_4.runStatistics.puck_bounces++,_.hitSinceBounce=0,_.sapperUses=0,_.piercedSinceBounce=0,_.bouncesList=[{x:_.previousX,y:_.previousY}]}_.y>_4.gameZoneHeight+_4.ballSize/2&&_4.running&&(_.destroyed=!0,_4.runStatistics.balls_lost++,_4.balls.find(function(_){return!_.destroyed})||_M("Game Over","You dropped the ball after catching "+_4.score+" coins. "));var P=_4.ballSize/2,T=_.x,C=_.y,O=_.previousX,H=_.previousY,E=_W(O,C,P),Z=_W(T,H,P),D=void 0===E&&void 0===Z&&_W(T,C,P)||void 0,q=null!==(r=null!=E?E:Z)&&void 0!==r?r:D,X=q&&"black"!==_4.bricks[q]&&_4.perks.sturdy_bricks&&_4.perks.sturdy_bricks>5*Math.random(),I=!1;if(X||void 0===q||((_4.perks.pierce_color&&(void 0===E||_4.bricks[E]===_4.ballsColor)&&(void 0===Z||_4.bricks[Z]===_4.ballsColor)&&(void 0===D||_4.bricks[D]===_4.ballsColor)?0:1)?_.piercedSinceBounce<3*_4.perks.pierce&&(I=!0,_.piercedSinceBounce++):I=!0),void 0===E&&void 0===D||I||(_.y=_.previousY,_.vy*=-1),void 0===Z&&void 0===D||I||(_.x=_.previousX,_.vx*=-1),X){A.wallBeep(T);return}if(void 0!==q){var V=_4.bricks[q];_z(q,_,!1),_.sapperUses<_4.perks.sapper&&"black"!==V&&!_4.bricks[q]&&(_4.bricks[q]="black",_.sapperUses++)}!_X("basic")&&(_.sparks+=e*(_4.combo-1)/30,_.sparks>1&&(_4.flashes.push({type:"particle",duration:100*_.sparks,time:_4.levelTime,size:_4.coinSize/2,color:_4.ballsColor,x:_.x,y:_.y,vx:(Math.random()-.5)*_4.baseSpeed,vy:(Math.random()-.5)*_4.baseSpeed,ethereal:!1}),_.sparks=0))}(_,u)}),_4.perks.wind)for(var p=(_4.puckPosition-(_4.offsetX+_4.gameZoneWidth/2))/_4.gameZoneWidth*2*_4.perks.wind,m=0;m<_4.perks.wind;m++)Math.random()*Math.abs(p)>.5&&_4.flashes.push({type:"particle",duration:150,ethereal:!0,time:_4.levelTime,size:_4.coinSize/2,color:_Y(),x:_4.offsetXRoundedDown+Math.random()*_4.gameZoneWidthRoundedUp,y:Math.random()*_4.gameZoneHeight,vx:8*p,vy:0});_4.flashes.forEach(function(_){"particle"===_.type&&(_.x+=_.vx*u,_.y+=_.vy*u,!_.ethereal&&(_.vy+=.5,_k(_f(_.x,_.y))&&(_.destroyed=!0)))})}}else _4.currentLevel+1<_R()?_p(_4.currentLevel+1):_M("Run finished ","You cleared all levels for this run, catching ".concat(_4.score," coins in total."));if(_4.combo>K(_4)){var g=!_X("basic")&&(_4.combo-K(_4))*Math.random()>5&&_4.running&&{type:"particle",duration:100*(Math.random()+1),time:_4.levelTime,size:_4.coinSize/2,color:"red",ethereal:!0};if(_4.perks.top_is_lava&&g&&_4.flashes.push(v(y({},g),{x:_4.offsetXRoundedDown+Math.random()*_4.gameZoneWidthRoundedUp,y:0,vx:(Math.random()-.5)*10,vy:5})),_4.perks.left_is_lava&&g&&_4.flashes.push(v(y({},g),{x:_4.offsetXRoundedDown,y:Math.random()*_4.gameZoneHeight,vx:5,vy:(Math.random()-.5)*10})),_4.perks.right_is_lava&&g&&_4.flashes.push(v(y({},g),{x:_4.offsetXRoundedDown+_4.gameZoneWidthRoundedUp,y:Math.random()*_4.gameZoneHeight,vx:-5,vy:(Math.random()-.5)*10})),_4.perks.compound_interest){var f=_4.puckPosition,k=0;do f=_4.offsetXRoundedDown+_4.gameZoneWidthRoundedUp*Math.random(),k++;while(Math.abs(f-_4.puckPosition)<_4.puckWidth/2&&k<10)g&&_4.flashes.push(v(y({},g),{x:f,y:_4.gameZoneHeight,vx:(Math.random()-.5)*10,vy:-5}))}if(_4.perks.streak_shots){var W=.5-Math.random();g&&_4.flashes.push(v(y({},g),{duration:100,x:_4.puckPosition+_4.puckWidth*W,y:_4.gameZoneHeight-_4.puckHeight,vx:10*W,vy:-5}))}}}(function(){if(_4.running&&(_4.needsRender=!0),_4.needsRender){_4.needsRender=!1;var _=_m(),e=__.width,t=__.height;if(e&&t){if(_E.innerText="L".concat(_4.currentLevel+1,"/").concat(_R()," $").concat(_4.score),Object.assign(_E.style,_4.lastScoreIncrease<_4.levelTime-30?{color:"gold",fontWeight:"bold",opacity:1}:{opacity:.5,fontWeight:"normal",color:"white"}),_X("basic")||_.color||!_.svg)_e.globalAlpha=1,_e.globalCompositeOperation="source-over",_e.fillStyle=_.color||"#000",_e.fillRect(0,0,e,t),_4.flashes.forEach(function(_){var e=_.x,t=_.y,r=_.time,o=_.color,n=_.size,i=_.type,s=_.duration;_e.globalAlpha=Math.min(1,2-(_4.levelTime-r)/s*2),"particle"===i&&_T(_e,o,n,e,t)});else if(_e.globalCompositeOperation="source-over",_e.globalAlpha=1,_e.fillStyle="#000",_e.fillRect(0,0,e,t),_e.globalCompositeOperation="screen",_e.globalAlpha=.6,_4.coins.forEach(function(_){_.destroyed||_O(_e,_.color,2*_4.coinSize,_.x,_.y)}),_4.balls.forEach(function(_){_O(_e,_4.ballsColor,2*_4.ballSize,_.x,_.y)}),_e.globalAlpha=.5,_4.bricks.forEach(function(_,e){if(_){var t=_l(e),r=_c(e);_O(_e,"black"==_?"#666":_,_4.brickWidth,t,r)}}),_e.globalAlpha=1,_4.flashes.forEach(function(_){var e=_.x,t=_.y,r=_.time,o=_.color,n=_.size,i=_.type,s=_.duration;_e.globalAlpha=Math.min(1,2-(_4.levelTime-r)/s*2),"ball"===i&&_O(_e,o,n,e,t),"particle"===i&&_O(_e,o,3*n,e,t)}),_e.globalAlpha=.2,_e.globalCompositeOperation="multiply",_e.fillStyle="black",_e.fillRect(0,0,e,t),_e.globalAlpha=.8,_e.globalCompositeOperation="multiply",_.svg&&_n.width&&_n.complete){if(_i.title!==_.name){_i.title=_.name,_i.width=_4.canvasWidth,_i.height=_4.canvasHeight;var r=_i.getContext("2d");r.fillStyle=_.color||"#000",r.fillRect(0,0,_4.canvasWidth,_4.canvasHeight);var o=_e.createPattern(_n,"repeat");o&&(r.fillStyle=o,r.fillRect(0,0,e,t))}_e.drawImage(_i,0,0)}else _e.fillStyle="#000",_e.fillRect(0,0,e,t);_e.globalAlpha=1,_e.globalCompositeOperation="source-over";var n=Date.now()-_4.lastExplosion+5,i=n<200;if(i){var u=(_4.perks.bigger_explosions+1)*50/n;_e.translate(Math.sin(Date.now())*u,Math.sin(Date.now()+36)*u)}if(_e.globalAlpha=1,_4.coins.forEach(function(e){e.destroyed||(_e.globalCompositeOperation="gold"===e.color||_.color?"source-over":"screen",_C(_e,e.color,e.size,e.x,e.y,_.color||"black",e.a))}),_X("basic")||(_e.globalCompositeOperation="source-over",_e.globalAlpha=Math.min(.8,_4.coins.length/20),_4.balls.forEach(function(e){_T(_e,_.color||"#000",6*_4.ballSize,e.x,e.y)})),_e.globalCompositeOperation="source-over",function(){_e.globalAlpha=1;var _=_4.combo>K(_4)&&_4.perks.picky_eater,e=_4.gameZoneWidth+"_"+_4.bricks.join("_")+_t.complete+"_"+_+"_"+_4.ballsColor+"_"+_4.perks.pierce_color;if(e!==_G){_G=e,_B.width=_4.gameZoneWidth,_B.height=_4.gameZoneWidth+1;var t=_B.getContext("2d");t.clearRect(0,0,_4.gameZoneWidth,_4.gameZoneWidth),t.resetTransform(),t.translate(-_4.offsetX,0),_4.bricks.forEach(function(e,r){var o=_l(r),n=_c(r);if(e){var i=_4.ballsColor!==e&&"black"!==e&&_&&"red"||e;(function(_,e,t,r,o){var n=Math.ceil(r-_4.brickWidth/2),i=Math.ceil(o-_4.brickWidth/2),s=Math.ceil(r+_4.brickWidth/2)-1,a=Math.ceil(o+_4.brickWidth/2)-1,l=s-n,c=a-i,u="brick"+e+"_"+t+"_"+l+"_"+c;if(!_L[u]){var h,d,b,p,m,g,y=document.createElement("canvas");y.width=l,y.height=c;var v=y.getContext("2d");v.fillStyle=e,v.strokeStyle=t,v.lineJoin="round",v.lineWidth=2,h=v,d=1,b=1,p=l-2,m=c-2,g=2,h.beginPath(),h.moveTo(3,1),h.lineTo(d+p-g,b),h.quadraticCurveTo(d+p,b,d+p,b+g),h.lineTo(d+p,b+m-g),h.quadraticCurveTo(d+p,b+m,d+p-g,b+m),h.lineTo(d+g,b+m),h.quadraticCurveTo(d,b+m,d,b+m-g),h.lineTo(d,b+g),h.quadraticCurveTo(d,b,d+g,b),h.closePath(),v.fill(),v.stroke(),_L[u]=y}_.drawImage(_L[u],n,i,l,c)})(t,e,i,o,n),"black"===e&&(t.globalCompositeOperation="source-over",function(_,e,t,r,o){var n="svg"+e+"_"+t+"_"+e.complete;if(!_L[n]){var i=document.createElement("canvas");i.width=t,i.height=t;var s=i.getContext("2d"),a=t/Math.max(e.width,e.height),l=e.width*a,c=e.height*a;s.drawImage(e,(t-l)/2,(t-c)/2,l,c),_L[n]=i}_.drawImage(_L[n],Math.round(r-t/2),Math.round(o-t/2))}(t,_t,_4.brickWidth,o,n))}})}_e.drawImage(_B,_4.offsetX,0)}(),_e.globalCompositeOperation="screen",_4.flashes=_4.flashes.filter(function(_){return _4.levelTime-_.time<_.duration&&!_.destroyed}),_4.flashes.forEach(function(_){var e=_.x,t=_.y,r=_.time,o=_.color,n=_.size,i=_.type,s=_.duration,a=_4.levelTime-r;_e.globalAlpha=Math.max(0,Math.min(1,2-a/s*2)),"text"===i?(_e.globalCompositeOperation="source-over",_H(_e,_.text,o,n,e,t-a/10)):"particle"===i&&(_e.globalCompositeOperation="screen",_T(_e,o,n,e,t),_O(_e,o,n,e,t))}),_4.perks.extra_life){_e.globalAlpha=1,_e.globalCompositeOperation="source-over",_e.fillStyle=_4.puckColor;for(var h=0;h<_4.perks.extra_life;h++)_e.fillRect(_4.offsetXRoundedDown,_4.gameZoneHeight-_4.puckHeight/2+2*h,_4.gameZoneWidthRoundedUp,1)}if(_e.globalAlpha=1,_e.globalCompositeOperation="source-over",_4.balls.forEach(function(_){_T(_e,_4.ballsColor,_4.ballSize,_.x,_.y,_4.puckColor),_S(_)&&(_e.strokeStyle=_4.puckColor,_e.beginPath(),_e.bezierCurveTo(_4.puckPosition,_4.gameZoneHeight,_4.puckPosition,_.y,_.x,_.y),_e.stroke())}),_e.globalAlpha=1,_e.globalCompositeOperation="source-over",_4.perks.streak_shots&&_4.combo>K(_4)&&_P(_e,"red",_4.puckWidth,_4.puckHeight,-2),_P(_e,_4.puckColor,_4.puckWidth,_4.puckHeight),_4.combo>1){_e.globalCompositeOperation="source-over";var d="x "+_4.combo,b=d.length*_4.puckHeight/1.8+2*_4.coinSize,p=_4.puckPosition-b/2;b<_4.puckWidth?(_C(_e,"gold",_4.coinSize,p+_4.coinSize/2,_4.gameZoneHeight-_4.puckHeight/2,_4.puckColor,0),_H(_e,d,"#000",_4.puckHeight,p+1.5*_4.coinSize,_4.gameZoneHeight-_4.puckHeight/2,!0)):_H(_e,d,"#FFF",_4.puckHeight,_4.puckPosition,_4.gameZoneHeight-_4.puckHeight/2,!1)}var m=_4.combo>K(_4);_e.globalCompositeOperation="source-over",_4.offsetXRoundedDown?(_e.fillStyle=m&&_4.perks.left_is_lava?"red":_4.puckColor,_e.fillRect(_4.offsetX-1,0,1,t),_e.fillStyle=m&&_4.perks.right_is_lava?"red":_4.puckColor,_e.fillRect(e-_4.offsetX+1,0,1,t)):(_e.fillStyle="red",m&&_4.perks.left_is_lava&&_e.fillRect(0,0,1,t),m&&_4.perks.right_is_lava&&_e.fillRect(e-1,0,1,t)),_4.perks.top_is_lava&&_4.combo>K(_4)&&(_e.fillStyle="red",_e.fillRect(_4.offsetXRoundedDown,0,_4.gameZoneWidthRoundedUp,1));var g=_4.perks.compound_interest&&_4.combo>K(_4);_e.fillStyle=g?"red":_4.puckColor,_X("mobile-mode")?(_e.fillRect(_4.offsetXRoundedDown,_4.gameZoneHeight,_4.gameZoneWidthRoundedUp,1),_4.running||_H(_e,"Press and hold here to play",_4.puckColor,_4.puckHeight,_4.canvasWidth/2,_4.gameZoneHeight+(_4.canvasHeight-_4.gameZoneHeight)/2)):g&&_e.fillRect(_4.offsetXRoundedDown,_4.gameZoneHeight-1,_4.gameZoneWidthRoundedUp,1),i&&_e.resetTransform(),_X("record")&&_4.running&&s&&(c&&(c.drawImage(__,_4.offsetXRoundedDown,0,_4.gameZoneWidthRoundedUp,_4.gameZoneHeight,0,0,l.width,l.height),c.fillStyle="#FFF",c.textBaseline="top",c.font="12px monospace",c.textAlign="right",c.fillText(_4.score.toString(),l.width-12,12),c.textAlign="left",c.fillText("Level "+(_4.currentLevel+1)+"/"+_R(),12,12)),(null==a?void 0:a.requestFrame)?null==a||a.requestFrame():(null==s?void 0:s.requestFrame)&&s.requestFrame())}}})(),requestAnimationFrame(_),_4.lastTick=e}()}();</script> </body></html>