The Tale Extended

Расширение базового функционала в браузерной игре Сказка

目前为 2015-08-13 提交的版本,查看 最新版本

// ==UserScript==
// @name        The Tale Extended
// @description Расширение базового функционала в браузерной игре Сказка
// @author      standy <[email protected]>
// @version     0.4.5
// @include     http://the-tale.org/game/
// @run-at      document-end
// @license     MIT License
// @namespace   the-tale-extended
// ==/UserScript==
// @require     http://code.jquery.com/jquery-1.11.2.min.js
// @grant       GM_addStyle


/******/ !function(modules) {
    /******/
    // The require function
    /******/
    function __webpack_require__(moduleId) {
        /******/
        // Check if module is in cache
        /******/
        if (installedModules[moduleId]) {
            /******/
            return installedModules[moduleId].exports;
        }
        /******/
        // Create a new module (and put it into the cache)
        /******/
        var module = installedModules[moduleId] = {
            /******/
            exports: {},
            /******/
            id: moduleId,
            /******/
            loaded: !1
        };
        /******/
        // Return the exports of the module
        /******/
        /******/
        // Execute the module function
        /******/
        /******/
        // Flag the module as loaded
        /******/
        return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), module.loaded = !0, module.exports;
    }
    // webpackBootstrap
    /******/
    // The module cache
    /******/
    var installedModules = {};
    /******/
    // Load entry module and return exports
    /******/
    /******/
    // expose the modules object (__webpack_modules__)
    /******/
    /******/
    // expose the module cache
    /******/
    /******/
    // __webpack_public_path__
    /******/
    return __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.p = "", __webpack_require__(0);
}([ /* 0 */
/***/
function(module, exports, __webpack_require__) {
    __webpack_require__(1), __webpack_require__(5), __webpack_require__(7), __webpack_require__(9), window.injectDone && window.injectDone();
}, /* 1 */
/***/
function(module, exports, __webpack_require__) {
    // style-loader: Adds some css to the DOM by adding a <style> tag
    // load the styles
    var content = __webpack_require__(2);
    "string" == typeof content && (content = [ [ module.id, content, "" ] ]);
    // add the styles to the DOM
    __webpack_require__(4)(content, {});
}, /* 2 */
/***/
function(module, exports, __webpack_require__) {
    exports = module.exports = __webpack_require__(3)(), exports.push([ module.id, "/*body .navbar .container { max-width: 1170px; }*/\r\n\r\n\r\n\r\n.sort { cursor: default; position: relative; }\r\n\r\n.sort-down:after,\r\n.sort-up:after {\r\n	content: '';\r\n	display: inline-block;\r\n	width: 0;\r\n	height: 0;\r\n	margin: 8px -9px 0 1px;\r\n	vertical-align: 1px;\r\n	border-right: 4px solid transparent;\r\n	border-left: 4px solid transparent;\r\n\r\n}\r\n.sort-up:after {\r\n	border-top: 4px solid #000000;\r\n}\r\n.sort-down:after {\r\n	border-bottom: 4px solid #000000;\r\n}\r\n\r\n\r\n/* forum */\r\n.caption a,\r\n.caption a:visited,\r\n.caption a:hover {\r\n	/*color: #444;*/\r\n	opacity: .5;\r\n}\r\n\r\n.caption.new-messages a,\r\n.caption.new-messages a:link,\r\n.caption.new-messages a:visited,\r\n.caption.new-messages a:hover {\r\n	/*color: #0088cc;*/\r\n	opacity: 1;\r\n}\r\n/* eo forum */", "" ]);
}, /* 3 */
/***/
function(module, exports) {
    module.exports = function() {
        var list = [];
        return list.toString = function() {
            for (var result = [], i = 0; i < this.length; i++) {
                var item = this[i];
                result.push(item[2] ? "@media " + item[2] + "{" + item[1] + "}" : item[1]);
            }
            return result.join("");
        }, list;
    };
}, /* 4 */
/***/
function(module, exports, __webpack_require__) {
    function addStylesToDom(styles, options) {
        for (var i = 0; i < styles.length; i++) {
            var item = styles[i], domStyle = stylesInDom[item.id];
            if (domStyle) {
                domStyle.refs++;
                for (var j = 0; j < domStyle.parts.length; j++) {
                    domStyle.parts[j](item.parts[j]);
                }
                for (;j < item.parts.length; j++) {
                    domStyle.parts.push(addStyle(item.parts[j], options));
                }
            } else {
                for (var parts = [], j = 0; j < item.parts.length; j++) {
                    parts.push(addStyle(item.parts[j], options));
                }
                stylesInDom[item.id] = {
                    id: item.id,
                    refs: 1,
                    parts: parts
                };
            }
        }
    }
    function listToStyles(list) {
        for (var styles = [], newStyles = {}, i = 0; i < list.length; i++) {
            var item = list[i], id = item[0], css = item[1], media = item[2], sourceMap = item[3], part = {
                css: css,
                media: media,
                sourceMap: sourceMap
            };
            newStyles[id] ? newStyles[id].parts.push(part) : styles.push(newStyles[id] = {
                id: id,
                parts: [ part ]
            });
        }
        return styles;
    }
    function createStyleElement() {
        var styleElement = document.createElement("style"), head = getHeadElement();
        return styleElement.type = "text/css", head.appendChild(styleElement), styleElement;
    }
    function addStyle(obj, options) {
        var styleElement, update, remove;
        if (options.singleton) {
            var styleIndex = singletonCounter++;
            styleElement = singletonElement || (singletonElement = createStyleElement()), update = applyToSingletonTag.bind(null, styleElement, styleIndex, !1), remove = applyToSingletonTag.bind(null, styleElement, styleIndex, !0);
        } else {
            styleElement = createStyleElement(), update = applyToTag.bind(null, styleElement), remove = function() {
                styleElement.parentNode.removeChild(styleElement);
            };
        }
        return update(obj), function(newObj) {
            if (newObj) {
                if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
                    return;
                }
                update(obj = newObj);
            } else {
                remove();
            }
        };
    }
    function replaceText(source, id, replacement) {
        var boundaries = [ "/** >>" + id + " **/", "/** " + id + "<< **/" ], start = source.lastIndexOf(boundaries[0]), wrappedReplacement = replacement ? boundaries[0] + replacement + boundaries[1] : "";
        if (source.lastIndexOf(boundaries[0]) >= 0) {
            var end = source.lastIndexOf(boundaries[1]) + boundaries[1].length;
            return source.slice(0, start) + wrappedReplacement + source.slice(end);
        }
        return source + wrappedReplacement;
    }
    function applyToSingletonTag(styleElement, index, remove, obj) {
        var css = remove ? "" : obj.css;
        if (styleElement.styleSheet) {
            styleElement.styleSheet.cssText = replaceText(styleElement.styleSheet.cssText, index, css);
        } else {
            var cssNode = document.createTextNode(css), childNodes = styleElement.childNodes;
            childNodes[index] && styleElement.removeChild(childNodes[index]), childNodes.length ? styleElement.insertBefore(cssNode, childNodes[index]) : styleElement.appendChild(cssNode);
        }
    }
    function applyToTag(styleElement, obj) {
        var css = obj.css, media = obj.media, sourceMap = obj.sourceMap;
        if (sourceMap && "function" == typeof btoa) {
            try {
                css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(JSON.stringify(sourceMap)) + " */", css = '@import url("data:text/css;base64,' + btoa(css) + '")';
            } catch (e) {}
        }
        if (media && styleElement.setAttribute("media", media), styleElement.styleSheet) {
            styleElement.styleSheet.cssText = css;
        } else {
            for (;styleElement.firstChild; ) {
                styleElement.removeChild(styleElement.firstChild);
            }
            styleElement.appendChild(document.createTextNode(css));
        }
    }
    /*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
    var stylesInDom = {}, memoize = function(fn) {
        var memo;
        return function() {
            return "undefined" == typeof memo && (memo = fn.apply(this, arguments)), memo;
        };
    }, isIE9 = memoize(function() {
        return /msie 9\b/.test(window.navigator.userAgent.toLowerCase());
    }), getHeadElement = memoize(function() {
        return document.head || document.getElementsByTagName("head")[0];
    }), singletonElement = null, singletonCounter = 0;
    module.exports = function(list, options) {
        options = options || {}, // Force single-tag solution on IE9, which has a hard limit on the # of <style>
        // tags it will allow on a page
        "undefined" == typeof options.singleton && (options.singleton = isIE9());
        var styles = listToStyles(list);
        return addStylesToDom(styles, options), function(newList) {
            for (var mayRemove = [], i = 0; i < styles.length; i++) {
                var item = styles[i], domStyle = stylesInDom[item.id];
                domStyle.refs--, mayRemove.push(domStyle);
            }
            if (newList) {
                var newStyles = listToStyles(newList);
                addStylesToDom(newStyles, options);
            }
            for (var i = 0; i < mayRemove.length; i++) {
                var domStyle = mayRemove[i];
                if (0 === domStyle.refs) {
                    for (var j = 0; j < domStyle.parts.length; j++) {
                        domStyle.parts[j]();
                    }
                    delete stylesInDom[domStyle.id];
                }
            }
        };
    };
}, /* 5 */
/***/
function(module, exports, __webpack_require__) {
    // style-loader: Adds some css to the DOM by adding a <style> tag
    // load the styles
    var content = __webpack_require__(6);
    "string" == typeof content && (content = [ [ module.id, content, "" ] ]);
    // add the styles to the DOM
    __webpack_require__(4)(content, {});
}, /* 6 */
/***/
function(module, exports, __webpack_require__) {
    exports = module.exports = __webpack_require__(3)(), exports.push([ module.id, "@font-face {\r\n	font-family: 'Glyphicons Halflings';\r\n	src: url('data:application/octet-stream;base64,AAEAAAARAQAABAAQRkZUTWpVwvAAAAEcAAAAHEdERUYBCAAEAAABOAAAACBPUy8yZ6dLhAAAAVgAAABgY21hcErwCZoAAAG4AAACcmN2dCAAKAOHAAAELAAAAAhmcGdtU7QvpwAABDQAAAJlZ2FzcAAAABAAAAacAAAACGdseWYeHjMhAAAGpAAAiTxoZWFkAmJY/gAAj+AAAAA2aGhlYQoyBA8AAJAYAAAAJGhtdHjBwRGOAACQPAAAAvRsb2NhNI9WTgAAkzAAAAG4bWF4cAIEAaAAAJToAAAAIG5hbWXUr5ntAACVCAAAA3xwb3N0uUamaQAAmIQAAAiEcHJlcLDyKxQAAKEIAAAALndlYmZYr1LmAAChOAAAAAYAAAABAAAAAMw9os8AAAAAzwwW8gAAAADPDAkuAAEAAAAOAAAAGAAAAAAAAgABAAEA2gABAAQAAAACAAAAAwSBAZAABQAEAwwC0AAAAFoDDALQAAABpAAyArgAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVUtXTgBAAA3iAAPA/xAAAAUYAHwAAAABAAAAAAAAAAAAAAAgAAEAAAADAAAAAwAAABwAAQAAAAABbAADAAEAAAAcAAQBUAAAAFAAQAAFABAAAAANACAAKwCgIAogLyBfIKwiEiX8JgEnCScP4APgCeAZ4CngOeBJ4FngYOBp4HngieCX4QnhGeEp4TnhRuFJ4VnhaeF54YnhleGZ4gD//wAAAAAADQAgACoAoCAAIC8gXyCsIhIl/CYBJwknD+AB4AXgEOAg4DDgQOBQ4GDgYuBw4IDgkOEB4RDhIOEw4UDhSOFQ4WDhcOGA4ZDhl+IA//8AAf/1/+P/2v9m4Aff49+032jeA9oa2hbZD9kKIBkgGCASIAwgBiAAH/of9B/zH+0f5x/hH3gfch9sH2YfYB9fH1kfUx9NH0cfQR9AHtoAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAADAAAAAAAAAAAABAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjwAoAviwACywABNLsExQWLBKdlmwACM/GLAGK1g9WUuwTFBYfVkg1LABEy4YLbABLCDasAwrLbACLEtSWEUjWSEtsAMsaRggsEBQWCGwQFktsAQssAYrWCEjIXpY3RvNWRtLUlhY/RvtWRsjIbAFK1iwRnZZWN0bzVlZWRgtsAUsDVxaLbAGLLEiAYhQWLAgiFxcG7AAWS2wByyxJAGIUFiwQIhcXBuwAFktsAgsEhEgOS8tsAksIH2wBitYxBvNWSCwAyVJIyCwBCZKsABQWIplimEgsABQWDgbISFZG4qKYSCwAFJYOBshIVlZGC2wCiywBitYIRAbECFZLbALLCDSsAwrLbAMLCAvsAcrXFggIEcjRmFqIFggZGI4GyEhWRshWS2wDSwSESAgOS8giiBHikZhI4ogiiNKsABQWCOwAFJYsEA4GyFZGyOwAFBYsEBlOBshWVktsA4ssAYrWD3WGCEhGyDWiktSWCCKI0kgsABVWDgbISFZGyEhWVktsA8sIyDWIC+wBytcWCMgWEtTGyGwAVlYirAEJkkjiiMgikmKI2E4GyEhISFZGyEhISEhWS2wECwg2rASKy2wESwg0rASKy2wEiwgL7AHK1xYICBHI0ZhaoogRyNGI2FqYCBYIGRiOBshIVkbISFZLbATLCCKIIqHILADJUpkI4oHsCBQWDwbwFktsBQsswBAAUBCQgFLuBAAYwBLuBAAYyCKIIpVWCCKIIpSWCNiILAAI0IbYiCwASNCWSCwQFJYsgAgAENjQrIBIAFDY0KwIGOwGWUcIVkbISFZLbAVLLABQ2MjsABDYyMtAAAAAAEAAf//AA8AAgAoAAABaAMgAAMABwAusQEALzyyBwQC7TKxBgXcPLIDAgLtMgCxAwAvPLIFBALtMrIHBgP8PLIBAgLtMjMRIRElMxEjKAFA/ujw8AMg/OAoAtAAAQBkAGQETARMABcAJACwAC+wDTOwAc2wCzIBsBgvsBPWsAUysBLNsAcysRkBKwAwMRM1ISc3FxEzETcXByEVIRcHJxEjEQcnN2QBA7eNt8i3jbcBA/79t423yLeNtwH0yLeNtwED/v23jbfIt423/v0BA7eNtwAAAQAAAAAETARMAAsASgCyCgAAK7AAL7AHM7ABzbAFMrIBAAors0ABAwkrAbAML7AK1rACMrAJzbAEMrIJCgors0AJBwkrsgoJCiuzQAoACSuxDQErADAxGQEhESERIREhESERAZABLAGQ/nD+1AGQASwBkP5w/tT+cAGQAAEAZAAFBIwErgA3AHYAsDIvsCjNsigyCiuzQCguCSuwAC+wITOwAc2wHzKwBS+wHDOwBs2wGjKwFS+wC82yFQsKK7NAFRAJKwGwOC+wN9awAjKwIs2xHR8yMrAiELEtASuwEDKwLs2wDzKxOQErsSI3ERKwBzmwLRGyCyAyOTk5ADAxEzczNDcjNzM2NzYzMhcWFyM0LgIjIg4CByEHIQYVIQchHgQzMj4CNTMGBwYjIicuASdkZHEF2mSHJUt1tPJwPAa1M0xKHhg5RD8TAXtk/tQGAZZk/tQJMDlDMxUdSkwzrh9ha6fNdyRCDAH0ZC81ZKdajb1najdYMBkULFo+ZC42ZEp0QisPGjBXNaxqdZ4uq3gAAAABAMgBkARMArwAAwASALAAL7ADzQGwBC+xBQErADAxEyERIcgDhPx8AZABLAAAAAABAAAAAAAAAAAAAAAAMQAAAf/yASwEwgRBABUAHwCwAy+wDs2wCc0BsBYvsRcBKwCxCQMRErELETk5MDEDFBYzITI2NCYjIgcuASMiBhUUFw4BDnFPAu54qqp4LiwstW6Y2AJCVQHuUHKt8qwOYXfXmRkMDmsAAAAEAAAAZASwBEwABAAHAAoADQAANQEXNwElEQkFEQGQyMgBkPtQASz+1AJYAlj+1AEsZAGQyMj+cMgCWP7UAfT9pQJb/gwBLP2oAAAAA//z//MEvQS9AAIABgAQAAAHJSc3FwEnNxc3NjQvASYiBw0BTd9a1gJm1lbWYw0NmQ8kDw1w31HWAmbWVtZcDScOmQ0NAAAAAQAAAAAEsASwAAkAMwCyBgAAK7AHzbADMgGwCi+wCNawA82yAwgKK7NAAwUJK7IIAwors0AIBgkrsQsBKwAwMREhAREhFSE1IREEsP4MASz84AEsBLD92v3aZGQCJgAAAQAOAAgETASvACAAACYeATc+ATURJREmBw4BFx4BNz4BNRE0JgcFDgEVESYHBgQkiE9BWAJYQEpPVxISiE9GUw4K/RAKDkBKT4tuKRoVYCoCXpv99xAXGnI2NykZF1E3A3EKCwPBAxMK/U8RGBkAAAIAF//sBMQEmQATABsAWQCyDgAAK7ASL7AXzbAbL7ADzQGwHC+wAdawFc2wFRCxGQErsAXNsR0BK7EZFRESswMCEBIkFzmwBRGwBzkAsRIOERKwCTmwFxGwEDmwGxKzAQAHBSQXOTAxEhAAIAAVFAcBFhQPAQYiJwEGIyICEBYgNhAmIBcBHAGQARxOASwHB20IFAj+1HeOyIPCARLBwf7uAe0BkAEc/uTIjnf+1AgUCG0HBwEsTgJs/vDCwQESwQAAAAABAGQAWASvBEQAGQAVAAGwGi+wANawDs2wDs2xGwErADAxEzQ+Ah4BFz4CHgIVFA4DBy4EZDhad3d5LDB7eHVYNkN5hKg+PqeEeUMDEEB2Uy0ESURFSAQtU3ZAOXmAf7JVVbJ/gHkAAAL/uABHBJUEsAAKAAwAAAMhEzMTIQETCQETAzdIAd+SApIB2P6Ckf6A/oKSlAIDIAGQ/nD+6v4/ARP+7QG//j8BAAAAA/+4AEcElQSwAAoADAAWABgAsA0vsBMzsAHNsAQyAbAXL7EYASsAMDEDIRMzEyEBEwkBEwM3ExcHNxcnNyMnB0gB35ICkgHY/oKR/oD+gpKUAkPEScDDSsHrTU4DIAGQ/nD+6v4/ARP+7QG//j8BAnSO4oyN5YzT0wAAAAEAAAAABLAEsAATAAAxNQE1IiY9ATQ2MhYdARQGIxUBFQGQJT+w+LA/JQGQjwEBZJUzyHywsHzIM5Vk/v+PAAANAAAAAASwBEwAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwCwALIAAAArsATNsRggMjKwBy+wIjOwCM2wJDKwCy+wJjOwDM2wKDKwDy+wKjOwEM2wLDKwEy+wLjOwFM2wMDKwFy+xHjIzM7ABzQGwNC+wANawBM2zCAwQFCQXMrAEELEFASuzCQ0RFSQXMrAYzbAcMrAYELEZASuwHTKwIM2zJCgsMCQXMrAgELEhASuzJSktMSQXMrADzbE1ASsAsQwLERKxGhs5ObAPEbEcHTk5MDExESERJTM1IzUzNSM1MzUjNTM1IzUzNSMTIREhNSERIQEzNSM1MzUjNTM1IzUzNSM1MzUjBLD7tGRkZGRkZGRkZGTIAlj9qAJY/agCvGRkZGRkZGRkZGQETPu0ZGRkZGRkZGRkZPx8AZBkAZD8fGRkZGRkZGRkZAAAAAAEAAAAAARMBEwADwAfAC8APwBCALINAAArsCwzsATNsCQysB0vsDwzsBTNsDQyAbBAL7AA1rAQMrAJzbAYMrAJELEgASuwMDKwKc2wODKxQQErADAxNRE0NjMhMhYVERQGIyEiJhkBNDYzITIWFREUBiMhIiYBETQ2MyEyFhURFAYjISImGQE0NjMhMhYVERQGIyEiJh0VAZAVHR0V/nAVHR0VAZAVHR0V/nAVHQJYHRUBkBUdHRX+cBUdHRUBkBUdHRX+cBUdMgGQFR0dFf5wFR0dAm0BkBUdHRX+cBUdHf29AZAVHR0V/nAVHR0CbQGQFR0dFf5wFR0dAAAJAAAAAARMBEwADwAfAC8APwBPAF8AbwB/AI8AdgCyDQAAK7E8bDMzsATNsTRkMjKwHS+xTHwzM7AUzbFEdDIysC0vsVyMMzOwJM2xVIQyMgGwkC+wANaxECAyMrAJzbEYKDIysAkQsTABK7FAUDIysDnNsUhYMjKwORCxYAErsXCAMjKwac2xeIgyMrGRASsAMDE9ATQ2OwEyFh0BFAYrASImETU0NjsBMhYdARQGKwEiJhE1NDY7ATIWHQEUBisBIiYBNTQ2OwEyFh0BFAYrASImETU0NjsBMhYdARQGKwEiJhE1NDY7ATIWHQEUBisBIiYBNTQ2OwEyFh0BFAYrASImETU0NjsBMhYdARQGKwEiJhE1NDY7ATIWHQEUBisBIiYdFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0BkB0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHQGQHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUdMsgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR0ABgAAAAAEsARMAA8AHwAvAD8ATwBfAFYAsg0AACuwPDOwBM2wNDKwEy+wTDOwHM2wRDKwLS+wXDOwJM2wVDIBsGAvsADWsRAgMjKwCc2xFygyMrAJELEwASuxQFAyMrA5zbFIWDIysWEBKwAwMT0BNDY7ATIWHQEUBisBIiYRFBY7ATI2PQE0JisBIgYVPQE0NjsBMhYdARQGKwEiJgE1NDYzITIWHQEUBiMhIiYRNTQ2MyEyFh0BFAYjISImETU0NjMhMhYdARQGIyEiJh0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHQGQHRUCvBUdHRX9RBUdHRUCvBUdHRX9RBUdHRUCvBUdHRX9RBUdMsgVHR0VyBUdHQGlFR0dFcgVHR0VyMgVHR0VyBUdHfz1yBUdHRXIFR0dAaXIFR0dFcgVHR0BpcgVHR0VyBUdHQAAAAEAHQAiBPIEKgAFAAATCQEnAScdAaMDMtT9oc4Bxv5cAzTU/aHPAAABAGoAagRGBEYACwAAEwkBNwkBFwkBBwkBagEa/ubUARoBGtT+5gEa1P7m/uYBPgEaARrU/uYBGtT+5v7m1AEa/uYAAAMAF//sBMQEmQATABsAJwC3ALIOAAArsBIvsBfNsBwvsCMzsB3NsCEyshwdCiuzQBwmCSuyHRwKK7NAHR8JK7AbL7ADzQGwKC+wAdawFc2wFRCxJgErsB4ysCXNsCAysiUmCiuzQCUjCSuyJiUKK7NAJhwJK7AlELEZASuwBc2xKQErsSYVERKyAhYbOTk5sCURsBI5sBkSswMXEBokFzmwBRGwBzkAsRcSERKwEDmxHQ4RErMABRUYJBc5sBsRshQZATk5OTAxEhAAIAAVFAcBFhQPAQYiJwEGIyICEBYgNhAmIAM1MzUzFTMVIxUjNRcBHAGQARxOASwHB20IFAj+1HeOyIPCARLBwf7uRmTIZGTIAe0BkAEc/uTIjnf+1AgUCG0HBwEsTgJs/vDCwQESwf5ZyGRkyGRkAAADABf/7ATEBJoAEwAbAB8AXQCyDgAAK7ASL7AXzbAbL7ADzQGwIC+wAdawFc2wFRCxGQErsAXNsSEBK7EZFREStQMCEBIcHSQXObAFEbAHOQCxEg4RErAJObAXEbAQObAbErUBAAcFHB4kFzkwMRIQACAAFRQHARYUDwEGIicBBiMiAhAWIDYQJiADITUhFwEcAZABHE4BLAcHbQgUCP7Ud47Ig8IBEsHB/u5GAZD+cAHuAZABHP7kyI15/tUHFgdtCAgBLE4CbP7wwsIBEML+WcgAAAIAFwAXBJkEsAAbACsARQCwGC+wCs0BsCwvsADWsAfNsgcACiuzQAcDCSuwBxCxDAErsBPNsgwTCiuzQAwQCSuxLQErsQwHERKzFxgcIyQXOQAwMRM0EjcVDgEVFBYgNjU0Jic1FhIVFA4CIi4CARQWOwEyNjURNCYrASIGFRfSp2d8+gFi+nxnp9Jbm9Xs1ZtbAd0dFWQVHR0VZBUdAli3ASg+pjfIeLH6+rF4yDemPv7Yt3bVm1tbm9UBDBUdHRUBkBUdHRUABABkAAEEsASxAAMABwALAA8AMACyBAAAK7EIDDMzAbAQL7AE1rAHzbAHELEIASuwC82wCxCxDAErsA/NsREBKwAwMTczESMBETMRMxEzETMRMxFkyMgBLMhkyGTIAQEs/tQB9P4MAyD84ASw+1AAAAIAGgAbBJYElgBHAFEAYgCwEi+wUM2wSy+wNs0BsFIvsADWsEjNsEgQsU0BK7AkzbFTASuxSAARErELPTk5sE0Rsw8VMzkkFzmwJBKxGS85OQCxUBIRErEHHTk5sEsRswMhJ0UkFzmwNhKxK0E5OTAxExQfAhYfAQcWFzcXFh8CFjMyPwI2PwEXNjcnNzY/AjY1NC8CJi8BNyYnBycmLwImIyIPAgYPAScGBxcHBg8CBgU0NjIWFRQGIiYaBpcCDhgDUC08hQUtMQUmKCIbLyYGLi8FhjgwUAMYDwGYBQWYARAXA1AsPIYFLTAGJigiGy8mBTIsBYU7LlADGQ0ClwYBZ36yfn6yfgJZISkmBjEsBYY7LlEDGg0ClwUFlwINGgNRLD2GBSwxBiYoIhwtJgYzKgWGOi9RAxkOAZgFBZgBDhkDUS86hgUvLgYmMBlYfn5YWX5+AAAABwBk//8EsAUUABkAIwAnACsALwAzADcAiQCyIQAAK7AkzbIoMDQyMjKwJy+yKjI2MzMzsBvNsBcvsATNsQ4sMjKwLy+wCc0BsDgvsBrWsCTNsCQQsSUBK7AFMrAozbAsMrIlKAors0AlAAkrsCgQsSkBK7AwzbAwELExASuwLTKwNM2wDTKyNDEKK7NANBMJK7A0ELE1ASuwHc2xOQErADAxEzU0NjMhNTQ2MyEyFh0BITIWHQEUBiMhIiYTESERFAYjISImNzMRIxMzESMRITUhEzMRIxMzESNkDwoBEzspASwpOwETCg8OC/vmCw5kA4Q7Kf1EKTtkZGTIZGQBLP7UyGRkyGRkBAEyCg9kKTs7KWQPCjILDg78bgMg/OApPDwpArz9RAK8ASxk+7QCvP1EArwAAAAAAQABAAEFFQTdAAoALACyCQAAK7AEMwGwCy+wCdawCM2wCBCxBQErsATNsQwBK7EFCBESsAE5ADAxEwkBIxEhESERIREBApAChMj+1P7U/tQCWQKE/Xz9qAGQ/nACWAAAAgBkAAAD6ASwAA4AEQAiALIMAAArAbASL7AB1rAGzbIGAQors0AGCAkrsRMBKwAwMTcRNDYzIREhERQGIyEiJgERAWQOCwHbAZAOC/yuCw4CWAEsGQR+Cw7+DP1dCw4OAxIBLP7UAAADAAQABASsBKwACwATABkAggCwCi+wD82wFC+wF82yFxQKK7NAFxUJK7ATL7AEzQGwGi+wAdawDc2wDRCxFAErsBfNshcUCiuzQBcZCSuwFxCxEQErsAfNsRsBK7EUDRESswoDDhMkFzmxERcRErMJBA8SJBc5ALEUDxESswcADRAkFzmxExcRErMGAREMJBc5MDESEBIkIAQSEAIEICQSEBYgNhAmIBMRMxEzFQSgARIBRAESoKD+7v68/u4W8wFW8/P+qkdkyAG2AUQBEqCg/u7+vP7uoKACX/6q8/MBVvP9/gGQ/tRkAAAAAAL/nAAABRQEsAALAA8ALgCyAAAAK7AHM7AKL7AMzbAPL7ADzbIDDwors0ADAQkrsAUyAbAQL7ERASsAMDEjATMDMwMzASEDIwMTMwMjZAGv0RWiFNABr/3mKfIoMeAbqgSw/tQBLPtQAZD+cAH0ASwAAAAAAgAAAAAETASwAAsADwBKALILAAArsAzNsA8vsAnNsAEyAbAQL7AE1rAHzbIEBwors0AEAAkrsAcQsQ0BK7AKzbERASuxBwQRErECCTk5sA0RsQgMOTkAMDExESEBMxEhETMBIRElMzUjAer+3sgBLMj+3gHq/uGvrwGQASwB9P4M/tT+cMhkAAMAAQABBK8ErwAPABcAHgBjALINAAArsBPNsBcvsAXNAbAfL7AB1rARzbARELEZASuwHM2wHBCxFQErsAnNsSABK7EZEREStA0EEhcYJBc5sBwRsB45sBUStAwFExYdJBc5ALEXExEStQEICQAaHiQXOTAxEjQ+AjIeAhQOAiIuARIQFiA2ECYgAzMRMxEzAwFfoN703qBfX6De9N6gXPIBVPLy/qxQlsiW+gHe9N6gX1+g3vTeoF9foAIC/qzy8gFU8v5kASz+1P7UAAMABAAEBKwErAALABMAGgBhALAKL7APzbATL7AEzQGwGy+wAdawDc2wDRCxGQErsBjNsBgQsREBK7AHzbEcASuxGQ0RErQKAw4TFCQXObAYEbAVObARErQJBA8SFiQXOQCxEw8RErUBBgcAFRgkFzkwMRIQEiQgBBIQAgQgJBIQFiA2ECYgAxsBIxEjEQSgARIBRAESoKD+7v68/u4W8wFW8/P+qk/6+pbIAbYBRAESoKD+7v68/u6goAJf/qrz8wFW8/5iASz+1P7UASwAAAACAAAAAASwBLAACwATACkAsgkAACuwDM2wEDKwEy+wAs0BsBQvsRUBKwCxDAkRErIEAQ45OTkwMTUREyEbARQGIyEiJhMzFyE3MwMhyAMgxwEOC/uCCw7IyDIBLDLIYf2iGQHbArz9RP4lCw4OAebIyAH0AAMABAAEBKwErAALABUAGABGALAKL7APzbAUL7AEzQGwGS+wAdawDM2wDBCxEQErsAfNsRoBK7ERDBEStQQJCgMWGCQXOQCxFA8RErUBBgcAFhckFzkwMRIQEiQgBBIQAgQgJBMUFiA2NTQmIAYBEQUEoAESAUQBEqCg/u7+vP7uFvMBVvPz/qrzAToBKQG2AUQBEqCg/u7+vP7uoKABtKzy8qyr8/P+igGRyAABABcAFwSZBLAAHABTALAFL7ANzbARL7AZzQGwHS+wAdawD82wDxCxCgErsAnNsR4BK7EKDxEStQUEExQXGSQXObAJEbEVFjk5ALERDREStAEACRQVJBc5sBkRsBc5MDESFB4CMj4CNSMUBiAmEDYzMhcHIREHJiMiDgEXW5vV7NWbW5b6/p76+rGIbpIBkJGdxnbVmwLO7NWbW1ub1Xax+voBYvpRkgGQkXpbmwAAAAIAFwAABJkEsAAQACEAegCyEQAAK7AfL7AWzbIWHwors0AWGgkrsA0vsAXNsg0FCiuzQA0ACSsBsCIvsADWsBDNsBAQsRkBK7AazbEjASuxEAARErEREjk5sBkRtwcFCwoTFB8hJBc5sBoSsQkIOTkAsRYfERKwITmwDRGxCRI5ObAFErAHOTAxEzQ+AjMyFzcRITcmIyIGFQMRIQcWMzI2NTMUDgIjIicXW5vVdsadkf5wk3CHsfpJAZCTcIex+pZbm9V2xp0CWHbVm1t6kf5wk1D6sf2oAZCTUPqxdtWbW3oAAAoAZAAABLAEsAADAAcACwAPABMAFwAbAB8AIwAnAFAAsAgvsBgzsAnNsBoysAwvsBwzsA3NsB0ysBAvsCAzsBHNsCEysBQvsCQzsBXNsCUyAbAoL7AI1rIMEBQyMjKwC82yDhIWMjIysSkBKwAwMTMhESETESERJTUzFSc1MxUnNTMVJzUzFRMhNSE9ASEVJTUhFSU1IRVkBEz7tGQDhPzgZGRkZGRkZGQB9P4MAfT+DAH0/gwB9ASw+7QDhPx8ZGRkyGRkyGRkyGRk/ahkZGRkyGRkyGRkAAIAAAAABEwEsAAZACMASgCyFwAAK7AgL7AJzQGwJC+wBdawGs2yBRoKK7NABQAJK7AaELEbASuwDs2yDhsKK7NADhMJK7ElASsAsSAXERKzBA4FGiQXOTAxNRE0NjsBNTQ2MyEyFh0BMzIWFREUBiMhIiYBITU0JisBIgYVOylkdlIBLFJ2ZCk7Oyn8fCk7AZABLB0VyBUdZAJYKTvIUnZ2Usg7Kf2oKTs7AuWWFR0dFQAAAAIAZAAABEwETAADABUAFwCyAAAAKwGwFi+wANawA82xFwErADAxMxEzERM+AR4CPgE3EQ4BLgMGB2RkZDyHeHxyamQpKHuEkId0WhQETPu0AZA8MA0hGwVPUQH0UUUKKCgKRVEAAAAAAwAAAAAEsASXACEAMQBBAGcAsi8AACuwPjOwJs2wNjKwDC+wHc0BsEIvsADWsAfNsAcQsSIBK7ArzbArELEyASuwO82wOxCxEAErsBfNsUMBK7EyKxESswwLHRwkFzkAsSYvERK0BxATFAMkFzmwDBGxCA85OTAxERQWOwEyNjURND4BIB4BFREUFjsBMjY1ETQuAiIOAhUTETQ2OwEyFhURFAYrASImJRE0NjsBMhYVERQGKwEiJg4LMgsOjeQBBuSNDgsyCw5jo97o3qNjyAwIoAgMDAigCAwCWAwIoAgMDAigCAwBEwsODgsBLH/RcnLRf/7UCw4OCwEsdN6jY2Oj3nT91QHMCAwMCP40CAwMCAHMCAwMCP40CAwMAAAAAgAAAMgEWAPoAAUAEQAAESEFEQUhATcnNxc3FwcXBycHASwBLP7U/tQCsI2NR42NR42NR42NAZDIAyDI/quNjUeNjUeNjUeNjQAAAAIAAADIA3AD6AAFAA8AEgABsBAvsA7WsAnNsREBKwAwMREhBREFISU3FhUUByc2NTQBLAEs/tT+1AK8RW9qQ1YBkMgDIMg5NYevqYU2boqSAAAAAAMAAAC6BGID9wAFAA8AHQA8ALAAL7ABzQGwHi+wDtawCc2wCRCxEwErsBrNsR8BK7ETCRESsxAWFx0kFzkAsQEAERKzCQ4TGiQXOTAxGQEhJRElATcWFRQHJzY1NDcXFhUUDwEXNzY1NC8BASwBLP7UAZJFb2pDVl4He3cHUQaOkAYBkQGQyPzgyAHJNYevqoU3boqRzQiXwb2WCEIIsuPmsggADQAAAAAEsASwAAcAEQAVABkAHQAhAC8AMwA/AEMARwBLAE8BAQCyAAAAK7EwRDMzsBLNsikxRTIyMrAaL7InK0wzMzOwG82yJS1NMjIysCIvsQIGMzOwI82wCDKwHi+xDkgzM7AhzbE0STIyAbBQL7Aa1rEFHjIysB3NsQMfMjKwHRCxMAErsQ0sMjKwM82wNTKwMxCxLgsrsCoysCXNsEAysi4lCiuzQC4iCSuyAQsPMjIysCUQsTcBK7FESDIysDvNsSZKMjKwOxCxTAErsEIysE/Nsjk9RjIyMrFRASuxMB0RErUUFRgZND8kFzmxNyURErIoKTg5OTkAsSIbERKzExQ4OSQXObAjEbIEOjs5OTmwHhJACQUWGTY3PD1AQyQXOTAxMSERIzUjFSM1MzUhNTM1IxEhExEhEQERIREDNTMVAzM1IwE1IREzFSMVIzUjNTM1AzUzFQMzETMRITUjNTMRIRMRIREDNSEVATUzFRM1MxUB9MhkyGQBkGRk/gxkASz+1AEsyGRkZGQBLAEsyGTIZGRkZGRkyAEsyMj9qMgBLMgBLP7UZGRkAfRkZGRkZGQBLPu0ASz+1AK8ASz+1P2oZGQCvGT+DGT+1GRkZGTI/gxkZAPo/tT+1MhkAfT+cAEs/tT84GRkA4RkZP1EZGQAAAAACQAAAAAEsASwAAMABwALAA8AEwAXABsAHwAjAHAAsgwAACuyBBQcMzMzsA3NsRUdMjKyDAAAK7AFzQGwJC+wCNawC82wCxCxEAErsAwysBPNsA/NsBMQsRQLK7AXzbAXELEYCyuwG82wGxCxIAErsCPNsSUBK7EQCxESsQcGOTmxGxcRErEcHTk5ADAxNTMRIxM1IRUnETMRFzUzFScRMxEVNTMVNREzERU1MxUnETMRZGRkASzIZMhkZMhkZMhkyMgD6PtQZGTIA+j8GMhbW8gD6PwYyFtbyAPo/BjIW1vIA+j8GAAAAAIAAAAABLAEsAAHABMAKQCyBwAAK7ASL7AEzQGwFC+wAdawCc2xFQErALESBxESsgAGCzk5OTAxERM0NjMhCQEAFBcWMjc2NCcmIgcBDwoB2gK8/gz92B0eUx4dHR5THgK8AdsKD/1E/gwD41QdHh4dVB0eHgAAAAMAAQAABd0EsAAHABMAGQAxALIHAAArsBczsBIvsATNsBQyAbAaL7AB1rAJzbEbASsAsRIHERK0AAYLFhkkFzkwMRsBNDYzIQkBABQXFjI3NjQnJiIHJTMJAScBAQEOCwHaArz+DP3XHh1UHR4eHVQdAgtkArz+DDIBwgK8AdsLDv1E/gwD41QdHh4dVB0eHrD9RP4MMgHCAAAAAAEAZAAABLAEsAAKAD8AsgAAACuwBy+wAs0BsAsvsADWsArNsAoQsQUBK7AEzbEMASuxCgARErICBwg5OTkAsQcAERKyAQQFOTk5MDEzETchEQcRIQchEWSvA51k/RJkAu4EAa/8GGQD6GT8GAAAAAABAMgAAARMBLEACgAAMwkBETQmIyEiBhXIAcIBwh0V/OAVHQG8/kUEfhQeHhQAAAADAAAAAASwBLAACwAXACcAWQCyJQAAK7AczbAKL7ADzbIKAwors0AKAAkrsAcysgMKCiuzQAMBCSuwBTIBsCgvsADWsAvNsAIysAsQsQgBK7AFMrAHzbEpASuxCAsRErMMDyciJBc5ADAxNREzFyE3MxEjNSEVExchNwMuASMhIgYHAzc+ATMhMhYfARYGIyEiJshkAlhkyMj84DUoAlA+XgIQCv4+ChACQiYCEwoB9AoTAiYCCwr9qAoLZAK8yMj9RMjIAtl8fAFaCw4OC/uBmAoODgqYCg4OAAAABAAAAGQEsARMAB0AJQAtADEAbwCwAy+wJc2wKS+wLc2wIS+wE80BsDIvsADWsB/Nsh8ACiuzQB8vCSuwHxCxJwErsCvNsTMBK7EfABESsBk5sSsnERKzISQlICQXOQCxLSkRErMfIiMeJBc5sCERsS4xOTmwExK0CxkaLzAkFzkwMTUUFjMhMjY1ETQmKwEuBCsBIg4CDwEjIgYVADQ2MhYUBiICFBYyNjQmIiU1MxU7KQPoKTs7KZYEDzM3UyrIKVI6LgsMlik7AWSQyJCQyAY+WD4+WAFYZMgpOzspAlgpOwgbRTUrKTs7FRQ7Kf5wyJCQyJABIFg+Plg+XmRkAAIANQAABLAErwAeACIAHgCyAAAAK7ANM7AezbICDA8yMjIBsCMvsSQBKwAwMTMhNSIuAT8BIRcWBiMVITUmJy4BLwEBIwEGBw4BDwEBExcTNQFtKT4kE1wBh1IQKzUBoSIoEh4GBv5/Xf5xGBwMKg8PAWuyLnRCFjYs6t4tV0JCASoTLg4NA+b8EjAbDBoHBwHHAcmM/sMAAwBkAAADwwSwACAAKQAxAGUAsiAAACuwIc2yIAAAK7ABzbApL7AqzbAxL7ANzbANELALzQGwMi+wBNawIc2wKjKwIRCxLgErsBDNsCUg1hGwHM2xMwErsSUuERKwFjkAsSkhERKwHDmwKhGwFjmwMRKwEDkwMTM1PgE1ETQuAyc1BTIWFRQOAg8BHgQVFA4BIyczMjY1NCYrATUzMjY1NCYjZCk7AgkWJB8B13i6FyEiCwwIG0U0K3amT8ihWYB9Xp+LTGyom1kHMygDOxwXHQ0PB0cBsIw3XTcoCAcDDDNBdkZUkU3IYVRagWR7TVJhAAAAAAEAyAAAA28EsAAZACAAsgAAACuwAc2wGDKwCy+wDjOwDM0BsBovsRsBKwAwMTM1PgE3EzYmJy4BJzUhFw4DDwEDBhYXFchNcwitCihHBgkFAakCIToiGQUFgAowRzkHQy8DUTgkEwEDATk5CCMnJQwM/Mc0PAY5AAL/tQAABRQEsAAJACUAfgCyGwAAK7AfL7ICBRYzMzOwDM2yHwwKK7NAHxAJK7AKMgGwJi+wAdawB82wBxCxCgErsCXNsCUQsR0BK7AYzbIYHQors0AYGgkrsh0YCiuzQB0bCSuwGBCxEAErsA/NsScBK7EKBxESsQUIOTkAsR8bERKwCTmwDBGwBDkwMSczESM3FyMRMwcTETMhMxEjNC4DKwERFxUhNTcRIyIOAxVLS0t9fUtLffqWAryWMhAVLiEiyGT+cGTIIiEvFBHIAyCnp/zgpwNjASz+1B0nFQkC/K4yZGQyA1ICCRUnHQAAAAIAIf+2BI8EsQAJACUAiQCyCAAAK7ACzbAfL7AWM7AMzbIfDAors0AfCgkrsA8yAbAmL7AK1rAlzbAlELEdASuwGM2yGB0KK7NAGBoJK7IdGAors0AdGwkrsBgQsRABK7APzbEnASuxHSURErMCCAkBJBc5sRAYERKzBAYHAyQXOQCxAggRErEABTk5sB8RsgEEGjk5OTAxPwEVITUXBzUhFQMRMyEzESM0LgMrAREXFSE1NxEjIg4DFSGnAyCnp/zgZJYCvJYyEBQvISLIZP5wZMgiIS4VEDN9S0t9fUtLA88BLP7UHScVCQL9djJkZDICigIJFScdAAAAAAQAAAAABLAETAAPAB8ALwA/AAA1FBYzITI2PQE0JiMhIgYVNRQWMyEyNj0BNCYjISIGFTUUFjMhMjY9ATQmIyEiBhU1FBYzITI2PQE0JiMhIgYVHRUETBUdHRX7tBUdHRUDIBUdHRX84BUdHRUD6BUdHRX8GBUdHRUCWBUdHRX9qBUdMhQeHhRkFR0dFcgUHh4UZBUdHRXIFB4eFGQVHR0VyBQeHhRkFR0dFQAEAAAAAASwBEwADwAfAC8APwAANRQWMyEyNj0BNCYjISIGFREUFjMhMjY9ATQmIyEiBhUTFBYzITI2PQE0JiMhIgYVERQWMyEyNj0BNCYjISIGFR0VBEwVHR0V+7QVHR0VBEwVHR0V+7QVHcgdFQK8FR0dFf1EFR0dFQK8FR0dFf1EFR0yFB4eFGQVHR0VAfQUHh4UZBUdHRX+cBQeHhRkFR0dFQH0FB4eFGQVHR0VAAQAAAAABLAETAAPAB8ALwA/ACYAsg0AACuwBM2wLS+wJM2wHS+wFM2wPS+wNM0BsEAvsUEBKwAwMT0BNDYzITIWHQEUBiMhIiYTNTQ2MyEyFh0BFAYjISImEzU0NjMhMhYdARQGIyEiJhM1NDYzITIWHQEUBiMhIiYdFQRMFR0dFfu0FR1kHRUD6BUdHRX8GBUdyB0VAyAVHR0V/OAVHcgdFQJYFR0dFf2oFR0yZBUdHRVkFB4eAmxkFR0dFWQUHh7+6GQVHR0VZBQeHgJsZBUdHRVkFB4eAAQAAAAABLAETAAPAB8ALwA/ACYAsg0AACuwBM2wHS+wFM2wLS+wJM2wPS+wNM0BsEAvsUEBKwAwMT0BNDYzITIWHQEUBiMhIiYRNTQ2MyEyFh0BFAYjISImETU0NjMhMhYdARQGIyEiJhE1NDYzITIWHQEUBiMhIiYdFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0yZBUdHRVkFB4eAUBkFR0dFWQUHh4BQGQVHR0VZBQeHgFAZBUdHRVkFB4eAAAAAAgAAAAABLAETAAPAB8ALwA/AE8AXwBvAH8AUgCyDQAAK7BMM7AEzbBEMrAdL7BcM7AUzbBUMrAtL7BsM7AkzbBkMrA9L7B8M7A0zbB0MgGwgC+wANayECAwMjIysAnNshgoODIyMrGBASsAMDE9ATQ2OwEyFh0BFAYrASImETU0NjsBMhYdARQGKwEiJhE1NDY7ATIWHQEUBisBIiYRNTQ2OwEyFh0BFAYrASImATU0NjMhMhYdARQGIyEiJhE1NDYzITIWHQEUBiMhIiYRNTQ2MyEyFh0BFAYjISImETU0NjMhMhYdARQGIyEiJh0VZBUdHRVkFR0dFWQVHR0VZBUdHRVkFR0dFWQVHR0VZBUdHRVkFR0BLB0VAyAVHR0V/OAVHR0VAyAVHR0V/OAVHR0VAyAVHR0V/OAVHR0VAyAVHR0V/OAVHTJkFR0dFWQUHh4BQGQVHR0VZBQeHgFAZBUdHRVkFB4eAUBkFR0dFWQUHh78kGQVHR0VZBQeHgFAZBUdHRVkFB4eAUBkFR0dFWQUHh4BQGQVHR0VZBQeHgAABv+bAAAEsARMAAYACgAaACoAOgBKACAAsAAvsCYzsAHNsC4yAbBLL7FMASsAsQEAERKwBDkwMQM1MzUXBzUTMxEjExQWMyEyNj0BNCYjISIGFTUUFjMhMjY9ATQmIyEiBhU1FBYzITI2PQE0JiMhIgYVNRQWOwEyNj0BNCYrASIGFWXJpqbIZGTIHRUCWBQeHhT9qBUdHRUBLBQeHhT+1BUdHRUB9BQeHhT+DBUdHRVkFB4eFGQVHQH0ZEt9fUv+DARM++YUHh4UZBUdHRXIFB4eFGQVHR0VyBQeHhRkFR0dFcgUHh4UZBUdHRUAAAAABgABAAAFFQRMAA8AHwAvAD8AQwBKABcAskAAACsBsEsvsEDWsEPNsUwBKwAwMTcUFjMhMjY9ATQmIyEiBhU1FBYzITI2PQE0JiMhIgYVNRQWMyEyNj0BNCYjISIGFTUUFjsBMjY9ATQmKwEiBhUBETMRExc1MzUjNQEdFQJYFB4eFP2oFR0dFQEsFB4eFP7UFR0dFQH0FB4eFP4MFR0dFWQUHh4UZBUdAyBkIafIyDIUHh4UZBUdHRXIFB4eFGQVHR0VyBQeHhRkFR0dFcgUHh4UZBUdHRX75gRM+7QCJn1LZEsAAgAAAMgEsAPoAA8AEgAtALANL7AEzbAEzQGwEy+wANawCc2xFAErsQkAERKwEDkAsQQNERKxERI5OTAxGQE0NjMhMhYVERQGIyEiJgkBESwfAu4fLCwf/RIfLAOEASwBEwKKHywsH/12HywsAWQBLP2oAAADAAAAAASwBEwADwAXAB8AWQCyDQAAK7AfL7AbzbAXL7AEzQGwIC+wANawEM2wEBCxGQErsB3NsB0QsRUBK7AJzbEhASuxHRkRErARObAVEbETEjk5ALEfDRESshATFTk5ObAbEbAUOTAxNRE0NjMhMhYVERQGIyEiJj8BBScBExEhEjQ2MhYUBiIaEgRYExkZE/uoEhpk9wEqSgEl7PwYbE5wTk5wLAP0EhoaEvwMEhoa7baDnAE+/uAB9P7OcE5OcE4AAgCU//MEHAS9ABQAHgA9ALINAAArsB0vsATNAbAfL7AA1rAVzbAVELEbASuwCM2xIAErsRsVERKxDQQ5OQCxHQ0RErIHABg5OTkwMRM0PgEzMh4BFAcOAQ8BLgQnJjcUFjMyNjQmIgaUedF6e9B5SUm7OTkKImNdcys/wpdqa5eX1pYC6XzXgX7V9pVy9kJCCSJrb6BLi5Zrl5fWlpcAAAIAAQABBK8ErwAPABUASQCyDQAAK7ATzbAUL7AFzQGwFi+wAdawEc2wERCxEwErsAnNsRcBK7ETERESsQ0EOTmwCRGxBQw5OQCxFBMRErMBCAkAJBc5MDESND4CMh4CFA4CIi4BEhAWMxEiAV+g3vTeoF9foN703qBN+7CwAd703qBfX6De9N6gX1+gAgn+nvoDVgACAHUABAPfBQ8AFgAlAAATND4DNx4GFRQOAgcuAjceARc3LgInJjY/AQ4BdURtc3MeFUlPV00/JU5+mk9yw4B+DltbEAcWLgoPAgkJXDcBll64oZ3FYEePdndzdYZFWZlkOwQGXrh+UmwaYgYWSihJjTQzbpYAAAADAAAAAATFBGgAHAAhACYAVwCyGgAAK7APzbAIL7AEzQGwJy+wANawDM2wDBCxEwErsBbNsSgBK7ETDBESswYdHiAkFzmwFhGxHyI5OQCxCA8RErMVHR8hJBc5sAQRsyAiIyUkFzkwMRkBNDYzBBcHISIGFREUFjMhMjY9ATcVFAYjISImJTcBJwkBFzcvAeulAW4fuv7JKTs7KQH0KTvI66X+1KXrAbShAZxy/msB+XFxFVwBkAEspesGCLo7Kf4MKTs7KX3I4aXr62oyAZxx/msB+HFxVRwAAAAAAgAAAAAElQRMABwALgBIALIaAAArsBDNsCIvsCfNsAkvsATNsAQQsAbNAbAvL7AA1rANzbEwASsAsSIQERKyFR0kOTk5sQkaERKwJTmxBAYRErAmOTAxGQE0NjMhFwYHIyIGFREUFjMhMjY1NxUUBiMhIiYBPgMfARUJARUiDgXrpQEFAoVVkSk7OykB9Ck7yOul/tSl6wGnHmdnXx4dAWj+mQcYSENWQzkBkAEspetQIFg7Kf4MKTs7KZk1pevrASEmNBMJAQHRAUQBPtgCDhczQ20AAAAAAgAAAAAEqARMAB0AIwBSALIbAAArsBDNsAkvsATNAbAkL7AA1rANzbANELEUASuwF82xJQErsRQNERKzBx4fIiQXObAXEbAhOQCxCRARErMWHyIjJBc5sAQRsSAhOTkwMRkBNDYzITIXByEiBhURFBYzITI2PQE3FRQGIyEiJgkCJwEn66UBLD1Csv6jKTs7KQH0KTvI66X+1KXrAVYBGwI3if5SkgGQASyl6xexOyn+DCk7OylFyKml6+sBjf7kAjeJ/lGTAAABAAAAAQSwBLEAFwBFALISAAArsBYvsA4zsALNsAkyAbAYL7AU1rADMrAQzbAIMrEZASuxEBQRErEGEjk5ALEWEhESsQ0XOTmwAhGxAAw5OTAxEQEVMzUjCQEjFTM1CQE1IxUzCQEzNSMVASzIyAEsASfDyAEs/tTIw/7Z/tTIyAJbASjGyAEs/tTIxv7Y/tTGyP7UASzIxgAAAAABAMgAAAOEBEwAEwAdALIRAAArsAszAbAUL7AA1rANzbAIMrEVASsAMDE3ETQ2OwEyFhURAREBERQGKwEiJsgdFWQVHQH0/gwdFWQVHTID6BUdHRX+SwHn+7QB6P5KFR0dAAAAAQAAAAAEsARMABcAHwCyFQAAK7ENDzMzAbAYL7AA1rARzbAIMrEZASsAMDE1ETQ2OwEyFhURAREBEQERAREUBisBIiYdFWQVHQH0AfT+DP4MHRVkFR0yA+gVHR0V/ksB5/4ZAef7tAHo/hgB6P5KFR0dAAABAIgAAASwBEwABgAUALIGAAArsAQzAbAHL7EIASsAMDETAREBEQERiAI0AfT+DAImAib+GQHn+7QB6P4YAAAAAQDIAAAETARMAAIAADMJAcgDhPx8AiYCJgAAAAIAyABkA4QD6AAPAB8AADcUFjsBMjY1ETQmKwEiBhUBFBY7ATI2NRE0JisBIgYVyB0VyBUdHRXIFR0BkB0VyBUdHRXIFR2WFR0dFQMgFR0dFfzgFR0dFQMgFR0dFQAAAAEAyABkBEwD6AAPAAA3FBYzITI2NRE0JiMhIgYVyB0VAyAVHR0V/OAVHZYUHh4UAyAVHR0VAAAAAQAAAAAEKARMAAYAFACyAAAAK7AFMwGwBy+xCAErADAxMREBEQkBEQH0AjT9zARM/hkB5/3a/doB6AAAAQAAAAAEsARMABcAHwCyAAAAK7EQFjMzAbAYL7AU1rAEMrANzbEZASsAMDExEQERARE0NjsBMhYVERQGKwEiJjURAREB9AH0HRVkFR0dFWQVHf4MBEz+GQHn/hkBtRUdHRX8GBUdHRUBtv4YAegAAAEBLAAAA+gETAATAB0AsgAAACuwDjMBsBQvsBLWsAIysAvNsRUBKwAwMSERARE0NjsBMhYVERQGKwEiJjURASwB9B0VZBUdHRVkFR0ETP4ZAbUVHR0V/BgVHR0VAbYAAAIAZADIBLAEKAAPABIAEgCwDS+wBM0BsBMvsRQBKwAwMTc1NDYzITIWHQEUBiMhIiYRIQFkHRUD6BUdHRX8GBUdBEz92vpkFR0dFWQVHR0BDwI0AAEAuQAHA/kEqQAFAAATATcJASe5AlDw/p8BYfACV/2w8AFhAWHwAAABARD/0gRSBHQACAAAJQkBNwEXBxUBARABYf6f8QI8FQH9sMIBYQFh8P3FFgEB/bEAAAAAAgADAAMErQStAAsAFwBCALAKL7AOzbAVL7AEzQGwGC+wAdawDM2wDBCxEQErsAfNsRkBK7ERDBESswQJCgMkFzkAsRUOERKzAQYHACQXOTAxEhASJCAEEhACBCAkEzMVMzUzNSM1IxUjA6ABEwFEAROgoP7t/rz+7YnIyMjIyMgBtgFEAROgoP7t/rz+7aCgAVHIyMjIyAACAAMAAwStBK0ACwAPAEkAsAovsAzNsA8vsATNAbAQL7AB1rAMzbAMELENASuwB82xEQErsQ0MERKzBAkKAyQXOQCxDAoRErEHADk5sQQPERKxAQY5OTAxEhASJCAEEhACBCAkEyE1IQOgARMBRAEToKD+7f68/u2JAlj9qAG2AUQBE6Cg/u3+vP7toKABUcgAAAAAAgADAAMErQStAAsAFwAyALAKL7AEzbAEzQGwGC+wAdawB82wB82xGQErsQcBERKxDBA5OQCxBAoRErENFTk5MDESEBIkIAQSEAIEICQTFzcXNyc3JwcnBxcDoAETAUQBE6Cg/u3+vP7tU9WNjdWOjtWNjdSNAbYBRAEToKD+7f68/u2goAEo1Y6O1Y2N1I2O1Y0AAAIAAwADBK0ErQALABEAMgCwCi+wBM2wBM0BsBIvsAHWsAfNsAfNsRMBK7EHARESsQwOOTkAsQQKERKxDQ85OTAxEhASJCAEEhACBCAkEwkBJwcnA6ABEwFEAROgoP7t/rz+7WsBFAGbr+xmAbYBRAEToKD+7f68/u2goAGE/usBm67sZgAAAAADAAMAAwStBK0ACwA4ADwAbACwCi+wOc2wPC+wJ82wIS+wG82wNC+wBM0BsD0vsBLWsB7NsB4QsS4BK7AHzbE+ASuxHhIRErEhNDk5sC4RtAkEKDo7JBc5ALEnPBESsQcAOTmwIRGwKjmwGxKyDA8uOTk5sDQRsQYBOTkwMRIQEiQgBBIQAgQgJBMzMhYyNjQ+BToBMzIWFRQGBw4EFzM+BDU0LgMjIg4CEzM1IwOgARMBRAEToKD+7f68/u3JjwQPBwYCBQIJBA4EEwMTFggXBQ8nHRgByAUSLSIcIzFEMRsyUUUmiMjIAbYBRAEToKD+7f68/u2goAIZAgYMCgcFAwIBFBAWDBABBBcfPSYDCikyWDIzTCgYBhg1YP4uZAADAAMAAwStBK0ACwAVABkAOwCwCi+wDM2wFS+wDjOwEs2wES+wFs2wGS+wBM0BsBovsRsBKwCxEhURErEHADk5sRYRERKxBgE5OTAxEhASJCAEEhACBCAkNyE1IxEhFTMVIxMzNSMDoAETAUQBE6Cg/u3+vP7t7QGQZP7UZGRkyMgBtgFEAROgoP7t/rz+7aCgiWQBLGTIAZBkAAACAAAAAASwBLAAGAAvAGkAshQAACuwEi+wH82wHDKwAC+yDhkhMzMzsAHNsgwjLTIyMgGwMC+wFNayBRwpMjIysBPNsgceJzIyMrExASuxExQRErMiIy4vJBc5ALESFBESsBU5sQAfERKwHTmwARGyHigpOTk5MDERNTM+ATc1MxUeAhczFSMOAQcVIzUuASczHgEXNTMVNjcjNTMuAScVIzUOAQczFcMfh4vINnZrEsvLGbdZyIyIHmAYb0vIlTTJyBllSshLbhjRAfTIfZUayMgUUINFyGaoIcXFG5d9SW0Yzs4wnshKahjMyxdsSMgAAAAAAwAEAAQErASsAAsAEwAfAEYAsAovsA/NsBMvsATNAbAgL7AB1rANzbANELERASuwB82xIQErsRENERK1BAkKAxQaJBc5ALETDxEStQEGBwAXHSQXOTAxEhASJCAEEhACBCAkEhAWIDYQJiADNyc3FzcXBxcHJwcEoAESAUQBEqCg/u7+vP7uFvMBVvPz/qpJh4dth4dth4dth4cBtgFEARKgoP7u/rz+7qCgAl/+qvPzAVbz/duHh22Hh22Hh22HhwAAAAMABAAEBKwErAALABMAGQBGALAKL7APzbATL7AEzQGwGi+wAdawDc2wDRCxEQErsAfNsRsBK7ERDREStQQJCgMUGCQXOQCxEw8RErUBBgcAFxkkFzkwMRIQEiQgBBIQAgQgJBIQFiA2ECYgAzcXNxcBBKABEgFEARKgoP7u/rz+7hbzAVbz8/6qa41XzI7+pgG2AUQBEqCg/u7+vP7uoKACX/6q8/MBVvP+I41XzY7+pwAAAAMABAAEBKwErAALABMAGwBGALAKL7AWzbARL7AEzQGwHC+wAdawDM2wDBCxGQErsAfNsR0BK7EZDBEStQQJCgMPFCQXOQCxERYRErUBBgcADhskFzkwMRIQEiQgBBIQAgQgJBMUFwEmIyIGExYzMjY1NCcEoAESAUQBEqCg/u7+vP7uFj4COGR0q/PNYXCr8zsBtgFEARKgoP7u/rz+7qCgAbRzZAI3PvP98jvzq3BhAAAAAAEAAABjBLAD6AAGABoAsAUvsALNAbAHL7EIASsAsQIFERKwADkwMREBESERIRECWAJY/agCIwHF/tT+1P7TAAABAAAAYwSwA+gABgAaALAAL7ABzQGwBy+xCAErALEBABESsAQ5MDEZASERCQERAlgCWP2oAZABLAEs/jv+QAEtAAAAAAEAzAAABEoEsAAGAB8AsgUAACsBsAcvsAXWsATNsQgBK7EEBRESsAE5ADAxEwkBIREhEcwBwgG8/tb+1AJYAlj9qP2oAlgAAAEAaAAAA+YEsAAGAB8AsgYAACsBsAcvsAHWsATNsQgBK7EEARESsAY5ADAxEyERIREhAWgBKAEsASr+PwJYAlj9qP2oAAAAAAEAAADHBLAETAANAAA1PgM3EQkBEQ4DBkaJ55wCWP2oX7CkgsiE1a1nCAEP/jv+QAEtAiREdQAAAgAAAAAEsASwAAYADQARALIAAAArAbAOL7EPASsAMDExERcBFwEXExcBFxEhF4EBJo7+2oHrjgEmgf5wgQGQgQEmjv7agQMJjgEmgQGQgQACACIAIwSOBI4ABgANAAA3ASchEScJAREXARcBFyIBJ4EBkIH+2QGogQEnjv7ZgbABJ4H+cIL+2QI1AZCBASeN/tmCAAMAFwAXBJkEmQAPAB8AIwBPALANL7AgzbAjL7AUzbAdL7AFzQGwJC+wAdawEM2wEBCxGQErsAnNsSUBK7EZEBEStQUMDQQhIyQXOQCxFCMRErEJADk5sB0RsQgBOTkwMRI0PgIyHgIUDgIiLgEBEx4BOwEyNjcTNiYrASIGEzM1Ixdbm9Xs1ZtbW5vV7NWbAVY6BCMUNhQjBDoEGBTPFRgwyMgB4uzVm1tbm9Xs1ZtbW5sCRv7SFB0dFAEuFB0d/cVkAAAFAAAAAASwBLAAJgAqADAANAA7ADQAsicAACuwMTOwKs2wMjIBsDwvsDHWsAUysDTNsAcysT0BK7E0MREStAsMEzU6JBc5ADAxETMVIREzESE1MzUjNjQmLwEuASMiDwEGByYvASYjIgYPAQ4BFBUjEyERIRMiNj8BFxMRIREBNx4DI2QBkMgBkGRvAQMCIgs9JyAd7xYSExXuIR0nPQojAgJvZAGQ/nBkAyITEtXbAZD+j8oFDiASAgMgyAEs/tTIZAELEwisJzARkA0WGAyQEi4msQgUCgH8fAGQAfRgMC+//HwBkP5wA4TFDClXOQACAAD/6gSvBLAAGwAyABcAsgAAACsBsDMvsCfWsA/NsTQBKwAwMRU1Ny4CPgE3PgU3FAIOBC4CIwc2Fjc2JT4DNz4BJyYiBgcOAQ8BBAfYCQgDFTguL2llmonoaCxKaHGDeHtcUw9jEidDNwE4RmFrWykWBAgHFCERI509Pf6PWRaPwTU8gGKCOzxVMy0eOR69/szQm1UzCQYTDzd/DVNCqCY/X4BUMhQJBR0ZM3MgIMXMAAABAG8ADAREBOcASAAjAAGwSS+wAdawRc2wRRCxPAErsUoBK7E8RRESsTo2OTkAMDESFBceARcWPgM3PgEnHgEHDgEHDgQeAT4BNz4ENzYCJxYXFicmJy4CNw4EFx4DDgQHBi4CNw4BbwUJRkYfQjo4KA8gDhRPVhEFHxYKCQ8DAwgOGSQYOURrQ0APJqWkFhUnRw8ST1MFMw0qZ0ouDwIMBAgBAQsQGhImOhcHDjQ/AblCHjh/LRUKJT49HkLtJ1CoZCFJLBMUIA8XCAsBBAYUHD1DbkOsAVNtLFWfBQIHIYbZlQgfZm2nUww7GzQbKBcZEAQKLk1WIC5uAAAD/8MAfQTtBDMAIQA/AEcAQwCwGi+wKc2wOi+wCc0BsEgvsDzWsDfNsUkBK7E3PBESQAoJGRoIKSg1PkBDJBc5ALEJOhEStwARJC41PkJHJBc5MDEDNz4GMh4FHwEHDgYiLgUnNx4FMj4ENy4EJxYVFAYiJjU0NwYXFhc3LgEvAT0aBhxGT3N2k5CTdnNPRhwGGhoGHEZPc3aTkJN2c09GHAabB0MtW1R6gHdSWSxICwE3HTo5HjGw+LAuZoUxaWklTBMUAlgoCihXVGBHLy9HYFRXKAooKAooV1RgRy8vR2BUVygKKApgPV44KygzXDtoDgFJJUU6GUpZfLCwfFVJV3N8Q2kYYCQkAAAABP/DAAAE7QSwABYAIAApAEEAoQCyDwAAK7AOMwGwQi+xQwErsDYauj3v790AFSsKsA8uDrAMwAWxDgH5DrANwLAPELMLDwwTK7MQDwwTK7MZDwwTK7MaDwwTK7MkDwwTK7MlDwwTK7IQDwwgiiCKIwYOERI5sBk5sBo5sCQ5sCU5sAs5ALcLDA0QGRokJS4uLi4uLi4uAUAKCwwNDg8QGRokJS4uLi4uLi4uLi6wQBoBADAxAzc+BjMyFzczASM3LgQnNxIXNy4BNTQ3BhcWFz8BLgEvAQE3PgY3Jic3HgIfAQcOBD0aBhxGT3N2k0g9PCWU/saUJVKmcmknCpvStyVrjy5mhTFpLxceOg8OASgmFi0vIjATLwFhKydDgS4NGhoHJVplkwJYKAooV1RgRy8RjvtQjxVlZ3k4Dyj+5jaNEqduVUlXc3xDL1ccUhsa/aeRDyYyJj8YQAJ/MJI2j0AUKCgMNGtiZgAAAAP/ngAABRIErAALABIAFwAAJhYzITI2JwEuAQcBNwkBITUjFREbATUjbxslBQ4lGxX9fhQ4FP1+9QG9Ab3+p8hkZMhEREcgBCAiBSD71mQC0/0tZGQBkP7UASxkAAAAAAEAZAAVBLAEsAApAEgAsB4vsAnNAbAqL7Al1rAFMrAWzbALMrIWJQors0AWGAkrsiUWCiuzQCUjCSuxKwErsRYlERKxHR45OQCxCR4RErEWJTk5MDETNTQ2NwERNDYyFhURAR4BHQEUBiclERYdARQGLwEjBwYmPQE0NxEFBiZkFg8Ba1h8WAFrDxYYEf6ZZBoTXt5eExpk/pkRGAEGKRQxDgFFAVM+WFg+/q3+uw4xFCkUDQz5/vlbFkAUEQlOTgkRFEAWWwEH+QwNABEAAAAABEwEsAAJABsAHwAjACcAKwAvADMANwA7AD8AQwBHAEsATwBTAFcAADUUFjMhMjY1ESE1ITU0JisBNSMVITUjFSMiBhUTNTMVJzUzFSc1MxUTNTMVJzUzFSc1MxUTNTMVJzUzFSc1MxUTNTMVJzUzFSc1MxUTNTMVJzUzFSc1MxUdFQPoFR37tARMHRWWZP4MZJYVHWRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZDIUHh4UAu5klhUdZGRkZB0V/EpkZMhkZMhkZP5wZGTIZGTIZGT+cGRkyGRkyGRk/nBkZMhkZMhkZP5wZGTIZGTIZGQAAAMAAAADBXgErgAKABAAGQBBALAAL7AYM7ABzbATMrALL7AIM7AQzbADMgGwGi+xGwErALEBABESsREWOTmwCxGzBw0SFSQXObAQErEGDjk5MDE9ASEBMzUJATUjCQEhFzcnIQE3FzM1CQE1IwEDAljxASz+1J/9qP6rAQN6jbX+qwKmjXqfASz+1PHIyAJYxv7Z/tTF/agCWHqOtP2VjnvG/tn+1MUAAAEAAAAABLAETAASABoAsg4AACuwEC+wDDOwBM0BsBMvsRQBKwAwMRkBNDYzITIWFREUBiMhAREjIiY7KQPoKTs7Kf2s/tBkKTsBkAJYKTs7Kf2oKTv+1AEsOwAAAwBkAAAETASwACUAKQAtAGAAsh8AACuwCc2yCR8KK7NACQEJK7AVMrAmL7AqM7AnzbArMgGwLi+wANawJjKwA82wKDKwAxCxEgErsCoysBfNsCwysS8BK7EDABESsCQ5sBIRsR4fOTmwFxKwGTkAMDETNSEVFBcWFxYzMj4GJzQ9ASEVFA4FIi4FGQEhESERIRFkASwGEVUnNSU7KR8RCwMCAQEsBhgnTWWdwJ1lTScYBgEsAZABLAJYyPpxIFwZCwsUHCMoLC4YEQj6yCpSfmpxUDMzUHFqflIBVgEs/tQBLP7UAAAAAAH/4gC4BGgD3gAFAAADFwkBNwEe4wFgAWHi/b4Bm+MBYf6f4wJDAAABAEYA2gTMBAAABQAAEwkBJwkBRgJEAkLi/p/+oAMd/b0CQ+P+nwFhAAAAAAL/OgBkBXYD6AAIABEAKACwBy+wBM0BsBIvsAfWsATNsRMBK7EEBxESsAE5ALEEBxESsA45MDEDCQEjESEXIREBFyERIwkBIxHGASsBLMsBgdf84AGU1wF9xgErASvIArwBG/7l/nDIAlgBLMj+cP7lARsCWAAAAAEAEgAABKoEsAAyAEYAsiIAACuwGTOwLM2wLBCwJs2xFR0yMrAvL7AEzbAQL7AJzQGwMy+wJNawH82wHxCxHAErsBfNsTQBK7EXHBESsC05ADAxEyY3NjMhNz4BOwEyFhQGKwEDDgIrARUUBiImPQEhFRQGIiY9ASMiJjU0NjMhNyEiJicSBQ8OGQOAJgUbEV4UHh4UNskCCB4SHx0qHf7UHSodMhUdHRUCFzD9hyAtBQOrGBITohEVHSod/D8EDRYyFB4eFDIyFB4eFDIeFBUdyCoWAAAAAAIAAAAABLAETAADAA8AIACyAAAAK7ABzbAEL7AFzbANMrAJzQGwEC+xEQErADAxMREhEQE1MzQ2MyEyFhUhFQSw+1DIOykBLCk7AfQDIPzgA4RkKTs7KWQAAAAAAgABAAAF3QRMAAMAEAAoALIAAAArsAHNsA8vsA3NsAUysAnNAbARL7ESASsAsQEAERKwBDkwMTMBIQkBETM0NjMhMhYVIRUhAQEsBLD+1PtQyDspASwpOwH0/BgCvP1EAZACWCk7OynIAAAAAQEuAAADggSwAAkAIQCyCQAAKwGwCi+wAdawB82xCwErsQcBERKxBAk5OQAwMQEzESMJASMRMwEBLsbGASoBKsbG/tYBLAJYASz+1P2o/tQAAAAAAQAAAS8EsAOCAAkAHACwCC+wAs0BsAovsQsBKwCxAggRErEABTk5MDERARUhNQkBNSEVASwCWAEs/tT9qAJYASrGxv7W/tfFxQAAAAQAAAAABLAEsAAPABkAHQAhAEkAsgwAACuwGs2wHjKwHS+wIDOwBc2wEC+wFM0BsCIvsBvWsB7NsB4QsR8BK7AJzbIfCQors0AfAAkrsSMBK7EJHxESsBk5ADAxPQE0NjMhMhYdARQGIyEiJhsBPgEzITIWFxMBMzUjFzM1IzspA+gpOzsp/BgpOx+sBSQUAqATJQWs/o9kZMhkZGRkKTs7KWQpOzsBVQLjFictF/0k/tRkZGQAAAAD/5sAZASwBEwACwApADcAJgABsDgvsADWsAbNsAYQsSoBK7AyzbE5ASuxKgYRErEMGjk5ADAxAzU0Nj8BFS4EFzU8Az4FOwElESUjExYOASMiKwEiJicCARE0NjMyFhURFAYjIiZlMhkZBA4iGhbJAQICBAUHBMgCo/1dJi8CCgwPBQNTFB0ENwPoHRUUHh4UFR0CWDIYMg0N+gIHFRYhVfoCDAQKBAcDBQIB+vyuyP7sDAsBHBUBUf7iA1IVHR0V/K4UHh4AAAIASgAABGYEsAArADMANQCyLwAAK7AzzbApL7AfM7ADzbAYMrIpAwors0ApJQkrAbA0L7E1ASsAsSkzERKxLDE5OTAxEzQ2OwE3Ez4BNycmNjsBMhYHBhUeARcTFzMyFhUUBgcOBCMiJi8BLgEFHgEyNjcGIkobFBJ1Pw96UxIGEhReFBIGElN6Dz92ERQbGhIIHmRqn0998To6EhoBpww4RjgLMGwBXhUdrQFHTX4UIBMaFRMkARN/Tf65rR0VFCgHAwsdFRIpFBQHKdwxPT0xBgAAAQAVABUEnAScABcAABMXBzcXNxc3Fyc3JzcnNwcnBycHJxcHFxXpTuAtm5st4E7qtLTqTuAtm5st4E7pswG9LeBO6bOz6U7gLZucLOFO6bS06U7hLJwAAAMAAABkBLAEsAADACIALgAaAAGwLy+wKNawFs2xMAErsRYoERKwFDkAMDE1MxEjARQ7ARY7ATI3EzY9ATQmIyE2PQE0JisBIgYPAgYVExE/ATMVByEVAyMnyMgBLGQ9fA/6LiXuHT0n/rgcPScyGzAOYJEUZJZkMjIBwvrWiMgCWP3zS2Q5AVgfK2QsUXYHlixRKBzGxBol/okBd9XUr+F9/olkAAAAAAMAAAAABLAETAADACIALgBwALIcAAArsCXNsBUvsAAzsCjNsC4vsAfNsAEysCwvsArNAbAvL7AA1rADzbADELEEASuwI82wIxCxJgErsBjNsBgQsSkBK7ARzbEwASuxJiMRErIIKCw5OTmwGBGwFTmwKRKwKzkAsS4cERKwKjkwMRkBMxE3ETQ7ATY7ATIXExYdARQGIyEWHQEUBisBIiYvAiY3HwEzNSchNQMjByPIZGQ9fA/6LiXuHT0n/rgcPScyGzAOYJEUZJZkMjIBwvrWiGQBkAJY/ah9AZBLZDn+qB8rZCxRdgeWLFEoHMbEGiXU1a/hfQF3ZAAAAAMACABkBRUEVQADACIAQQB5ALAgL7AkzbAbL7ApzbAxL7AUzbABMrIxFAors0AxAAkrAbBCL7AA1rADzbADELEEASuwI82wIxCxLQErsBjNsi0YCiuzQC08CSuxQwErsS0jERK0DBEbFD8kFzkAsRskERKwIzmwKRGwGDmxFDERErIXPEE5OTkwMTcRMxE3ETQ2PwElNjMyHwEWFRQPASEyFhQGKwEDDgEjISImNxchEz4BOwEyNjU0JiMhKgIuBCcmNTQ/AScFCMhkHA4OAWoOCxEMbQ4LVQEuVWttVGuCBxsP/qsHpmRkASWDBhsPyxASEhD+NwELBAkDBwQEAgUKk1b+rcgCWP2oSwINESUKCeYGDHAOFBIOeUyQTv6tFieiG1kBUxUoHhUUHQEBAgMFAwwIDg23U+wAAAAD/5sAZQSwBFYAHgA4ADwAeQCwGC+wJM2wHS+wH82wOC+wA82wOjKyOAMKK7NAODkJKwGwPS+wAdawH82yHwEKK7NAHywJK7AfELEmASuwFM2wFBCxOQErsDzNsT4BK7EmHxEStAcMHAQpJBc5ALEdJBESsCY5sB8RsAA5sQM4ERKyAScsOTk5MDECNDYzBScmNTQ/ATYzMhcFHgIVERQGIyEiJicDIyInMzIWFxMhNxElBxcWFRQHDgUqASMhAREzEWVsVQEuVQsObQ0QCw4BbQcUIawI/qsQGwaCa1QK3g8bBoMBJWv+qVeRCgUBBQMHBAkECwH+JAPpyAJDkEwBeRAQFQ1xDAbmBA0nEf3yDaEoFQFTZCkU/q1ZAfbtU7gLDwsJAwUDAgEB/gwCWP2oAAAAAAMAYQAABEwFDgAbADYAOgBHALI3AAArsDjNAbA7L7AV1rA3MrApzbIpFQors0ApOgkrsDMysCkQsS8BK7AOzbE8ASuxKRURErESNjk5sQ4vERKwETkAMDEbAR4CMyEyNjURNCYnJTU0JiIGFREnJgYPAQYXNxcWNz4FPAE1ETQ2Fh0BFBYXBREHIQM1IRVh5gQNJxECDQ2iKBX+rU6QTHkPJQ5wFltTtxYZAwUDAgEBMjIoFQFTWf4JCAJYAs/+lQYTH6YHAVYPGwaDalRua1X+0lQMAQ1uFgtWkhINAQUDBwQJBAsBAcgWEhMVyhAbBoL+2mT+cMjIAAAAAAMAAgAKA+0FGAAdADQAOABFALA1L7A2zQGwOS+wCtawNTKwK82yKwoKK7NAKzgJK7AhMrArELEnASuwD82xOgErsSsKERKxDB85ObEPJxESsA05ADAxEwYfAR4BPwEUBhUUFjI2PQElPgE1ETQmIyEiBg8BAxMhFxEFDgEdARQGJjURPAEuAScmDwETNSEVAhAWcA0mD3kBTZBOAVMUKaIN/fMRJQoKmuwB91n+rBQoMjIDBwYYFriSAlgCSR8Wbg0BC1UzzS5UbG5UaoMGGw8BVgemHA4P/oIBU2T+2oIGHA/KFhISFgHICwcQCAMNEpICccjIAAAAAgAFAAAEsASrAA4AFQA6ALIMAAArsBDNsA8vsAXNAbAWL7AA1rAQzbEXASsAsRAMERKxCRI5ObAPEbEAEzk5sAUSsQgUOTkwMRM0PgIzMgQSEAIEICQCARchBwkBFQVfoN16ogEToKD+7f68/uygASUCASwCAZL+bgJVet2gX6D+7P68/u2goAETAQrJwgEmASrFAAIAAAAABKsEqwAQABcAOACyDgAAK7AUzbAWL7AFzQGwGC+wFNawCs2xGQErALEUDhESsBI5sBYRsgoAETk5ObAFErAXOTAxETQ+AjMyHgIVFAIEICQCNwEnITchNV+g3Xl63aBfoP7s/rz+7aDIAZICASwC/tQCVXrdoF9foN16ov7toKABE6X+2sLJxQAAAAIABQAABLAEqwAOABUAPgCyDAAAK7ARzQGwFi+wANawEc2wERCxEgErsAnNsRcBK7ERABESsQwPOTmwEhGxBRU5ObAJErELFDk5ADAxEzQ+AjMyBBIQAgQgJAIlMxEzETMBBV+g3XqiAROgoP7t/rz+7KABJ8jIyP7UAlV63aBfoP7s/rz+7aCgAROl/tQBLAGQAAACAAUAAASwBKsADgAVAE0AsgwAACuwFC+wBc0BsBYvsADWsBXNsBUQsRIBK7AJzbEXASuxFQARErEMDzk5sBIRsQUQOTmwCRKxCxE5OQCxFAwRErIIABA5OTkwMRM0PgIzMgQSEAIEICQCJQkBIxEjEQVfoN16ogEToKD+7f68/uygAScBLAEsyMgCVXrdoF+g/uz+vP7toKABE6X+cAGQASz+1AAAAAAEAAUAAASwBKsAEACIAJgAmgB8ALIOAAArsCrNsE8vsIwvAbCbL7AA1rAUzbAUELFYASuwCs2xnAErsRQAERKwEjmwWBFADg4FEyEjJDxKVXiEhYmUJBc5sAoSQAoNIiYwO1pndpmaJBc5ALFPKhEStxYwNjxGSFVXJBc5sIwRQAkKABRYbIWNjpQkFzkwMRM0PgIzMh4CFRQCBCAkAhMGFgcUFgcyHgEXFhceAjcWBhcWFxQOARcWNz4CNy4BJy4BJyIOAgcGJyY2NS4BJzYuAQcGJyY3NjceAhceAR8BNDYnJjY3PgM3JjcyFjI2Ny4DJzYnHgE/ATYuAScGJw4DBwYmBw4BBwYWBw4BJT4BNxYyPgE3FBYVLgM3MwVfoN16ed2gX6D+7f68/uyg+QgbBiIBDBYYCBhUFj45HQguAyotBgEFaHUeIiMDDi4NDkYRCT0gLhAyEAQBBikEAggZGhcTEwsGEAYoGwYMKA4OEwQEJQQFCgcYFgYQCB8SFwkKKSM/DAsJHzYMCwcvUg8TEg8rGj4IDz0PFT4DAxMBAzEBAwMaAwoRCxIHIgksHCSiAQJVet2gX1+g3Xqi/u2goAETAVkhdxwJRhkLEwQMHggvHgQSShRHCQYTCgwDcx0kPh8JAQcHEAsBAgsLIxcCLwINCAMWJhIdGR0cHhAGAQEHChMlCQgDSRUXKwoOKhQZCRITAwkLFycVIAcnBQ0DBQQkIxYMAwMMEgYKAQMHBgcnDwsXByJxcQwkBwoMEQQYVQECBgQMXwAAAAABAAAAAgSvBIUAFAAAPAE3ASY2NzYXBRc3FgcGJwEGIi8BDwJYIU5gpI7+/ZH7DaR7gv2sDysPb48rEAJXZck2XGWK6H6vXEYv/awQEG4AAAYAAABgBLAErAAPAB8ALwAzADcAOwBQALAML7A0zbA3L7AFzbAcL7AwzbAzL7AVzbAsL7A4zbA7L7AlzQGwPC+wNdaxMTkyMrAJzbEYKDIysjUJCiuzQDUACSuxECAyMrE9ASsAMDE9ATQ2MyEyFh0BFAYjISImETU0NjMhMhYdARQGIyEiJhE1NDYzITIWHQEUBiMhIiYBITUhEyE1IRMzNSM7KQPoKTs7KfwYKTs7KQPoKTs7KfwYKTs7KQPoKTs7KfwYKTsCWAH0/gzIASz+1GTIyMRkKTs7KWQpOzsBuWQpOzspZCk7OwG5ZCk7OylkKTs7/plk/gxkArxkAAACAGQAAARMBLAAAwAJACUAsggAACuwAC+wAc0BsAovsAjWsAfNsQsBKwCxAAgRErAEOTAxEzUhFQUhAREHEWQD6PxKA4T+osgETGRkZP4M/tTIAfQAAAAAAwAAAGQEsASwAAkAIQAlAGAAsAcvsAHNsAovsB0zsA7NsRgiMjKwJS+wE80BsCYvsA/WsCLNsCAysg8iCiuzQA8LCSuwADKwIhCxIwErsB4ysBjNshgjCiuzQBgcCSuwAjKxJwErALEOChESsB85MDE9ASEVFAYjISImGQE0NjMhNTQ2OwEyFh0BITIWFREhNSMVETM1IwSwOyn8GCk7OykBLDspyCk7ASwpO/4MyMjIyMjIKTs7AVUBkCk7ZCk7OylkOyn+cGRkAfRkAAAAAAQAAAAABLAEsAAGAA0AFAAbABQAsgAAACuwEjMBsBwvsR0BKwAwMTERFzcXBxcBNxc3JzchATcXNxEhNwM3JyERJweByI7Igf5wgciOyIH+cALZjsiB/nCByMiBAZCByAGQgciOyIEDIIHIjsiB/JmOyIH+cIEC5siB/nCByAAABgAAAAAEqASoAAsAFQAfACkAQgBMANIAsgoAACuwD82wHi+wSjOwGc2wRTKwKC+wOTOwI82wNDKyKCMKK7NAKEEJK7AUL7AEzQGwTS+wAdawDM2wDBCxFwErsBvNsBsQsSELK7AmzbAmELEqASuwPs2wPhCxQwErsEjNszdIQwgrsDHNsDEvsDfNsEgQsREBK7AHzbFOASuxJhsRErMKDhQDJBc5sT4qERKxLTw5ObE3MREStQkPEwQvOyQXOQCxHg8RErMHAAwRJBc5sBkRsyotPD4kFzmwKBKxBgE5ObAjEbEvOzk5MDEYARIkIAQSEAIEICQTFBYgNjU0JiAGFjQ2MhYVFAYjIjY0NjMyFhQGIyIXNDY/AiY1NDYzMhYUBiMiJwcWFRQGIiYlNDYyFhQGIyImoAESAUQBEqCg/u7+vP7uFvMBVvPz/qrzbR8uICAXFk0gFxYgIBYXUikfegEJIBcWICAWDg83ETNIMwEeIC4fIBYXIAGyAUQBEqCg/u7+vP7uoKABtKzy8qyr8/OHLh8gFhcg5CwhIC4guiAxBX4BDg4WISAuIAqRFh0kMzNSFiAfLiAgAAAAAf/YADsEugSwAE8AOgCwBS+wJ82wIC+wFc2wNi+wSs0BsFAvsVEBKwCxJwURErA/ObAgEbQLDxobMSQXObAVErEyMzk5MDECBhceATMyNz4CNzY3AT4BJyYnJiMiBgcBBxcBNjc2MzIXFgcBBiMiJicmPgI3NjcBPgIzMhceAQcGDwEDHwEBPgEnLgEnJiMiBwYHARsaMCN2Rj84IUApJygRAYojGA8bWhQJLkEj/nsHRQF5FBMXGyYPECT93TRJN1oJBQ8wJCYYFAFcND1rNhkXX3YIB1v8/QdFAgVDOBEQZk9FU2taKEf+AAHWvk45QBwQMSorLBEBiiNiL1cRAiEj/nQHQwF1FhAXJCck/d00Qj8jPkAkJBUUAVw0NzUEEZtiZVv5/wAHPAH/Q7RdV4YkITcYR/4AAAAAAAIAUAA2BMMEWAAbADUAPQCwMy+wLTOwA82wBzIBsDYvsADWsBzNsBwQsSoBK7AKzbE3ASuxKhwRErMDBw8YJBc5ALEDMxESsAU5MDETNDYzMhc2MzIWFRQOAgcGDwEnLgInLgM3FB4BHwEWFzY/AT4CNTQmIyIPAScmIyIGUMWEj2Jnj4HCI1dDR8VgERArckZCR0NXI6o9PkAWXWFScQxAQz5gOUo6dnIzSDxjAxCDxYGBxYMuWmxHRr+DFxc6gUZBRkdsWi4bVkE+FlpvXG8MPkZYHEdhU6uuUGMAAAAAAgA5//IEdwS+ABgAMwAAExQfARYzMjcBNjQvASYnBxcBJzcnJicHBhMUHwEWFzcnARcHFxYXNz4BNTQvASYjIgcBBjlCjURbXUIBG0JCjQgLadT+e/dfEi4dN0LUQo0HDGnUAYX3XxIvHh0jN0KNQl1fQP7lQgFhX0COQkIBG0K6Qo0JCGnU/nv4XxItODdCAQRdQo0HCmnUAYX3YBExMx0jaitdQo1CQv7lQAAAAAADAMgAAAPoBLAAEQAVAB0ARQCyDwAAK7AZzbAdL7ASzbAVL7AGzQGwHi+wANawEs2wEhCxEwErsAvNsAsQsBvNsBsvsR8BK7EbEhESsgYFFjk5OQAwMTcRND4CMh4CFREUBiMhIiY3IREhEhQWMjY0JiLIPGacqppkOjsp/agpO2QCWP2oxD1WPT1WZAO5FTIuHh4uMhX8Ryk7O/ECvPzZVj09Vj0AAAABAAAAAASwBLAAGAARALIAAAArAbAZL7EaASsAMDExATcnIQEnJjQ3NjIXARYUBwYiLwEBEScHAS/P0gEsAQsjDw8OKg4BGw8PDioOJP7p1NABfNDUARckDioODw/+5g8qDg8PI/71/tTSzwADAScAEgQJBOEAMQA9AEMAlwCwLS+wKjOwBM2wPjKyLQQKK7NALSwJK7A7L7AfM7ASzbISOwors0ASEwkrAbBEL7AO1rAAMrAyzbABzbAyELEsASuyBBI6MjIysCvNshQfPjIyMrArELFAASuwJ82wHCDWEbAbzbFFASuxMgERErACObAsEbAJOQCxBC0RErApObA7EbYADhsnOkBDJBc5sBISsBU5MDEBMx4BFxEuASMuBDU0PgE3NTMVHgQXIy4BJxEXHgQVFAYHFSM1JicuARMUHgMXFhcRDgETNjU0JicBJ4sFV0oGEwIuQk4vIViCT2QmRVI8KwOfCDZKQCI8UDcosptkmFUoGagQESoUHAcEPUnqqlhSAbFNYw8BTwEGDhkvOVg3XIdDB05PBBMsP2lCSEsN/s0OBxMsPGU+i6oLTU4RVyhrAh4dLBgVBgcCAQESCDv9KxKFQEcZAAAAAQBkAGYDlAStAEMAjQCwMS+wKs2wAC+wHjOwAc2wHDKwEy+wC82yEwsKK7NAEw4JKwGwRC+wB9awOTKwGM2wJDKyGAcKK7NAGB4JK7IHGAors0AHAAkrsBgQsQ8BK7AOzbFFASuxGAcRErMCOEJDJBc5sA8RtQsfICoxMyQXObAOErAsOQCxKjERErEtOTk5sAARsSw8OTkwMRM1MyYnLgE+ATc2MzIWFSM0LgEjIgYHBhUUHgEXMxUjFgYHBgc+ATM2FjMyNxcOAiMiJgcOAQ8BJz4FNz4BJ2SmGBQKCQMvLWGmgcqZRFAkJVQUKSEXHvHFCBUVKTojYhUhjCFMPDIpTycqF9IyJ1YXGDcGFQoRDBEJMAwkAlhkMTcaO1ZeKFiydzRLHB0VLDkcUyozZDKCHTs2Cw4BIh6TGRcDQgQEGgwLkQQOBg0LEQo3j0cAAgACAAAErgSwAAYADQAfALIMAAArAbAOL7AM1rALzbEPASuxCwwRErAIOQAwMRMJASMRIxEJAiMRIxECASoBKsbIAZIBKgEqxsgBLP7UASwDhPx8AlgBLP7U/HwDhAAABQACAAAD6ASwAAYADAAWAB4AIgCmALIHAAArsAYzsArNsgcAACuwCM2wEy+wFM2xAAQyMrANL7AOzbAdL7AfzbIdHwors0AdFwkrsBoysCIvsBjNsAIyAbAjL7AB1rAEzbAEELEIASuxDRcyMrAKzbEdHzIysAoQsRUBK7EbIDIysBDNsQsZMjKzEhAVCCuwE82wEy+wEs2xJAErsQQBERKwBjmwCBGwBTkAsRQIERKwEDmwDRGwETkwMRMzETMRMwEhNTMVMxUBNSEVIxUjNTM1AxEhESM1IxU3MzUjAsbIxv7WAZBkyP7UASxjZGPIASxkZAFkZAEsA4T8fP7UyGRkAZBkyGRkZAEsAfT+DGRkyMgABQACAAAD6ASwAAYADgAUAB4AIgCgALIGAAArsQcKMzOwDS+wH82wIi+wCM2wDy+wEs2wEM2wGy+wHM2wFS+wFs2wAjIBsCMvsAHWsATNsAQQsQcBK7EPFTIysA7NsREfMjKwDhCxCwErsR0gMjKwCs2xExcyMrMaCgsIK7AbzbAbL7AazbEkASuxBAERErAGObAHEbAFOQCxIh8RErMBBAUAJBc5sRwQERKwGDmwFRGwGTkwMRMzETMRMwEhESERIzUjFQM1MxUzFQE1IRUjFSM1MzUDMzUjAsbIxv7WAZABLGRkZGTI/tQBLGNkY2NkZAEsA4T8fP7UAfT+DGRkArzIZGQBkGTIZGRk/HzIAAAEAAIAAARMBLAABgAMABIAFgBrALILAAArsAwvsBPNsBYvsAjNsA0vsA7Nsg0OCiuzQA0RCSsBsBcvsBHWsBDNsxMQEQgrsAfNsAcvsA0zsBPNsBAQsRQLK7ALMrAKzbEYASsAsQgLERK0AAIDBgEkFzmxDg0RErEFBDk5MDETCQEjESMRBREhESM1AzUzESMREzM1IwIBKgEqxsgCWAEsZMjIZAFkZAEs/tQBLAOE/HzIAZD+DGQD6GT+DAGQ/HzIAAAABAACAAAETASwAAYADAASABYAawCyCwAAK7AHL7AIzbASL7ATzbISEwors0ASEAkrsBYvsA7NAbAXL7AL1rAKzbMTCgsIK7ANzbANL7AHM7ATzbAKELEUCyuwETKwEM2xGAErALETCxEStAACAwYBJBc5sQ4WERKxBQQ5OTAxEwkBIxEjESU1MxEjEQMRIREjNSczNSMCASoBKsbIAljIZGQBLGRjZGQBLP7UASwDhPx8ZGT+DAGQAZABkP4MZGTIAAAAAAUAAgAABLAEsAAGAAoADgASABYAUgCwBy+wCM2wCy+wDM2wDy+wEM2wEy+wFM0BsBcvsA/WsgcLEzIyMrASzbAWzbIWDwors0AWCgkrs0AWDgkrsRgBKwCxCwgRErMCAwYAJBc5MDETCQEjESMRBTUhFQE1IRUBNSEVATUzFQIBKgEqxsgB9AH0/gwBkP5wASz+1MgBLP7UASwDhPx8yMjIASzIyAEsyMgBLMjIAAAABQACAAAEsASwAAYACgAOABIAFgBSALAHL7AIzbALL7AMzbAPL7AQzbATL7AUzQGwFy+wC9ayBw8TMjIysA7NsArNsgoLCiuzQAoSCSuzQAoWCSuxGAErALELCBESswIDBgAkFzkwMRMJASMRIxEFNTMVAzUhFQE1IRUBNSEVAgEqASrGyAH0yMgBLP7UAZD+cAH0ASz+1AEsA4T8fMjIyAEsyMgBLMjIASzIyAAAAAACAAAAAARMBEwADwAfACoAsg0AACuwE82wHC+wBM0BsCAvsADWsBDNsBAQsRcBK7AJzbEhASsAMDEZATQ2MyEyFhURFAYjISImNxQWMyEyNjURNCYjISIGFeulASyi7u2j/tSl68g7KQH0KTs7Kf4MKTsBkAEspevto/7UpevrQSk7OykB9Ck7OykAAAMAAAAABEwETAAPAB8AIgA+ALINAAArsBPNsBwvsATNAbAjL7AA1rAQzbAQELEXASuwCc2xJAErsRcQERKxICE5OQCxHBMRErEgIjk5MDEZATQ2MyEyFhURFAYjISImNxQWMyEyNjURNCYjISIGFRMtAe6iASyl6+ul/tSj7cg7KQH0KTs7Kf4MKTvIAU3+swGQASyj7eul/tSl6+tBKTs7KQH0KTs7Kf4M+voAAAAAAwAAAAAETARMAA8AHwAiAD4Asg0AACuwE82wHC+wBM0BsCMvsADWsBDNsBAQsRcBK7AJzbEkASuxFxARErEgIjk5ALEcExESsSAhOTkwMRkBNDYzITIWFREUBiMhIiY3FBYzITI2NRE0JiMhIgYVFxsB66UBLKPt66X+1KXryDspAfQpOzsp/gwpO2T6+gGQASyj7e6i/tSl6+tBKTs7KQH0KTs7KWT+swFNAAMAAAAABEwETAAPAB8AIgA+ALINAAArsBPNsBwvsATNAbAjL7AA1rAQzbAQELEXASuwCc2xJAErsRcQERKxICE5OQCxHBMRErEgIjk5MDEZATQ2MyEyFhURFAYjISImNxQWMyEyNjURNCYjISIGFRMhA+ulASyl6+2j/tSl68g7KQH0KTs7Kf4MKTtkAfT6AZABLKXr66X+1KLu7T8pOzspAfQpOzsp/nABTQACAAAAAAUUBEwABgAaADwAsgcAACuwCM2wAC+wAc2wES+wEs0BsBsvsAzWsBfNsRwBKwCxCAcRErAFObEBABESsAQ5sBERsAM5MDEZASE1CQE1EzUhMjY1ETQmIyE1ITIWFREUBiMBLAGQ/nDIAfQpOzsp/gwBkKXr66UBkAEsyP6i/qLI/nDIOykB9Ck7yOul/tSl6wAAAAEA2QACA9YEngAhACgAsA4vsBPNAbAiL7Ac1rAWzbEjASuxFhwRErAZOQCxEw4RErAPOTAxExYzIQIHBh8BMzI3NgAzNicmIwU2Ejc2LwEjIgcOAQAHBtkIFwEumwUFCQkJDgwLAg8BDgkIF/7TAZoCAgcJCQ8KBLz+80sQAgcT/koUFQsIDw0CaRMREQEEAa8MDwwJEAbT/tFWEwAAAAACAAAAAAUUBEwAGAAfAD8AsgMAACuwCM2wCBCwBs2wGS+wGs2wEC+wEs2wFM0BsCAvsADWsAvNsSEBKwCxGgMRErEdHjk5sBARsBw5MDERFBYzITI3NSEiJjURNDYzITUuAS8BIgYVAREhNQkBNeulASwvNf4MKTs7KQH0DshdXaXrAlgBLAGQ/nABkKXrD7k7KQH0KTu5BAcCAuul/tQBLMj+ov6iyAACAAAAAASwBLAAHQAkAFQAsgMAACuwD82wFi+wGs0BsCUvsADWsBLNsBIQsQsBK7AHzbEmASuxCxIRErUYGR4fICQkFzmwBxGwIzkAsRYPERK1CAkeIiMkJBc5sBoRsB85MDERFBYzITI2PQEnBxUUBiMhIiY1ETQ2OwE3JyMiBhUlASchEScB66UBLKPtTno7Kf4MKTs7KZx2SmSl6wHwAWGVAfSV/qoBkKXr66ViSXuUKTs7KQH0KTt6TuulCQFWlf4Mlf6fAAMABAAEBKwErAALABMAGwBaALAKL7APzbAbL7AXzbATL7AEzQGwHC+wAdawDc2wDRCxFQErsBnNsBkQsREBK7AHzbEdASuxGRURErcECQoODxITAyQXOQCxFxsRErcBBgcMDRARACQXOTAxEhASJCAEEhACBCAkEhAWIDYQJiACNDYyFhQGIgSgARIBRAESoKD+7v68/u4W8wFW8/P+qhdyoHJyoAG2AUQBEqCg/u7+vP7uoKACX/6q8/MBVvP+EqBycqByAAAAAwAAAAAETASwAAkAEAAUAC4AsgkAACuwEc2wFC+wBc2wCzIBsBUvsBLWsAjNshIICiuzQBIACSuxFgErADAxMRE0NjMhMhYVEQkCIREhEQEzNSMOCwQYCxD8GAG9AcL+2f7UAfRkZAETCw4PCv7tAyD+DAH0AZD+cP12MgAAAAADAAAAAARMBLAACQAQABQAKwCyCQAAK7ARzbAUL7AFzQGwFS+wEtawCM2yEggKK7NAEgAJK7EWASsAMDExETQ2MyEyFhURASERIREhCQEzNSMOCwQYCxD8GAEsASwBJ/5DAV5kZAETCw4PCv7tArz+1AEsAfT75jIAAAAAAwAAAAAETAR/AAkADwATAC4AsgkAACuwEM2wEy+wBc0BsBQvsBHWsAwysAjNshEICiuzQBEACSuxFQErADAxMRE0NjMhMhYVEQkCJwEnATM1Iw4LBBgLEPwYATECVJr+RpYChWRkARMLDg8K/u0Cwf7PAlSb/kaX/ToyAAQAAAAABEwEsAAJAA0AFAAYACsAsgkAACuwFc2wGC+wBc0BsBkvsBbWsAjNshYICiuzQBYACSuxGgErADAxMRE0NjMhMhYVEQEXNycDJRMHJwcXATM1Iw4LBBgLEPwYYdRhcAK5A/qV1JUBzmRkARMLDg8K/u0D3GLVYfzgAQK775XUlf4NMgAEAAAAAARMBLAACQANABQAGAAuALIJAAArsBXNsBgvsAXNAbAZL7AW1rATMrAIzbIWCAors0AWAAkrsRoBKwAwMTERNDYzITIWFREBFzcnExcHFzcXCwEzNSMOCwQYCxD8fNRi1QPvldSV+QFjZGQBEwsODwr+7QJk1GHUAev6ldSU7QK5++kyAAAAAAIAF///BLAErwAFAAgAFwCyBAAAKwGwCS+wBdawBs2xCgErADAxEwERCQERFwkBFwSZ/iX+yk8CoP1gAZ8DEPvJARD+dwGgzQOq/TgAAAAAAgAAAGQETASwABUAGQBNALARL7AGzbIRBgors0AREwkrsA4ysgYRCiuzQAYECSuwCDIBsBovsADWsBLNsAbNsBIQsQ8BK7ALzbEbASuxDwYRErIJFhc5OTkAMDE1ETQ2OwERIREzFxEUBisBESERIyImATM1Ix0V+gH0ZMgeFJb9RJYVHQJYZGSWA+gUHv7UASzI/K4VHQGQ/nAdA2fIAAMAAAA+BRQEsAATABkAHQBAALAPL7AGzbIPBgors0APEQkrsgYPCiuzQAYECSuwCDIBsB4vsADWsBDNsAbNsR8BKwCxBg8RErILFxg5OTkwMTURNDY7AREhETMXFQEnByERIyImJTcXARcBAzM1Ix0V+gH0ZMj+7Hh+/oaWFR0CRXt4AWF7/iXhZGSWA+gUHv7UASzI2v7teH/+cB2xe3gBYHv+JAOqyAAAAAADAAAABgUOBLAAEwAXACMAFQABsCQvsADWsBDNsAbNsSUBKwAwMTURNDY7AREhETMXEQcnASERIyImATM1IxM3JzcXNxcHFwcnBx0V+gH0ZMhnqv7W/reWFR0CWGRkZKqqf6qqf6qqf6qqlgPoFB7+1AEsyP7zZ6r+1v5wHQNnyPvVqqp/qqqAqap/qqoAAAADAAAAAASwBLAAEgAZAB0AbACwDi+wBs2yDgYKK7NADhAJK7AGELAMzbAaL7AbzbEECDIyAbAeL7AA1rAPzbIPAAors0APCwkrsAAQsAbNsA8QsRoBK7AdzbAMMrEfASuxGgYRErATOQCxDA4RErEXGDk5sRoGERKwCjkwMTURNDY7AREhETMXESEVIREjIiYlCQEjESMRAzUzFR0V+gH0ZMj+cP4MlhUdAlgBLAEsyMjIZJYD6BQe/tQBLMj+1Mj+cB2r/tQBLAEs/tQCvMjIAAAAAAMAAAAABLAEsAASABkAHQBbALAOL7AGzbIOBgors0AOEAkrsBovsBvNsQQIMjIBsB4vsADWsA/NsAbNsA8QsRoBK7AdzbEfASuxGgYRErATObAdEbANOQCxBg4RErILDBk5OTmwGhGwCjkwMTURNDY7AREhETMXEScBIREjIiYlMxEzETMJATUzFR0V+gH0ZMjI/tb+bpYVHQJYyMjI/tT+1GSWA+gUHv7UASzI/m7I/tb+cB2r/tQBLAEsAZDIyAAAAAADAAAAyASwBEwACQATABcAADUUFjMhMjY1ESE1ITU0JiMhIgYVEzUhFR0VBEwVHftQBLAdFfu0FR1kAZD6FR0dFQImZJYVHR0V/RLIyAAAAAYAAABmBLAErgAGAAoADgAVABkAHQCBALAFL7EWGjMzsALNsRccMjKwBy+xCw8zM7AIzbEMEDIyAbAeL7AH1rAKzbAKELELASuwDs2wDhCxFgErsBnNsR8BK7ELChESswIFBgEkFzmxFg4RErMEAw8QJBc5sBkRsxIUFREkFzkAsQIFERKwADmwBxGxARQ5ObAIErATOTAxEQEVIRUhFQM1MxUzNTMVMzUhNQkBNQM1MxU7ATUjASwBkP5wyGRkZGQBkAEs/tRkZGRkZAGQASrGyMYCusjIyMjIxv7W/tbG/gzIyMgAAAACAGQAAASwBLAAGAAvADoAshQAACsBsDAvsADWsATNsAQQsRcLK7AQzbMJEBcIK7AFzbAFL7AJzbAQELEKCyuwDs2xMQErADAxExE3FxEzETcXETMRNxcRBxEUBisBIiY1ESUUHgIfAREUFjsBMjY1ETQmBwUOARVkMjJkMjJkMjJkHRXIFR0CWBUdHQsKHRXIFR0kGv7sGSUCvAGQZGT+1AEsZGT+1AEsZGT+cMv+QRUdHRUBv2QdNSEYBgX+cxUdHRUEUh8TEXQRRR8AAAAAAQBkAAAEsARMADMAOACyAAAAK7AMM7AzzbICCw4yMjKwKC+yGBwlMzMzsCfNsBoyAbA0L7E1ASsAsSgzERKxBiA5OTAxMyE1IiY1ESERFAYjFSE1Ii4DNRE0Nj8BNSEVMhYVESERNDYzNSEVMh4DFREUBg8BZAGQSxkB9BlLAZAEDiIaFjIZGf5wSxn+DBlL/nAEDiIaFjIZGTgMJgGK/nYmDDg4AQUJFQ4DeBYZAQI4OAwm/nYBiiYMODgBBQkVDvyIFhkBAgAGAAAAAARMBEwADwAYABwAIAAqAC4AMgCyGAAAK7AQzbAWL7ASzbISFgors0ASFAkrAbAvL7EwASsAsRIQERKzBAMZHCQXOTAxERQWMyEyNjURNCYjISIGFRMhNzMlESEHIQM1IRUBNSEVASEXFSUzNSEnIQE1JRU7KQEsKTs7Kf7UKTtkAZDIaQEn/ldk/olkASz+1AEs/tQBkMgBJ2n+V2T+iQH0AZABLCk7OykB9Ck7Oyn9RMhi/tZkASzIyAEsyMgBkMhiYshk/UajhaMAAQAQABAEnwSfACAAABIeAxceAzM/ATYmLwEmBg8BLgEnNz4BLwEuAQ8BEAEfPpJmZ9GXex8foxEHE8ATNBB2jvxldhEGDosOLRKiA+QriY/UZmeSPSEBohIuDogOBBF2ZfyOdhExFMITBhGiAAAAAAIAAAAABLAETAAdAEAALwCyGwAAK7AMzbAoL7A4zQGwQS+xQgErALEMGxESsSAvOTmwKBGzJikyQCQXOTAxPQE0NjcBNTQ+AzIeAh8BFQEeAR0BFAYjISImERQWPwE+AT0BNiAXFRQWHwEWNj0BLgQjIg4EDwEVDgFtAhYmUnBSJhYBAQFtDhUdFfu0FB4dFMoUHY0BPo0dFMoUHQYaZHzaflymdWQ/LAkJMtQUMw4BLzIEDSAZFRQbHAoKMv7RDjMU1BUdHQKrFRkEIQQiFZIYGJIVIgQhBBkVyAgZQTEpFSEoKCELCgACAGQAAASwBEwAAwAZABQAsgAAACuwAc0BsBovsRsBKwAwMTM1IRUlISc1NxEjFSM1IxUjNSMVIzUjERcVZARM+/8Dtn1kZGTIZMhkZGRkZMiW+mQBkMjIyMjIyP5wZPoAAAAAAwBkAAAEsARMAAkAEwAdACQAsgoAACuwFDMBsB4vsArWsBPNsBMQsRQBK7AdzbEfASsAMDEzIRE0JisBIgYVARE0NjsBMhYVETMRNDY7ATIWFRFkASw7KWQpOwGQOylkKTtkOylkKTsBkCk7Oyn+cAPoKTs7KfwYArwpOzsp/UQAAAAABf+cAAAEsARMAA8AEwAfACcAKwBIALINAAArsBDNsBMvsATNAbAsL7AA1rAQzbAQELERASuwCc2xLQErsREQERK1FBUgIygqJBc5ALETEBEStRQaICYoKSQXOTAxAxE0NjMhMhYVERQGIyEiJjchESETIREjNTM1IREzFSMFMzUzESM1IxMRMxFksHwCvHywsHz9RHywyAOE/HxkASzIyP7UyMgBkMhkZMhkZAEsAfR8sLB8/gx8sLAYArz9qAEsZGT+1GRkZAEsZP5wASz+1AAAAAAF/5wAAASwBEwADwATAB8AJwArAEgAsg0AACuwEM2wEy+wBM0BsCwvsADWsBDNsBAQsREBK7AJzbEtASuxERARErUUGSAjKCokFzkAsRMQERK1FBogJigpJBc5MDEDETQ2MyEyFhURFAYjISImNyERIRMzNTMVMxEjFSM1IwEzNTMRIzUjExEzEWSwfAK8fLCwfP1EfLDIA4T8fGRkZGRkZGQBkMhkZMhkZAEsAfR8sLB8/gx8sLAYArz9qMjIAfTIyP4MZAEsZP5wASz+1AAABP+cAAAEsARMAA8AEwAbACMARACyDQAAK7AQzbATL7AEzQGwJC+wANawEM2wEBCxEQErsAnNsSUBK7EREBESsxQVHB0kFzkAsRMQERKzFBocIiQXOTAxAxE0NjMhMhYVERQGIyEiJjchESETITUjETM1IQEhNSMRMzUhZLB8Arx8sLB8/UR8sMgDhPx8ZAEsyMj+1AGQASzIyP7UASwB9HywsHz+DHywsBgCvP2oZAEsZP4MZAEsZAAAAAAE/5wAAASwBEwADwATABYAGQBEALINAAArsBDNsBMvsATNAbAaL7AA1rAQzbAQELERASuwCc2xGwErsREQERKzFBUXGCQXOQCxExARErMVFhcZJBc5MDEDETQ2MyEyFhURFAYjISImNyERIRMFERMtAWSwfAK8fLCwfP1EfLDIA4T8fGQBLGQBLP7UASwB9HywsHz+DHywsBgCvP6ilgEs/tSWlgAAAAAF/5wAAASwBEwADwATABcAHwAnAFoAsg0AACuwEM2wFC+wGM2wIzKwHy+wJTOwFc2wEy+wBM0BsCgvsADWsBDNsBAQsRQBK7AYzbAYELEcASuwIc2wIRCxJAErsBfNsBcQsREBK7AJzbEpASsAMDEDETQ2MyEyFhURFAYjISImNyERIRMRIRElMzI2NCYrAQQUFjsBESMiZLB8Arx8sLB8/UR8sMgDhPx8ZAK8/aiCKTY5JoIBEzYpgoImASwB9HywsHz+DHywsBgCvP2oAfT+DGRUglZWglQBLAAABf+cAAAEsARMAA8AEwAfACMAKQBIALINAAArsBDNsBMvsATNAbAqL7AA1rAQzbAQELERASuwCc2xKwErsREQERK1FBUgISQnJBc5ALETEBEStRQaICImKCQXOTAxAxE0NjMhMhYVERQGIyEiJjchESETIREjNTM1IREzFSMFMzUjEzMRMxEjZLB8Arx8sLB8/UR8sMgDhPx8ZAEsyMj+1MjIAZFkZGNkZMgBLAH0fLCwfP4MfLCwGAK8/agBLGRk/tRkZGQBLP5wAfQABv+cAAAEsARMAA8AEwAZAB0AIQAnAEwAsg0AACuwEM2wEy+wBM0BsCgvsADWsBDNsBAQsREBK7AJzbEpASuxERARErcUFRocHh8iJSQXOQCxExARErcUGBobHiAkJiQXOTAxAxE0NjMhMhYVERQGIyEiJjchESETIREjNSMTNTMVFzM1IxMzETMRI2SwfAK8fLCwfP1EfLDIA4T8fGQBLMhkZWTIZGRjZGTIASwB9HywsHz+DHywsBgCvP2oAZBk/nDIyGRkASz+cAH0AAAAAAb/nAAABLAETAAPABMAHQAhACUAKwCbALINAAArsBDNsB4vsSIpMzOwH82wIzKwGi+wG82wFC+wJjOwFc2wJzKwEy+wBM0BsCwvsADWsBDNsBAQsR4BK7AUMrAhzbAhELEcASuwF82zGRccCCuwGs2wGi+wGc2wFxCxIgErsCXNsCUQsSoBK7ApzbApELAmzbAmL7ApELERASuwCc2xLQErALEbHxESsBc5sBQRsBg5MDEDETQ2MyEyFhURFAYjISImNyERIRc1IREjFSM1MzUDNTMVITUzFQM1MxEjEWSwfAK8fLCwfP1EfLDIA4T8fGQBLGNkY8dkASxkAchkASwB9HywsHz+DHywsBgCvMhk/tRkZMj+cGRkZGQBkGT+DAGQAAADAAQABASsBKwACwATAB0AeQCwCi+wD82wHS+wGs2wGS+wFs2wEy+wBM0BsB4vsAHWsA3NsA0QsRQBK7AazbAaELERASuwB82xHwErsRoUERK1Cg4TAxYdJBc5sBERtQkPBBIXGyQXOQCxGh0RErQHDRAAFCQXObAZEbAVObAWErMGDBEBJBc5MDESEBIkIAQSEAIEICQSEBYgNhAmIAM1NyEVIRUhFSEEoAESAUQBEqCg/u7+vP7uFvMBVvPz/qodZAEs/tQBLP7UAbYBRAESoKD+7v68/u6goAJf/qrz8wFW8/3+yGRkyGQAAAQAAAAEBKgErAALABMAIAAkAKAAsAovsA/NsCEvsBQzsCLNsBsvsBXNsBMvsATNAbAlL7AB1rANzbANELEUASuwIM2wGzKyIBQKK7NAIB4JK7AgELEhASuwGTKwJM2wFzKwJBCxEQErsAfNsSYBK7EgFBESswoOEwMkFzmwIRGwFjmwJBKzCQ8SBCQXOQCxIiERErQHDRAAHiQXObAbEbIXGB85OTmwFRKzBgwRASQXOTAxGAESJCAEEhACBCAkEhAWIDYQJiADESEXFSM1IxUzFSMVMzUzFaABEgFEARKgoP7u/rz+7hbzAVbz8/6qGQEsZGTIyMjIZAG2AUQBEqCg/u7+vP7uoKACX/6q8/MBVvP9mgGQZGRkZGRkZGQAAAL/8v+cBMIEQQAZACAAcgCwBS+wEs2wEhCwDSDWEbAIzbADMgGwIS+wANawBM2wBBCxGwErsB7NsB4QsQcBK7ALzbEiASuxBAARErIVFxo5OTmxHhsRErESIDk5sQsHERKxDx85OQCxBQgRErMAChwdJBc5sA0RswsPFRckFzkwMQMUFjsBESERMzI2NCYjIgcuASMiBhUUFw4BATMRMxEzAQ5xT94BkIB4qqp4LiwstW6Y2AJCVQE6yMjI/tQB7lByASz+1K3yrA5hd9eZGQwOa/6VASz+1P7UAAAC//L/nATCBEEAGAAfAB4AAbAgL7Ae1rAdzbEhASuxHR4RErIRGgU5OTkAMDEDFBY7AQkBPgE1NCYjIgcuASMiBhUUFw4BCQIjESMRDnFPCAGeAZNeeap4LiwstW6Y2AJCVQE6ASwBLMjIAe5QcgGe/m0anWR4rQ5hd9eZGQwOa/6VASz+1P7UASwAAAEAZAAABEwEbQAQAAA3IRUHISc1IQEzATMJATMBM2QBkEsBXksBkP7yqv7yqv7U/tSq/vKqyJstLZsBLAEsAU3+s/7UAAAAAAEAeQAABDcEmwApAAATFBYXBhUUFjMyNxEHIScRFjMyNjU0Jz4BNTQmJy4BIyIGFRQWFSYjIgZ5OS8EaUo4LEsBXksuNkppCTI7e1kak150owIOCUppArw1WBUQFkppHv7OLS0BMh5pShgfIGY9WoMGWXGjdAQPBAJpAAABAAAAAQBBpf/yjF8PPPUAHwSwAAAAAM8MCS4AAAAAzwwJLv86/5wF3QUYAAAACAACAAAAAAAAAAEAAAUY/4QAAAUY/zr+0wXdAAEAAAAAAAAAAAAAAAAAAACfAbgAKASwAAAEsAAABLAAAASwAGQEsAAABLAAAAKMAAAFGAAAAowAAAUYAAABsgAAAUYAAADZAAAA2QAAAKMAAAEEAAAASAAAAQQAAAFGAAAEsABkBLAAyAH0AAAEsP/yBLAAAASw//MEsAAABLAADgSwABcEsABkBLD/uASw/7gEsAAABLAAAASwAAAEsAAABLAAAASwAB0EsABqBLAAFwSwABcEsAAXBLAAZASwABoEsABkBLAAAQSwAGQEsAAEBLD/nASwAAAEsAABBLAABASwAAAEsAAEBLAAFwSwABcEsABkBLAAAASwAGQEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAQSwAGQEsADIBLAAAASwAAAEsAA1BLAAZASwAMgEsP+1BLAAIQSwAAAEsAAABLAAAASwAAAEsAAABLD/mwSwAAEEsAAABLAAAASwAJQEsAABBLAAdQSwAAAEsAAABLAAAASwAAAEsADIBLAAAASwAIgEsADIBLAAyASwAMgEsAAABLAAAASwASwEsABkBLAAuQSwARAEsAADBLAAAwSwAAMEsAADBLAAAwSwAAMEsAAABLAABASwAAQEsAAEBLAAAASwAAAEsADMBLAAaASwAAAEsAAABLAAIgSwABcEsAAABLAAAASwAG8EsP/DBLD/wwSw/58EsABkBLAAAASwAAAEsAAABLAAZASw/+IEsABGBLD/OgSwABIEsAAABLAAAQSwAS4EsAAABLAAAASw/5sEsABKBLAAFQSwAAAEsAAABLAACASw/5sEsABhBLAAAgSwAAUEsAAABLAABQSwAAUEsAAFBLAAAATEAAAEsABkAAAAAAAA/9gAUAA5AMgAAAEnAGQAAgACAAIAAgACAAIAAgAAAAAAAAAAAAAA2QAAAAAABAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAGQAZAAAABAAAABkAGT/nP+c/5z/nP+c/5z/nP+cAAQAAP/y//IAZAB5AAAAKgAqACoAKgBmAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkATABSAFQAYQBqgHOAf4CNgKYAswC7gMsA0wD9ARyBWQGDgYiBkQG4gdMB7AH6AiUCTAJYAmUCgoKRAqICu4LVguQC+YMPgywDRwNdg2qDjoOYA6KDtwP2BBMEIgQ1hEOESYRlBIUEmAS2hMWE44UDBRiFLoVJhWSFmIW2hdMF4YX6Bg4GIIYvhksGZgZ/BpKGnwathrWGuQbFBswG04bhhu2G+Ab9BwOHFocpBzuHTIdwh4QHooe7B9GH6AfwB/iIAYgKiBGIG4gkCDyIWohxCJCIsgjfiOuJBQkkiTmJRQliCWcJbIl7iZaJogmviboJw4naifOKDgoZCi4KTYp1CpuKuwraCuyK/osRCyYLb4t5i5mLpIu+i86MBgwtjEmMX4x0jIIMrgzYDOQNBo0ojUENWY1vjYWNlw2tDcKN2A3rDf8OFA4tDkYOVg5ljnUOhg6XjqGOtY7LDt0O948QDxoPNw9RD2oPhA+SD68Pu4/MD+aQAJAYEC0QSJBiEHwQoJC+EOIQ/ZEPERgRJ4AAQAAANsAmwARAAAAAAACAAEAAgAWAAABAAEBAAAAAAAAAA8AugABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA/gADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB+gADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACknd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQAzACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAAxADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAATQBvAG4AIABKAGEAbgAgADIANwAgADAAOAA6ADAAMQA6ADMANAAgADIAMAAxADQAAgAAAAAAAP+1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADbAAABAgEDAAMADQAOAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESAO8BEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXBmdseXBoMQd1bmkwMDBEB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTI1RkMHdW5pMjYwMQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMLgB/4WwAY0AS7AIUFixAQGOWbFGBitYIbAQWUuwFFJYIbCAWR2wBitcWFmwFCsAAAABUuZYrgAA') format('truetype');\r\n\r\n/*	src: url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.eot');\r\n	src: url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),\r\n	     url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.woff') format('woff'),\r\n	     url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.ttf') format('truetype'),\r\n	     url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');*/\r\n}\r\n\r\n\r\n.glyphicon {\r\n	position: relative;\r\n	top: 1px;\r\n	display: inline-block;\r\n	font-family: 'Glyphicons Halflings';\r\n	font-style: normal;\r\n	font-weight: normal;\r\n	line-height: 1;\r\n\r\n	-moz-osx-font-smoothing: grayscale;\r\n	 -webkit-font-smoothing: antialiased;\r\n}\r\n.glyphicon-asterisk:before {\r\n	content: '\\2a';\r\n}\r\n.glyphicon-plus:before {\r\n	content: '\\2b';\r\n}\r\n.glyphicon-euro:before {\r\n	content: '\\20ac';\r\n}\r\n.glyphicon-minus:before {\r\n	content: '\\2212';\r\n}\r\n.glyphicon-cloud:before {\r\n	content: '\\2601';\r\n}\r\n.glyphicon-envelope:before {\r\n	content: '\\2709';\r\n}\r\n.glyphicon-pencil:before {\r\n	content: '\\270f';\r\n}\r\n.glyphicon-glass:before {\r\n	content: '\\e001';\r\n}\r\n.glyphicon-music:before {\r\n	content: '\\e002';\r\n}\r\n.glyphicon-search:before {\r\n	content: '\\e003';\r\n}\r\n.glyphicon-heart:before {\r\n	content: '\\e005';\r\n}\r\n.glyphicon-star:before {\r\n	content: '\\e006';\r\n}\r\n.glyphicon-star-empty:before {\r\n	content: '\\e007';\r\n}\r\n.glyphicon-user:before {\r\n	content: '\\e008';\r\n}\r\n.glyphicon-film:before {\r\n	content: '\\e009';\r\n}\r\n.glyphicon-th-large:before {\r\n	content: '\\e010';\r\n}\r\n.glyphicon-th:before {\r\n	content: '\\e011';\r\n}\r\n.glyphicon-th-list:before {\r\n	content: '\\e012';\r\n}\r\n.glyphicon-ok:before {\r\n	content: '\\e013';\r\n}\r\n.glyphicon-remove:before {\r\n	content: '\\e014';\r\n}\r\n.glyphicon-zoom-in:before {\r\n	content: '\\e015';\r\n}\r\n.glyphicon-zoom-out:before {\r\n	content: '\\e016';\r\n}\r\n.glyphicon-off:before {\r\n	content: '\\e017';\r\n}\r\n.glyphicon-signal:before {\r\n	content: '\\e018';\r\n}\r\n.glyphicon-cog:before {\r\n	content: '\\e019';\r\n}\r\n.glyphicon-trash:before {\r\n	content: '\\e020';\r\n}\r\n.glyphicon-home:before {\r\n	content: '\\e021';\r\n}\r\n.glyphicon-file:before {\r\n	content: '\\e022';\r\n}\r\n.glyphicon-time:before {\r\n	content: '\\e023';\r\n}\r\n.glyphicon-road:before {\r\n	content: '\\e024';\r\n}\r\n.glyphicon-download-alt:before {\r\n	content: '\\e025';\r\n}\r\n.glyphicon-download:before {\r\n	content: '\\e026';\r\n}\r\n.glyphicon-upload:before {\r\n	content: '\\e027';\r\n}\r\n.glyphicon-inbox:before {\r\n	content: '\\e028';\r\n}\r\n.glyphicon-play-circle:before {\r\n	content: '\\e029';\r\n}\r\n.glyphicon-repeat:before {\r\n	content: '\\e030';\r\n}\r\n.glyphicon-refresh:before {\r\n	content: '\\e031';\r\n}\r\n.glyphicon-list-alt:before {\r\n	content: '\\e032';\r\n}\r\n.glyphicon-lock:before {\r\n	content: '\\e033';\r\n}\r\n.glyphicon-flag:before {\r\n	content: '\\e034';\r\n}\r\n.glyphicon-headphones:before {\r\n	content: '\\e035';\r\n}\r\n.glyphicon-volume-off:before {\r\n	content: '\\e036';\r\n}\r\n.glyphicon-volume-down:before {\r\n	content: '\\e037';\r\n}\r\n.glyphicon-volume-up:before {\r\n	content: '\\e038';\r\n}\r\n.glyphicon-qrcode:before {\r\n	content: '\\e039';\r\n}\r\n.glyphicon-barcode:before {\r\n	content: '\\e040';\r\n}\r\n.glyphicon-tag:before {\r\n	content: '\\e041';\r\n}\r\n.glyphicon-tags:before {\r\n	content: '\\e042';\r\n}\r\n.glyphicon-book:before {\r\n	content: '\\e043';\r\n}\r\n.glyphicon-bookmark:before {\r\n	content: '\\e044';\r\n}\r\n.glyphicon-print:before {\r\n	content: '\\e045';\r\n}\r\n.glyphicon-camera:before {\r\n	content: '\\e046';\r\n}\r\n.glyphicon-font:before {\r\n	content: '\\e047';\r\n}\r\n.glyphicon-bold:before {\r\n	content: '\\e048';\r\n}\r\n.glyphicon-italic:before {\r\n	content: '\\e049';\r\n}\r\n.glyphicon-text-height:before {\r\n	content: '\\e050';\r\n}\r\n.glyphicon-text-width:before {\r\n	content: '\\e051';\r\n}\r\n.glyphicon-align-left:before {\r\n	content: '\\e052';\r\n}\r\n.glyphicon-align-center:before {\r\n	content: '\\e053';\r\n}\r\n.glyphicon-align-right:before {\r\n	content: '\\e054';\r\n}\r\n.glyphicon-align-justify:before {\r\n	content: '\\e055';\r\n}\r\n.glyphicon-list:before {\r\n	content: '\\e056';\r\n}\r\n.glyphicon-indent-left:before {\r\n	content: '\\e057';\r\n}\r\n.glyphicon-indent-right:before {\r\n	content: '\\e058';\r\n}\r\n.glyphicon-facetime-video:before {\r\n	content: '\\e059';\r\n}\r\n.glyphicon-picture:before {\r\n	content: '\\e060';\r\n}\r\n.glyphicon-map-marker:before {\r\n	content: '\\e062';\r\n}\r\n.glyphicon-adjust:before {\r\n	content: '\\e063';\r\n}\r\n.glyphicon-tint:before {\r\n	content: '\\e064';\r\n}\r\n.glyphicon-edit:before {\r\n	content: '\\e065';\r\n}\r\n.glyphicon-share:before {\r\n	content: '\\e066';\r\n}\r\n.glyphicon-check:before {\r\n	content: '\\e067';\r\n}\r\n.glyphicon-move:before {\r\n	content: '\\e068';\r\n}\r\n.glyphicon-step-backward:before {\r\n	content: '\\e069';\r\n}\r\n.glyphicon-fast-backward:before {\r\n	content: '\\e070';\r\n}\r\n.glyphicon-backward:before {\r\n	content: '\\e071';\r\n}\r\n.glyphicon-play:before {\r\n	content: '\\e072';\r\n}\r\n.glyphicon-pause:before {\r\n	content: '\\e073';\r\n}\r\n.glyphicon-stop:before {\r\n	content: '\\e074';\r\n}\r\n.glyphicon-forward:before {\r\n	content: '\\e075';\r\n}\r\n.glyphicon-fast-forward:before {\r\n	content: '\\e076';\r\n}\r\n.glyphicon-step-forward:before {\r\n	content: '\\e077';\r\n}\r\n.glyphicon-eject:before {\r\n	content: '\\e078';\r\n}\r\n.glyphicon-chevron-left:before {\r\n	content: '\\e079';\r\n}\r\n.glyphicon-chevron-right:before {\r\n	content: '\\e080';\r\n}\r\n.glyphicon-plus-sign:before {\r\n	content: '\\e081';\r\n}\r\n.glyphicon-minus-sign:before {\r\n	content: '\\e082';\r\n}\r\n.glyphicon-remove-sign:before {\r\n	content: '\\e083';\r\n}\r\n.glyphicon-ok-sign:before {\r\n	content: '\\e084';\r\n}\r\n.glyphicon-question-sign:before {\r\n	content: '\\e085';\r\n}\r\n.glyphicon-info-sign:before {\r\n	content: '\\e086';\r\n}\r\n.glyphicon-screenshot:before {\r\n	content: '\\e087';\r\n}\r\n.glyphicon-remove-circle:before {\r\n	content: '\\e088';\r\n}\r\n.glyphicon-ok-circle:before {\r\n	content: '\\e089';\r\n}\r\n.glyphicon-ban-circle:before {\r\n	content: '\\e090';\r\n}\r\n.glyphicon-arrow-left:before {\r\n	content: '\\e091';\r\n}\r\n.glyphicon-arrow-right:before {\r\n	content: '\\e092';\r\n}\r\n.glyphicon-arrow-up:before {\r\n	content: '\\e093';\r\n}\r\n.glyphicon-arrow-down:before {\r\n	content: '\\e094';\r\n}\r\n.glyphicon-share-alt:before {\r\n	content: '\\e095';\r\n}\r\n.glyphicon-resize-full:before {\r\n	content: '\\e096';\r\n}\r\n.glyphicon-resize-small:before {\r\n	content: '\\e097';\r\n}\r\n.glyphicon-exclamation-sign:before {\r\n	content: '\\e101';\r\n}\r\n.glyphicon-gift:before {\r\n	content: '\\e102';\r\n}\r\n.glyphicon-leaf:before {\r\n	content: '\\e103';\r\n}\r\n.glyphicon-fire:before {\r\n	content: '\\e104';\r\n}\r\n.glyphicon-eye-open:before {\r\n	content: '\\e105';\r\n}\r\n.glyphicon-eye-close:before {\r\n	content: '\\e106';\r\n}\r\n.glyphicon-warning-sign:before {\r\n	content: '\\e107';\r\n}\r\n.glyphicon-plane:before {\r\n	content: '\\e108';\r\n}\r\n.glyphicon-calendar:before {\r\n	content: '\\e109';\r\n}\r\n.glyphicon-random:before {\r\n	content: '\\e110';\r\n}\r\n.glyphicon-comment:before {\r\n	content: '\\e111';\r\n}\r\n.glyphicon-magnet:before {\r\n	content: '\\e112';\r\n}\r\n.glyphicon-chevron-up:before {\r\n	content: '\\e113';\r\n}\r\n.glyphicon-chevron-down:before {\r\n	content: '\\e114';\r\n}\r\n.glyphicon-retweet:before {\r\n	content: '\\e115';\r\n}\r\n.glyphicon-shopping-cart:before {\r\n	content: '\\e116';\r\n}\r\n.glyphicon-folder-close:before {\r\n	content: '\\e117';\r\n}\r\n.glyphicon-folder-open:before {\r\n	content: '\\e118';\r\n}\r\n.glyphicon-resize-vertical:before {\r\n	content: '\\e119';\r\n}\r\n.glyphicon-resize-horizontal:before {\r\n	content: '\\e120';\r\n}\r\n.glyphicon-hdd:before {\r\n	content: '\\e121';\r\n}\r\n.glyphicon-bullhorn:before {\r\n	content: '\\e122';\r\n}\r\n.glyphicon-bell:before {\r\n	content: '\\e123';\r\n}\r\n.glyphicon-certificate:before {\r\n	content: '\\e124';\r\n}\r\n.glyphicon-thumbs-up:before {\r\n	content: '\\e125';\r\n}\r\n.glyphicon-thumbs-down:before {\r\n	content: '\\e126';\r\n}\r\n.glyphicon-hand-right:before {\r\n	content: '\\e127';\r\n}\r\n.glyphicon-hand-left:before {\r\n	content: '\\e128';\r\n}\r\n.glyphicon-hand-up:before {\r\n	content: '\\e129';\r\n}\r\n.glyphicon-hand-down:before {\r\n	content: '\\e130';\r\n}\r\n.glyphicon-circle-arrow-right:before {\r\n	content: '\\e131';\r\n}\r\n.glyphicon-circle-arrow-left:before {\r\n	content: '\\e132';\r\n}\r\n.glyphicon-circle-arrow-up:before {\r\n	content: '\\e133';\r\n}\r\n.glyphicon-circle-arrow-down:before {\r\n	content: '\\e134';\r\n}\r\n.glyphicon-globe:before {\r\n	content: '\\e135';\r\n}\r\n.glyphicon-wrench:before {\r\n	content: '\\e136';\r\n}\r\n.glyphicon-tasks:before {\r\n	content: '\\e137';\r\n}\r\n.glyphicon-filter:before {\r\n	content: '\\e138';\r\n}\r\n.glyphicon-briefcase:before {\r\n	content: '\\e139';\r\n}\r\n.glyphicon-fullscreen:before {\r\n	content: '\\e140';\r\n}\r\n.glyphicon-dashboard:before {\r\n	content: '\\e141';\r\n}\r\n.glyphicon-paperclip:before {\r\n	content: '\\e142';\r\n}\r\n.glyphicon-heart-empty:before {\r\n	content: '\\e143';\r\n}\r\n.glyphicon-link:before {\r\n	content: '\\e144';\r\n}\r\n.glyphicon-phone:before {\r\n	content: '\\e145';\r\n}\r\n.glyphicon-pushpin:before {\r\n	content: '\\e146';\r\n}\r\n.glyphicon-usd:before {\r\n	content: '\\e148';\r\n}\r\n.glyphicon-gbp:before {\r\n	content: '\\e149';\r\n}\r\n.glyphicon-sort:before {\r\n	content: '\\e150';\r\n}\r\n.glyphicon-sort-by-alphabet:before {\r\n	content: '\\e151';\r\n}\r\n.glyphicon-sort-by-alphabet-alt:before {\r\n	content: '\\e152';\r\n}\r\n.glyphicon-sort-by-order:before {\r\n	content: '\\e153';\r\n}\r\n.glyphicon-sort-by-order-alt:before {\r\n	content: '\\e154';\r\n}\r\n.glyphicon-sort-by-attributes:before {\r\n	content: '\\e155';\r\n}\r\n.glyphicon-sort-by-attributes-alt:before {\r\n	content: '\\e156';\r\n}\r\n.glyphicon-unchecked:before {\r\n	content: '\\e157';\r\n}\r\n.glyphicon-expand:before {\r\n	content: '\\e158';\r\n}\r\n.glyphicon-collapse-down:before {\r\n	content: '\\e159';\r\n}\r\n.glyphicon-collapse-up:before {\r\n	content: '\\e160';\r\n}\r\n.glyphicon-log-in:before {\r\n	content: '\\e161';\r\n}\r\n.glyphicon-flash:before {\r\n	content: '\\e162';\r\n}\r\n.glyphicon-log-out:before {\r\n	content: '\\e163';\r\n}\r\n.glyphicon-new-window:before {\r\n	content: '\\e164';\r\n}\r\n.glyphicon-record:before {\r\n	content: '\\e165';\r\n}\r\n.glyphicon-save:before {\r\n	content: '\\e166';\r\n}\r\n.glyphicon-open:before {\r\n	content: '\\e167';\r\n}\r\n.glyphicon-saved:before {\r\n	content: '\\e168';\r\n}\r\n.glyphicon-import:before {\r\n	content: '\\e169';\r\n}\r\n.glyphicon-export:before {\r\n	content: '\\e170';\r\n}\r\n.glyphicon-send:before {\r\n	content: '\\e171';\r\n}\r\n.glyphicon-floppy-disk:before {\r\n	content: '\\e172';\r\n}\r\n.glyphicon-floppy-saved:before {\r\n	content: '\\e173';\r\n}\r\n.glyphicon-floppy-remove:before {\r\n	content: '\\e174';\r\n}\r\n.glyphicon-floppy-save:before {\r\n	content: '\\e175';\r\n}\r\n.glyphicon-floppy-open:before {\r\n	content: '\\e176';\r\n}\r\n.glyphicon-credit-card:before {\r\n	content: '\\e177';\r\n}\r\n.glyphicon-transfer:before {\r\n	content: '\\e178';\r\n}\r\n.glyphicon-cutlery:before {\r\n	content: '\\e179';\r\n}\r\n.glyphicon-header:before {\r\n	content: '\\e180';\r\n}\r\n.glyphicon-compressed:before {\r\n	content: '\\e181';\r\n}\r\n.glyphicon-earphone:before {\r\n	content: '\\e182';\r\n}\r\n.glyphicon-phone-alt:before {\r\n	content: '\\e183';\r\n}\r\n.glyphicon-tower:before {\r\n	content: '\\e184';\r\n}\r\n.glyphicon-stats:before {\r\n	content: '\\e185';\r\n}\r\n.glyphicon-sd-video:before {\r\n	content: '\\e186';\r\n}\r\n.glyphicon-hd-video:before {\r\n	content: '\\e187';\r\n}\r\n.glyphicon-subtitles:before {\r\n	content: '\\e188';\r\n}\r\n.glyphicon-sound-stereo:before {\r\n	content: '\\e189';\r\n}\r\n.glyphicon-sound-dolby:before {\r\n	content: '\\e190';\r\n}\r\n.glyphicon-sound-5-1:before {\r\n	content: '\\e191';\r\n}\r\n.glyphicon-sound-6-1:before {\r\n	content: '\\e192';\r\n}\r\n.glyphicon-sound-7-1:before {\r\n	content: '\\e193';\r\n}\r\n.glyphicon-copyright-mark:before {\r\n	content: '\\e194';\r\n}\r\n.glyphicon-registration-mark:before {\r\n	content: '\\e195';\r\n}\r\n.glyphicon-cloud-download:before {\r\n	content: '\\e197';\r\n}\r\n.glyphicon-cloud-upload:before {\r\n	content: '\\e198';\r\n}\r\n.glyphicon-tree-conifer:before {\r\n	content: '\\e199';\r\n}\r\n.glyphicon-tree-deciduous:before {\r\n	content: '\\e200';\r\n}", "" ]);
}, /* 7 */
/***/
function(module, exports, __webpack_require__) {
    // style-loader: Adds some css to the DOM by adding a <style> tag
    // load the styles
    var content = __webpack_require__(8);
    "string" == typeof content && (content = [ [ module.id, content, "" ] ]);
    // add the styles to the DOM
    __webpack_require__(4)(content, {});
}, /* 8 */
/***/
function(module, exports, __webpack_require__) {
    exports = module.exports = __webpack_require__(3)(), exports.push([ module.id, ".link-ajax {\r\n	color: #0088cc;\r\n	cursor: default;\r\n	background-image: -webkit-linear-gradient(left, #0088cc, #0088cc 50%, transparent 50%);\r\n	background-image:    -moz-linear-gradient(left, #0088cc, #0088cc 50%, transparent 50%);\r\n	background-image:         linear-gradient(left, #0088cc, #0088cc 50%, transparent 50%);\r\n	background-size: 2px 1px;\r\n	background-position: 0 95%;\r\n	background-repeat: repeat-x;\r\n}\r\n.link-ajax:hover {\r\n	color: #005580;\r\n	background-image: -webkit-linear-gradient(left, #005580, #005580 50%, transparent 50%);\r\n	background-image:    -moz-linear-gradient(left, #005580, #005580 50%, transparent 50%);\r\n	background-image:         linear-gradient(left, #005580, #005580 50%, transparent 50%);\r\n}\r\nspan[title] { cursor: default; }\r\ninput[disabled] { cursor: default; }\r\n\r\n#abilities-block .angel-ability { width: auto !important; display: inline-block; }\r\n#abilities-block .angel-ability.pgf-ability-help { margin: 0 50px; }\r\n#abilities-block .dropdown { width: auto !important; }\r\n\r\n\r\n\r\n.ext-controls { font-size: 12px; }\r\n.ext-control { margin-right: 10px; }\r\n.ext-control.link-ajax { background: none; }\r\n\r\n\r\n.table-stats {  }\r\n.table-stats th,\r\n.table-stats td { padding: 1px 10px 1px 0; cursor: default; }\r\n.table-stats .stats-name { width: 16px; padding-right: 0; }\r\n.table-stats .stats-sum { text-align: right; }\r\n.table-stats .stats-count { text-align: right; }\r\n.table-stats .stats-average { text-align: right; }\r\n.table-stats .stats-bonus { text-align: left; padding-left: 10px; padding-right: 5px;  }\r\n.table-stats th.stats-bonus { text-align: center;  }\r\n.table-stats .stats-against { border-top: 10px solid #f5fafa; }\r\n\r\n.table-stats .stats-row-dmgSum td { font-weight: bold; }\r\n\r\n.stats-side { margin-bottom: 10px; }\r\n.stats-side.stats-loot { margin-top: 20px; padding-top: 10px; border-top: 1px solid #ccc; }\r\n\r\n\r\n.archive-log-list { margin-left: 30px; }\r\n.stats-archive { display: block; }\r\n.stats-archive-act { margin-right: 6px; }\r\n.stats-archive-me { color: #005000; }\r\n.stats-archive-enemy { color: darkred; }\r\n\r\n.stats-log {\r\n	margin-top: 10px;\r\n	max-height: 500px;\r\n	overflow-y: auto;\r\n}\r\n/*.stats-log .pgf-log-list {*/\r\n	/*padding-top: 10px;*/\r\n	/*border-top: 1px solid #ddd;*/\r\n	/*margin-bottom: 30px;*/\r\n/*}*/\r\n\r\n\r\n\r\n.log-record-short {\r\n	display: inline-block;\r\n}\r\n.log-record-short .submessage {\r\n	display: inline-block;\r\n	cursor: default;\r\n	padding: 0 2px;\r\n}\r\n.log-record-short .submessage:first-child { padding-left: 4px; }\r\n.log-record-short .submessage:last-child { padding-right: 4px; }\r\n\r\n.log-record-short:hover {\r\n	background: #ddd;\r\n}\r\n\r\n.stats-me .glyphicon { color: #005000; }\r\n.stats-loot .glyphicon { color: darkgoldenrod; }\r\n.stats-enemy .glyphicon { color: darkred; }\r\n\r\n.stats .glyphicon { font-size: 12px; opacity: .8; }\r\n.stats .glyphicon.small { font-size: 9px; }\r\n.log-block .glyphicon { font-size: 12px; opacity: .8; }\r\n.log-block .glyphicon-heart { vertical-align: -1px; }\r\n.log-block .glyphicon-heart-empty { vertical-align: -2px; }\r\n.log-block .glyphicon.small { font-size: 9px; }\r\n\r\n\r\n/* short */\r\n.act.me { color: black; }\r\n.act.me .glyphicon { color: #005000; }\r\n.act.enemy { color: #B90000; }\r\n.act.enemy .glyphicon { color: darkred; }\r\n\r\n.act-rest.me { color: #005000; }\r\n.act-heal.me { color: #005000; }\r\n.act-heal.enemy { color: darkred; }\r\n.act-godheal.act .glyphicon,\r\n.act-godheal.act { color: darkmagenta; text-decoration: underline; }\r\n\r\n.act-vamp.me .glyphicon,\r\n.act-vamp.me .vamp { color: #005000; }\r\n.act-vamp.enemy .glyphicon,\r\n.act-vamp.enemy .vamp { color: darkred; }\r\n\r\n.act-slow.me { color: #00008B; }\r\n\r\n.act-coins.me .glyphicon,\r\n.act-coins.me { color: darkgoldenrod; }\r\n.act-coins.enemy { color: darkgoldenrod; text-decoration: line-through; }\r\n.act-coins .glyphicon { font-size: 9px; }\r\n\r\n.act-pvpeff.me { color: dodgerblue; }\r\n.act-pvpeff.enemy { color: dodgerblue; text-decoration: line-through; }\r\n.act-pvpice.me,\r\n.act-pvpflame.enemy,\r\n.act-pvpfail.enemy { color: darkgreen; }\r\n.act-pvpice.enemy,\r\n.act-pvpflame.me,\r\n.act-pvpfail.me { color: darkred; }\r\n.act-pvpice .glyphicon,\r\n.act-pvpflame .glyphicon,\r\n.act-pvpfail .glyphicon { font-size: 15px; }\r\n\r\n\r\n.sub-icon {\r\n	margin-left: -2px;\r\n}\r\n.sub-icon .glyphicon {\r\n	font-size: 10px;\r\n	vertical-align: sub;\r\n	margin-left: -1px;\r\n}\r\n.act.me .sub-icon .glyphicon { color: #444; }\r\n.act.enemy .sub-icon .glyphicon { color: #005000; }\r\n/* eo short */\r\n\r\n/* highlight */\r\n.me .value { color: darkred; }\r\n.enemy .value { color: red; }\r\n\r\n.msg-dmg.me .value { color: darkred; }\r\n.msg-dmg.enemy .value { color: red; }\r\n\r\n.msg-godhit { color: darkmagenta; }\r\n.msg-pickup .item { color: darkgoldenrod; }\r\n.msg-empty { color: darkgoldenrod; text-decoration: line-through; }\r\n.msg-drop { color: darkgoldenrod; text-decoration: line-through; }\r\n.msg-death { color: darkred; text-decoration: line-through; }\r\n\r\n.submessage .energy { color: dodgerblue; }\r\n.submessage .coins { color: darkgoldenrod; }\r\n\r\n.submessage .level,\r\n.submessage .exp { color: darkviolet; text-decoration: underline; }\r\n/* eo highlight */\r\n\r\n\r\n/* group */\r\n.archive-content .level { color: darkviolet; text-decoration: underline; }\r\n.group { position: relative; margin-bottom: 2px; }\r\n.group .group-toggle { cursor: default; }\r\n.group .on-open { display: none; }\r\n.group.open .on-open { display: block; }\r\n.group.open .on-close { display: none; }\r\n\r\n.group.open { margin: 0; }\r\n\r\n.group .glyphicon-time { font-size: 9px; }\r\n\r\n.group-time {  }\r\n.group-time.average { color: #8a6d3b; text-decoration: underline; }\r\n.group-time.bad { color: #a94442; text-decoration: underline; }\r\n\r\n.group-title {\r\n	cursor: default;\r\n	margin-right: 0;\r\n	white-space: nowrap;\r\n	overflow: hidden;\r\n	text-overflow: ellipsis;\r\n}\r\n.group-title:hover { background: #ddd; }\r\n\r\n.action-icon .glyphicon { font-size: 10px; opacity: .8; }\r\n.action-icon.fight { color: darkred; }\r\n.action-icon.fight-god { color: darkviolet; }\r\n\r\n.action-icon.equip,\r\n.action-icon.trade { color: darkgoldenrod; }\r\n.action-icon.quest,\r\n.action-icon.noeffect { color: dodgerblue; }\r\n.action-icon.idle { color: dodgerblue; }\r\n.action-icon.energy { color: dodgerblue; }\r\n.action-icon.rest { color: #005000; }\r\n.action-icon.dead { color: darkred; }\r\n.action-icon.companionHeal { color: #008000; }\r\n.action-icon.broken { color: red; }\r\n\r\n.action-icon {\r\n	display: inline-block;\r\n	vertical-align: text-bottom;\r\n	width: 15px;\r\n}\r\n.group-title.god .group-time { color: darkviolet; text-decoration: underline; }\r\n.group-time { margin-right: 3px; }\r\n\r\n.group-controls { position: absolute; right: 0; top: 1px; }\r\n.group-controls .glyphicon { position: absolute; right: 0; top: 0; }\r\n.group-controls .glyphicon:hover { color: #000; }\r\n.group-stats { margin-bottom: 2px; }\r\n.group-stats .stat { margin: 0 0 0 4px;}\r\n.group-stats .stat-me + .stat-enemy { margin-left: 8px;}\r\n\r\n.group-stats .stat-me { color: #005000; }\r\n.group-stats .stat-enemy { color: darkred; }\r\n\r\n.group-stats .stat-against {\r\n	display: inline-block;\r\n	width: 35px;\r\n	white-space: nowrap;\r\n}\r\n/*.group .pgf-log-list { margin: 0; }*/\r\n/* eo group */\r\n\r\n\r\n.text-muted { color: #999; }\r\n.text-primary { color: #428bca; }\r\n.text-success { color: #3c763d; }\r\n.text-info { color: #31708f; }\r\n.text-warning { color: #8a6d3b; }\r\n.text-danger { color: #a94442; }\r\n\r\n\r\n.quest-icon-mini {\r\n	float: none;\r\n	display: inline-block;\r\n	margin: 0;\r\n	vertical-align: bottom;\r\n	width: 16px;\r\n	height: 16px;\r\n	background-size: 32px 192px;\r\n	background-image: url('http://static.the-tale.org/static/168/game/images/quests.png');\r\n}\r\n.quest-icon-mini.caravan { background-position: 0 0; }\r\n.quest-icon-mini.delivery { background-position: 0 -16px; }\r\n.quest-icon-mini.help { background-position: 0 -32px; }\r\n.quest-icon-mini.help_friend { background-position: 0 -48px; }\r\n.quest-icon-mini.hometown { background-position: 0 -64px; }\r\n.quest-icon-mini.hunt { background-position: 0 -80px; }\r\n.quest-icon-mini.interfere_enemy { background-position: 0 -96px; }\r\n.quest-icon-mini.collect_debt { background-position: 0 -112px; }\r\n.quest-icon-mini.spying { background-position: 0 -128px; }\r\n.quest-icon-mini.search_smith { background-position: 0 -144px; }\r\n.quest-icon-mini.no-quest { background-position: 0 -160px; }\r\n.quest-icon-mini.next-spending { background-position: 0 -176px; }\r\n.quest-icon-mini.pilgrimage { background-position: -16px -80px; }\r\n\r\n\r\n\r\n/*#pgf-towns-container { background: #fff; }*/\r\n#pgf-towns-container .reload {\r\n	font-size: 12px;\r\n}\r\n\r\n/* tables */\r\nbody .table-noborder tbody,\r\n.table-noborder td,\r\n.table-noborder th { border: none; }\r\n.table tbody tr.unhover:hover td,\r\n.table tbody tr.unhover:hover th { background: inherit; }\r\n.table-hover-dark tbody tr:hover td,\r\n.table-hover-dark tbody tr:hover th { background: #ddd; }\r\n\r\n.table-towns th.size,\r\n.table-towns td.size {\r\n	padding-left: 0;\r\n	padding-right: 0;\r\n}\r\n.table-towns th.size { text-align: center; }\r\n.table-towns td.size { text-align: right; }\r\n\r\n.table-towns td {\r\n	white-space: nowrap;\r\n}\r\n/* eo tables */\r\n\r\n\r\n/* settings */\r\n#log-block-sets { height: auto; }\r\n.sets-header { margin: 10px 0 5px;}\r\n.sets { margin: 5px 0 0 20px; }\r\n.sets-inline { display: inline-block; }\r\n\r\n.note-block { color: #999; }\r\ninput.input-tiny { height: 11px; width: 60px; font-size: 12px; margin: -2px 0 -3px; vertical-align: 0; }\r\ninput.input-tiny-num { width: 30px; }\r\n.input-append .add-on { height: 11px; line-height: 11px; margin-top: -2px; margin-bottom: -3px; vertical-align: -1px; }\r\n\r\n\r\n.sets label {\r\n	display: inline;\r\n	font-weight: normal;\r\n	margin-bottom: 0;\r\n}\r\n.sets .input-wrap-inline {\r\n	display: inline-block;\r\n}\r\n.sets .input-wrap {\r\n	transition: opacity .2s;\r\n}\r\n.sets .input-wrap.disabled { opacity: .7; }\r\n/* eo sets */\r\n\r\n\r\ndiv.easy-block {\r\n	clear: right;\r\n}\r\n", "" ]);
}, /* 9 */
/***/
function(module, exports, __webpack_require__) {
    var ext = {};
    ext.utils = __webpack_require__(10), ext.parse = __webpack_require__(23), ext.trace = __webpack_require__(28), ext.draw = __webpack_require__(34), ext.notifications = __webpack_require__(66), 
    ext.auto = __webpack_require__(71), window.ext = ext, __webpack_require__(75);
    /* todo разнести эту логику */
    var utils = ext.utils, _draw = ext.draw, _trace = ext.trace, _log = utils.log, _elements = utils.elements, _stats = _draw.stats, _archive = _draw.archive;
    utils.publish("init"), _elements.getTabInner("sets").on("click", "#reset-stats", function() {
        confirm("Будет сброшена вся история\nПродолжить?") && (_log.set("messagesLog", ""), _trace.messagesLog.splice(0, _trace.messagesLog.length), _log.set("archiveGroups", ""), 
        _archive.archiveGroups.splice(0, _archive.archiveGroups.length), _stats.drawStatsSide(), _elements.getTabInner("group").html(""));
    });
}, /* 10 */
/***/
function(module, exports, __webpack_require__) {
    var utils = module.exports = {};
    utils["const"] = __webpack_require__(11), utils.subscribeList = __webpack_require__(12).subscribeList, utils.publish = __webpack_require__(12).publish, utils.subscribe = __webpack_require__(12).subscribe, 
    utils.cacheStore = __webpack_require__(13).cacheStore, utils.cache = __webpack_require__(13).cache, utils.store = __webpack_require__(14), utils.log = __webpack_require__(15), 
    utils.settings = __webpack_require__(17), utils.utils = __webpack_require__(20), utils.elements = __webpack_require__(19), utils.isMyName = __webpack_require__(21), 
    utils.isActType = __webpack_require__(22);
    /* todo разнести эту логику */
    var $ = __webpack_require__(18);
    setTimeout(function() {
        $(document).on("ajaxSuccess.ext", function(event, XMLHttpRequest, setting, result) {
            if (0 === setting.url.indexOf("/game/api/info?api_client=")) {
                var game_data = result.data;
                try {
                    utils.heroName = game_data.account.hero.base.name, utils.map_version = game_data.map_version;
                } catch (e) {}
                utils.preloadDone || //			$(document).trigger(pgf.game.events.DATA_REFRESHED, game_data);
                utils.publish("preload", game_data), utils.preloadDone = 1, game_data.account.is_old || (utils.publish("load", game_data), $(".ext-wait").hide(), $(document).off("ajaxSuccess.ext"), 
                delete utils.preloadDone);
            }
        });
    }, 1e3);
}, /* 11 */
/***/
function(module, exports) {
    module.exports = {
        MAX_LOG_LENGTH: 1e3,
        MAX_ARCHIVE_LENGTH: 2e3,
        FIGHT_START: "fight".split(/,\s*/),
        FIGHT: "hit, might, fire, poisoncloud, vamp, stunHit, crit, flame, poison, slow, mush, speed, ue, eva, stun, heal".split(/,\s*/),
        FIGHT_VALUES: "hit, might, fire,              vamp, stunHit, crit, flame, poison,                                   heal".split(/,\s*/),
        FIGHT_COUNTS: "                  poisoncloud,                                     slow, mush, speed, ue, eva, stun      ".split(/,\s*/),
        DMG: "hit, might, fire, poisoncloud, vamp, stunHit, crit                                                       ".split(/,\s*/),
        DOT: "                                                    flame, poison                                        ".split(/,\s*/),
        DEBUFF: "                                                                   slow                                  ".split(/,\s*/),
        BUFF: "                                                                         mush, speed, ue                 ".split(/,\s*/),
        ACTIVE: "hit, might, fire, poisoncloud, vamp, stunHit,                            mush,        ue                 ".split(/,\s*/),
        PASSIVE: "                                              crit, flame, poison, slow,       speed,     eva, stun, heal".split(/,\s*/),
        SUM_TO_MAIN: {
            flame: "fire",
            poison: "poisoncloud",
            crit: "hit"
        },
        LOOT: [ "pickup", "empty", "drop", "death" ],
        REST: [ "rest" ],
        SHORT: [ "hit", "might", "fire", "flame", "poison", "vamp", "slow", "poisoncloud", "mush", "ue", "eva", "heal", "godheal", "rest", "coins", "speed", "stunHit", "stun", "pvpeff", "pvpice", "pvpflame", "pvpfail", "companion" ],
        ACTION_TYPE_NAMES: {
            0: "idle",
            //безделие
            1: "quest",
            //задание
            2: "walk",
            //путешествие между городами
            3: "fight",
            //сражение 1x1 с монстром
            4: "dead",
            //воскрешение
            5: "city",
            //действия в городе
            6: "rest",
            //отдых
            7: "equip",
            //экипировка
            8: "trade",
            //торговля
            9: "nearcity",
            //путешествие около города
            10: "energy",
            //восстановление энергии
            11: "noeffect",
            //действие без эффекта на игру
            12: "proxy",
            //прокси-действия для взаимодействия героев
            13: "pvp",
            //PvP 1x1
            14: "test",
            //проверочное действие
            15: "companionHeal"
        },
        ACTION_TYPE_TEXTS: {
            idle: "безделие",
            quest: "задание",
            walk: "путешествие между городами",
            fight: "сражение 1x1 с монстром",
            dead: "воскрешение",
            city: "действия в городе",
            rest: "отдых",
            equip: "экипировка",
            trade: "торговля",
            nearcity: "путешествие около города",
            energy: "восстановление энергии",
            noeffect: "действие без эффекта на игру",
            proxy: "прокси-действия для взаимодействия героев",
            pvp: "PvP 1x1",
            undefined: "неизвестное действие",
            companionHeal: "уход за спутником",
            broken: "неразобранное действие"
        },
        ACTION_TYPE_ICONS: {
            idle: '<span class="glyphicon glyphicon-home"></span>',
            quest: '<span class="glyphicon glyphicon-globe"></span>',
            walk: '<span class="glyphicon glyphicon-road"></span>',
            fight: '<span class="glyphicon glyphicon-leaf"></span>',
            dead: '<span class="glyphicon glyphicon-remove"></span>',
            city: '<span class="glyphicon glyphicon-home"></span>',
            rest: '<span class="glyphicon glyphicon-heart-empty"></span>',
            equip: '<span class="glyphicon glyphicon-collapse-down"></span>',
            trade: '<span class="glyphicon glyphicon-copyright-mark"></span>',
            nearcity: '<span class="glyphicon glyphicon-globe"></span>',
            energy: '<span class="glyphicon glyphicon-flash"></span>',
            noeffect: '<span class="glyphicon glyphicon-music"></span>',
            companionHeal: '<span class="glyphicon glyphicon-user"></span>',
            broken: '<span class="glyphicon glyphicon-ban-circle"></span>'
        },
        ERROR_CODES: {
            1: "Неполное действие",
            2: "Не найдено начало боя",
            3: "Не найден конец боя",
            4: "Дыра в середине действия",
            5: "Запись обрывается"
        },
        ICONS: {
            hit: '<span class="glyphicon glyphicon-leaf"></span>',
            crit: '<span class="glyphicon glyphicon-star"></span>',
            might: '<span class="glyphicon glyphicon-tower"></span>',
            fire: '<span class="glyphicon glyphicon-fire"></span>',
            flame: '<span class="glyphicon glyphicon-fire small"></span>',
            poisoncloud: '<span class="glyphicon glyphicon-tint"></span>',
            poison: '<span class="glyphicon glyphicon-tint small"></span>',
            vamp: '<span class="glyphicon glyphicon-cutlery"></span>',
            ue: '<span class="glyphicon glyphicon-refresh"></span> ',
            eva: '<span class="glyphicon glyphicon-transfer"></span> ',
            slow: '<span class="glyphicon glyphicon-link"></span>',
            mush: '<span class="glyphicon glyphicon-arrow-up"></span>',
            speed: '<span class="glyphicon glyphicon-forward"></span>',
            stunHit: '<span class="glyphicon glyphicon-step-forward"></span>',
            stun: '<span class="glyphicon glyphicon-bell"></span>',
            rest: '<span class="glyphicon glyphicon-heart-empty"></span>',
            heal: '<span class="glyphicon glyphicon-heart"></span>',
            dmgSum: '<span class="glyphicon glyphicon-asterisk"></span>',
            godheal: '<span class="glyphicon glyphicon-heart-empty"></span>',
            coins: '<span class="glyphicon glyphicon-copyright-mark"></span>',
            pickup: '<span class="glyphicon glyphicon-ok-circle"></span>',
            empty: '<span class="glyphicon glyphicon-remove-circle"></span>',
            drop: '<span class="glyphicon glyphicon-ban-circle"></span>',
            death: '<span class="glyphicon glyphicon-remove-sign"></span>',
            pvpeff: '<span class="glyphicon glyphicon-flash"></span>',
            pvpice: '<span class="glyphicon glyphicon-cloud-upload"></span>',
            pvpflame: '<span class="glyphicon glyphicon-cloud-download"></span>',
            pvpfail: '<span class="glyphicon glyphicon-cloud"></span>',
            companion: '<span class="glyphicon glyphicon-user"></span>'
        },
        ACTION_TRANSLATE: {
            hit: "Удар",
            crit: "Критический удар",
            stunHit: "Разбег-толчок",
            stun: "Шок",
            might: "Тяжёлый удар",
            slow: "Заморозка",
            speed: "Ускорение",
            fire: "Шар огня",
            flame: "Пламя",
            mush: "Волшебный гриб",
            ue: "Шаг в сторону",
            eva: "Увернулся",
            poisoncloud: "Ядовитое облако",
            poison: "Отравление",
            vamp: "Удар вампира",
            heal: "Регенерация",
            dmgSum: "Всего"
        },
        MOBS: [ null, "олень", "одичавшая одежда", "осы", "хищный кустик", "кабан-секач", "бродячий дуб", "волк", "дух леса", "оскорблённая эльфийка", "блюститель природы", "медведь", "аристократ", "единорог", "призрачный волк", "астральный охотник", "головастик", "домашний поползень", "одичавшие светлячки", "ползун", "пиявка", "гигантская росянка", "сбежавший эксперимент", "слизь", "гидра", "щупальце", "химический мусорник", "упырь", "кикимора", "бесхозный голем", "охотник за реагентами", "мутировавший гоблин", "василиск", "ожившее пугало", "хищный хомяк", "борец за справедливость", "саранча", "маньяк-извращенец", "карточный шулер", "богомол", "благородный разбойник", "одержимый колдун", "механический дракончик", "дварф-изгнанник", "неистовый сектант", "механический голем", "убийца", "полоумный маг", "шакал", "скорпион", "налётчик", "огненная лиса", "орк-изгнанник", "скарабей", "гремучая змея", "саламандра", "пустынный дракончик", "джинн", "берсерк", "смерч", "заблудший шаман", "шайтан", "крыса", "бандит", "призрак", "неупокоенный", "гремлин", "подыльник", "странствующий рыцарь", "нага", "охотник за головами", "суккуб", "вирика", "див", "додо", "ангиак", "бхут", "гвиллион", "вилах", "вендиго", "галд", "ачери", "земляная даппи", "огненная даппи", "анчутка", "жихарь", "йиена", "мара", "боец Серого Ордена", "спятивший лорд", "волколак", "медвелак", "аколит огня", "ламия", "баргест", "вий", "гьюнальский паук", "дэра", "гриндель", "грим", "кагир", "друджи", "даса", "стая ичетики", "кера", "куд", "ларва", "егви", "каменный великан", "каннибал", "ламашту", "лахама", "наркоман", "бывший палач", "мародёр", "страхолев", "злоцвет", "варвар", "ночная хныка", "омерзень", "смрадень", "глыдень", "песчаный холерник", "мать анаконд", "белая гиена", "мраморный бык", "язвомор", "лишайница", "жирница", "бульг", "костогрыз", "каменник", "вирница", "тигр", "барбегаз", "бродячий огонек", "скальник", "пупырник", "стогница", "куропатка гуанила", "пёстробородый", "капитан Серых Плащей", "аколит льда", "семиглаз", "гюрза", "медвежук", "снежная росомаха", "койот", "горный манул", "мастер огня", "мастер льда", "кобольд", "пожиратель плоти", "главарь пестробородых", "ученик Силы", "гомункул", "некромант", "тагар", "стрига", "приземник", "лесной тролль", "вурдалак", "болотный тролль", "бескуд", "атач" ]
    };
}, /* 12 */
/***/
function(module, exports) {
    function publish(e) {
        for (var sp = e.split("."), event = sp[0], namespace = sp[1], ctx = this, i = 0; i < _subscribeList.length; i++) {
            var s = _subscribeList[i];
            namespace && namespace !== s.namespace || event && event !== s.event || s.fn.apply(ctx, Array.prototype.slice.call(arguments, 1));
        }
    }
    function subscribe(e, fn) {
        var events = e.split(",");
        if (events.length > 1) {
            return void events.forEach(function(ev) {
                subscribe(ev, fn);
            });
        }
        var sp = e.split("."), event = sp[0], namespace = sp[1];
        _subscribeList.push({
            event: event,
            namespace: namespace,
            fn: fn
        });
    }
    var _subscribeList = [];
    module.exports = {
        subscribeList: _subscribeList,
        publish: publish,
        subscribe: subscribe
    };
}, /* 13 */
/***/
function(module, exports) {
    function cache(name, value, time) {
        return arguments.length > 1 ? (cacheStore[name] = value, cacheTimeId[name] && window.clearTimeout(cacheTimeId[name]), time && (cacheTimeId[name] = window.setTimeout(function() {
            delete cacheStore[name];
        }, time)), void 0) : cacheStore[name];
    }
    var cacheStore = {}, cacheTimeId = {};
    module.exports = {
        cacheStore: cacheStore,
        cache: cache
    };
}, /* 14 */
/***/
function(module, exports) {
    function setStore(key, value) {
        localStorage.setItem(prefix + key, JSON.stringify(value));
    }
    function getStore(key) {
        return JSON.parse(localStorage.getItem(prefix + key) || localStorage.getItem(key));
    }
    var store, prefix = "ext-";
    store = "object" == typeof window && window.localStorage && window.JSON ? {
        get: getStore,
        set: setStore
    } : {
        get: function() {},
        set: function() {}
    }, module.exports = store;
}, /* 15 */
/***/
function(module, exports, __webpack_require__) {
    function setLog(name, messages) {
        try {
            if ("messagesLog" === name) {
                var max = /*_settings.settingsValues.maxLogLength || */ _const.MAX_LOG_LENGTH;
                pgf.base.settings.set(name, JSON.stringify(messages.slice(messages.length - max)));
            } else {
                pgf.base.settings.set(name, JSON.stringify(messages));
            }
        } catch (e) {
            console.warn("setLog", name, e);
        }
    }
    function getLog(name) {
        var g = pgf.base.settings.get(name);
        return g ? JSON.parse(g) : "";
    }
    function logToConsole(name) {
        var strLog = pgf.base.settings.get(name), s = strLog.replace(/\],\[/g, "],\n	[").replace(/\},{/g, "},\n	{").replace(/"(action|base|energy|habits|secondary|turn)"/g, '\n		"$1"');
        console.log(s);
    }
    function toStr(messages) {
        var strLog = JSON.stringify(messages), s = strLog.replace(/\],\[/g, "],\n	[").replace(/"(action|base|energy|habits|secondary|turn)"/g, '\n		"$1"');
        return s;
    }
    function size() {
        var t = 0;
        for (var x in localStorage) {
            localStorage.hasOwnProperty(x) && (t += 2 * localStorage[x].length);
        }
        return t;
    }
    var pgf = __webpack_require__(16), _const = __webpack_require__(11);
    module.exports = {
        toConsole: logToConsole,
        toStr: toStr,
        get: getLog,
        size: size,
        set: setLog
    };
}, /* 16 */
/***/
function(module, exports) {
    module.exports = window.pgf;
}, /* 17 */
/***/
function(module, exports, __webpack_require__) {
    function getSettingInput(key) {
        return $('input[data-name="' + key + '"]');
    }
    function checkDependences(key, value, isDisabled) {
        deps[key] && deps[key].forEach(function(keyName) {
            keyName && getSettingInput(keyName).closest(".input-wrap").toggleClass("disabled", isDisabled || !value);
        });
    }
    function addSets(sets) {
        function settingsDefaults(fields) {
            for (var childs = [], i = 0; i < fields.length; i++) {
                var st = fields[i];
                childs.push(st.name), //					console.log('defaults', st.name);
                "undefined" == typeof settingsValues[st.name] && (settingsValues[st.name] = st.value);
                var subsChilds = [];
                st.inputs && (subsChilds = settingsDefaults(st.inputs).concat(subsChilds)), st.subs && (subsChilds = settingsDefaults(st.subs).concat(subsChilds)), st.fields && (subsChilds = settingsDefaults(st.fields).concat(subsChilds)), 
                subsChilds.length && st.name && (deps[st.name] = subsChilds, childs = subsChilds.concat(childs));
            }
            return childs;
        }
        for (var i = 0; i < sets.length; i++) {
            settingsDefaults(sets[i].fields);
        }
    }
    function drawSets(sets) {
        for (var $sets = _elements.getTabInner("sets"), html = "", i = 0; i < sets.length; i++) {
            var st = sets[i];
            html += '<div class=""><div class="sets-header">' + (st.title || "") + "</div>" + drawSetsGroup(st.fields) + "</div>";
        }
        html = '<div class="settings-form form-horizontal">' + html + "</div>", $sets.append(html), $sets.find("input").each(function() {
            var $input = $(this), name = $input.data("name"), value = $input.is('[type="checkbox"]') ? $input.prop("checked") : $input.val(), isDisabled = $input.closest(".input-wrap").hasClass("disabled");
            checkDependences(name, !isDisabled && value);
        });
    }
    function init() {
        var $sets = _elements.getTabInner("sets");
        drawSets(sets), $sets.on("change", "input", function() {
            var $input = $(this), name = $input.data("name"), value = $input.is('[type="checkbox"]') ? $input.prop("checked") : $input.val();
            "num" === $input.data("type") && (value = +value), settingsValues[name] = value;
            var isDisabled = $input.closest(".input-wrap").hasClass("disabled");
            _publish("settingsChange", name, value, isDisabled), _log.set("settings", settingsValues);
        });
    }
    function drawSetsGroup(fields) {
        function drawInput(st) {
            "undefined" == typeof settingsValues[st.name] && (settingsValues[st.name] = st.value);
            var html = "";
            return st.isToggle || "checkbox" === st.type ? html = '<input type="checkbox" data-name="' + st.name + '""' + (settingsValues[st.name] ? " checked" : "") + "> " : ("text" === st.type || "num" === st.type) && (html = '<input type="text" class="input-tiny input-tiny-' + st.type + '" data-name="' + st.name + '"' + (' data-type="' + st.type + '"') + (settingsValues[st.name] ? ' value="' + settingsValues[st.name] + '"' : "") + ">", 
            html = st.addOn ? '<div class="input-wrap input-append">' + html + '<span class="add-on">' + st.addOn + "</span></div>" : '<div class="input-wrap input-wrap-inline">' + html + "</div>"), 
            html;
        }
        for (var html = "", i = 0; i < fields.length; i++) {
            var st = fields[i], inputsHtml = "";
            st.inputs && (inputsHtml = " " + st.inputs.map(drawInput).join(""));
            var label = '<div class="input-wrap ' + (st.isToggle ? "checkbox" : "") + '"><label>' + drawInput(st) + st.label + "</label>" + inputsHtml + "</div>";
            html += '<div class="sets' + (st.isInline ? " sets-inline" : "") + '"><div class="sets-title">' + label + (st.note ? '<div class="note-block">' + st.note + "</div>" : "") + "</div>" + (st.subs ? drawSetsGroup(st.subs) : "") + "</div>";
        }
        return _log.set("settings", settingsValues), html;
    }
    var _subscribe = __webpack_require__(12).subscribe, _publish = __webpack_require__(12).publish, _const = __webpack_require__(11), $ = __webpack_require__(18), _log = __webpack_require__(15), _elements = __webpack_require__(19), sets = [ {
        title: "Персонаж",
        fields: [ {
            label: "Начало имени героя:",
            note: "Общая часть имени для всех падежей",
            inputs: [ {
                name: "heroNameStart",
                type: "text"
            } ]
        } ]
    }, {
        title: "Уведомления",
        fields: [ {
            label: "Отправлять уведомления",
            name: "notify",
            isToggle: 1,
            value: !0,
            subs: [ {
                label: "Выбор в задании",
                name: "notifyQuestChoose",
                isToggle: 1,
                value: !0
            }, {
                label: "Герой бездействует",
                name: "notifyHeroIdle",
                isToggle: 1,
                value: !0
            }, {
                label: "Здоровье ниже ",
                name: "notifyHeroHp",
                isToggle: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "notifyHeroHpLowerValue",
                    value: 200
                } ]
            }, {
                label: "Энергия выше ",
                name: "notifyHeroEnergy",
                isToggle: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "notifyHeroEnergyGreaterValue",
                    value: 9
                } ]
            } ]
        } ]
    }, {
        title: "Статистика",
        fields: [ {
            label: "Уровень героя: последний, или",
            name: "statsByLevel",
            isToggle: 1,
            value: !0,
            inputs: [ {
                type: "num",
                name: "statsByLevelValue"
            } ]
        }, {
            label: "Монстр: последний, или",
            name: "statsByMob",
            isToggle: 1,
            value: !0,
            inputs: [ {
                type: "num",
                name: "statsByMobId",
                addOn: "ID"
            } ],
            subs: [ {
                label: "Статистика героя против монстра",
                name: "myStatsByMob",
                isToggle: 1,
                value: !1
            } ]
        }, {
            label: "Количество действий в статистике:",
            inputs: [ {
                name: "statsActionsCount",
                type: "num"
            } ]
        } ]
    }, {
        title: "Отображение",
        fields: [ {
            label: "Выводить подробности действий",
            name: "groupOpenOnDefault",
            isToggle: 1,
            value: !0
        }, {
            label: "Показывать архив",
            name: "showArchive",
            isToggle: 1,
            value: !1
        } ]
    }, {
        title: 'Хранилище <span id="storage-size"></span>',
        fields: [ {
            label: "Сообщений в кратком журнале:",
            inputs: [ {
                name: "maxLogLength",
                type: "num",
                value: _const.MAX_LOG_LENGTH
            } ]
        }, {
            label: "Действий в архиве:",
            inputs: [ {
                name: "maxArchiveLength",
                type: "num",
                value: _const.MAX_ARCHIVE_LENGTH
            } ]
        }, {
            label: '<span class="link-ajax" id="reset-stats">Очистить хранилище</span>'
        } ]
    } ];
    _subscribe("settingsChange", checkDependences);
    var deps = {}, settingsValues = _log.get("settings") || {};
    addSets(sets);
    var _settings = {
        init: init,
        addSets: addSets,
        drawSets: drawSets,
        getSettingInput: getSettingInput,
        settingsValues: settingsValues
    };
    module.exports = _settings, _subscribe("init", function() {
        _settings.init();
    }), _subscribe("preload", function() {
        if (!_settings.settingsValues.heroNameStart) {
            /* todo is `this` correct _ext */
            var heroName = this.heroName;
            _settings.settingsValues.heroNameStart = heroName.substring(0, Math.max(3, heroName.length - 2)), _settings.getSettingInput("heroNameStart").val(_settings.settingsValues.heroNameStart).trigger("change");
        }
    }), _subscribe("settingsChange", function(key) {
        "heroNameStart" === key && /* todo is `this` correct _ext */
        this.groupMessages.drawMessages(this.groupMessages.list);
    }), _subscribe("newTurn", function(messagesNew) {
        window.setTimeout(function() {
            $("#storage-size").text("(занято " + Math.round(_log.size() / 1024 / 1024 * 100) / 100 + "Мб)");
        }, 10);
    });
}, /* 18 */
/***/
function(module, exports) {
    module.exports = window.jQuery;
}, /* 19 */
/***/
function(module, exports, __webpack_require__) {
    function addTab(name, opts) {
        var $content, zone = opts.zone || "main", $tabs = zones[zone].$tabs, $container = zones[zone].$container, $tab = $('<li class="pull-right"><a href="#pgf-' + name + '-container" class="pgf-' + name + '-tab-button" data-toggle="tab">' + opts.title + "</a></li>");
        $content = $("main" === zone ? '<div class="tab-pane log-block" id="pgf-' + name + '-container"></div>' : '<div class="tab-pane" id="pgf-' + name + '-container"></div>'), 
        $tabs.append($tab), $container.append($content);
        var $inner = $content;
        return opts.content && ($inner = $(opts.content).appendTo($content)), tabs[name] = {
            zone: zone,
            $tab: $tab,
            $content: $content,
            $inner: $inner
        }, $inner;
    }
    function getTabInner(name) {
        return tabs[name].$inner;
    }
    function getTab(name) {
        return tabs[name].$tab;
    }
    function activeTab(name) {}
    function addControl(name, opts) {
        var html = '<span class="ext-control link-ajax" id="ext-' + name + '" title="' + opts.title + '">' + (opts.content || "") + "</span>", $el = $(html).appendTo($controls);
        return controls[name] = {
            $el: $el
        }, $el;
    }
    function getControl(name) {
        return controls[name].$el;
    }
    var $ = __webpack_require__(18), _subscribe = __webpack_require__(12).subscribe, tabs = {}, $diaryRoot = $("#pgf-diary-container").parent().parent(), $diaryTabs = $diaryRoot.children(".nav-tabs"), $diaryContainer = $diaryRoot.children(".tab-content"), $equipRoot = $("#pgf-equipment-container").parent().parent(), $equipTabs = $equipRoot.children(".nav-tabs"), $equipContainer = $equipRoot.children(".tab-content"), zones = {
        main: {
            $tabs: $diaryTabs,
            $container: $diaryContainer
        },
        equip: {
            $tabs: $equipTabs,
            $container: $equipContainer
        }
    }, controls = {}, $controls = $('<div class="ext-controls pull-right"></div>').insertAfter("#current-action-block, #pvp-info-block"), _elements = {
        addTab: addTab,
        activeTab: activeTab,
        getTab: getTab,
        getTabInner: getTabInner,
        addControl: addControl,
        getControl: getControl
    };
    module.exports = _elements, _elements.addTab("sets", {
        zone: "main",
        title: '<span class="glyphicon glyphicon-cog" title="Настройки &laquo;The Tale Extended&raquo;"></span>'
    }), _elements.addTab("towns", {
        zone: "main",
        title: "города"
    }), _elements.addTab("archive", {
        zone: "main",
        title: "архив"
    }), _elements.addTab("group", {
        zone: "main",
        title: "кратко"
    }), _subscribe("init", function() {
        _elements.activeTab("group");
    }), _elements.addControl("journal-log", {
        title: "Журнал",
        content: '<span class="value"></span> <span class="glyphicon glyphicon-th-list"></span></span>'
    }), //	.on('click', function() { _log.toConsole('messagesLog'); });
    _elements.addControl("archive-log", {
        title: "Архив",
        content: '<span class="value"></span> <span class="glyphicon glyphicon-th"></span></span>'
    });
}, /* 20 */
/***/
function(module, exports) {
    var _utils = {};
    _utils.capitalize = function(text) {
        return text.substring(0, 1).toUpperCase() + text.substring(1);
    }, _utils.declensionByNumber = function(number, titles, addCount) {
        return (addCount ? number + " " : "") + titles[number % 100 > 4 && 20 > number % 100 ? 2 : [ 2, 0, 1, 1, 1, 2 ][5 > number % 10 ? number % 10 : 5]];
    }, _utils.timeSpan = function(timeSpan) {
        timeSpan = Math.floor(+timeSpan) || 0;
        var h = Math.floor(timeSpan / 60 / 60), m = Math.floor(timeSpan / 60) % 60, s = timeSpan % 60;
        return (h ? h + ":" : "") + (10 > m ? "0" : "") + m + ":" + (10 > s ? "0" : "") + s;
    }, module.exports = _utils;
}, /* 21 */
/***/
function(module, exports, __webpack_require__) {
    var _settings = __webpack_require__(17);
    module.exports = function(str) {
        return str.indexOf(_settings.settingsValues.heroNameStart) >= 0;
    };
}, /* 22 */
/***/
function(module, exports, __webpack_require__) {
    function isActType(types, actType) {
        return _const[types].indexOf(actType) >= 0;
    }
    var _const = __webpack_require__(11);
    module.exports = isActType;
}, /* 23 */
/***/
function(module, exports, __webpack_require__) {
    var parseShort = __webpack_require__(24), parseHighlight = __webpack_require__(26), _parse = module.exports = {};
    _parse["short"] = parseShort, _parse.highlight = parseHighlight;
}, /* 24 */
/***/
function(module, exports, __webpack_require__) {
    /**
	 * Метод разбирает действие из журнала
	 * @param {string} msg - строка действия в журнале
	 * @return {object} act
	 * @return {boolean} act.isMe - герой/моб
	 * @return {string} act.type - тип hit/might/...
	 * @return {string} act.sec - вторичный тип как vamp в [eva,vamp]
	 * @return {string} act.actor - значение из фигурных скобок
	 * @return {string} act.victim - значение из фигурных скобок
	 * @return {string} act.item - значение из фигурных скобок
	 * @return {string} act.value - значение из фигурных скобок
	 * */
    function parseShort(msg) {
        msg = msg.replace(/ё/g, "е").replace(/\s\s+/g, " ");
        for (var act, i = 0; i < cfgShort.length; i++) {
            var cfgParsedLine = cfgShort[i], paramNames = cfgParsedLine.params, values = cfgParsedLine.regex.exec(msg);
            if (values) {
                values = values.slice(1), act = {}, act.type = cfgParsedLine.type, cfgParsedLine.sec && (act.sec = cfgParsedLine.sec);
                for (var paramIndex = 0; paramIndex < paramNames.length; paramIndex++) {
                    var param = paramNames[paramIndex];
                    act[param] = isNaN(values[paramIndex]) ? values[paramIndex] : +values[paramIndex];
                }
                act.isMe = !!(act.actor ? utils.isMyName(act.actor) : act.victim ? !utils.isMyName(act.victim) : !0), utils.settings.settingsValues.heroNameStart || (act.isMe = 0);
            }
        }
        return act;
    }
    /**
	 * Прекомпиляция конфига фраз для разбора
	 * */
    function processShortRaw(phrases) {
        for (var ESCAPE = /[?.]/g, anyRegExp = new RegExp("({})", "g"), numbersRegExp = new RegExp("({value})", "g"), paramsRegExp = new RegExp("({[a-zA-Z]+})", "g"), namesRegExp = "([а-яА-ЯёЁa-zA-Z\\d _\\-']+)", paramReg = /{([a-zA-Z]+)}/g, result = [], typeReg = /^\[([a-zA-Z]+)(?:,([a-zA-Z]+))?\]/, i = 0; i < phrases.length; i++) {
            var cfgString = phrases[i].replace(/ё/g, "е"), parsedCfg = {}, p = typeReg.exec(cfgString);
            p && (p[1] && (parsedCfg.type = p[1]), p[2] && (parsedCfg.sec = p[2]), //				else parsedCfg.sec = 'vamp';
            cfgString = cfgString.replace(p[0], "")), "~" !== cfgString.charAt(0) && (cfgString = "^" + cfgString, cfgString += "$");
            var paramNames = [];
            do {
                p = paramReg.exec(cfgString), p && paramNames.push(p[1]);
            } while (p);
            parsedCfg.params = paramNames, cfgString = cfgString.replace(ESCAPE, "\\$&").replace(/\(/g, "(?:").replace(/\)/g, ")?").replace(anyRegExp, ".+").replace(numbersRegExp, "(\\d+)").replace(paramsRegExp, namesRegExp), 
            parsedCfg.regex = new RegExp(cfgString), result[i] = parsedCfg;
        }
        return result;
    }
    var utils = __webpack_require__(10), phrases = __webpack_require__(25), cfgShort = processShortRaw(phrases);
    module.exports = parseShort;
}, /* 25 */
/***/
function(module, exports) {
    module.exports = [ /* --pvp-- */
    "[pvpeff]Мощный поток энергии вздыбил землю вокруг {actor}. Эффективность {} увеличена на {eff} единиц(а|у|ы).", "[pvpeff]Кровь на мгновение застилает глаза {actor}. Эффективность увеличена на {eff} единиц(а|у|ы).", "[pvpeff]{actor} почувствовал(а|о|и) как (его|ее|их) мышцы крепчают, а сознание очищается. Эффективность боя увеличилась на {eff} единиц(а|у|ы).", "[pvpeff]Хранитель усилил связь с {actor} и увеличил (его|ее|их) эффективность на {eff} единиц(а|у|ы).", "[pvpice]Хранитель {actor} сконцентрировался и увеличил скорость прироста энергии.", "[pvpice]Холодная голова и кристально чистые мысли помогли хранителю {actor} увеличить скорость прироста энергии.", "[pvpflame]Хранитель {actor} нарушил(а|о|и) концентрацию противник(а|ов) и уменьшил скорость прироста (его|ее|их) энергии.", "[pvpfail]Тучи за спиной {actor} сошлись… И снова разошлись, ничего не произошло.", "[pvpfail]Хранитель {actor} не смог сконцентрироваться и потратил энергию впустую.", "[pvpfail]Хранителю не хватило концентрации для установления связи с {actor}. Энергия ушла в никуда.", /* Удар */
    "[hit]Изучив тактику {victim}, {actor} провел(а|о|и) атаку. {victim} получа(е|ю)т {value} урона.", "[hit]Изучив тактику {victim}, {actor} ничего не понял(а|о|и), поэтому просто ударил(а|о|и) (его|её|их) оружием. {victim} получа(е|ю)т {value} урона.", "[hit]Сосредоточившись, {actor} провел(а|о|и) атаку. {victim} получа(е|ю)т {value} урона.", "[hit]Обманув {victim}, {actor} смог(ла|ло|ли) провести неожиданную атаку. {victim} получа(е|ю)т {value} урона.", "[hit]Усыпив бдительность {victim}, {actor} набросил(ся|ась|ось|ись) на противник(а|ов). {victim} получа(е|ю)т {value} урона.", "[hit]{actor} нанес(ла|ло|ли) точный удар. {victim} получа(е|ю)т {value} урона.", "[hit]Быстрая атака {actor} достигла цели. {victim} получа(е|ю)т {value} урона.", "[hit]Рассекающий удар {actor} достиг цели. {victim} получа(е|ю)т {value} урона.", "[hit]Умелая подсечка — и придорожный камень встретил голов(у|ы) {victim}. {victim} получа(е|ю)т {value} урона.", "[hit]Ловко парировав выпад, {actor} провод(и|я)т успешный контрудар. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} поцарапал(а|о|и) {victim}. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} быстро прицелил(ся|ась|ось|ись), изготовил(ся|ась|ось|ись) и в стремительном рывке обрушил(а|о|и) разящий удар на {victim}. {victim} получа(е|ю)т {value} урона.", "[hit]{victim} пропустил(а|о|и) удар. {victim} получа(е|ю)т {value} урона.", "[hit]{victim} пропустил(а|о|и) атаку {actor}. {victim} получа(е|ю)т {value} урона.", "[hit]{victim} пропуска(ет|ют) лёгкий тычок. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} точным ударом поразил(а|о|и) {victim}. {victim} получа(е|ю)т {value} урона.", "[hit]«Скрытая атака!» — заорал(а|о|и) {actor}. {victim} получа(е|ю)т {value} урона.", "[hit]Замахиваясь, {victim} пропустил(а|о|и) резкий и быстрый выпад {actor}. {victim} получа(е|ю)т {value} урона.", "[hit]После обмена серией стремительных ударов с(о) {victim}, {actor} наконец наш(ел|ёл|ла|ло|ли) брешь в защите и нанес(ла|ло|ли) удар. {victim} получа(е|ю)т {value} урона.", "[hit]Кувырком уходя из-под удара и контратакуя, {actor} сумел(а|о|и) достать {victim}. {victim} получа(е|ю)т {value} урона.", "[hit]{victim} приготовил(ся|ась|ось|ись) парировать удар, но не ожидал(а|о|и) от {actor} такой стремительности. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} провод(ит|ят) сногсшибательный приём, {victim} пада(ет|ют). {victim} получа(е|ю)т {value} урона.", "[hit]Ловкая подножка, и {victim} пада(е|ю)т на землю. {victim} получа(е|ю)т {value} урона.", "[hit]Точно выверенный по времени удар застаёт {victim} врасплох. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} вломил(а|о|и) {victim} по первое число. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} нанос(и|я)т молниеносный удар — в пыль впитывается горячая кровь {victim}. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} виртуозно провел(а|о|и) атаку и контратаковал(а|о|и). {victim} получа(е|ю)т {value} урона.", "[hit]{actor} сделал(а|о|и) резкий замах правой рукой, но в последний момент изловчил(ся|ась|ось|ись) и ударил(а|о|и) левой ногой. {victim} не ожидал(а|о|и) такой подлости. {victim} получа(е|ю)т {value} урона.", "[hit]Стоило только {victim} замахнуться, как {actor} резко ударил(а|о|и) (его|ее|их) по больному месту. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} отош(ел|ёл|ла|ло|ли) в сторону, и {victim} с разбега врезал(ся|ась|ось|ись) в стену. {victim} получа(е|ю)т {value} урона.", "[hit]Издавая зловещие звуки, {actor} сжима(ет|ют) {victim} что есть силы в своих объятиях! {victim} получа(е|ю)т {value} урона.", "[hit]{actor} броса(е|ю)т пыль в глаза {victim} и подло бь(ё|ю)т. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} замеча(е|ю)т слепую зону у {victim} и атаку(е|ю)т с этой стороны. {victim} получа(е|ю)т {value} урона.", "[hit]Тщательно спланированная атака {actor} достигла цели. {victim} получа(е|ю)т {value} урона.", "[hit]«Получи, жалк(ий|ая|ое|ие) {victim}! Почувствуй(те) силушку геройскую!» {victim} получа(е|ю)т {value} урона.", "[hit]Сотворив магический знак, {actor} потоком воздуха толкнул(а|о|и) {victim} на острые камни. {victim} получа(е|ю)т {value} урона.", "[hit]Сильный удар {actor} сбил всю спесь с {victim}. {victim} получа(е|ю)т {value} урона.", "[hit]Магией {actor} изменяет внутреннюю структуру противника. Перебои в работе сердца наносят {victim} заметный урон. {victim} получа(е|ю)т {value} урона.", "[hit]Взмах руки — и магическая волна сбивает {victim} с ног. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} оплета(е|ю)т корнями {victim} и пыта(е|ю)тся покалечить жертву. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} взмахива(е|ю)т рукой — и из (его|её|их) рукава вылетают несколько острых, словно лезвие, карт. {victim} получа(е|ю)т {value} урона.", "[hit]Дразня {}, {} руки. С {} так нельзя, {} такой ошибки не {} и мощным апперкотом {}. Всхрюкнув {}, {} навзничь. {victim} получа(е|ю)т {value} урона.", "[hit]{victim} пропуска(ет|ют) легкий тычок. {victim} получа(е|ю)т {value} урона.", "[hit]{actor} быстро прицелил(ся|ась|ось|ись), изготовил(ся|ась|ось|ись) и в стремительном рывке обрушил(а|о|и) разящий удар на {victim}. {victim} получа(е|ю)т {value} урона.", /* Тяжёлый удар */
    "[might]Как следует размахнувшись, {actor} одним сильным ударом достал(а|о|и) {victim}. {victim} получа(е|ю)т {value} урона.", "[might]После короткого и очень сильного удара {actor} по телу {victim} прокатилась волна боли. {victim} получа(е|ю)т {value} урона.", "[might]{victim} получил(а|о|и) чрезвычайно сильный удар от {actor}. {victim} получа(е|ю)т {value} урона.", "[might]Собрав всю злобу и силу в один удар, {actor} обрушил(а|о|и) его на {victim}. {victim} получа(е|ю)т {value} урона.", "[might]Взяв размах от плеча, {actor} сокрушительным ударом покалечил(а|о|и) {victim}. {victim} получа(е|ю)т {value} урона.", "[might]Затаив злобу лютую, с особой жестокостью ударил {actor} {victim}. {victim} получа(е|ю)т {value} урона.", "[might]Грозно выпучив глаза, {actor} испустил(а|о|и) боевой клич и врезал(а|о|и) {victim} по полной. {victim} получа(е|ю)т {value} урона.", /* Отравление */
    "[poison]Яд тянет из {victim} силы. {victim} получа(е|ю)т {value} урона.", "[poison]{victim} чувству(ет|ют) себя всё хуже. {victim} получа(е|ю)т {value} урона.", "[poison]Отрава вытягивает жизнь из {victim}. {victim} получа(е|ю)т {value} урона.", "[poison]Яд неумолимо отнимает здоровье {victim}. {victim} получа(е|ю)т {value} урона.", "[poison]{victim} чувству(е|ю)т себя всё хуже. Отравление съедает силы. {victim} получа(е|ю)т {value} урона.", "[poison]{victim} чувству(е|ю)т действие яда. {victim} получа(е|ю)т {value} урона.", "[poison]{victim} страда(е|ю)т от отравления. {victim} получа(е|ю)т {value} урона.", "[poison]Головокружение и тошнота — не самое страшное, куда серьёзнее {victim} показалась накатившая слабость. {victim} получа(е|ю)т {value} урона.", "[poison]{victim} отравлен(а|о|ы). {victim} получа(е|ю)т {value} урона.", "[poison]Сильное отравление ослабляет {victim}. {victim} получа(е|ю)т {value} урона.", "[poison]Отравление грозит {victim} летальным исходом. {victim} получа(е|ю)т {value} урона.", "[poison]{victim} охвачен(а|о|ы) ядовитыми парами. {victim} получа(е|ю)т {value} урона.", "[poison]Яд растекается по венам {victim}. {victim} получа(е|ю)т {value} урона.", "[poison]Раны {victim} пульсируют и источают смрад. {victim} получа(е|ю)т {value} урона.", "[poison]Отравление медленно убивает {victim} изнутри. {victim} получа(е|ю)т {value} урона.", "[poison]Яд на мгновение парализует {}, и (тот|та|то|те) пропуска(ет|ют) серию быстрых ударов противника. {victim} получа(е|ю)т {value} урона.", "[poison]{victim} задыха(е|ю)тся. {victim} получа(е|ю)т {value} урона.", /* Ядовитое облако */
    "[poisoncloud]{victim} оказал(ся|ась|ось|ись) в созданном {actor} облаке яда.", "[poisoncloud]Быстро создав ядовитое облако, {actor} окутал(а|о|и) им {victim}.", "[poisoncloud]{actor} создал(а|о|и) вокруг {victim} ядовитое облако.", "[poisoncloud]{victim} задыха(е|ю)тся и кашля(е|ю)т в созданном {actor} ядовитом облаке.", "[poisoncloud]Ядовитое облако, сотворённое {actor}, окутало {victim}.", "[poisoncloud]Ядовитое облако, созданное {actor}, обволокло {victim}.", "[poisoncloud]{actor} создал(а|о|и) странный пар вокруг {victim}, и (тот|та|то|те) начал(а|о|и) задыхаться.", "[poisoncloud]{actor} создал(а|о|и) ядовитое облако вокруг {victim}.", "[poisoncloud]«Нюхни(те) газу, {victim}!» — заверша(е|ю)т своё заклинание {actor}.", "[poisoncloud]Глотнув ярко-зелёной жидкости из подозрительной бутылочки, {actor} дела(е|ю)т выдох в сторону {victim}, отчего вокруг последн(его|ей|их) образуется сфера ядовитого вещества.", /* Удар вампира */
    "[vamp]Жаждя крови {victim}, {actor} вонзил(а|о|и) зубы в (его|ее|их) тело. От такой атаки {victim} потерял(а|о|и) {value} HP, а {} приобрел(а|о|и) {vamp} HP.", "[vamp]Вконец остервенев от злости, {actor} вцепил(ся|ась|ось|ись) зубами в {victim} и нанес(ла|ло|ли) (ему|ей|им) {value} единиц(у|ы) урона, при этом восстановив {vamp} HP.", "[vamp]{actor} вспомнил(а|о|и), что из оружия у (него|нее|ней|них) есть ещё и зубы. Вцепившись ими в {victim}, он(а|о|и) восстановил(а|о|и) {vamp} HP и нанес(ла|ло|ли) противник(у|ам) {value} единиц(у|ы) урона.", "[vamp]Хорошо прицелившись, {actor} прыгнул(а|о|и) и впил(ся|ась|ось|ись) зубами в {victim}, нанеся (ему|ей|им) {value} единиц(у|ы) урона и восстановив себе {vamp} HP.", "[vamp]Выждав подходящий момент для сложной атаки, {actor} с силой грызанул(а|о|и) {victim} и, почувствовав (его|ее|их) кровь, восстановил(а|о|и) {vamp} HP. От укуса {} потерял(а|о|и) {value} HP.", "[vamp]{actor} зубами впил(ся|ась|ось|ись) в {victim}, нанес(ла|ло|ли) {value} урон(а) и восстановил(а|о|и) {vamp} HP.", "[vamp]Даже самая толстая кожа не спасла бы от укуса {actor}. {victim} проща(е|ю)тся с {value} HP, из которых {vamp} HP переход(и|я)т к {}.", "[vamp]{actor} вытянул(а|о|и) из {} {value} HP и излечил(а|о|и) свои раны на {vamp} HP.", "[vamp]Битва — битвой, а обед по расписанию. {actor} искусал(а|о|и) {victim} на {value} урон(а), укрепив свои силы на {vamp} HP.", "[vamp]{actor}, несколько проголодавш(ий|ее|ая|ие)ся от изнурительной битвы, отведал(а|о|и) {vamp} капель кровушки {victim}, лишивш(его|ей|их)ся {value} HP.", "[vamp]Мимолётное касание, шёпотом сказанное заклинание,- и {value} единиц(у|а|ы) жизненных сил покида(е|ю)т {victim}, восстановив {actor} {vamp} HP.", /* Шаг в сторону */
    "[ue]Серией быстрых движений {actor} дезориентиру(ет|ют) {victim}.", "[ue]{actor} ловко уш(ел|ла|ло|ли) в сторону от {victim}.", "[ue]{actor} мастерски уш(ел|ла|ло|ли) от атаки {victim}.", "[ue]{actor} запутывает противника серией обманных движений и ловко заходит (ей|ему|им) за спину.", "[ue]{actor} сразу заметил(а|о|и) простую уловку {victim} и с ухмылкой на лице увернул(ся|ась|ось|ись), просто шагнув за спину и дезориентировав противника", /* Увернулся */
    "[eva]{actor} носит(ся|ась|ось|ись) кругами вокруг {victim}, вынуждая (его|ее|их) промахнуться.", "[eva]Отточенным движением {actor} уш(ел|ла|ло|ли) из-под удара.", "[eva]{actor} увернул(ся|ась|ось|ись) от {victim} и (его|ее|их) чудовищной силы удара.", "[eva]{actor} увернул(ся|ась|ось|ись) от удара.", "[eva]{actor} резко качнул(ся|ась|ось|ись) в сторону, и {victim} промахнул(ся|ась|ось|ись).", "[eva]{actor} провел(а|о|и) обманное движение — и {victim} промазал(а|о|и).", "[eva]Солнце ослепило {victim}, и (тот|та|то|те) промахнул(ся|ась|ось|ись) по {actor}.", "[eva]{victim} слишком долго собирал(ся|ась|ось|ись) с мыслями, и удар пришёлся в никуда.", "[eva]{victim} «крякнул(а|о|и)» и промахнул(ся|ась|ось|ись).", "[eva]Перемудрив с обманными движениями, {victim} промахнул(ся|ась|ось|ись).", "[eva]{victim} поднатужил(ся|ась|ось|ись)… и промахнул(ся|ась|ось|ись)…", "[eva]{victim} промахнул(ся|ась|ось|ись)! {victim} промахнул(ся|ась|ось|ись)!", "[eva]{actor} вовремя подал(ся|ась|ось|ись) назад, и {victim} промахнул(ся|ась|ось|ись).", "[eva]{actor} успел(а|о|и) отбежать подальше, пока {victim} замахивал(ся|ась|ось|ись).", "[eva]Слишком сильно размахнувшись, {victim} сбил(ся|ась|ось|ись) с темпа и не попал(а|о|и) по {actor}.", "[eva]Сильнейший удар {victim} со свистом рассёк воздух, даже не задев {actor}.", "[eva]Попавшая в глаз {victim} соринка сорвала атаку, и он(а|о|и) промахнул(ся|ась|ось|ись).", "[eva]{victim}, готовясь к сильному удару, совсем забыл(а|о|и) о точности и промахнул(ся|ась|ось|ись).", "[eva]Явно считая, что сила есть, а точности не надо, {victim} промахнул(ся|ась|ось|ись) по {actor}.", "[eva]{victim} крякнул(а|о|и) и промахнул(ся|ась|ось|ись).", "[eva]Прыжок, кувырок, перекат, снова перекат… Отскок! {actor} так верт(и|я)тся, что {victim} никак не мо(жет|гут) попасть по (нему|ней|ним).", "[eva]{victim} бь(ет|ют) не в бровь, не в глаз, а мимо цели.", "[eva]{victim} дела(е|ю)т резкий выпад, но {actor} успева(е|ю)т уйти с линии удара.", "[eva]{victim} дела(е|ю)т так много обманных движений, что сам(а|о|и) забыва(е|ю)т, куда собирал(ся|ась|ось|ись) ударить.", "[eva]{victim} поскользнул(ся|ась|ось|ись), и удар прошёл мимо {actor}.", "[eva]Пытаясь смертельно поразить {actor}, {victim} поража(е|ю)т (его|её|их) лишь своей неуклюжестью. Промах!", "[eva]{victim} исполня(е|ю)т серию эффектных ударов, но ни один из них не достигает цели. {actor} сдержанно аплодиру(е|ю)т.", "[eva]Великолепная стойка! Великолепный замах… И такой же великолепный промах… Эх, {victim}, а ведь всё так хорошо начиналось!", "[eva]{victim} разбежал(ся|ась|ось|ись), чтобы ударить с разбега, но споткнул(ся|ась|ось|ись) и улетел(а|о|и) в овраг.", "[eva]{actor} удачно париру(е|ю)т удар {victim}", "[eva]Умелая подсечка не дала результатов. Голова {victim} {} рядом с придорожным камнем, чудом избежав повреждений.", "[eva,might]Сильный удар нанёс(ла|ло|ли) {victim}. Сильный. Но не точный — {actor} легко уворачива(е|ю)тся.", "[eva,might]Сильнейший удар {victim} со свистом рассек воздух, даже не задев {actor}.", "[eva,fire]Слишком долго готовясь к атаке, {victim} упустил(а|о|и) подходящий момент, и (его|ее|их) огненный шар не попал в цель.", "[eva,fire]{victim} запустил(а|о|и) шар огня в {}, но не тут-то было! {actor} виртуозно уклонил(ся|ась|ось|ись) от пламени.", "[eva,fire]{actor} завороженно проводил(а|о|и) взглядом пролетевший мимо огненный шар.", "[eva,fire]{actor} увернул(ся|ась|ось|ись), и огненный шар пролетел мимо н(его|её|их).", "[eva,stunHit]{victim} разбежал(ся|ась|ось|ись) и пронес(ся|лась|лось|лись) мимо {actor}.", "[eva,stunHit]{victim} бросил(ся|ась|ось|ись) в сторону {actor}, но увы, проскочил(а|о|и) мимо.", "[eva,vamp]{victim} клацнул(а|о|и) зубами рядом с {actor}, не сумев вцепиться в (него|нее|них).", "[eva,vamp]{actor} ускользнул(а|о|и) от зубов {victim}.", "[eva,vamp]{victim} укусил(а|о|и) себя вместо {actor}.", "[eva,vamp]Слишком сильно открыв рот для укуса, {victim} ощутил(а|о|и) боль в челюсти и не смог(ла|ло|ли) укусить {actor}.", "[eva,vamp]{victim} попытал(ся|ась|ось|ись) укусить {actor}, но промахнул(ся|ась|ось|ись).", "[eva,vamp]{victim} раззявил(а|о|и) рот, но подходящий для укуса момент уже был упущен.", "[eva,vamp]{victim} промахнул(ся|ась|ось|ись), бесполезно клацнув зубами.", /* Помощь компаньона, без повреждения */
    "[companion,eva]{companion} толкнул(а|о|и) {victim}, не позволив тем самым атаковать {actor}.", "[companion,eva]Удивительно ловко двигаясь, {companion} отвлек(ла|ли) внимание {victim} на себя.", "[companion,eva]{victim} уже был(а|о|и) готов(а|ы) убить {actor}, но положение спас(ла|ло|ли) {companion}, неожиданно налетев на врага откуда-то сбоку!", "[companion,eva]{victim} был(а|о|и) готов(а|ы) нанести очень опасную атаку по {actor}, но того не дал(а|о|и) сделать {companion}.", "[companion,eva]Вовремя помешав {victim}, {companion} удалось и прервать вражескую атаку, и не получить повреждений.", "[companion,eva]{companion} отвлек(ла|ло|ли) {victim}, и т(а|о|от) промахнулся.", "[companion,eva]{companion} бросается на {victim}, блокируя атаку, и {actor} не получает урон.", "[companion,eva]Не позволив {victim} провести атаку, {companion} не получает урона.", "[companion,eva]«Ха-ха! Съел(а|о|и)?» – крикнул(а|и) {actor}, когда {companion} отвлек(ла|ло|ли) {victim}, сорвав (тому|той|тем) атаку.", "[companion,eva]«Что, не вышло?!» – крикнул(а|о|и) {actor}, когда {companion} отвлек(ла|ло|ли) {victim}, не позволив (тому|той|тем) атаковать.", "[companion,eva]Отвлекая врага, {companion} сам(а|о|и) чуть не попал(а|о|и) под удар, но обошлось!", "[companion,eva]{companion} отвлек(ла|ло|ли) {victim}, и (тот|та|то|те) промахнул(ся|ась|ось|ись).", "[companion,eva]{companion} самоотверженно бросил(ся|ась|ось|ись) на защиту. Урона он(а|о|и) нанес(ла|ло|ли) немного, но атаку {victim} таки сорвал(а|о|и).", "[companion,eva]Уклоняясь от вражеских стрел, заклинаний и меча, {companion} успешно испытывает судьбу и не даёт {victim} атаковать.", "[companion,eva]{companion} зашуршал(а|о|и) в кустах и {victim}, испугавшись засады, отступил(а|о|и).", "[companion,eva]{companion} появля(е|ю)тся в самый ответственный момент и спасает {actor} от злодеяний {victim}.", "[companion,eva]{companion} незаметно подкрал(ся|ась|ось) сзади и напугал(а|о|и) {victim}, котор(ому|ой|ым) теперь не до атаки.", "[companion,eva]Вовремя помешав {}, {companion} сумел(а|о|и) прервать (его|её|их) атаку и не получить повреждений.", "[companion,eva]{companion} исполнил(а|о|и) странный, завораживающий танец, и {victim} на мгновение изумлённо замер(ла|ло|ли).", "[companion,eva]Грациозно уклоняясь от шквала вражеских атак, {companion} успешно испытыва(е|ю)т судьбу и отвлека(е|ю)т {victim}.", "[companion,eva]{victim} был(а|о|и) готов(а|о|ы) провести очень опасную атаку по {actor}, но того не дал(а|о|и) сделать {companion}.", /* Помощь компаньона, с повреждением */
    "[companion,hit]Отвлекая врага от {actor}, {companion} сам(а|о|и) попал(а|о|и) под удар.", "[companion,hit]Спасая {actor}, {companion} принял(а|о|и) удар {victim} на себя.", "[companion,hit]«А за это, {victim}, придётся ответить!» – крикнула {actor}, когда {companion} отвлек(ла|ло|ли) врага на себя, получив при этом ранение.", /* Удар по компаньону */
    "[companion,mush]{actor} ранил(а|о|и) {companion}.", "[companion,mush]Кровь {companion} тугой струёй хлестнула по {victim}. Атака {actor} нашла не ту цель…", /* Заморозка */
    "[slow]Легко, почти непринуждённо, {actor} охлажда(ет|ют) воздух вокруг {victim}, сковывая (его|ее|их) движения.", "[slow]{actor}, сосредоточившись, ударил(а|о|и) {victim} потоком липкого холодного воздуха, сковав (его|ее|их) члены и замедлив движения.", "[slow]Собравшись, {actor} направля(ет|ют) инеевые искры в сторону врага. Воздух вокруг {victim} замерзает и густеет, замедляя (его|ее|их) движения.", "[slow]{actor} взывает к зимним ветрам и {victim} окутывает ужасный холод, (его|ее|их) движения замедляются.", "[slow]Призывая в помощь зимние ледяные ветра, {actor} бьет холодом, и {victim}, покрываясь инеем, замедля(ется|ются).", "[slow]{actor} встряхнул(а|о|и) кисти рук и на кончиках (его|ее|их) пальцев образовались ледяные иглы. Сконцентрировавшись, (он|она|оно|они) нанес(ла|ло|ли) удар холодом. Движения {victim} замедлились.", "[slow]Собравшись, {actor} направляет инеевые искры в сторону враг(а|ов). Воздух вокруг {victim} замерзает и густеет, замедляя (его|её|их) движения.", "[slow]{actor} сделал(а|о|и) глубокий вдох и резко выдохнул(а|о|и). {victim} ощутил(а|о|и) как идёт мороз по коже и замедляются (его|её|их) движения.", "[slow]{actor} вызыва(е|ю)т лютую стужу и направля(е|ю)т холод в сторону {victim}, замедляя (его|её|их) движения.", /* Ускорение */
    "[speed]Скорость движений {actor} сильно возросла после того как он(а|о|и) сделал(а|о|и) магический пасс.", "[speed]{actor} использу(е|ю)т скрытые резервы организма и заметно ускоря(е|ю)тся.", "[speed]{actor} перенаправля(е|ю)т свою ци в нижнее русло и начина(е|ю)т двигаться быстрее.", "[speed]{actor} замыка(е|ю)т на себе потоки магии и начина(е|ю)т двигаться значительно быстрее.", "[speed]{actor} концентриру(е|ю)тся, и скорость (его|её|их) движений возрастает.", "[speed]Обуздав стихию ветра, {actor} ускоря(е|ю)т движения.", "[speed]Воспользовавшись магией, {actor} начина(е|ю)т двигаться невероятно быстро.", "[speed]{actor} сотворя(е|ю)т сложный знак и значительно ускоря(е|ю)тся.", "[speed]Сделав сложный пасс, {actor} начина(е|ю)т двигаться быстрее.", /* Волшебный гриб */
    "[mush]«Волшебный гриб!» — воскликнул(а|о|и) {actor}, запихивая в рот мухомор.", "[mush]Откуда-то {actor} достал(а|о|и) и отправил(а|о|и) в рот волшебный синий гриб.", "[mush]{actor} случайно съел(а|о|и) обычный шампиньон, однако, благодаря самовнушению, всё равно получил(а|о|и) приток сил.", /* Шар огня */
    "[fire]{actor} броса(е|ю)т огненный шар в {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]Выпущенный {actor} шар огня ожёг {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]Взывая к пламени, {actor} выпуска(е|ю)т огненный шар в ничего не подозревающ(его|ую|ее|их|ий) {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} не успел(а|о|и) увернуться от возникшего прямо из воздуха всполоха пламени. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} выпустил(а|о|и) шар огня. Волшебное пламя опалило ошарашенн(ого|ое|ую|ых) {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} метнул(а|о|и) огненный шар и опалил(а|о|и) {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]Почувствовав тепло, {actor} сформировал(а|о|и) его в огненный шар и ударил(а|о|и) им по {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} взмахива(е|ю)т руками, и магическое пламя стремительно покрывает {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} извл(ёк|екла|екло|екли) из подсумка запечатанную колбу и швырнул(а|о|и) её в противника. {victim} визж(и|а)т и пыта(е|ю)тся стряхнуть с себя алхимическое пламя. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} дела(е|ю)т щелчок пальцами — и {victim} вспыхива(е|ю)т ярким пламенем. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} рассвирепел(а|о|и) от ран настолько, что {} гнев материализовался в поток первородного пламени, которое набросилось на {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} концентриру(ет|ют) магическую энергию и выпуска(ет|ют) пылающий огненный шар. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} выпустил(а|о|и) два огненных шара, но {victim} ловко увернул(ся|ась|ось|ись) и уже готовил(ся|ась|ось|ись) к удару, как оба шара, закрутившись по спирали, развернулись и врезались (ему|ей|им) в спину. Коварное самонаводящееся заклинание подожгло {victim}. {victim} получа(е|ю)т {value} урона.", "[fire]{actor} создал(а|о|и) огненный шар и направил(а|о|и) его прямо во врага… Есть контакт! {victim} получа(е|ю)т {value} урона.", /* Пламя (после Шара огня) */
    "[flame]{victim} {} сбить с себя пламя. {victim} получа(е|ю)т {value} урона.", "[flame]Безжалостный огонь жжёт {victim}. {victim} получа(е|ю)т {value} урона.", "[flame]Языки пламени гуляют по {victim}. {victim} получа(е|ю)т {value} урона.", "[flame]Веселые языки пламени пляшут по {victim}. {victim} получа(е|ю)т {value} урона.", "[flame]{victim} меч(е|у)тся, охваченн(ый|ая|ое|ые) пламенем. {victim} получа(е|ю)т {value} урона.", "[flame]{victim} охвачен(а|о|ы) огнём. {victim} получа(е|ю)т {value} урона.", "[flame]Жаркое пламя обжигает {victim}. {victim} получа(е|ю)т {value} урона.", "[flame]Пламя окутывает {victim}. {victim} получа(е|ю)т {value} урона.", "[flame]Не угасшее до конца пламя продолжает жечь {victim}. {victim} получа(е|ю)т {value} урона.", "[flame]Пламя в недоступном месте вызвало у {victim} ужасную боль. {victim} получа(е|ю)т {value} урона.", "[flame]{victim} гор(и|я)т. {victim} получа(е|ю)т {value} урона.", "[flame]{victim} получа(е|ю)т сильные ожоги. {victim} получа(е|ю)т {value} урона.", "[flame]{victim} пыла(е|ю)т словно факел(ы). {victim} получа(е|ю)т {value} урона.", "[flame]Пламя облизывает {victim}. {victim} получа(е|ю)т {value} урона.", /* Разбег-толчок */
    "[stunHit]{actor} разбежал(ся|ась|ось|ись) и в прыжке толкнул {victim}. {victim} получа(е|ю)т {value} урона.", "[stunHit]{actor} с разбега пнул(а|о|и) {victim}. {victim} получа(е|ю)т {value} урона.", "[stunHit]Разбежавшись, {actor} толкнул(а|о|и) {victim}. {victim} получа(е|ю)т {value} урона.", "[stunHit]Набрав скорость, {actor} врезал(ся|ась|ось|ись) всей массой в противника. {victim} получа(е|ю)т {value} урона.", "[stunHit]Дождавшись, когда {victim} окаж(е|у)тся на достаточном расстоянии, {actor} разбежал(ся|ась|ось|ись) и ударил(а|о|и). {victim} получа(е|ю)т {value} урона.", //'[stunHit]Примерившись, {actor} толчком выколотил(а|о|и) {value} единиц(у|ы) урона из {victim}.',
    "[stunHit]Подобно дикому кабану {actor} нес(е|у)тся вперед и таран(и|я)т {victim} так, что он(а|о|и) отлета(е|ю)т на несколько метров. {victim} получа(е|ю)т {value} урона.", "[stunHit]{actor} разбежал(ся|ась|ось|ись) и впечатал(а|о|и) {victim} в дерево. {victim} получа(е|ю)т {value} урона.", "[stunHit]Стремителен бросок {actor} к противнику! {victim} получа(е|ю)т {value} урона.", /* Шок (от Разбег-толчок)*/
    "[stun]{victim} в шоке и не мо(жет|гут) атаковать.", "[stun]{victim} пересчитыва(е|ю)т звёздочки, кружащиеся у (него|нее|них) над голов(ой|ами).", "[stun]{victim} пыта(е|ю)тся восстановить равновесие.", "[stun]{victim} было подумал(а|о|и) ударить, но оказал(ся|ась|ось|ись) не в состоянии додумать мысль.", "[stun]Оглушенн(ый|ая|ое|ые) {victim} вяло крут(и|я)т голов(ой|ами), не решаясь атаковать.", "[stun]{victim} пыта(е|ю)тся прийти в себя.", "[stun]Пропустив сильный удар, {victim} пыта(е|ю)тся устоять на ногах.", "[stun]{victim} с увлечением лов(и|я)т летающие вокруг голов(ы) звёздочки.", "[stun]У {victim} троится в глазах.", "[stun]{victim} не понима(е|ю)т, что происходит: всё плывет перед глазами.", /* Регенерация */
    "[heal]Сконцентрировавшись, {actor} восстановил(а|о|и) здоровье. {actor} восстанавлива(е|ю)т {value} здоровья.", "[heal]{actor} восстанавлива(е|ю)т {value} здоровья.", "[heal]«Исцеление — это то, что сейчас важнее всего», — подумал(а|о|и) {actor} и заживил(а|о|и) рану. {actor} восстанавлива(е|ю)т {value} здоровья.", "[heal]{} пот. {actor} восстанавлива(е|ю)т {value} здоровья.", "[heal]{actor} отскакива(е|ю)т в сторону и, воспользовавшись короткой паузой, лечится. {actor} восстанавлива(е|ю)т {value} здоровья.", "[heal]Близость победы окрылила {actor}. {actor} восстанавлива(е|ю)т {value} здоровья.", "[heal]Задействовав внутренние резервы организма, {actor} восстановил(а|о|и) здоровье. {actor} восстанавлива(е|ю)т {value} здоровья.", "[heal]{actor} восстановил(а|о|и) немного здоровья. {actor} восстанавлива(е|ю)т {value} здоровья.", "[heal]{actor} сосредоточил(ся|ась|ось|ись) и восстановил(а|о|и) здоровье. {actor} восстанавлива(е|ю)т {value} здоровья.", /* Помощь игрока */
    "[godheal]Вокруг {} засветился воздух и (его|ее|их) раны затянулись, излечив {value} HP.", "[godheal]Банка с йодом? Что мне с ней сделать, выпить?", "[godheal]Почувствовав жжение в теле, {} замечает, что (его|ее|их) раны затягиваются. {actor} восстанавлива(е|ю)т {value} здоровья.", "[godheal]{} исцелен на {value} HP.", "[godheal]Зелёный луч ударил с небес, исцеляя {} на {value} HP.", //crit
    "[godheal]Снег посыпался на {}, восстанавливая {value} HP.", "[godheal]Банка с йодом? Что мне с ней сделать, выпить?", "[godheal]Ха-ха, божественная регенерация!", "[godheal]{} небольшую бутылочку эликсира: «Странно, не помню, чтобы покупал(а|о|и)...» {actor} восстанавлива(е|ю)т {value} здоровья.", "[godhit]Неведомая сила подняла {} в воздух и швырнула под ноги {}.", "[godhit]Молния существенно поджарила {}.", "[godhit]Вот значит как работают вакуумные бомбы…", "[godhit]Бабочка неудачно приземлилась на {}, выведя (того|ту|то|тех) из равновесия, результат — серьёзная шишка у {}.", "[godhit]На горизонте показалась яркая точка, стремительно приближающаяся к {}. Мгновение и шар огня выжег аккуратный круг там, где находился противник.", "[godhit]«Неужели… Это… Случилось?!» — ошарашенно шепчет {}, наблюдая за тем, что подошедший отряд стражников делает с {}.", "[godhit]Неожиданно огромный перст опустился с небес прямо на {}. {} издал(а|о|и) сдавленный визг.", "[godhit]Лёгкий ветерок внезапно снёс {} с места и впечатал в скалу. {} злобно смеётся над оглушённым монстром.", "[godhit]Почувствовав приятный аромат жареного, {} замечает, что {} охватило яркое пламя. С душераздирающим визгом он(а|о|и) медленно обуглива(е|ю)тся.", "[godhit]{} оказал(ся|ась|ось|ись) не готов(а|о|ы) к падению метеорита. В образовавшемся кратере будет сложно искать добычу.", "[godhit]«Падающие наковальни — это, конечно, хорошо, но вот куда они потом пропадают?» — задался {} вопросом, созерцая то, во что превратил(ся|ась|ось|ись) {}.", "[godhit]{} еле успел(а|о|и) отскочить от взрыва шаровой молнии. {} подлетел(а|о|и) в воздух и больно упал(а|о|и) вниз.", "[godhit]{} внезапно провалива(е|ю)тся в разверзшуюся под ногами яму и получа(е|ю)т существенные повреждения.", "[godhit]Небольшой кусок скалы внезапно обрушился с огромной высоты и набрал скорость достаточную, чтобы нанести {} серьёзный урон.", /* Отдых, начало */
    "[rest]«Дела делами, а отдыхать и кушать надо — все-таки не из железа и камня я сделан(а|о)».", "[rest]«Вдали виднеется многовековой дуб. Прилягу под ним, думу подумаю…»", "[rest]{} споткнул(ся|ась|ось|ись) и упал(а|о|и), но сил подняться не нашлось. В таком состоянии тело не годится ни для путешествия, ни для сражения. Нужно сделать остановку и собрать всю свою волю в кулак! Ну и раны подлатать.", "[rest]«Царапина — это пустяки, ушиб — чепуха… А вот это уже серьёзно… Если не подлечиться сейчас, я до города не дотяну».", "[rest]Отправилл(ся|ась|ось|ись) искать подорожник.", "[rest]«Так дело дальше не пойдет: ноги заплетаются, спина нестерпимо ноет, а в животе не на шутку разыгрался голодный бунт. Все! Хватит! Отдых!»", "[rest]Пошатываясь от усталости, {} наш(ел|ла|ло|ли) спокойное место и дал(а|о|и) себе отдохнуть.", "[rest]«Ну и гадость!» — {actor} выпивает очередную порцию запасенного когда-то лечебного отвара.", /* Отдых, регенерация */
    "[rest]Раны начинают затягиваться. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]{actor} стиснул(а|о|и) зубы и со второй попытки всё-таки вправил(а|о|и) недавно полученный вывих. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]{actor} уделил(а|о|и) внимание своему исстрадавшемуся телу: сделал(а|о|и) перевязку, промыл(а|о|и) раны, ссадины, — и облегчение не заставило себя долго ждать. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]{actor} прикладыва(ет|ют) прохладные примочки к ушибленному плечу, тем самым снимая отёк и успокаивая боль. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Обнаружив неподалёку небольшой источник, {actor} решил(а|о|и) сделать несколько глотков и промыть раны. Появилось ощущение свежести, спокойствия и уверенности. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Проходящий мимо монах ткнул дорожной тростью в {actor}, и на (нем|ней|нем|них) сразу начали заживляться раны. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Как хорошо просто полежать, дав своему телу немного отдохнуть, восстановить силы и здоровье». {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Наверное, стоит приложить что-нибудь холодное к ушибленной ноге и дать ей немного отдыха». {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Рана загнила. Делать нечего, чтобы зараза не пошла дальше, придётся прижигать». {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Отвар из чистотела помог {actor} избавиться от раздражений на коже, чем сильно поднял настроение. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Так вот от чего у меня плечо зудит!» — облегченно восклица(ет|ют) {actor}, выдирая кусок зуба из своей раны. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Сделав настой календулы, {actor} промыва(ет|ют) свои воспалённые и слезящиеся от пыли глаза. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Втерев в раны наскоро приготовленную мазь, {actor} сразу же почувствовал(а|о|и) себя лучше. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Война войной, а обед — по расписанию. Скушав маленько припасов, {} почувствовал(а|о|и) себя лучше. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Использовав совет одного целителя, {} собрал(а|о|и) немного паутины и аккуратно уложил(а|о|и) ее в промытую рану. Буквально на глазах кровь свернулась, образовав защитный слой. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]{actor} прижига(е|ю)т сильно кровоточащую рану. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]{actor} накладыва(е|ю)т повязку, как учили. Наука пошла на пользу. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Как приятно на время отбросить грозное оружие, вездесущий рюкзак и прилечь на землицу родную». {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Этот подорожник просто волшебный!». {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Медитация немного помогла. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Вот это мне повезло, попала бы чуть ниже — и конец приключениям…» — подумал(а|о|и) {actor}, вытаскивая стрелу, застрявшую чуть выше колена. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Вправляет вывихнутую конечность. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Крепкий отвар возвращает силы {actor}. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Лепит подорожник на царапины. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Накладывает повязку на рану. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Отвар целебных трав возымел силу. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Пара съеденных яблок улучшила настроение. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Практикует нетрадиционную медицину. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Прикладывает холодные медяки к ушибам. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Применяя целительную настойку на травах, помогает организму восстановить силы. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Пролетавшая мимо фея осыпала волшебной пыльцой. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Пьёт {} отвар. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]{} в позу лотоса и силой воли {}. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]{} слегка подкрепил(ся|ась|ось|ись). {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]{} чувствует, как легкие наполняются воздухом, а рассудок — ясностью. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Смазывает царапины лечебной мазью. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Стиснув зубы, зашивает глубокий порез. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Тело {} выгнулось в судорогах и, когда боль прошла, часть ран затянулась. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Удачно наложенная повязка облегчает боль. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Ужас, как же раскалывается голова… Может, есть смысл просто полежать, ни о чём не думая?» {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Ух ты, а подорожник помогает!» {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Целебные орочьи горчичники поправили здоровье, но оставили пару ожогов. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Эльфийских капель не найти полезней! Эльфийские капли от всех болезней!» — напевает {}. {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Этот подорожник просто волшебный!» {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]«Эх, а водичка-то из родничка просто прелесть». {actor} восстанавлива(е|ю)т {value} здоровья.", "[rest]Пролетавшая мимо фея {} в щёку. {} здоровее. {actor} восстанавлива(е|ю)т {value} здоровья.", /* Торговля */
    "[coins]Нет, таких торгашей надо вешать. {value} монет(а|у|ы) за {item}, он с ума сошёл!", "[coins]«Получил(а|о|и) {value} монет(а|у|ы) в награду за {item}».", "[coins]{value} монет(а|у|ы) за {item}. Честная сделка.", "[coins]«За {item} {value} монет(а|у|ы). Вот же ей Бо… бей лавочников, спасай Пандору!»", "[coins]«Эх, не зря я тащил(а|о|и) {item}», — решил(а|о|и) {}, пряча {value} монет(а|у|ы).", "[coins]«Мне чужого не надо, вот и продаю {item}. Тем более, {value} монет(а|у|ы) не лишн(яя|ие|их)».", "[coins]Применив пытливость и изворотливость ума, {} продал(а|о|и) {item} аж за {value} монет(а|у|ы). Перед продажей оставил(а|о|и) подпись «{}» на самом заметном месте — хоть какой-то заметный след в истории.", "[coins]«Цел(ая|ые|ых) {value} монет(а|у|ы) за {item}? В чём подвох, торговец?»", "[coins]«{value} монет(а|у|ы) за {item}? Ладно, забирай, я сегодня добр(ый|ая|ое)».", "[coins]«Что?! {value} монет(а|у|ы) за мои подвиги?! А {item} на обочине валял(ся|ась|ось|ись), по-твоему?! Ладно, не ори. По рукам. Проклятый торгаш».", "[coins]«Глупый торговец, отдал {value} монет(а|у|ы) за дешев(ый|ую|ое|ые) {item}».", "[coins]{} скептически смотр(ит|ят) на {value} монет(а|у|ы), вырученн(ую|ые|ых) за {item}, и, пожимая плечами, убира(ет|ют) деньги в карман.", "[coins]{}, остервенело торгуясь, получа(е|ю)т-таки {value} монет(а|у|ы) за {item}.", "[coins]«Отличная цена за {item}. Положил(а|о|и) {value} монет(а|у|ы) в кошелёк».", "[coins]{} грозно посмотрел(а|о|и) на спекулянта: «Ладно, давай сюда сво(ю|и|их|й) {value} монет(а|у|ы) и забирай {item}, пока я не передумал(а|о|и)».", //err
    "[coins]«Не торговцы, а жлобы! Я ему {item}, а он мне жалк(ую|ие|их) {value} монет(а|у|ы)! Небось втридорога продаст!»", "[coins]«А {value} монет(а|у|ы) за {item} гораздо лучше чем ничего…»", "[coins]«Слышь, ты, хапуга?! {value} монет(а|у|ы) за {item}?! Окстись! Давай деньги. Молчи, с тобой торг закончен…»", "[coins]«{value} монет(а|у|ы) за {item}? Да это же последний писк моды!»", "[coins]«{value} монет(а|у|ы) за {item} — это надо обмыть!»", "[coins]«{value} монет(а|у|ы) за {item}… Выйдешь ты на тракт… Нет, нет, ничего! Удачной торговли вам! И детям вашим! Крохобор…»", "[coins]С обречённым видом {} расста(ё|ю)тся с {item} всего за {value} монет(а|у|ы).", "[coins]День явно был не самым удачным. Всего {value} монет(а|у|ы) за первоклассн(ый|ую|ое|ые) {item}. Но это был единственный покупатель, и {} со смиренным лицом спрятал(а|о|и) деньги в карман.", "[coins]Торговка была хороша, даже слишком. И {} пришлось отдать {item} всего за {value} монет(а|у|ы).", "[coins]«{value} монет(а|у|ы) против плохоньк(ой|ого|их) {item}? Соглас(ен|на|но)».", "[coins]«Обманывать людей нехорошо… но так выгодно…» — думал(а|о|и) {}, пересчитывая {value} монет(а|у|ы), полученн(ую|ые|ых) за {item}.", "[coins]«{value} монет(а|у|ы) за {item} и неприятный запах — ну что за место?!»", "[coins]«{item} стоит не меньше {value} монет(а|у|ы)! Нет, так я найду другого покупателя! То-то же!»", "[coins]«Отличная сделка! {value} монет(а|у|ы) лучше, чем {item}».", "[coins]{item} остал(ся|ась|ось|ись) в лавке, а {value} монет(а|у|ы) забрал(а|о|и) {}.", "[coins]«Всего {value} монет(а|у|ы) за {item}?! Да они издеваются!»", "[coins]После долгих споров и препираний торговец все же согласился отдать {value} монет(а|у|ы) за {item}.", "[coins]«За прекрасн(ый|ую|ое|ые) {item} жалк(ую|их|ие) {value} монет(а|у|ы). Сволочи!»", "[coins]«Вынудил(а|о|и) торговца купить {item} за {value} монет(а|у|ы)».", "[coins]«Вшив(ая|ые|ых) {value} монет(а|у|ы) за {item}. Ворьё!»", "[coins]{value} монет(а|у|ы) — достойная плата за {item}.", "[coins]«Мошенники! Всего {value} монет(а|у|ы) за прекрасн(ый|ую|ое|ые) {item}!»", "[coins]«Безобразие! Жалк(ая|ие|их) {value} монет(а|у|ы) за редчайш(ий|ую|ее|ие) {item}?! Грабёж! Ох и жульё на здешнем рынке…»", //		'[coins]{} споткнул(ся|ась|ось|ись) о камень, а это оказался кошель с {value} монетами! Вот так повезло!',
    "[coins]«Городской травник, гоблин преклонных лет, долго изучал состав принесённых сухих трав, попутно рассказывая о их свойствах. Травы были оценены в {value} монет(а|у|ы)».", "[coins]Заметив у (меня|нас) в инвентаре {item}, торговец в ужасе отпрянул и заплатил {value} монет(а|у|ы) за то, чтобы (я|мы) выкинул(а|о|и) эту мерзость подальше.", "[coins]Творчески использовав классику торговли — обсчет, обвес и пересорт, продал(а|о|и) торговцу {item} за {value} монет(а|у|ы).", "[coins]Пытаясь продать {item}, {} рассказал(а|о|и) торговцу, через какие испытания прошла эта штуковина. Тот заявил, что подобной рухляди место в музее, но сюжет истории оценил в {value} монет(а|у|ы).", "[coins]«Уж лучше бы оставил(а|о|и) {item} валяться на дороге», — думал(а|о|и) {}, пряча в карман {value} монет(а|у|ы).", "[coins]«Ради этого ли (я|мы) полдня тащил(а|о|и) {item} на своём горбу?» — вопрошал(а|о|и) себя {}, кладя в кошелёк {value} монет(а|у|ы).", "[coins]«Продать {item} за {value} монет(а|у|ы)? Кого (я|мы) обманыва(ю|ем)? Ах да, торговца!»", "[coins]{} так увлек(ся|лась|лось|лись) рассказами о том, какие трудности (ему|ей|им) пришлось преодолеть, чтобы добыть {item}, что и не заметил(а|о|и), как все покупатели понемногу разошлись. {item} тоже куда-то пропал(а|о|и), а на столе лежал(а|о|и) {value} монет(а|у|ы).", "[coins]«Такое чувство, словно (я|мы) занима(юсь|емся) благотворительностью», — думал(а|о|и) {}, отдавая {item} за {value} монет(а|у|ы).", "[coins]«Опять, что ли, золотую жилу нашли? А иначе почему за невзрачн(ый|ую|ое|ые) {item} дают цел(ую|ые|ых) {value} монет(а|у|ы)?»", "[coins]Приврал(а|о|и), конечно, немного, но надо же было именно в этом городе оказаться знатоку {item}, уличившему во лжи. Больше {value} монет(а|у|ы) после этого неприятного инцидента никто не захотел платить.", "[coins]«{value} монет(а|у|ы) за {item}. Теперь буду только здесь продавать… Может и панталоны мои купишь?»", "[coins]«Всё труднее впарить торговцам {item}. Перепроизводство!» — бурч(и|а)т {}, засовывая {value} монет(а|у|ы) в кошель.", "[coins]«Дёшево и сердито продал(а|о|и) {item}», — подумал(а|о|и) {}, пряча {value} монет(а|у|ы).", "[coins]«Нет, таких торгашей надо вешать. {value} монет(а|у|ы) за {item}, он с ума сошел!»", "[coins]Сделав предложение, от которого невозможно отказаться, {} вруча(е|ю)т торговцу {item} и пряч(е|ю)т {value} монет(а|у|ы) в карман.", "[coins]«Ну зачем так кричать, уважаемый? За такую красоту, как {item}, хотел(а|о|и) с тебя в два раза больше взять, да постеснял(ся|ась|ось|ись). Отец скупости, всего {value} монет(а|у|ы) про(шу|сим), дешевле на всём базаре не найдёшь!»", "[coins]«{value} монет(а|у|ы)! Гуляем! Не зря подобрал(а|о|и) {item} из той гадости».", "[coins]«{value} монет(а|у|ы)? Точно?! Это же {item}! А, бескуд с тобой, давай деньги».", "[coins]«Отбил(а|о|и) у жадного торговца {value} монет(а|у|ы). Правда, в процессе битвы за металл потерял(а|о|и) {item}... Ну и ладно».", "[coins]{} удачно назвал(а|о|и) {item} «артефактом древних» и продал(а|о|и) (его|её|их) за {value} монет(а|у|ы).", "[coins]«Вы очень щедры! (Я|Мы) рад(а|о|ы), что избавил(ся|ась|ось|ись) от {item} аж за {value} монет(а|у|ы)!»", '[coins]«Хорош(ая|ий|ее|ие) {item}. А на плесень сбоку не смотри брезгливо — в ней химикалий полезный есть. "Пересилин" называется, болезни пересиливает — (я|мы) в книжке читал(а|о|и). Так что, давай сюда {value} монет(а|у|ы), да забирай, пока (я|мы) не передумал(а|о|и)!»', "[coins]«{value} монет(а|у|ы) за такой {item}? Да они явно сошли сума!»", "[coins]«Надеял(ся|ась|ось|ись), что за {item} получ(у|им) больше, чем {value} монет(а|у|ы). Эх… Ладно! По рукам!»", "[coins]{} состроил(а|о|и) глазки торговцу и сумел(а|о|и) продать {item} аж за цел(ую|ые|ых) {value} монет(а|у|ы). Торговец в умилении.", "[coins]«Хочешь сказать, что {item} сто(и|я)т {value} монет(а|у|ы)? Ну надо же! А ещё говорят, что (я|мы) не уме(ю|ем) торговаться!»", "[coins]«{item} нов(ый|ая|ое|ые), не бит(ый|ая|ое|ые), не крашенн(ый|ая|ое|ые)! Всего за {value} монет(а|у|ы)! Кто больше? Продано!»", '[coins]«Не тот я выбрал(а|о|и) рынок: один — жулик, у другого "сдачи нет"… А у этого… Хотя нет, {value} монет(а|у|ы) за {item}… Глупец! Это стоит гораздо дешевле!.. Нет, нет, это я о своём…»', "[coins]«{value} монет(а|у|ы) за {item}? Ладно, пойдёт, мне чужого не надо — поэтому и продаю».", "[coins]Камень неподалеку разлетелся на части, как фарфоровая копилка. Порывшись в осколках, {} с ликованием извлекает {value} монет(а|у|ы).", "[coins]«{value} монет(а|у|ы)? За {item}? Мне кажется, или вы меня где-то обма… Эй, стоять!!!, — прокричал(а|о|и) {} вслед уносящемуся на невообразимой скорости плуту. — Ну ладно, хоть что-то заплатил, но, честное слово, как обворовал».", "[coins]«Сбагрить какому-нибудь наивному богатому дурачку такой хлам, как {item}, за цел(ую|ые|ых) {value} монет(а|у|ы) — долг любого бедного героя».", "[coins]«{value} монет(а|у|ы) за {item}... На кружку эля наторговал(а|о|и), и то хорошо!»", "[coins]Доведя торговца до слез своим торгом, {} оставила {item} на прилавке и забрал(а|о|и) {value} монет(а|у|ы).", "[coins]«Да я же буквально Сам(а|о) Себя Без Ножа Режу такими сделками… Только из уважения к славному купеческому сословию — {item} за {value} монет(а|у|ы)».", /* Поднял */
    "[pickup]{item} лег(ла|ло|ли) в рюкзак как родн(ая|ой|ое|ые).", "[pickup]«Вроде бы всего лишь {item}, а приятно».", "[pickup]Обыскав место сражения, {} находит {item} и забирает добычу себе.", "[pickup]«{} всё равно больше не нужно, а мне {item} пригод(ится|ятся)».", "[pickup]«{item} самое место у меня в рюкзаке».", "[pickup]{}, довольн(ый|ая|ое|ые) собой, обыскав {}, убира(ет|ют) найденн(ый|ую|ое|ые) {item} к себе в сумку.", "[pickup]«Эх, с паршивой овцы хоть шерсти клок!» — думал(а|о|и) {}, пряча {item} в рюкзак.", "[pickup]«Что с {} взять, кроме {item}?»", "[pickup]Попрыгав и похлопав в ладоши от восторга, {} упаковыва(ет|ют) обнаруженн(ый|ую|ое|ые) {item} в рюкзак.", "[pickup]«Превосходно, вот и трофеями судьба не обделила», — думает {}, убирая {item} в рюкзак.", "[pickup]Битва закончена лишь тогда, когда собраны трофеи. {}, положив {item} к себе в рюкзак, продолжа(ет|ют) своё странствие.", "[pickup]Вытерев {item} о траву, {} упаковал(а|о|и) добычу в рюкзак.", "[pickup]«{}, воровато озираясь, прикарманил(а|о|и) {item}».", "[pickup]{} мертв(а|о|ы). {item} в рюкзаке. {} счастлив(а|о|ы).", "[pickup]«Нет худа без добра! Вот отличн(ый|ая|ое|ые) {item}, надо прибрать себе в рюкзак».", "[pickup]«Что тут у нас? {item}! Неплохо…»", "[pickup]«Сегодня явно мой день, столь восхитительн(ый|ую|ое|ые) {item} не каждый раз найдёшь. Надо бы (его|ее|их) к себе в рюкзак положить».", "[pickup]«Ну вот так всегда, никогда на них живого места нет: тут как-то неестественно вывернуто, там кость торчит, глаз вытек, рожа изуродована, а про шкуру так и вообще говорить нечего… Постойте-ка! А вот {item}, кажется, не очень помят(а|о|ы), да и кровью не пропитал(ся|ась|ось|ись). Решено. Беру!»", "[pickup]«{item}. А что ещё взять с(о) {}?»", "[pickup]{} перебрал(а|о|и) добычу и закинул(а|о|и) {item} к себе в сумку.", "[pickup]Присвистнув от радости, {} пряч(ет|ат) найденн(ый|ую|ое|ые) {item} в сумку.", "[pickup]Какая удача! Обшарив останки {}, {} наш(ел|ла|ло|ли) {item}!", "[pickup]«Как(ой|ая|ое|ие) замечательн(ый|ая|ое|ые) {item}, в хозяйстве пригод(ится|ятся)», — {} убира(ет|ат) добычу в рюкзак.", "[pickup]«Невесть что, но горсть монет я за это уж точно получу» — пробормотал(а|о|и) {}, убирая {item} в рюкзак.", "[pickup]Чистая победа — грязн(ый|ая|ое|ые) {item}.", "[pickup]«Древняя мудрость гласит: {item} в рюкзак — авантюристу приятней… Неее… баба с возу — авантюристу легче?…»", "[pickup]«О, {item}! Пригод(и|я)тся».", "[pickup]{item} воня(ет|ют) даже сильнее, чем грязн(ый|ая|ое|ые) {}, но {} не из брезгливых.", "[pickup]«Отлично, {item}! Доволочь до города — там можно будет продать».", "[pickup]«Вот это я понимаю! {item}! То что надо!»", "[pickup]«Ух ты, как(ой|ая|ое|ие) прекрасн(ый|ая|ое|ые) {item}!» — {} с блаженным лицом укладывает трофей к себе в сумку.", "[pickup]«Так, что тут у нас? {item}? Долж(ен|на|но|ны) пригодиться».", "[pickup]{} морщит нос, но вытира(ет|ют) дурно пахнущ(ий|ую|ее|ое|ие|их) {item} и запихива(е|ю)т (его|ее|их) в рюкзак.", "[pickup]«Не густо, всего лишь {item}, но хоть что-то».", "[pickup]«Что это тут», — думал(а|о|и) {}, выуживая {item} из того, что осталось от {}.", "[pickup]«Хлам, конечно, но может и удастся продать…» — подумал(а|о|и) {}, убирая {item} в сумку.", "[pickup]Воровато оглядываясь по сторонам, {} запихивает в рюкзак {item}.", "[pickup]«Вот в такие моменты я понимаю, что всё не зря», — думает {}, умиляясь найденн(ому|ой|ым) {item} и пряча (его|ее|их) к себе в рюкзак.", "[pickup]«Хм… Не мешок бриллиантов, но и {item} с(о) {} тоже ничего».", "[pickup]Изумительн(ый|ая|ое|ые) {item} — достойная награда победителя.", "[pickup]«{item}? В рюкзак! В хозяйстве пригодится».", "[pickup]«{item}? В рюкзак!»", "[pickup]«Не дело трофеями пренебрегать». — пробормотал(а|о|и) {}, засовывая {item} к себе в рюкзак.", "[pickup]«Моя Прелесть», — подумал(а|о|и) {} и, оглядываясь по сторонам, бережно спрятал(а|о|и) {item} в рюкзак.", "[pickup]«Сражение превращается в бесполезный риск, если нет трофеев», — замечает про себя {}, пряча {item} в рюкзак.", "[pickup]«Приш(ел|ла|ло|ли), увидел(а|о|и), победил(а|о|и) — забрал(а|о|и) {item}!»", "[pickup]{} — смерть, победителю — {item} — вот естественный ход вещей.", "[pickup]«{item}! Всё в дом, всё в дом!»", "[pickup]Один из лучших экземпляров {item}, и победитель забирает (его|ее|их) по праву.", "[pickup]«Хороший враг — мёртвый враг, а хорош(ий|ая|ее|ие) {item} — {item} в рюкзаке».", "[pickup]«Так себе {item}, но не бросать же».", "[pickup]«Дело за малым: продать {item} и купить что-нибудь нужное».", "[pickup]«{item}… Неплохой трофей…»", "[pickup]«Мертв(ый|ая|ое|ые) {} на первое, сладкое чувство победы на второе, и {item} на десерт».", "[pickup]«Неплохая вещица, (этот|эта|это|эти) {item} — надо оставить себе».", "[pickup]«После славной битвы и трофей должен быть достойным победителя! Что тут у нас… {item}, значит. Отлично!»", "[pickup]«С паршив(ого|ой|ых) {} хоть {item} клок… А, там про овцу и шерсть…»", "[pickup]«Раны болят не так сильно, если после боя тебя ждёт достойная награда… Вот прекрасн(ый|ая|ое|ые) {item}, положим (его|ее|их) в рюкзак… Хм-м, определённо, самочувствие стало лучше».", "[pickup]«Нет лучшего места для {item}, чем мой рюкзак».", "[pickup]{item} и слава — вот награда {} за победу над {} коварн(ым|ой|ыми)!", "[pickup]Грёзы о трофеях были не напрасны. {} восхищается {item} и убирает (его|ее|их) в рюкзак.", "[pickup]Взглядом опытного мародера {} осмотрел(а|о|и) останки {} и спрятал(а|о|и) {item} в рюкзак.", "[pickup]{}, воровато озираясь, прикарманил(а|о|и) {item}.", "[pickup]«Так, {item}, положу-ка я {} вот сюда».", "[pickup]{} подбросил(а|о|и) {item} над головой. Т(от|о|а|е) перелетел(а|о|и) за спину и упал(а|о|и) прямо в рюкзак к остальной добыче. «В яблочко!» – довольно улыбнул(ся|ась|ось) {}.", "[pickup]«Что-то упало. Я точно видел(а|о), как что-то упало с {}. Да вот только непонятно, куда? О, наш(ел|ла|ло)! {item}!»", "[pickup]Немного постояв над найденн(ым|ой|ыми) {item}, {} аккуратно (его|ее|их) поднял(а|о) и спрятал(а|о) к себе в рюкзак.", "[pickup]«{item}? Возьму. Продам кому-нибудь на рынке».", "[pickup]«Трофеев много не бывает», – улыбается {} и кладёт {item} в сумку к остальной добыче.", "[pickup]«Места для {item} в рюкзаке пока достаточно. Беру!»", "[pickup]«Интересно, как(ой|ую|ое|ие) по счету {item} я уже подбираю?»", "[pickup]«Наступит ли тот день, когда (я|мы) подним(у|ем) с тела поверженн(ого|ой|ых) {} сразу несколько {item}?»", "[pickup]«{item} мне не нуж(ен|на|но|ны), но, уверен(а|о|ы), в городе кому-нибудь да пригод(ится|ятся)».", "[pickup]Покрошив {} в мозаику, {} забрал(а|о|и) {item} за творческий труд.", "[pickup]«Хм, {item}? Дня два назад (я|мы) что-то похожее уже находил(а|о|и)!»", "[pickup]Щелкнув пальцами, {} поднял(а|о|и) с земли отличн(ый|ую|ое|ые) {item} и тут же убрал(а|о|и) (его|её|их) к себе в сумку.", "[pickup]«{} обещал(а|о|и) мне саблю, барабан и коня, а в итоге оставил(а|о|и) {item}».", "[pickup]Уставш(ий|ая|ее|ие) {} осмотрел(а|о|и) место битвы и наш(ёл|ла|ло|ли) {item}. Немного покрутив (его|её|их) в руках, {} сунул(а|о|и) {item} к себе в рюкзак.", "[pickup]«Потряс(ла|ло|ли) {} до глубины души. Удалось вытрясти {item}».", "[pickup]{} больше не буд(е|у)т беспокоить местных жителей, а {} за это приобрел(а|о|и) {item}.", "[pickup]«Нет {}? А если найду?» И действительно, в ошмётках {} {} наш(ел|ла|ло) {item}!", "[pickup]Вихрь последних событий настолько вымотал {}, что он(а|о|и) даже не улыбнул(ся|ась|ось|ись), когда наш(ел|ла|ло) {item} и убрал(а|о|и) (его|её|их) к себе в рюкзак.", "[pickup]«Да (мне|нам) за такой бой раза в три больше полагалось!» — возмущённо восклица(е|ю)т {}, но всё же пряч(е|у)т {item} в рюкзак.", "[pickup]«Кто рано встаёт, тот у {} что-нибудь найдёт», — радостно думал(а|о|и) {}, прикарманивая {item}.", "[pickup]«Ну наконец-то, {item}!»", "[pickup]{} повертел(а|о|и) в мозолистых руках {item}, что-то прикидывая, затем тихо выругал(ся|ась|ось|ись) и убрал(а|о|и) добычу в рюкзак.", "[pickup]«Ха! Посмотрите-ка, что тут есть! Прелесть! — воскликнул(а|о|и) {}, извлекая из туши {} {item}.{}»", "[pickup]«Эт(от|а|о|и) {item} мне мо(жет|гут) пригодиться».", "[pickup]«А эт(от|а|о|и) {item} — компенсация за моральный ущерб!»", "[pickup]«Что это тут у нас? — бубнит {}, обыскивая {}. — {item}! {} определённо надо взять с собой».", "[pickup]«Уверен(а|о|и), что найду эт(ому|ой|им) {item} полезное применение…»", "[pickup]«Опять {item}? Да я дорожную пыль дороже продам! Проклятье!»", /* Пусто */
    "[empty]«Нет, мешок денег было бы чересчур, но хоть что-то могло достаться в награду?»", "[empty]{} склоняется над поверженн(ым|ой|ыми) {}… и ничего не находит.", "[empty]Порывшись в останках {}, {} ничего не наш(ел|ла|ло), вытер(ла|ло|ли) руки и уш(ел|ла|ло).", "[empty]«Ненавижу, когда так получается: бьёшься, жизнью рискуешь, а награды нет!»", "[empty]{} посмотрел(а|о), что осталось от {}, и с досадой отметил(а|о): «Добычи нет».", "[empty]{} не наш(ел|ла|ло) ничего полезного на тушк(е|ах) монстр(а|ов).", "[empty]«Тут брать нечего. Если так дело и дальше будет, я по миру пойду».", "[empty]«И за что было сражаться? Добычи явно нет».", "[empty]«Какая уж тут добыча? В живых остал(ся|ась|ось|ись), и то славно».", "[empty]«Нечего взять с {}… Ладно, найду ещё кого-нибудь».", "[empty]{} отдубасил(а|о) бандита так, что ничего ценного уже не осталось.", "[empty]{} с унынием смотрит на то, что осталось от {}. Совершенно очевидно, что здесь поживиться нечем.", "[empty]«И какой смысл столько времени тратить на сражение, если после этого даже взять нечего?»", "[empty]Сегодня {} без награды, но главное, что (он|она|оно) жив(а|о).", "[empty]«Что тут? Пусто…» — Пнув {}, {} продолжает свой путь.", "[empty]{} склоняется над поверженн(ым|ой|ыми) {} и… плюясь и ворча, не находит добычи.", "[empty]{} со злостью плюёт на останки {}, всё равно трофеев никаких.", "[empty]{} настолько увлек(ся|лась|лось|лись), что от {} ничего не осталось.", "[empty]{} понял(а|о|и), что поживиться тут нечем, но не унывает: «Легче сумка — шире шаг».", "[empty]«Можно было бы строго судить авантюриста, если опять нет добычи, и этот авантюрист пошёл бы грабить караваны?…»", "[empty]В этот раз {} остал(ся|ась|ось|ись) без добычи.", "[empty]Небрежно осмотрев останки {} и не найдя ничего полезного, {} отправил(ся|ась|ось|ись) дальше.", "[empty]«Тьфу ты ж! И взять с {} нечего!»", "[empty]«Трофеев нет, но будет ещё и на нашей улице праздник!»", "[empty]«{}, эй! Победили — это спасибо, конечно, но что я буду есть, если снова нет трофеев?»", "[empty]«Победа есть, а добычи нет…»", "[empty]{} отдубасил(а|о|и) {} так, что ничего ценного уже не осталось.", "[empty]«Вот же тварь какая, и взять-то нечего».", "[empty]Раздосадованн(ый|ая|ое|ые) отсутствием трофеев, {} глумится над останками {}.", "[empty]«Ну что за день сегодня такой?… Даже с {} взять нечего».", "[empty]Измотанн(ый|ая|ое|ые) битвой {} с брезгливостью смотрит на место сражения, понимая, что трофеев здесь явно нет.", "[empty]Плохо. Очень плохо. {} остал(ся|ась|ось|ись) без добычи.", "[empty]Очередн(ой|ые) монстр(ы) без добычи, куда катится этот мир?", "[empty]Останки поверженн(ого|ой|ых) {} испарились прямо на глазах. Стоп! А где трофей?", "[empty]«И снова нечего взять».", "[empty]Останки {} выглядят слишком противно, чтобы пытаться найти что-то ценное.", "[empty]Покойся с миром, несчастн(ый|ая|ое|ые) {}. Не принесла победа ни добычи, ни славы.", "[empty]«Да уж… Добычи нет, и стоило ли рисковать?»", "[empty]«Ничего ценного. В следующий раз повезёт».", "[empty]«Совсем нет добычи? Будем искать!»", "[empty]И кукиш с маслом, как награда герою.", "[empty]«Вот же твари какие, и взять-то нечего».", "[empty]«Рискуешь жизнью, терпишь лишения, сбиваешь ноги в кровь, и что в итоге? Ни-че-го!»", "[empty]После ожесточённой схватки {} оказал(ся|ась|ось|ись) настолько искромсан(а|о|ы), что о добыче можно и не думать.", "[empty]«Как-то и зимы холоднее стали, и рюкзаки делают маленькие. Тяжёлые времена ждут этот мир».", "[empty]Столько сил потрачено и все напрасно.", "[empty]{} и без добычи? Нет, это точно не лучший день {}.", "[empty]«От трудов праведных не наживёшь палат каменных», — бурч(и|а)т {}, не найдя в останках {} ничего полезного.", "[empty]«Почему из всех монстров мне попал(ся|ась|ось|ись) именно {}?.. Ни трофеев, ни монет».", "[empty]Нет добычи? Зато удалось остаться в живых.", "[empty]Обшарив останки {}, {} наш(ел|ла|ло|ли) от мёртвого осла уши. В смысле, ничего не наш(ел|ла|ло|ли).", "[empty]Гибель {} оказалась бессмысленной — никаких трофеев {} не добыл(а|о|и).", "[empty]{} выпотрошен(а|о|ы), но {} ничего не находит.", "[empty]«Ах, как жаль, что тело {} оказалось лысым, без зубов, да и вообще, куда оно пропало?»", "[empty]«Походу я перестарал(ся|ась|ось|ись). Эх, опять уйду без добычи».", "[empty]«Где же ты, где?..» — напевает {}, тщетно пытаясь найти хоть что-нибудь в останках {}.", "[empty]«Опять нет добычи. Хранитель, может подкинешь монет? А то скоро с голоду пухнуть начну».", "[empty]{} остал(ся|ась|ось|ись) без добычи.", /* Бросил */
    "[drop]«Вот несправедливость какая: отличн(ый|ая|ое|ые) {drop}, а забрать не получится — рюкзак уже полный».", "[drop]«Надо что ли рюкзак побольше купить, а то такими вещами приходится разбрасываться… Неплох(ой|ая|ое|ие) был(и) {drop}».", //			'[drop]Короткая вспышка — и {} с удивлением смотр(ит|ят) на горстку пепла, оставшуюся от {drop}.', //manual drop
    "[drop]Найденн(ый|ая|ое|ые) {drop} не помеща(ется|ются) в рюкзак. «Кто ты, тот счастливчик, что получит (его|ее|их) задарма? И когда уже я найду брошенный кем-то трофей?»", "[drop]Сердце кровью обливается, когда приходится бросать {drop}. Но {} смотрит в набитый доверху рюкзак, и становится легче.", "[drop]Повертев в руках {drop}, доставш(ийся|уюся|ееся|иеся|егося) от {}, {} с сожалением выкинул(а|о|и) (его|ее|их) — в рюкзаке не осталось места.", //err
    "[drop]{} пытается запихнуть трофей в рюкзак, но, потерпев сокрушительное фиаско, решает, что {drop} ему не так уж сильно и нужен.", "[drop]{}, повертев в руках {item}, и не найдя куда (его|ее|их) засунуть, решил(а|о|и) в следующий раз купить штаны с дополнительными карманами.", "[drop]{item} остал(ся|ась|ось|ись) валяться на обочине дороги.", "[drop]В рюкзаке нет свободного места и {item} пришлось оставить.", "[drop]«Это не дело: рюкзак — битком — трофеи складывать некуда».", "[drop]«Нужен рюкзак побольше, а то в этот уже не влезает».", "[drop]«Хм… {item}. А запихнуть-то некуда — рюкзак набит — придется выкинуть».", "[drop]{} пыжится, всё вертит и пытается впихнуть {item} в рюкзак, но там слишком мало места. Вздохнув, он(а|о|и) выбрасывает {item}.", "[drop]Рюкзак полон и {} не может взять добыт(ый|ую|ое|ые) {item}.", "[drop]Хмуро глядя в набитый доверху рюкзак, {} оставляет добычу на земле.", "[drop]«Опять забыл(а|о|и) от хлама избавиться!» — ворчит {}, выбрасывая подобранн(ый|ую|ое|ые) {item}.", "[drop]«Надо срочно продать чего-нибудь, освободить место в рюкзаке. Ну жалко ж бросать {item}!»", "[drop]«Был бы рюкзак побольше… А пока {item} придется выбросить».", "[drop]Найденн(ый|ая|ое|ые) {item} не помеща(ется|ются) в рюкзак. «Кто ты, тот счастливчик, что получит (его|ее|их) задарма? И когда уже я найду брошенный кем-то трофей?»", "[drop]Оставлю я {item} здесь, может кому сгодится.", "[drop]«{item} никак не влаз(ит|ят) в рюкзак, придётся выкинуть».", "[drop]«Некуда уже пихать, ну и демон с {item}».", "[drop]{} попытал(ся|ась|ось|ись) впихнуть {item} к себе в рюкзак, но, услышав подозрительный треск швов, оставил(а|о|и) эту затею и выкинул(а|о|и) добычу.", "[drop]«Нет, всё же грех жаловаться. Вон уже и трофеи складывать некуда!»", "[drop]«Надо что ли рюкзак побольше купить, а то такими вещами приходится разбрасываться… Неплох(ой|ая|ое|ие) был(а|о|и) {item}».", "[drop]«Святой лук-порей! Опять куча хлама в инвентаре!» — со слезами на глазах, {} уходит прочь, а {item} остается одиноко лежать на земле.", "[drop]«Вот и {item} уже не влеза(е|ю)т. Решено — пора продавать трофеи».", "[drop]В придорожные кусты лет(и|я)т {item}. В рюкзак (его|ее|их) уже не впихнуть.", "[drop]Израненн(ый|ая|ое) {} смотрит в переполненный рюкзак и понимает, что {item} туда уже не влез(е|у)т и (его|ее|её|их) придётся бросить. Знакомая каждому, извечная и обидная ситуация.", "[drop]«В рюкзаке совсем нет места. Зачем мне столько барахла?» — думает {}, выбрасывая добыт(ый|ую|ое|ые) {item}.", "[drop]Рюкзак полон настолько, что чуть ли не трещит по швам. {} с грустью оставляет добыт(ый|ую|ое|ые) {item} и идёт дальше.", "[drop]Красиво жить не запретишь! Рюкзак уже битком, и неплох(ой|ая|ое|ие) {item} лет(и|я)т в канаву.", "[drop]Рюкзак и так слишком тяжёлый. Вздохнув, {} оставляет {item} на поле боя.", "[drop]«То совсем пусто, то так густо, что уже и в рюкзак не влезает — придется выкидывать хорош(ий|ую|ее|ие) {item}».", "[drop]{} безуспешно пытается засунуть {item} в трещащий по швам рюкзак: «Да здесь еще три артефакта влезет, глупая авоська! Где заклинание утрамбовывания?!»", "[drop]Обливаясь слезами, {} последний раз смотр(и|я)т на найденн(ый|ую|ое|ые) {item} и оставляет (его|ее|их) на обочине — в рюкзаке уже нет места.", "[drop]Неплох(ой|ая|ое|ие) {item}, но в рюкзак уже не влез(е|у)т.", "[drop]«Так бывает», — отмеча(е|ю)т {}, глядя в доверху набитый рюкзак и выкидыва(е|ю)т {item}.", "[drop]«Если я возьму с собой ещё и {item}, то спина мне этого не простит».", "[drop]«Так не {} никому, {item}!» — иступлённо крикнул(а|о|и) {} и выбросил(а|о|и) трофей, не поместившийся в рюкзак, в канаву.", "[drop]{} пытается запихнуть трофей в рюкзак, но, потерпев сокрушительное фиаско, решает, что {item} (ему|ей|им) не так уж сильно и нуж(ен|на|но|ны).", "[drop]{} печально понимает, что {item} не влеза(е|ю)т в рюкзак, и реша(е|ю)т зашвырнуть (его|её|их) куда подальше.", "[drop]Потратив пять минут на попытки утрамбовать содержимое рюкзака ногами, {} всё-таки понима(е|ю)т, что {item} придётся выбросить.", "[drop]После поражения {}, в высоко детализованном трупике, {} наш(ёл|ла|ло|ли) {item}. Так и не найдя куда эту дрянь запихнуть, вернул(а|о|и) её хозяину.", "[drop]«{item} не помеща(е|ю)тся в рюкзак, а в руках (я|мы) это не понес(у|ём)!»", "[drop]«Святой лук-порей! Опять куча хлама в инвентаре!» — со слезами на глазах, {} уходит прочь, а {item} оста(е|ю)тся одиноко лежать на земле.", "[drop]«О, храни (меня|нас), Хранитель! Надо было давно пришить карман к рюкзаку! Придётся оставить {item} {}».", "[drop]«Ну почему в этом мире никто так и не научился шить рюкзаки повместительнее?! Опять {item} не влеза(е|ю)т…»", "[drop]«Эх… Опять с хорошей вещицей придётся распрощаться со слезами на глазах…» — рюкзак полон, и {} оста(ё|ю)тся лежать на дороге.", "[drop]«О! нет! опять не влезает!» — с таким трудом добыт(ый|ая|ое|ые) {} лет(и|я)т в ближайшую канаву.", "[drop]{} так и хотел(а|о|и) в сумку {}, но не поместил(ся|ась|ось|ись)…", "[drop]«К сожалению, увы…» — воскликнул(а|о|и) {}, выбрасывая {} на дорогу.", "[drop]«Эх, полным полна моя коробочка, — вздохнул(а|о|и) {}. — Спрячу {item} под этим камнем. Не забыть бы забрать {} на обратном пути».", "[drop]«Для {} нужен рюкзак побольше, а то в этот уже не влезает».", "[drop]«Это не дело: рюкзак — битком — трофеи складывать некуда. Придется оставить {} на дороге».", "[drop]«Как-то и зимы холоднее стали, и рюкзаки делают маленькие. Даже {} не вместить. Тяжелые времена ждут этот мир».", /* Погиб в бою */
    "[death]«Прощай, жестокий мир», — молвил(а|о|и) {}, истекая кровью.", "[death]Удачная атака {}, и Мать Сыра Земля обнимает {}.", "[death]{} нанос(и|я)т сокрушительный удар, и {} падает навзничь.", "[death]«Проклятье!» — подумал(а|о|и) {}, заваливаясь на бок — победа за {}.", "[death]{} поскальзыва(е|ю)тся и пада(е|ю)т, а {} уже не да(ё|ю)т (ему|ей|им) подняться.", "[death]Последняя атака {} приносит {} бесславную смерть.", "[death]«Финт, отскок!… А-а дьявол!…» — Нога {} предательски подворачивается, и {}, отлично используя момент, нанос(и|я)т финальный удар.", "[death]«Арргххм, мббхц! Еще свидимся, {}…» — это все, что смог(ла|ло|ли) прошипеть {} прежде чем очи (его|ее|их) закрылись.", "[death]Победа была близка, но {} оказал(ся|ась|ось|ись) проворней. {} погиба(е|ю)т.", "[death]{} пошатнул(ся|ась|ось|ись) и рухнул(а|о|и) в ноги {}.", "[death]Тело погибш(его|ей|их) {} подёргивает в судороге левой ногой. {} оказал(ся|ась|ось|ись) быстрее.", "[death]«Я не хочу умирать!» — взмолил(ся|ась|ось|ись) {}, но Смерть осталась глуха.", "[death]{} сбива(е|ю)тся с дыхания, теря(е|ю)т скорость, и уже ничто не может (его|ее|их) спасти от стремительной атаки {}. Смерть пришла быстро, а за ней и покой.", "[death]«В который раз уже…» — с тоской {}.", "[death]Пальцы правой руки {} еще скребут землю, но сознание уже погасло.", "[death]{} метким ударом организовал(а|о|и) встречу героя с курносой.", "[death]«Как так, Хранитель?! Как же так…» — последние слова славн(ого|ой|ых) {}.", "[death]«Вольт! Кувырок! Не-е-ет!» — {} за неё жизнью…", "[death]{} завершающий удар — и тело {} упало в овраг.", "[death]{} в неравном бою. Я занимал(а|о|и) господствующую высоту, имел(а|о|и) карту местности и расставленные по полю боя ловушки, но {} всё же как-то меня {}».", "[death]«Я… вернусь!…»", /* Начало боя */
    "[fight]{} и {} сошлись на узкой дорожке.", "[fight]За спиной {} хрустнула ветка. Он(а|о|и) ме-едленно обернул(ся|ась|ось|ись), доставая оружие, и увидел(а|о|и) {}, стояв(шего|шую|шее|ших) с видом полной невинности.", "[fight]«А это ещё что за бести(я|и)? {}?»", "[fight]«Ни на минуту нельзя расслабиться!» — {} атаку(е|ю)т {}.", "[fight]Впереди {}, ищущ(ий|ая|ее|ие) неприятностей, — «Эй, я здесь!»", "[fight]{} преградил(а|о|и) дорогу. {} вынужден(а|о|и) принять сражение.", "[fight]«{}? Что ж, потанцуем!»", "[fight]{} на горизонте, в бой!", "[fight]Битвы не избежать — впереди {}.", "[fight]Как {} ни пытал(ся|ась|ось|ись) притвориться мертв(ым|ой), {} всё равно пош(ел|ла|ло|ли) в наступление.", "[fight]«Что там впереди? {}? Ближе… Сейчас я буду добывать трофеи».", "[fight]«Что-то тут не так. Не в засаду ли меня несё… Проклятье! {}!»", "[fight]«Судьба сводит меня с(о) {}? Что ж…»", "[fight]Ужасн(ый|ая|ое|ые) {} выскочил(а|о|и) из кустов.", "[fight]«Это {}! К бою!»", "[fight]«{}! Оружие наголо!»", "[fight]«Ни минуты покоя!» — на пути {}!", "[fight]«Ого, да это {}. Исчезающий вид!»", "[fight]«И так жить на свете страшно, а тут еще и {}!»", "[fight]«Проклятье! Не золотуха, так {}!»", "[fight]«Это была самая большая ошибка в твоей жизни… и последняя…» — грозно произнес(ла|ло|ли) {} и приготовил(ся|ась|ось|ись) к бою против {}.", "[fight]Обернул(ся|ась|ось|ись) на странный шум и увидел(а|о|и) {}.", "[fight]«{}, как мне вас не хватало!» — проворчал(а|о|и) {}, разминая кисти рук.", "[fight]«Неужто передо мной {}? Отлично! Будет чем пополнить мою коллекцию трофеев!»", "[fight]«Говорят, места тут спокойные. Тогда что тут дела(е|ю)т {}?!»", "[fight]«Ха-ха! Вот мы и сошлись, {}!»", "[fight]Вовремя заметив приближающ(егося|уюся|ееся|ихся|ийся) {}, {} приготовил(ся|ась|ось|ись) к бою.", "[fight]«На ловца и зверь бежит! Сегодня это {}!»", "[fight]Неожиданно перед {} появля(е|ю)тся {}, заставляя (его|ее|их) подпрыгнуть от испуга! «Никому не дозволено безнаказанно меня пугать!» — вопит {} и отчаянно бросается в бой.", "[fight]{} на пути!", "[fight]{} видит, как дорогу прегражда(е|ю)т {}.", "[fight]За очередным поворотом дороги {} сталкива(е|ю)тся с {}.", "[fight]«Подозрительно тихо, не нравится мне это… Так и есть, {}!»", "[fight]Из придорожных зарослей выскочил(а|о|и) {}!", "[fight]{}, чувствуя опасность, насторожил(ся|ась|ось|ись) и вовремя заметил(а|о|и) {}.", "[fight]{} заметил(а|о|и) впереди {} и готовится к схватке.", "[fight]«Впереди {}! Здоров(ый|ая|ое|ые), зараз(а|ы)!»", "[fight]«Вот сколько раз уже сражал(ся|ась|ось|ись) с(о) {}, а популяция их всё не убывает… О! Вот опять!»", "[fight]Из-за кустов показыва(ется|ются) {}. «Не случайно нынешней ночью тревожные сны снились».", "[fight]{} в опасности — на (его|ее|их) пути {}.", "[fight]«Я, отважн(ый|ая|ое) {}, смело принимаю бой! Никто не выстоит против меня! Даже {}!»", "[fight]{} преградил(а|о|и) дорогу. {} вынужден(а|о|и) принять сражение.", "[fight]«Хм, {}. Давно пора очистить от них Пандору!»", "[fight]«В книгах пишут, что нападение — это лучшая защита. Как бы проверить?.. Ха, {}! Как по заказу».", "[fight]{} бросил(а|о) камень в кусты, чем разозлил(а|о) {}, стоявш(его|ую|ее|их) за ними.", "[fight]«Кажется, я нарушил(а|о) границы территории {}. Сейчас меня будут прогонять».", "[fight]«Ну, кто на меня? {}!»", "[fight]«Ни проехать, ни пройти, пока {} сто(ит|ят) на пути!»", "[fight]«Ни проехать по дороге, ни пройти — опять {} сто(ит|ят) на пути!»", "[fight]{actor} приглянулись доспехи {}, и он(а|о|и) решил(а|о|и) силой заполучить их себе.", "[fight]Учуяв запах припасов, {actor} подкрал(ся|ась|ось) к {} сзади, ухватил(ся|ась|ось) за рюкзак и пытается утащить его в кусты, желая завладеть аппетитным содержимым. «А ну-ка прочь от моего добра!» – прогоняет {actor} {}.", "[fight]«И да пад(ё|у)т {} в пыль к ногам моим. Ибо!… Ибо… Впрочем, неважно. Приступим».", "[fight]«Это моя дорога! Хочешь идти дальше? Плати!» – заявил(а|о|и) {actor}. «Платить {actor}? Ну уж нет», – молвил(а|о|и) {}.", "[fight]На дорогу выскочило несколько чем-то раздражённых {actor}. Один из зверей кинулся на {}.", "[fight]Дорогу перебежал(а|о|и) {}. Если верить старой геройской примете — это к деньгам! «А ну-ка, иди(те) сюда…»", "[fight]«{}! Иду на Вы!»", "[fight]«Деньги или жизнь?» – крикнул(а|о|и) {actor}, выскакивая из засады. «Твоя жизнь», – ответил(а|о|и) {}, готовясь к драке.", "[fight]«Да что ж вы все такие агрессивные?..» — бурч(и|а)т {actor}, отбиваясь от {}.", "[fight]«Ну, это не серьёзно. {actor} собира(е|ю)тся напасть на меня?!»", "[fight]«Вот так {}! На картинках он(а|о|и) гораздо меньше».", "[fight]За очередным поворотом дороги {actor} сталкивается с(о) {}.", "[fight]Пытаясь защитить своё логово с детёнышами, расположенное неподалёку, {} вынужден(а|о|ы) напасть на {actor}.", "[fight]Вдохнул(а|о|и) полной грудью и сразу распознал(а|о|и) прятавш(его|ую|их)ся в кустах {} по характерному запаху: «Вылезай(те), {}!»", "[fight]А вот и {}. Только {} свистнул(а|о|и), он(а|о|и) появил(ся|ась|ось|ись).", "[fight]{} набрасыва(е|ю)тся на противник(а|ов) с явным намерением разорвать (его|её|их) на сотни маленьких {}! {} с яростным рыком отдира(е|ю)т от себя {}! Битва обещает быть свирепой.", "[fight]«Быть или не быть?.. Не к(о) (мне|нам) вопрос. Конечно бить! Что скаже(шь|те), {}?»", "[fight]Как ни пытал(ся|ась|ось|ись) {} избежать конфликта, {} не оставил(а|о|и) (ему|ей|им) выбора — драке быть!", "[fight]{} выскочил(а|о|и) прямо перед {}. Сегодня кто-то продолжит свой путь, а кто-то умрёт.", "[fight]Встретив мирно идущ(его|ую|ее|их) мимо {}, {} вспомнил(а|о|и) частушку «На сосне сидит {}». К сожалению — вслух. Драки не избежать.", "[fight]Вдруг откуда ни возьмись прямо на {} выскочил(а|о|и) {}!", "[fight]{} слыш(и|а)т шорохи за спиной и, резко повернувшись, вид(и|я)т {}.", "[fight]«Вот это действительно опасный поворот», — подумал(а|о|и) {}, столкнувшись нос к носу с(о) {}.", "[fight]{} спокойно (шёл|шла|шло|шли) по дороге, но тут (ему|ей|им) преградил(а|о|и) дорогу {}, настойчиво зазывающ(ий|ая|ее|ие) в игру «догони меня кирпич».", "[fight]«Ни шагу не пройти! Кто там следующий на очереди, {}?»", "[fight]Вдруг откуда ни возьмись прямо на {} выскочил(а|о|и) {}!", "[fight]«А вот и обед идёт!» — прогундосил(а|о|и) {}, загораживая дорогу {}.", "[fight]«Ну что, {}, потанцуем?» — хмыкнул(а|о|и) {}, встав в боевую стойку.", "[fight]{} ещё издали заметил(а|о|и) {}, но позволил(а|о|и) приблизиться. Настроение как раз боевое!", "[fight]«Новая жертва!» — радостно восклица(е|ю)т {} при встрече с(о) {}.", "[fight]«Рад(а|о|ы) (тебя|вас) видеть, {}», — процедил(а|о|и) сквозь зубы {} и обнажил(а|о|и) клинок.", "[fight]Готовясь к бою, {} снимает рюкзак: «Сейчас, драгоценн(ый|ая|ое|ые) (т|в)ы мо(й|я|е|и) {}, я буду (тебя|вас) бить. Возможно, даже ногами, — и, немного в задумчивости пожевав, добавляет зачем-то. — Со всем уважением!»", "[fight]Злобного вида {} преградил(а|о|и) путь. Кажется он(а|о|и) намека(е|ю)т на то, что это (его|ее|их) территория. {} встал(а|о|и) в защитную стойку.", "[fight]«Ну наконец-то, {}!» — воскликнул(а|о|и) {}. — «А то уже тело зудит, как накостылять кому-то хочется!»", "[fight]«Ха-ха! А ну, стоять-бояться!» — воскликнул(а|о|и) {}, увидев {}, выходящ(его|ее|ую|их) на дорогу.", "[fight]«Мне кажется, эт(от|а|о|и) {} давно тоску(е|ю)т по своей любимой пра-пра-пра-бабушке. И я, доблестн(ый|ая|ое|ые) {}, просто обязан(а|о|ы) помочь им встретиться как можно скорее!»", "[fight]Знал(а|о|и) бы {}, как окончил мой предыдущий противник — дважды бы подумал(а|о|и), прежде чем нападать.", "[fight]Вовремя заметив {victim}, {actor} подкрал(ся|ась|ось|ись) сзади и сразил(а|о|и) противник(а|ов) одним ударом.", "[fight]{actor} зловеще ухмыльнул(ся|ась|ось), когда {victim} попал(ся|ась|ось|ись) в предусмотрительно установленную на дороге ловушку." ];
}, /* 26 */
/***/
function(module, exports, __webpack_require__) {
    /**
	* Метод выделяет ключевые слова в строке действия в журнале
	* */
    function parseHighlight(msg, act) {
        for (var i = 0; i < cfgHighlight.length; i++) {
            var regExp = cfgHighlight[i].regex, type = cfgHighlight[i].type || "value";
            msg = msg.replace(regExp, '<span class="' + type + '">$&</span>');
        }
        for (var cls in act) {
            if (act.hasOwnProperty(cls)) {
                var value = act[cls];
                "value" !== cls && "type" !== cls && (msg = msg.replace(value, '<span class="' + cls + '">' + value + "</span>"));
            }
        }
        return msg;
    }
    /**
	 * Прекомпилящия конфига фраз для выделения
	 * */
    function processHighlightRaw(phrasesHighlight) {
        for (var typeReg = /^\[[a-zA-Z]+\]/g, result = [], i = 0; i < phrasesHighlight.length; i++) {
            var cfgString = phrasesHighlight[i], parsedCfg = {}, p = typeReg.exec(cfgString);
            p && p[0] && (parsedCfg.type = p[0].substring(1, p[0].length - 1)), cfgString = cfgString.replace(typeReg, ""), parsedCfg.regex = new RegExp(cfgString), result.push(parsedCfg);
        }
        return result;
    }
    var phrasesHighlight = __webpack_require__(27), cfgHighlight = processHighlightRaw(phrasesHighlight);
    module.exports = parseHighlight;
}, /* 27 */
/***/
function(module, exports) {
    module.exports = [ "[value]\\d+ звездоч(?:ка|ки|ек)?", "[value]\\d+ HP", "[value]\\d+ единиц(:?у|а|ы)? урона", "[value]\\d+ урона?", "[energy]\\d+ единиц(:?у|а|ы)? энергии", "[coins]\\d+ монет(?:ами|ой|а|у|ы)?", "[exp]\\d+ опыт(?:а)?", "[level]\\d+ уровень" ];
}, /* 28 */
/***/
function(module, exports, __webpack_require__) {
    var $ = __webpack_require__(18), core = (__webpack_require__(16), __webpack_require__(10)), _log = core.log, _subscribe = core.subscribe, _trace = module.exports = {};
    _trace.messagesLog = __webpack_require__(29), _trace.traceInit = __webpack_require__(30), _trace.traceData = __webpack_require__(31), _trace.traceStart = __webpack_require__(32), 
    _trace.traceStop = __webpack_require__(33), _subscribe("init", function(game_data) {
        _trace.traceInit(), _trace.traceStart();
    }), _subscribe("newMessages", function(messagesNew, gameData, timestamp) {
        _log.set("game_data", gameData);
        var hero = gameData.account.hero, levelsLog = _log.get("levelsLog") || [], lastLevel = (levelsLog[levelsLog.length - 1] || [])[1];
        hero.base.level !== lastLevel && (console.info("level up!", hero.base.level), levelsLog.push([ timestamp, hero.base.level ]), _log.set("levelsLog", levelsLog));
        var powersLog = _log.get("powersLog") || [];
        powersLog = powersLog.filter(function(t) {
            return "number" == typeof t[1];
        });
        var lastPower = (powersLog[powersLog.length - 1] || [])[1], powerSum = hero.secondary.power[0] + hero.secondary.power[1];
        powerSum !== lastPower && (console.info("power up!", powerSum), powersLog.push([ timestamp, powerSum ]), _log.set("powersLog", powersLog)), _trace.lastGameData = gameData;
    }), _subscribe("init", function() {
        $("#pgf-journal-container").on("click", "[data-ts]", function() {
            var timestamp = $(this).data("ts");
            _trace.messagesLog.forEach(function(message) {
                message[0] === timestamp && console.log(message);
            });
        }).on("click", "[data-click]", function() {
            console.log($(this).data("click"));
        });
    }), _subscribe("newTurn", function(messagesNew) {
        window.setTimeout(function() {
            core.elements.getControl("journal-log").find(".value").text(_trace.messagesLog.length);
        }, 10);
    });
}, /* 29 */
/***/
function(module, exports, __webpack_require__) {
    var core = __webpack_require__(10), _log = core.log, messagesLog = _log.get("messagesLog") || [];
    module.exports = messagesLog;
}, /* 30 */
/***/
function(module, exports, __webpack_require__) {
    function traceInit() {
        for (var i = 0; i < messagesLog.length; i++) {
            var messageNew = messagesLog[i];
            messageNew[4] = _parse["short"](messageNew[2]) || !1;
        }
    }
    var _parse = __webpack_require__(23), messagesLog = __webpack_require__(29), _utils = __webpack_require__(10), _subscribe = _utils.subscribe;
    module.exports = traceInit, _subscribe("settingsChange", function(key) {
        "heroNameStart" === key && traceInit();
    });
}, /* 31 */
/***/
function(module, exports, __webpack_require__) {
    function traceData(game_data) {
        var hero = game_data.account.hero;
        if (hero) {
            var heroData = {
                action: {
                    description: hero.action.description,
                    type: hero.action.type,
                    info_link: hero.action.info_link,
                    is_boss: hero.action.is_boss,
                    percents: hero.action.percents
                },
                base: {
                    health: hero.base.health,
                    max_health: hero.base.max_health,
                    level: hero.base.level,
                    alive: hero.base.alive,
                    money: hero.base.money
                },
                energy: {
                    bonus: hero.energy.bonus,
                    max: hero.energy.max,
                    value: hero.energy.value
                },
                secondary: {
                    //			initiative: hero.secondary.initiative,
                    loot_items_count: hero.secondary.loot_items_count,
                    //			max_bag_size: hero.secondary.max_bag_size,
                    //			move_speed: hero.secondary.move_speed,
                    power: hero.secondary.power
                },
                turn: game_data.turn.number
            }, lastLog = messagesLog[messagesLog.length - 1] || [], lastTimestamp = lastLog[0], messagesPack = hero.messages;
            messagesPack[messagesPack.length - 1][3] = heroData;
            for (var messagesPackTimestamp = messagesPack[messagesPack.length - 1][0], messagesNew = [], i = 0; i < messagesPack.length; i++) {
                if (!lastTimestamp || messagesPack[i][0] > lastTimestamp) {
                    var messageNew = messagesPack[i];
                    //					if (messagesPackTimestamp === messageNew[0]) messageNew[3] = heroData;
                    messageNew[3] = messageNew[3] || !1, messageNew[4] = _parse["short"](messageNew[2]) || !1, messagesLog.push(messageNew), messagesNew.push(messageNew);
                }
            }
            _log.set("messagesLog", messagesLog.map(function(item) {
                return [ item[0], item[1], item[2], item[3] ];
            })), //	_trace.heroData = heroData;
            _publish("newTurn", messagesNew, game_data, messagesPackTimestamp), messagesNew.length && _publish("newMessages", messagesNew, game_data, messagesPackTimestamp);
        }
    }
    var utils = __webpack_require__(10), _parse = __webpack_require__(23), _publish = utils.publish, _log = (utils.subscribe, utils.log), messagesLog = (utils.settings, 
    __webpack_require__(29));
    module.exports = traceData;
}, /* 32 */
/***/
function(module, exports, __webpack_require__) {
    function traceStart() {
        $(document).bind(pgf.game.events.DATA_REFRESHED + ".ext-trace", function(e, game_data) {
            traceData(game_data);
        });
    }
    var $ = __webpack_require__(18), pgf = __webpack_require__(16), traceData = __webpack_require__(31);
    module.exports = traceStart;
}, /* 33 */
/***/
function(module, exports, __webpack_require__) {
    function traceStop() {
        $(document).unbind(pgf.game.events.DATA_REFRESHED + ".ext-trace");
    }
    var $ = __webpack_require__(18), pgf = __webpack_require__(16);
    module.exports = traceStop;
}, /* 34 */
/***/
function(module, exports, __webpack_require__) {
    var _print = module.exports = {};
    _print.towns = __webpack_require__(35), _print.shortMessages = __webpack_require__(42), _print.groupMessages = __webpack_require__(46), _print.archive = __webpack_require__(54), 
    _print.stats = __webpack_require__(63);
}, /* 35 */
/***/
function(module, exports, __webpack_require__) {
    var _towns = module.exports = {};
    _towns.init = __webpack_require__(36), _towns.mapDataUpdate = __webpack_require__(38), _towns.showMapDialogById = __webpack_require__(39), _towns.townQuestUpdate = __webpack_require__(40), 
    _towns.townParams = __webpack_require__(41), _towns.mapData = __webpack_require__(37);
    var $ = __webpack_require__(18), utils = (__webpack_require__(16), __webpack_require__(10)), _elements = utils.elements, _subscribe = utils.subscribe, $townsContent = _elements.getTabInner("towns");
    $("body").on("click.town", ".town", function() {
        if (console.log("click .town"), _towns.mapData) {
            var id = $(this).data("place-id");
            _towns.showMapDialogById(id);
        }
    }).on("click.town", ".reload", function() {
        var map_version = utils.map_version;
        map_version && _towns.mapDataUpdate(map_version).done(function(mapData) {
            _towns.townParams(mapData);
        });
    }), $townsContent.html('<span class="link-ajax pull-right reload glyphicon glyphicon-repeat"></span>'), _subscribe("preload", function() {
        var map_version = utils.map_version;
        map_version && _towns.mapDataUpdate(map_version).done(function() {
            _towns.init();
        });
    });
}, /* 36 */
/***/
function(module, exports, __webpack_require__) {
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _elements = (utils.subscribe, utils["const"], utils.elements), mapData = (utils.log, __webpack_require__(37)), $townsContent = _elements.getTabInner("towns"), init = function() {
        var places = mapData.places, html = "";
        for (var i in places) {
            if (places.hasOwnProperty(i)) {
                var place = places[i];
                html += '<tr class="place-row" data-place-id="' + place.id + '"><td class="size"><span class="badge">' + place.size + '</span></td><td><span class="link-ajax town" data-place-id="' + place.id + '">' + place.name + '</span> <span class="quest"></span></td><td data-city-param="размер экономики"></td><td data-city-param="безопасность"></td><td data-city-param="транспорт"></td><td data-city-param="свобода"></td></tr>';
            }
        }
        html = '<table class="table table-towns table-noborder table-hover-dark table-condensed"><thead><th class="size" title="Размер города">Р</th><th>Название</th><th title="Размер экономики">Э</th><th title="Безопасность">Безоп.</th><th title="Транспорт">Транс.</th><th title="Свобода">Своб.</th></thead><tbody>' + html + "</tbody></table>";
        var $table = $(html).appendTo($townsContent);
        window.tables.makeSortable($table);
    };
    init.isInited = !0, module.exports = init;
}, /* 37 */
/***/
function(module, exports) {
    /**
	 * @type {Object} mapData
	 * @type {Array} mapData.places
	 */
    module.exports = {};
}, /* 38 */
/***/
function(module, exports, __webpack_require__) {
    function mapDataUpdate(map_version) {
        return $.ajax({
            url: "/dcont/map/region-" + map_version + ".js",
            dataType: "json",
            type: "get"
        }).done(function(map_data) {
            for (var key in mapData) {
                mapData.hasOwnProperty(key) && delete mapData[key];
            }
            $.extend(mapData, map_data), _publish("townsInit", map_data);
        });
    }
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _publish = utils.publish, mapData = __webpack_require__(37);
    module.exports = mapDataUpdate;
}, /* 39 */
/***/
function(module, exports, __webpack_require__) {
    function showMapDialogById(id) {
        var place = mapData.places[id];
        showMapDialog(place.pos.x, place.pos.y);
    }
    function showMapDialog(x, y) {
        pgf.ui.dialog.Create({
            fromUrl: pgf.urls["game:map:cell_info"](x, y),
            OnOpened: function(dialog) {
                var jQuery = $;
                pgf.base.InitializeTabs("game-map-cell-info", "map", [ [ jQuery(".pgf-cell-description-button", dialog), "description" ], [ jQuery(".pgf-cell-persons-button", dialog), "persons" ], [ jQuery(".pgf-cell-place-parameters-button", dialog), "place-parameters" ], [ jQuery(".pgf-cell-place-demographics-button", dialog), "place-demographics" ], [ jQuery(".pgf-cell-place-bills-button", dialog), "place-bills" ], [ jQuery(".pgf-cell-place-modifiers-button", dialog), "place-modifiers" ], [ jQuery(".pgf-cell-place-chronicle-button", dialog), "place-chronicle" ], [ jQuery(".pgf-cell-building-button", dialog), "building" ], [ jQuery(".pgf-cell-map-button", dialog), "map" ], [ jQuery(".pgf-cell-debug-button", dialog), "debug" ] ]), 
                jQuery('[rel="tooltip"]', dialog).tooltip(pgf.base.tooltipsArgs), widgets.abilities && (widgets.abilities.UpdateButtons(), widgets.abilities.RenderAbility(pgf.game.constants.abilities.building_repair), 
                jQuery(".angel-ability", dialog).toggleClass("pgf-hidden", !1));
            },
            OnClosed: function(dialog) {
                pgf.base.HideTooltips(dialog);
            }
        });
    }
    var $ = __webpack_require__(18), pgf = __webpack_require__(16), widgets = window.widgets, mapData = __webpack_require__(37);
    module.exports = showMapDialogById;
}, /* 40 */
/***/
function(module, exports, __webpack_require__) {
    function townQuestUpdate(quests) {
        init.isInited ? (_prevArguments.forEach(function(args) {
            doJob.apply(this, args);
        }), deleteArguments(), doJob(quests)) : saveArguments(quests);
    }
    function saveArguments() {
        _prevArguments.push(arguments);
    }
    function deleteArguments() {
        _prevArguments = [];
    }
    function doJob(quests) {
        $(".place-row .quest").html("");
        for (var questsIndex = 0; questsIndex < quests.length; questsIndex++) {
            for (var quest = quests[questsIndex], actors = quest.actors, i = 0; i < actors.length; i++) {
                var actor = actors[i], isFrom = 0 === i && actors.length > 1, actorType = actor[0], actorTypeId = +actor[1], placeId = 1 === actorTypeId ? actor[2].id : actor[2].place, $placeRow = $('.place-row[data-place-id="' + placeId + '"]'), $townQuest = $placeRow.find(".quest"), questHtml = (isFrom ? '<span class="glyphicon glyphicon-arrow-right"></span>' : '<span class="glyphicon glyphicon-arrow-left"></span>') + '<span class="quest-icon-mini pgf-quest-icon ' + quest.type + '" title="' + actorType + '"></span> ';
                $townQuest.append(questHtml);
            }
        }
    }
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _subscribe = utils.subscribe, init = (utils["const"], utils.elements, utils.settings, utils.log, 
    __webpack_require__(36)), _prevArguments = [];
    _subscribe("questUpdate", function(quest) {
        townQuestUpdate(quest);
    }), module.exports = townQuestUpdate;
}, /* 41 */
/***/
function(module, exports, __webpack_require__) {
    function townParams(mapData) {
        var places = mapData.places;
        for (var i in places) {
            places.hasOwnProperty(i) && !function(placeIndex) {
                var place = places[placeIndex];
                requestPlace(place.pos.x, place.pos.y).done(function(html) {
                    var parsed = parsePlaceHtml(html), $placeRow = $('.place-row[data-place-id="' + placeIndex + '"]');
                    parsed.cityParams.forEach(function(item) {
                        var val = item.value;
                        100 > val && (val = "&nbsp;" + val), $placeRow.children('[data-city-param="' + item.name + '"]').html(val);
                    });
                });
            }(i);
        }
    }
    function parsePlaceHtml(html) {
        var $info = $(html), cityParams = [], $cityParamsRows = $info.find("#pgf-cell-place-parameters").find("tr").slice(1);
        return $cityParamsRows.each(function() {
            var $row = $(this), paramName = $.trim($row.children("th").first().text()), valueText = $row.children("td").first().text(), value = parseFloat(valueText);
            cityParams.push({
                name: paramName,
                value: value
            });
        }), {
            cityParams: cityParams
        };
    }
    function requestPlace(x, y) {
        return $.ajax({
            url: "/game/map/cell-info?x=" + x + "&y=" + y + "&_=" + +new Date(),
            method: "get",
            dataType: "html"
        });
    }
    var $ = __webpack_require__(18);
    module.exports = townParams;
}, /* 42 */
/***/
function(module, exports, __webpack_require__) {
    var _short = module.exports = {};
    _short.htmlMessage = __webpack_require__(43), _short.htmlMessages = __webpack_require__(44), _short.htmlLongMessage = __webpack_require__(45);
}, /* 43 */
/***/
function(module, exports, __webpack_require__) {
    function htmlMessage(message) {
        var htmlMsg, time = message[1], msg = message[2], act = message[4];
        if (!act || !act.type) {
            return "";
        }
        var isMe = act.isMe, type = act.type, sec = act.sec, t = "", val = act.value || "", icon = _icons[type];
        //	if (sec) console.log(sec, message[3], time)
        return sec && (icon += '<span class="sub-icon">' + _icons[sec] + "</span>"), "hit" === type ? t = val : "vamp" === type ? t = val + icon + '<span class="vamp">' + act.vamp + "</span>" : isActType("SHORT", type) && (t = val + icon), 
        t && (htmlMsg = '<span class="submessage act act-' + act.type + (isMe ? " me" : " enemy") + '" title="' + time + "> " + msg + '">' + t + "</span>"), htmlMsg || "";
    }
    var utils = (__webpack_require__(18), __webpack_require__(10)), _const = utils["const"], _icons = _const.ICONS, isActType = utils.isActType;
    module.exports = htmlMessage;
}, /* 44 */
/***/
function(module, exports, __webpack_require__) {
    function htmlMessages(messages) {
        for (var html = "", i = 0; i < messages.length; i++) {
            var htmlMsg, message = messages[i], htmlShortMsg = htmlMessage(message), timestamp = message[0], time = message[1];
            if (htmlShortMsg) {
                for (;messages[i + 1] && messages[i + 1][1] === time; ) {
                    var htmlShortMsg2 = htmlMessage(messages[i + 1]);
                    if (!htmlShortMsg2) {
                        break;
                    }
                    htmlShortMsg += htmlShortMsg2, i++;
                }
                htmlMsg = '<li data-ts="' + timestamp + '" class="log-record-short">' + htmlShortMsg + "</li>";
            } else {
                var htmlLongMsg = htmlLongMessage(message);
                htmlMsg = '<li data-ts="' + timestamp + '" class="log-record">' + htmlLongMsg + "</li>";
            }
            html = htmlMsg + html;
        }
        return html;
    }
    var utils = (__webpack_require__(18), __webpack_require__(10)), htmlMessage = (utils.subscribe, utils.elements, utils.settings, utils.log, __webpack_require__(43)), htmlLongMessage = __webpack_require__(45);
    module.exports = htmlMessages;
}, /* 45 */
/***/
function(module, exports, __webpack_require__) {
    function htmlLongMessage(message) {
        var time = message[1], msg = message[2], act = message[4], actType = "";
        if (act && act.type) {
            var isMe = act.isMe;
            actType = " msg msg-" + act.type + (isMe ? " me" : " enemy");
        }
        var messageHighlight = _parse.highlight(msg, act), htmlLongMsg = '<div class="pgf-time time">' + time + '</div><div class="pgf-message message"><div class="submessage' + actType + '">' + messageHighlight + "</div></div>";
        return htmlLongMsg;
    }
    var _parse = (__webpack_require__(18), __webpack_require__(10), __webpack_require__(23));
    module.exports = htmlLongMessage;
}, /* 46 */
/***/
function(module, exports, __webpack_require__) {
    var _groupMessages = module.exports = {};
    _groupMessages.list = __webpack_require__(47), _groupMessages.addMessages = __webpack_require__(48), _groupMessages.drawFakeMessage = __webpack_require__(49), _groupMessages.drawMessages = __webpack_require__(50), 
    _groupMessages.redrawGroup = __webpack_require__(53);
    var $ = __webpack_require__(18), _trace = __webpack_require__(28), utils = __webpack_require__(10), _subscribe = utils.subscribe, _elements = utils.elements, _settings = utils.settings;
    _subscribe("init", function() {
        _groupMessages.addMessages(_trace.messagesLog), _groupMessages.drawMessages(_groupMessages.list), //	_subscribe('groupFinished', function(group, index) {
        //		_groupMessages.redrawGroup(index);
        //	});
        _subscribe("groupStarted", function(group, index) {
            _groupMessages.redrawGroup(index - 1);
        }), _subscribe("newTurn", function(messagesNew) {
            _groupMessages.addMessages(messagesNew), _groupMessages.redrawGroup(_groupMessages.list.length - 1);
        });
    }), _elements.getTabInner("group").on("click", ".group-title", function() {
        var $group = $(this).closest(".group"), index = $group.data("index");
        console.log("group>", _groupMessages.list[index]);
    }), _elements.addControl("group-toggle", {
        title: "Только действия / Подробности",
        content: '<span class="glyphicon glyphicon-chevron-' + (_settings.settingsValues.groupOpenOnDefault ? "down" : "up") + '"></span>'
    }).on("click", function() {
        //		_elements.activeTab('group');
        var $icon = $(this).children(".glyphicon"), isOpen = $icon.hasClass("glyphicon-chevron-up");
        _elements.getTabInner("group").children(".group").toggleClass("open", isOpen), _elements.getTabInner("archive").find(".group").toggleClass("open", isOpen), $icon.toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
    }), $("body").on("click", ".group-toggle", function() {
        $(this).closest(".group").toggleClass("open");
    });
}, /* 47 */
/***/
function(module, exports) {
    module.exports = [];
}, /* 48 */
/***/
function(module, exports, __webpack_require__) {
    function addMessages(messagesList) {
        for (var i = 0; i < messagesList.length; i++) {
            addMessage(messagesList[i]);
        }
        return messagesGrouped;
    }
    /*
	data: {
		actionName: "пытается одолеть волка"
		info_link: "/guide/mobs/7/info"
		type: "fight"
		typeId: 3
	}*/
    function addMessage(message) {
        function addToLastGroup(message, data) {
            var lastG = messagesGrouped[messagesGrouped.length - 1];
            if (data && (lastG.data = $.extend(data, lastG.data)), lastG.messages.length) {
                var prevMsg = lastG.messages[lastG.messages.length - 1];
                message[0] - prevMsg[0] > 1200 && (// hole in messages 20 min
                lastG.data.isBroken = 4);
            }
            return lastG.messages.push(message), lastG;
        }
        function finishGroup(data) {
            var lastG = messagesGrouped[messagesGrouped.length - 1];
            delete lastG.data.unfinished, lastG.data.fightStarted && (lastG.data.isBroken = 3), data && (lastG.data = $.extend(data, lastG.data)), _publish("groupFinished", lastG, messagesGrouped.length - 1);
        }
        function newGroup(message, data) {
            var newG = {
                data: {
                    unfinished: 1
                },
                messages: []
            };
            data && (newG.data = $.extend(data, newG.data)), message && newG.messages.push(message), messagesGrouped[messagesGrouped.length] = newG, _publish("groupStarted", newG, messagesGrouped.length - 1);
        }
        var currActionName, currType, currInfoLink, currTypeId, grData, actionName, hero = message[3], act = message[4], action = hero.action || !1, currGr = messagesGrouped[messagesGrouped.length - 1], isFirstGrouop = !currGr;
        if (isFirstGrouop ? /* самая первая группа */
        currGr = {
            data: {}
        } : (currActionName = currGr.data.actionName, currType = currGr.data.type, currInfoLink = currGr.data.info_link, currTypeId = currGr.data.typeId), action) {
            actionName = action.description;
            var actionTypeId = action.type, actionType = _const.ACTION_TYPE_NAMES[actionTypeId], actionInfoLink = action.info_link;
            currActionName || (currGr.data.actionName = currActionName = actionName), currType || (currGr.data.type = currType = actionType), currInfoLink || (currGr.data.info_link = currInfoLink = actionInfoLink), 
            currTypeId || (currGr.data.typeId = currTypeId = actionTypeId), grData = {
                actionName: actionName,
                type: actionType,
                info_link: actionInfoLink,
                typeId: actionTypeId
            }, isFirstGrouop && (grData.isBroken = 1);
        }
        if (act) {
            var actType = act.type, isFightStart = isActType("FIGHT_START", actType), isFightEnd = isActType("LOOT", actType);
            if (("godheal" === actType || "godhit" === actType) && (grData = $.extend(grData, {
                god: 1
            })), isFightStart) {
                //fight started, not finished
                return isFirstGrouop || finishGroup(), void newGroup(message, {
                    fightStarted: 1
                });
            }
            if (isFightEnd) {
                if (isFirstGrouop) {
                    newGroup(message, grData);
                } else {
                    var lastG = addToLastGroup(message, {
                        actionName: "в бою",
                        type: "fight",
                        info_link: "",
                        typeId: 3
                    });
                    lastG.data.fightStarted ? (delete lastG.data.fightStarted, 4 !== lastG.data.isBroken && 5 !== lastG.data.isBroken && delete lastG.data.isBroken) : lastG.data.isBroken = 2, 
                    finishGroup();
                }
                return void (action && actionName !== currActionName && newGroup([ message[0], message[1], actionName, !1, !1 ], grData));
            }
            currGr.messages && currGr.messages.length && !currGr.data.fightStarted && isActType("FIGHT", act.type) && (grData = $.extend(grData, {
                isBroken: 5
            }));
        }
        return action && actionName && currActionName && actionName !== currActionName ? (finishGroup(), void newGroup(message, grData)) : void (isFirstGrouop ? newGroup(message, grData) : addToLastGroup(message, grData));
    }
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _const = utils["const"], _publish = utils.publish, isActType = utils.isActType, messagesGrouped = __webpack_require__(47);
    module.exports = addMessages;
}, /* 49 */
/***/
function(module, exports, __webpack_require__) {
    function drawFakeMessage(message) {
        var $lastGroup = $groupsContent.children(".group").first(), html = _shortMessages.htmlLongMessage(message);
        $lastGroup.prepend(html);
    }
    var utils = __webpack_require__(10), _elements = utils.elements, _shortMessages = __webpack_require__(42), $groupsContent = _elements.getTabInner("group");
    module.exports = drawFakeMessage;
}, /* 50 */
/***/
function(module, exports, __webpack_require__) {
    function drawMessages(messagesGrouped) {
        for (var html = "", i = 0; i < messagesGrouped.length; i++) {
            html = drawGroup(messagesGrouped[i], i) + html;
        }
        $groupsContent.html(html);
    }
    var utils = __webpack_require__(10), _elements = utils.elements, drawGroup = __webpack_require__(51), $groupsContent = _elements.getTabInner("group");
    module.exports = drawMessages;
}, /* 51 */
/***/
function(module, exports, __webpack_require__) {
    function drawGroup(group, index, isOpen) {
        isOpen = isOpen || _settings.settingsValues.groupOpenOnDefault;
        var html = '<div class="group' + (isOpen ? " open" : "") + '" data-index="' + index + '">' + drawGroupInner(group, messagesGrouped[index + 1]) + "</div>";
        return html;
    }
    var utils = __webpack_require__(10), _settings = utils.settings, drawGroupInner = __webpack_require__(52), messagesGrouped = __webpack_require__(47);
    module.exports = drawGroup;
}, /* 52 */
/***/
function(module, exports, __webpack_require__) {
    function drawGroupInner(group, groupNext) {
        if (!group || !group.messages || !group.messages.length) {
            return "";
        }
        var messages = group.messages, groupData = group.data, messageFirst = messages[0], messageLast = messages[messages.length - 1], groupType = groupData.type, groupLink = (groupData.info_link || "").replace("/info", ""), htmlGroupIcon = _const.ACTION_TYPE_ICONS[groupType] || "", iconAttr = 'class="action-icon ' + groupType + '" title="' + _const.ACTION_TYPE_TEXTS[groupType] + '"';
        if (groupData.isBroken && !groupData.unfinished) {
            htmlGroupIcon = _const.ACTION_TYPE_ICONS.broken;
            var title = _const.ERROR_CODES[groupData.isBroken || 1];
            iconAttr = 'class="action-icon broken" title="' + title + '"';
        }
        htmlGroupIcon = groupLink ? "<a " + iconAttr + ' href="' + groupLink + '" target="_blank">' + htmlGroupIcon + "</a>" : "<span " + iconAttr + '">' + htmlGroupIcon + "</span>";
        var htmlTitle = '<span class="action-name">' + (groupData.actionName || "неизвестное действие") + "</span>", timeStart = messageFirst[0], timeEnd = messageLast[0];
        if ("fight" !== groupType && groupNext && groupNext.messages[0]) {
            var timeStartNext = groupNext.messages[0] && groupNext.messages[0][0];
            120 > timeStartNext - timeEnd && (// проверка на случай сломанной группы
            timeEnd = timeStartNext);
        }
        var timeSpan = timeEnd - timeStart, htmlTime = /*'<span class="glyphicon glyphicon-time"></span> ' +*/
        '<span class="group-time ' + (timeSpan > 600 ? "bad" : timeSpan > 300 ? "average" : "") + '">' + _utils.timeSpan(timeSpan) + "</span> ", htmlGroupList = _shortMessages.htmlMessages(messages), html = '<div class="group-title on-close' + (groupData.god ? " god" : "") + '">' + htmlGroupIcon + htmlTime + htmlTitle + '</div><div class="group-controls"><span class="group-toggle on-close text-muted glyphicon glyphicon-chevron-up"></span><span class="group-toggle on-open text-muted glyphicon glyphicon-chevron-down"></span></div><ul class="unstyled pgf-log-list on-open">' + htmlGroupList + "</ul>";
        return html;
    }
    var utils = (__webpack_require__(18), __webpack_require__(10)), _const = (utils.subscribe, utils["const"]), _utils = (utils.elements, utils.settings, utils.log, 
    utils.utils), _shortMessages = __webpack_require__(42);
    module.exports = drawGroupInner;
}, /* 53 */
/***/
function(module, exports, __webpack_require__) {
    function redrawGroup(index, isOpen) {
        var $group = $groupsContent.children('.group[data-index="' + index + '"]');
        $group.length ? ("undefined" != typeof isOpen && $group.toggleClass("open", isOpen), $group.html(drawGroupInner(messagesGrouped[index], messagesGrouped[index + 1]))) : $groupsContent.prepend(drawGroup(messagesGrouped[index], index, isOpen));
    }
    var utils = __webpack_require__(10), _elements = utils.elements, messagesGrouped = __webpack_require__(47), drawGroup = __webpack_require__(51), drawGroupInner = __webpack_require__(52), $groupsContent = _elements.getTabInner("group");
    module.exports = redrawGroup;
}, /* 54 */
/***/
function(module, exports, __webpack_require__) {
    /**
	 * Этот модуль сохраняет данные из сообщения в архив
	 * само сообщение не сохраняется
	 * модуль нужен для построения статистики
	 *
	 * Так же есть возможность посмотреть архив, переключатель в настройках
	 * */
    var _archive = module.exports = {};
    _archive.drawArchiveGroups = __webpack_require__(55), _archive.loadArchiveGroups = __webpack_require__(57), _archive.saveArchiveGroups = __webpack_require__(59), 
    _archive.addArchiveGroup = __webpack_require__(61), _archive.archiveGroups = __webpack_require__(56);
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _subscribe = utils.subscribe, _elements = utils.elements, _groupMessages = (utils.settings, __webpack_require__(46));
    _subscribe("init", function() {
        _archive.loadArchiveGroups();
        for (var i = 1; i < _groupMessages.list.length; i++) {
            var gr = _groupMessages.list[i];
            _archive.addArchiveGroup(gr);
        }
        _archive.saveArchiveGroups(), _subscribe("newMessages", function() {
            var group = _groupMessages.list[_groupMessages.list.length - 1];
            _archive.addArchiveGroup(group);
        }), _subscribe("groupFinished", function(group, index) {
            _archive.addArchiveGroup(group), _archive.saveArchiveGroups();
        });
    }), _elements.getTabInner("archive").on("click", ".group-title", function() {
        var $group = $(this).closest(".group"), index = $group.data("index"), ts = _archive.archiveGroups[index].ts || [];
        console.log("archive>", _archive.archiveGroups[index], index, new Date(1e3 * ts[0]));
    }), _subscribe("newTurn", function(messagesNew) {
        window.setTimeout(function() {
            _elements.getControl("archive-log").find(".value").text(_archive.archiveGroups.length);
        }, 10);
    });
}, /* 55 */
/***/
function(module, exports, __webpack_require__) {
    function drawArchiveGroups(archiveGroups) {
        for (var levelIndex = 0, levelsLog = _log.get("levelsLog") || [], i = 0; i < archiveGroups.length; i++) {
            for (var group = archiveGroups[i], ts = group.ts[1], lv = levelsLog[levelIndex] || []; ts > lv[0]; ) {
                levelIndex++;
                var lvlHtml = '<div class="level">' + lv[1] + " уровень!</div>";
                $archiveContent.prepend(lvlHtml), lv = levelsLog[levelIndex] || [];
            }
            drawArchiveGroup(archiveGroups[i], i, archiveGroups);
        }
    }
    function drawArchiveGroup(archiveGroup, index, archiveGroups) {
        var groupLink, isOpen = _settings.settingsValues.groupOpenOnDefault, groupType = archiveGroup.broken ? "broken" : archiveGroup.type;
        archiveGroup.mobId && (groupLink = "/guide/mobs/" + archiveGroup.mobId);
        var htmlGroupIcon = _const.ACTION_TYPE_ICONS[groupType] || "";
        htmlGroupIcon = groupLink ? '<a class="action-icon ' + groupType + '" href="' + groupLink + '" target="_blank">' + htmlGroupIcon + "</a>" : '<span class="action-icon ' + groupType + '">' + htmlGroupIcon + "</span>";
        var title = archiveGroup.text || "неизвестное действие", htmlTitle = '<span class="action-name">' + title + "</span>", timeStart = archiveGroup.ts[0], timeEnd = archiveGroup.ts[1], archiveGroupNext = archiveGroups[index + 1];
        if ("fight" !== groupType && archiveGroupNext && archiveGroupNext.ts) {
            var timeStartNext = archiveGroupNext.ts[0];
            120 > timeStartNext - timeEnd && (// проверка на случай сломанной группы (3)
            timeEnd = timeStartNext);
        }
        var timeSpan = timeEnd - timeStart, htmlTime = /*'<span class="glyphicon glyphicon-time"></span> ' +*/
        '<span class="group-time ' + (timeSpan > 600 ? "bad" : timeSpan > 300 ? "average" : "") + '">' + _utils.timeSpan(timeSpan) + "</span> ", htmlGroupList = "";
        if (!archiveGroup.total || "fight" !== archiveGroup.type && "fight-god" !== archiveGroup.type) {
            var actName = _const.ACTION_TYPE_TEXTS[archiveGroup.type || "undefined"];
            archiveGroup.broken && (actName = _const.ERROR_CODES[archiveGroup.broken || 1]), htmlGroupList = '<span class="stats-archive">' + actName + "</span>";
        } else {
            htmlGroupList = '<span class="stats-archive stats-archive-me">' + drawArchiveActStat(archiveGroup.total.me) + '</span><span class="stats-archive stats-archive-enemy">' + drawArchiveActStat(archiveGroup.total.enemy) + "</span>";
        }
        var html = '<div class="group-title">' + htmlGroupIcon + htmlTime + htmlTitle + '</div><div class="group-controls"><span class="group-toggle on-close text-muted glyphicon glyphicon-chevron-up"></span><span class="group-toggle on-open text-muted glyphicon glyphicon-chevron-down"></span></div><div class="archive-log-list on-open">' + htmlGroupList + "</div>";
        html = '<div class="group' + (isOpen ? " open" : "") + '" data-index="' + index + '">' + html + "</div>", $archiveContent.prepend(html);
    }
    function drawArchiveActStat(stats) {
        //			html += JSON.stringify(stats)
        for (var types = [ "dmgSum" ].concat(_const.FIGHT), html = "", i = 0; i < types.length; i++) {
            var type = types[i];
            if (stats[type]) {
                var stat = stats[type], htmlStat = "", htmlStatName = _icons[type], count = stat.count, sum = stat.sum;
                isActType("FIGHT_COUNTS", type) ? htmlStat += count + "x" + htmlStatName : "dmgSum" === type ? htmlStat += htmlStatName + "=<b>" + sum + "</b> " : (htmlStat += count + "x" + htmlStatName, 
                htmlStat += "=" + sum + " "), html += '<span class="stats-archive-act stats-archive-' + type + '">' + htmlStat + "</span>";
            }
        }
        return html;
    }
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _subscribe = utils.subscribe, _const = utils["const"], _icons = _const.ICONS, _elements = utils.elements, _utils = utils.utils, _settings = utils.settings, _log = utils.log, isActType = utils.isActType, archiveGroups = __webpack_require__(56), showArchive = _settings.settingsValues.showArchive, $archiveTab = _elements.getTab("archive").toggle(showArchive), $archiveTabContent = _elements.getTabInner("archive");
    $('<span class="link-ajax archive-renew">обновить</span>').appendTo($archiveTabContent).on("click", function() {
        drawArchiveGroups(archiveGroups);
    });
    var $archiveContent = $('<div class="archive-content"></div>').appendTo($archiveTabContent);
    $archiveContent.on("click", ".group-toggle", function() {
        $(this).closest(".group").toggleClass("open");
    }), module.exports = drawArchiveGroups, _subscribe("settingsChange", function(key, value) {
        "showArchive" === key && (showArchive = value, $archiveTab.toggle(showArchive), showArchive || $archiveContent.html(""));
    });
}, /* 56 */
/***/
function(module, exports) {
    module.exports = [];
}, /* 57 */
/***/
function(module, exports, __webpack_require__) {
    function loadArchiveGroups() {
        var _archiveGroups = _log.get("archiveGroups") || [];
        _archiveGroups.sort(function(a, b) {
            return a.ts[0] - b.ts[0];
        });
        for (var i = 0; i < _archiveGroups.length - 1; i++) {
            /* remove doubles */
            _archiveGroups[i].ts[0] === _archiveGroups[i + 1].ts[0] && (_archiveGroups.splice(i, 1), i--);
        }
        _archiveGroups.map(upgradeArchiveGroup), archiveGroups = _archiveGroups;
    }
    var utils = (__webpack_require__(18), __webpack_require__(10)), _log = utils.log, archiveGroups = __webpack_require__(56), upgradeArchiveGroup = __webpack_require__(58);
    module.exports = loadArchiveGroups;
}, /* 58 */
/***/
function(module, exports, __webpack_require__) {
    function upgradeArchiveGroup(archiveGroup, index) {
        /* подсчет всех сумм из архива */
        function countTotalFromArchive(archiveGroupFrom) {
            var addTo = {
                dmgSum: {
                    count: 0,
                    sum: 0
                }
            };
            for (var type in archiveGroupFrom) {
                if (archiveGroupFrom.hasOwnProperty(type)) {
                    var count, sum, vals = archiveGroupFrom[type], isPassive = isActType("PASSIVE", type), isHeal = "heal" === type;
                    "number" == typeof vals ? (count = vals, sum = 0) : (count = vals.length, sum = vals.reduce(function(pv, cv) {
                        return pv + cv;
                    }, 0) || 0);
                    var av, critMin, critVals, critCount = 0;
                    if (addTo[type] = addTo[type] || {
                        sum: 0,
                        count: 0
                    }, "hit" === type && sum && (av = sum / count, critMin = 1.35 * av, critVals = vals.filter(function(item) {
                        return item > critMin;
                    }), critCount = critVals.length), critCount) {
                        addTo.crit = addTo.crit || {
                            sum: 0,
                            count: 0
                        };
                        var critSum = critVals.reduce(function(pv, cv) {
                            return pv + cv;
                        }, 0) || 0;
                        addTo.crit.count += critCount, addTo.crit.sum += critSum;
                    }
                    addTo[type].count += count, addTo[type].sum += sum;
                    var typeSumTo = _const.SUM_TO_MAIN[type];
                    typeSumTo && (addTo[typeSumTo] = addTo[typeSumTo] || {
                        sum: 0,
                        count: 0
                    }, addTo[typeSumTo].sum += sum), isHeal || (isPassive || (addTo.dmgSum.count += count), addTo.dmgSum.sum += sum);
                }
            }
            return addTo;
        }
        return archiveGroup && archiveGroup.ts ? (archiveGroup.me && $.extend(archiveGroup, {
            total: {
                me: countTotalFromArchive(archiveGroup.me, "me"),
                enemy: countTotalFromArchive(archiveGroup.enemy, "enemy", 66 === archiveGroup.mobId)
            }
        }), archiveGroup) : archiveGroup;
    }
    /** добавляет к архивам поле total */
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _const = utils["const"], isActType = (__webpack_require__(56), utils.isActType);
    module.exports = upgradeArchiveGroup;
}, /* 59 */
/***/
function(module, exports, __webpack_require__) {
    function saveArchiveGroups() {
        var max = _settings.settingsValues.maxArchiveLength || _const.MAX_ARCHIVE_LENGTH;
        archiveGroups = archiveGroups.slice(archiveGroups.length - max);
        var toSave = archiveGroups.map(downgradeArchiveGroup);
        _log.set("archiveGroups", toSave);
    }
    var archiveGroups = __webpack_require__(56), downgradeArchiveGroup = __webpack_require__(60), utils = __webpack_require__(10), _const = utils["const"], _settings = utils.settings, _log = utils.log;
    module.exports = saveArchiveGroups;
}, /* 60 */
/***/
function(module, exports, __webpack_require__) {
    function downgradeArchiveGroup(fullStats) {
        var archiveGroup = $.extend({}, fullStats);
        return delete archiveGroup.total, delete archiveGroup.level, archiveGroup;
    }
    var $ = __webpack_require__(18);
    module.exports = downgradeArchiveGroup;
}, /* 61 */
/***/
function(module, exports, __webpack_require__) {
    function addArchiveGroup(group) {
        if (group) {
            var archiveGroup = countArchiveFromGroup(group);
            if (archiveGroup) {
                var lastStatGroup = archiveGroups[archiveGroups.length - 1];
                if (lastStatGroup && lastStatGroup.ts[0] !== archiveGroup.ts[0]) {
                    if (lastStatGroup.ts[0] < archiveGroup.ts[0]) {
                        archiveGroups.push(archiveGroup);
                    } else {
                        for (var isInArr = !1, i = 0; i < archiveGroups.length; i++) {
                            var sg = archiveGroups[i];
                            if (sg.ts[0] === archiveGroup.ts[0]) {
                                archiveGroups[i] = archiveGroup, isInArr = !0;
                                break;
                            }
                        }
                        isInArr || (archiveGroups.push(archiveGroup), archiveGroups.sort(function(a, b) {
                            return a.ts[0] - b.ts[0];
                        }));
                    }
                } else {
                    /* последняя группа обновляется каждый ход*/
                    archiveGroups[archiveGroups.length - 1] = archiveGroup;
                }
            }
        }
    }
    var archiveGroups = __webpack_require__(56), countArchiveFromGroup = __webpack_require__(62);
    module.exports = addArchiveGroup;
}, /* 62 */
/***/
function(module, exports, __webpack_require__) {
    function countArchiveFromGroup(group) {
        var groupData = group.data, messages = group.messages;
        if (!messages.length) {
            return !1;
        }
        var isBroken = groupData.isBroken, dataType = groupData.type, first = messages[0], last = messages[messages.length - 1], archiveGroup = $.extend({}, {
            ts: [ first[0], last[0] ],
            type: dataType,
            text: groupData.actionName,
            broken: isBroken
        });
        if ("fight" === dataType && !isBroken) {
            if (archiveGroup.me = {}, archiveGroup.enemy = {}, groupData.info_link) {
                var mobId = groupData.info_link.replace("/guide/mobs/", "").replace("/info", "");
                +mobId && (archiveGroup.mobId = +mobId);
            }
            /* пересчет последней группы */
            for (var i = 0; i < messages.length; i++) {
                var message = messages[i], act = message[4];
                if (act) {
                    var type = act.type;
                    /* тип фразы */
                    if (isActType("FIGHT", type)) {
                        var isMe = act.isMe, addTo = archiveGroup[isMe ? "me" : "enemy"];
                        isActType("FIGHT_VALUES", type) ? (addTo[type] = addTo[type] || [], addTo[type].push(act.value)) : (addTo[type] = addTo[type] || 0, addTo[type]++);
                    } else {
                        isActType("LOOT", type) && (archiveGroup.loot = type);
                    }
                }
            }
        }
        return upgradeArchiveGroup(archiveGroup), archiveGroup;
    }
    /** пересчет группы в архив */
    var $ = __webpack_require__(18), utils = __webpack_require__(10), isActType = (utils.subscribe, utils["const"], utils.elements, utils.settings, utils.log, utils.isActType), upgradeArchiveGroup = (__webpack_require__(56), 
    __webpack_require__(58));
    module.exports = countArchiveFromGroup;
}, /* 63 */
/***/
function(module, exports, __webpack_require__) {
    /**
	 * Модуль нужен для отрисовки статистики
	 * статистика собирается из архива
	 * */
    var _stats = module.exports = {};
    _stats.drawStatsSide = __webpack_require__(64), _stats.countStatsTotal = __webpack_require__(65);
    var utils = __webpack_require__(10), _subscribe = utils.subscribe;
    _subscribe("settingsChange", function(key, value) {
        [ "statsByMob", "statsByMobId", "myStatsByMob", "statsActionsCount", "statsByLevel", "statsByLevelValue" ].indexOf(key) > 0 && _stats.drawStatsSide();
    }), _subscribe("preload", function() {
        _stats.drawStatsSide(), _subscribe("newMessages", function() {
            _stats.drawStatsSide();
        });
    });
}, /* 64 */
/***/
function(module, exports, __webpack_require__) {
    function drawStatsSide(archiveGroups) {
        archiveGroups = archiveGroups || _archive.archiveGroups;
        var htmlMe, groups = _settings.settingsValues.statsByLevel ? groupsByLevel(archiveGroups, _settings.settingsValues.statsByLevelValue) : archiveGroups, statsTotal = countStatsTotal(groups, _settings.settingsValues.statsActionsCount), mobId = _settings.settingsValues.statsByMob && (_settings.settingsValues.statsByMobId || statsTotal.lastMobId), html = "";
        htmlMe = drawStatsSideByActor(_settings.settingsValues.myStatsByMob && mobId ? statsTotal.meByMob[mobId] : statsTotal.me);
        var htmlEnemy;
        htmlEnemy = mobId ? '<tr class="unhover"><td class="stats-against" colspan="5"><a href="/guide/mobs/' + mobId + '" target="_blank">' + _const.MOBS[mobId] + "</a></td></tr>" + drawStatsSideByActor(statsTotal.enemyByMob[mobId]) : '<tr class="unhover"><td class="stats-against" colspan="5">бестии</td></tr>' + drawStatsSideByActor(statsTotal.enemy);
        for (var statsTable = '<table class="table table-condensed table-noborder table-hover-dark table-stats"><tr class="unhover"><th class="stats-name"></th><th class="stats-average" title="среднее значение">средн</th><th class="stats-count" title="количество срабатываний из 100 ударов">шанс</th><th class="stats-sum" title="доля от общего урона">урон</th><th class="stats-bonus" title="прибавка к урону от умения">эфф</th></tr><tbody class="stats-me">' + htmlMe + '</tbody><tbody class="stats-enemy">' + htmlEnemy + "</tbody></table>", loot = statsTotal.loot, htmlLoot = '<span class="stats-name" title="Поднял/Пусто/Выбросил/Умер">' + _icons.pickup + '</span> <span title="Поднял">' + loot.pickup + '</span> / <span title="Пусто">' + loot.empty + '</span> / <span title="Выбросил">' + loot.drop + '</span> / <span title="Умер">' + loot.death + "</span>", htmlTime = "<b>" + statsTotal.actionsSum + "</b> " + _utils.declensionByNumber(statsTotal.actionsSum, [ "действие", "действия", "действий" ]) + " за " + _utils.timeSpan(statsTotal.actionsTime) + "<br />", interestAverageActions = [ {
            type: "fight,rest",
            text: "бой/отдых",
            icon: '<span class="glyphicon glyphicon-flag"></span>'
        }, {
            type: "walk",
            text: "в пути"
        }, {
            type: "quest,city,nearcity,noeffect",
            text: "задания"
        }, {
            type: "idle",
            text: "безделье"
        }, {
            type: "dead",
            text: "воскресание"
        }, {
            type: "energy",
            text: "восстановление"
        }, {
            type: "companionHeal",
            text: "уход на спутником"
        }, {
            type: "trade,equip",
            text: "торговля и экипировка"
        }, {
            type: "broken,proxy,pvp,undefined",
            text: "остальное"
        }, {
            title: "<br/><b>В среднем:</b>"
        }, {
            type: "fight,rest",
            countType: "fight",
            countAverage: 1,
            icon: '<span class="glyphicon glyphicon-flag"></span>',
            text: "на бой с учетом отдыха"
        }, {
            type: "fight",
            countAverage: 1,
            text: "на бой"
        }, {
            type: "rest",
            countAverage: 1,
            text: "на отдых"
        } ], i = 0; i < interestAverageActions.length; i++) {
            var act = interestAverageActions[i];
            if (act.title) {
                htmlTime += act.title + "<br />";
            } else {
                for (var type, types = act.type.split(","), count = 0, countTotal = 0, time = 0, j = 0; j < types.length; j++) {
                    type = types[j], time += statsTotal.actionsTimes[type] || 0, countTotal += statsTotal.actionsCounts[type] || 0, act.countType || (count += statsTotal.actionsCounts[type]);
                }
                type = types[0], act.countType && (count = statsTotal.actionsCounts[act.countType]);
                var timePercent = Math.round(time / statsTotal.actionsTime * 1e3) / 10;
                act.countAverage && (time /= count), time && (htmlTime += '<span class="action-icon ' + (act.countType || type) + '" title="' + types.map(function(item) {
                    return _const.ACTION_TYPE_TEXTS[item];
                }).join(", ") + '">' + (act.icon || _const.ACTION_TYPE_ICONS[type]) + "</span>", htmlTime += act.countAverage ? _utils.timeSpan(time) : '<span title="' + _utils.timeSpan(time) + '">' + timePercent.toFixed(1) + "%</span> - ", 
                htmlTime += " " + act.text + " (" + countTotal + ")<br />");
            }
        }
        html += statsTable, html += '<div class="stats-side stats-loot">' + htmlLoot + "</div>", html += '<div class="stats-side stats-time">' + htmlTime + "</div>", $stats.html(html);
    }
    function drawStatsSideByActor(stats) {
        var html = "";
        if (!stats) {
            return html;
        }
        for (var types = [].concat(_const.ACTIVE, [ "dmgSum" ], _const.PASSIVE), i = 0; i < types.length; i++) {
            var type = types[i], isDot = isActType("DOT", type), isPassive = isActType("PASSIVE", type), sumTo = _const.SUM_TO_MAIN[type], dmgSum = stats.dmgSum || {}, hit = stats.hit || {};
            if (stats[type]) {
                var stat = stats[type], title = _const.ACTION_TRANSLATE[type] + (sumTo ? ", включено в " + _const.ACTION_TRANSLATE[sumTo] : isPassive ? ", не учитывается в сумме" : ""), htmlStat = '<td class="stats-name" title="' + title + '">' + _icons[type] + "</td> ", count = stat.count, sum = stat.sum, average = Math.round(sum / count * 100) / 100 || 0, hitCount = hit.count, hitSum = hit.sum, totalSum = dmgSum.sum, chance = "dmgSum" === type ? 100 : count / (hitCount + count) * 100, chanceText = "hit" === type ? "-" : chance >= 100 ? Math.round(10 * chance) / 10 : chance.toFixed(2), countText = "сработал " + _utils.declensionByNumber(count, [ "раз", "раза", "раз" ], 1);
                if (sum) {
                    var averagePercents = sum / count * hitCount / hitSum * 100, averagePercentsText = Math.round(100 * averagePercents) / 100 + "", dmgPercents = sum / totalSum * 100, dmgPercentsText = "" + (100 > dmgPercents ? dmgPercents.toFixed(1) : Math.round(dmgPercents)) + "%", sumText = "всего " + _utils.declensionByNumber(sum, [ "урон", "урона", "урона" ], 1), bonusPercent = Math.round((averagePercents - 100) * chance) / 100, bonusPercentText = bonusPercent && !isDot ? (bonusPercent >= 0 ? "+" : "&ndash;") + Math.abs(bonusPercent) + "%" : "", bpTranslateText = (averagePercentsText >= 100 ? "+" : "&ndash;") + Math.abs(Math.round(100 * averagePercentsText - 1e4) / 100) + "% x " + chanceText;
                    htmlStat += '<td class="stats-average" title="' + averagePercentsText + '%">' + average.toFixed(2) + "</td>", htmlStat += '<td class="stats-count" title="' + countText + '">' + chanceText + "</td>", 
                    htmlStat += '<td class="stats-sum" title="' + sumText + '">' + dmgPercentsText + "</td>", htmlStat += '<td class="stats-bonus" title="' + bpTranslateText + '">' + bonusPercentText + "</td>";
                } else {
                    htmlStat += '<td class="stats-average"></td>', htmlStat += '<td class="stats-count" title="' + countText + '">' + chanceText + "</td>", htmlStat += '<td class="stats-count"></td>', 
                    htmlStat += '<td class="stats-sum"></td>';
                }
                html += '<tr class="stats-row stats-row-' + type + '">' + htmlStat + "</tr>";
            }
        }
        return html;
    }
    function groupsByLevel(archiveGroups, level) {
        var lv1, lv2, levelsLog = _log.get("levelsLog") || [];
        level ? (lv1 = levelsLog.filter(function(item) {
            return item[1] === level;
        })[0] || [], lv2 = levelsLog.filter(function(item) {
            return item[1] === level + 1;
        })[0] || []) : (lv1 = levelsLog[levelsLog.length - 1], lv2 = []);
        for (var time1 = lv1[0], time2 = lv2[0], i1 = null, i2 = null, i = 0; i < archiveGroups.length; i++) {
            var ts1 = archiveGroups[i].ts[0], ts2 = archiveGroups[archiveGroups.length - 1 - i].ts[0];
            null === i1 && ts1 > time1 && (i1 = i), null === i2 && time2 > ts2 && (i2 = archiveGroups.length - 1 - i);
        }
        return null === i1 || time2 ? archiveGroups.slice(i1 || 0, i2 || 0) : archiveGroups.slice(i1);
    }
    var utils = (__webpack_require__(18), __webpack_require__(10)), _const = utils["const"], _icons = _const.ICONS, _elements = utils.elements, _utils = utils.utils, _settings = utils.settings, _log = utils.log, isActType = utils.isActType, _archive = __webpack_require__(54), countStatsTotal = __webpack_require__(65);
    _elements.addTab("stats-side", {
        zone: "equip",
        title: "стат",
        content: '<div class="stats" />'
    }), _elements.activeTab("stats-side");
    var $stats = _elements.getTabInner("stats-side");
    module.exports = drawStatsSide;
}, /* 65 */
/***/
function(module, exports, __webpack_require__) {
    function countStatsTotal(archiveGroups, count) {
        archiveGroups = archiveGroups || _archive.archiveGroups, count = count || archiveGroups.length;
        for (var mobId, me = {}, enemy = {}, fights = 0, loot = {
            pickup: 0,
            empty: 0,
            drop: 0,
            death: 0
        }, meByMob = {}, enemyByMob = {}, actionsTimes = {}, actionsCounts = {}, actionsSum = 0, actionsTime = 0, fightRestTime = 0, otherTime = 0, i = Math.max(archiveGroups.length - count, 0); i < archiveGroups.length; i++) {
            var fullStats = archiveGroups[i], type = fullStats.broken ? "broken" : fullStats.type;
            if (fullStats.ts && "broken" !== type) {
                if ("fight" === type) {
                    mobId = fullStats.mobId, addToStats(me, fullStats.total.me), addToStats(enemy, fullStats.total.enemy), meByMob[mobId] = meByMob[mobId] || {}, addToStats(meByMob[mobId], fullStats.total.me), 
                    enemyByMob[mobId] = enemyByMob[mobId] || {}, addToStats(enemyByMob[mobId], fullStats.total.enemy), fights++;
                    var lt = fullStats.loot;
                    lt && loot[lt]++;
                }
                var nextFullStats = archiveGroups[i + 1], timeStart = fullStats.ts[0], timeEnd = fullStats.ts[1];
                if ("fight" !== type && nextFullStats && nextFullStats.ts) {
                    var timeStartNext = nextFullStats.ts[0];
                    120 > timeStartNext - timeEnd && (// проверка на случай сломанной группы (2)
                    timeEnd = timeStartNext);
                }
                var time = timeEnd - timeStart;
                //				lastTimeEnd = fullStats.ts[1];
                "fight" === type || "rest" === type ? fightRestTime += time : otherTime += time, type = type || "undefined", actionsTimes[type] = (actionsTimes[type] || 0) + time, 
                actionsCounts[type] = (actionsCounts[type] || 0) + 1, actionsTime += time, actionsSum++;
            }
        }
        var statsTotal = {
            fights: fights,
            fightRestTime: fightRestTime,
            otherTime: otherTime,
            actionsTime: actionsTime,
            actionsTimes: actionsTimes,
            actionsCounts: actionsCounts,
            actionsSum: actionsSum,
            loot: loot,
            me: me,
            enemy: enemy,
            meByMob: meByMob,
            enemyByMob: enemyByMob
        };
        return mobId && (statsTotal.lastMobId = mobId), statsTotal;
    }
    function addToStats(addTo, addFrom) {
        for (var type in addFrom) {
            if (addFrom.hasOwnProperty(type)) {
                var st = addFrom[type];
                addTo[type] = addTo[type] || {
                    sum: 0,
                    count: 0
                }, "number" == typeof st ? addTo[type].count += st : (addTo[type].count += st.count, addTo[type].sum += st.sum);
            }
        }
    }
    var _archive = __webpack_require__(54);
    module.exports = countStatsTotal;
}, /* 66 */
/***/
function(module, exports, __webpack_require__) {
    var _notifications = module.exports = {};
    _notifications.quests = __webpack_require__(67), _notifications.hero = __webpack_require__(70), _notifications.sendNotify = __webpack_require__(69);
}, /* 67 */
/***/
function(module, exports, __webpack_require__) {
    var utils = __webpack_require__(10), _subscribe = utils.subscribe, _quests = module.exports = {};
    _quests.checkQuests = __webpack_require__(68), _subscribe("preload", function() {
        _subscribe("newMessages", function(messagesNew, game_data) {
            var hero = game_data.account.hero, quests = hero.quests.quests;
            _quests.checkQuests(quests);
        });
    });
}, /* 68 */
/***/
function(module, exports, __webpack_require__) {
    function checkQuests(quests) {
        for (var line = quests[1].line, lineOld = lastQuests && lastQuests[1] && lastQuests[1].line || [], newLines = [], i = 0; i < line.length; i++) {
            var q = line[i], qOld = lineOld[i];
            qOld && isSameQuest(q, qOld) || (_settings.settingsValues.notifyQuestChoose && q.choice_alternatives && q.choice_alternatives.length && _settings.settingsValues.notify && sendNotify(q.name, {
                tag: "quest",
                body: utils.heroName + " " + q.action + "!",
                icon: window.extPath + "img/quest/caravan.png",
                //window.extPath + 'img/quest/' + q.type + '.png',
                addTime: 1
            }), newLines.push(q));
        }
        newLines.length && _publish("questUpdate", line), lastQuests = quests;
    }
    function isSameQuest(q1, q2) {
        var tests = [ "action", "choice", "name", "type", "uid" ];
        for (var s in tests) {
            if (tests.hasOwnProperty(s)) {
                var key = tests[s];
                if (q1[key] !== q2[key]) {
                    return !1;
                }
            }
        }
        return !0;
    }
    var lastQuests, utils = __webpack_require__(10), _settings = utils.settings, _publish = utils.publish, sendNotify = __webpack_require__(69);
    module.exports = checkQuests;
}, /* 69 */
/***/
function(module, exports, __webpack_require__) {
    function request() {
        function newMessage(permission) {
            if ("granted" !== permission) {
                return !1;
            }
            new Notification("Thanks for letting notify you");
            return !0;
        }
        "granted" !== Notification.permission.toLowerCase() && Notification.requestPermission(newMessage);
    }
    function generateRandomString() {
        return Math.random().toString(36).slice(2);
    }
    function sendNotify(name, options) {
        var d = new Date(), h = d.getHours(), m = d.getMinutes(), time = h + ":" + (10 > m ? "0" + m : m), nt = new Notification(name, {
            tag: options.tag + rndStr,
            body: options.body + (options.addTime ? "\n" + time : ""),
            icon: options.icon || window.extPath + "img/128.png"
        });
        nt.onclick = nt.onclose = function() {
            rndStr = generateRandomString();
        };
    }
    var $ = __webpack_require__(18);
    $("body").one("click", request);
    var rndStr = generateRandomString();
    module.exports = sendNotify;
}, /* 70 */
/***/
function(module, exports, __webpack_require__) {
    var utils = __webpack_require__(10), _settings = utils.settings, _subscribe = utils.subscribe, sendNotify = __webpack_require__(69), lastNotifyMessagesText = "";
    _subscribe("newMessages", function(messagesNew, gameData) {
        var hero = gameData.account.hero, _settingsValues = _settings.settingsValues;
        if (_settingsValues.notify) {
            var notifyMessages = [];
            if (_settingsValues.notifyHeroHp) {
                var health = hero.base.health, minHp = _settingsValues.notifyHeroHpLowerValue;
                minHp > health && notifyMessages.push("Низкое здоровье: " + health + " HP");
            }
            if (_settingsValues.notifyHeroEnergy) {
                var energy = hero.energy.value, maxEnergy = _settingsValues.notifyHeroEnergyGreaterValue;
                energy > maxEnergy && notifyMessages.push("Энергия накопилась: " + energy);
            }
            if (_settingsValues.notifyHeroIdle) {
                var actionType = hero.action.type;
                0 === actionType && notifyMessages.push("Герой бездействует");
            }
            if (notifyMessages.length) {
                var notifyMessagesText = notifyMessages.join("\n");
                notifyMessagesText !== lastNotifyMessagesText && sendNotify("The Tale Extended - " + utils.heroName, {
                    tag: "send",
                    body: notifyMessagesText
                }), lastNotifyMessagesText = notifyMessagesText;
            }
        }
    });
}, /* 71 */
/***/
function(module, exports, __webpack_require__) {
    var _auto = module.exports = {};
    _auto.initSets = __webpack_require__(72), _auto.checkHero = __webpack_require__(73), _auto.checkQuest = __webpack_require__(74);
}, /* 72 */
/***/
function(module, exports, __webpack_require__) {
    function initSettings() {
        _settings.addSets(sets), _settings.drawSets(sets);
        var $sets = _elements.getTabInner("sets");
        $sets.on("click", "[data-auto]", function(e) {
            e.preventDefault();
            var type = $(this).data("auto"), types = {
                rest: {
                    autohelpIdle: 1,
                    autohelpDead: 1,
                    autohelpHp: 1,
                    autohelpHpBoss: 1,
                    autohelpEnergy: 1,
                    autohelpEnergyFight: 0,
                    autohelpEnergyRest: 0,
                    autohelpEnergyWalk: 1,
                    autohelpEnergyTradeMed: 1
                },
                fight: {
                    autohelpIdle: 0,
                    autohelpDead: 0,
                    autohelpHp: 1,
                    autohelpHpBoss: 0,
                    autohelpEnergy: 1,
                    autohelpEnergyFight: 1,
                    autohelpEnergyRest: 0,
                    autohelpEnergyWalk: 0,
                    autohelpEnergyTradeMed: 0
                }
            }, conf = types[type];
            for (var key in conf) {
                if (conf.hasOwnProperty(key)) {
                    var value = !!conf[key], $input = _settings.getSettingInput(key);
                    $input.prop("checked", value).trigger("change");
                }
            }
        });
    }
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _subscribe = utils.subscribe, _elements = utils.elements, _settings = utils.settings, sets = [ {
        title: 'Помощь герою (<span class="link-ajax" data-auto="rest">миролюбие</span>/<span class="link-ajax" data-auto="fight">агрессия</span>)',
        fields: [ {
            label: "Автоматическая помощь",
            note: "Внимание! Настройки применяются в момент нажатия",
            name: "autohelp",
            isToggle: 1,
            value: !1,
            subs: [ {
                label: "Уведомлять о помощи",
                name: "autohelpNotify",
                isToggle: 1,
                value: !1
            }, {
                label: "Использовать бонусную энергию, оставить",
                note: "Указанный запас энергии тратиться не будет",
                name: "autohelpEnergyBonus",
                isToggle: 1,
                value: !1,
                inputs: [ {
                    name: "autohelpEnergyBonusMax",
                    type: "num"
                } ]
            }, {
                label: "Герой бездействует",
                name: "autohelpIdle",
                isToggle: 1,
                value: !0
            }, {
                label: "Герой воскресает",
                name: "autohelpDead",
                isToggle: 1,
                value: !0
            }, {
                label: "Здоровье в бою ниже ",
                name: "autohelpHp",
                isToggle: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "autohelpHpLowerValue",
                    value: 200
                } ],
                subs: [ {
                    label: "только против босса",
                    name: "autohelpHpBoss",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                } ]
            }, {
                label: "Лечение спутника, если его здоровье меньше",
                name: "autohelpСompanion",
                isToggle: 1,
                isInline: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "autohelpСompanionHp",
                    isInline: 1,
                    value: 20
                } ]
            }, {
                label: "Энергия выше ",
                name: "autohelpEnergy",
                isToggle: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "autohelpEnergyGreaterValue",
                    value: 10
                } ],
                subs: [ {
                    label: "в бою",
                    name: "autohelpEnergyFight",
                    isToggle: 1,
                    isInline: 1,
                    value: !1
                }, {
                    label: "вне боя",
                    name: "autohelpEnergyRest",
                    isToggle: 1,
                    isInline: 1,
                    value: !1
                }, {
                    label: "в пути",
                    name: "autohelpEnergyWalk",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                }, {
                    label: "торг/медитация",
                    name: "autohelpEnergyTradeMed",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                } ]
            } ]
        }, {
            label: "Автоматический выбор в задании",
            name: "autoquest",
            isToggle: 1,
            value: !1,
            subs: [ {
                label: "Уведомлять о выборе",
                name: "autoquestNotify",
                isToggle: 1,
                value: !1
            }, {
                label: "Задания, влияющие на честь",
                //					note: 'Доставка, сопроводить караван, пошпионить',
                name: "autoquestHonor",
                isToggle: 1,
                value: !0,
                subs: [ {
                    label: "честно",
                    name: "autoquestHonorPlus",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                }, {
                    label: "бесчестно",
                    name: "autoquestHonorMinus",
                    isToggle: 1,
                    isInline: 1,
                    value: !1
                } ]
            }, {
                label: "Задания, влияющие на миролюбие",
                //					note: 'Выбить долг',
                name: "autoquestPeace",
                isToggle: 1,
                value: !0,
                subs: [ {
                    label: "миролюбиво",
                    name: "autoquestPeacePlus",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                }, {
                    label: "воинственно",
                    name: "autoquestPeaceMinus",
                    isToggle: 1,
                    isInline: 1,
                    value: !1
                } ]
            } ]
        }, {
            label: "Брать карты",
            name: "autocard",
            isToggle: 1,
            value: !1
        } ]
    } ];
    _subscribe("preload", function(gameData) {
        if (gameData) {
            var hero = gameData.account.hero, energyBonus = hero.energy.bonus, $inputMax = _settings.getSettingInput("autohelpEnergyBonusMax");
            isNaN($inputMax.val()) && $inputMax.val(Math.max(0, energyBonus - 10)).trigger("change");
        }
    }), module.exports = initSettings, _subscribe("init", function() {
        initSettings();
    });
}, /* 73 */
/***/
function(module, exports, __webpack_require__) {
    function checkHero(gameData) {
        function godHelp(msg, ability, getParams) {
            //				console.log('godHelp! real');
            if (ability = ability || "help", console.log("god " + ability + "!", getParams, actionName, msg, $.extend({}, hero)), _settingsValues.autohelpNotify && _notification.sendNotify("The Tale Extended - " + _heroName, {
                tag: "autohelp",
                body: "Сработала автоматическая помощь \n" + msg + "\nТекущее действие: " + _const.ACTION_TYPE_TEXTS[actionName],
                addTime: 1
            }), _settingsValues.autohelp) {
                var paramsStr = "";
                for (var key in getParams) {
                    getParams.hasOwnProperty(key) && (paramsStr += "&" + key + "=" + getParams[key]);
                }
                var url = "/game/abilities/" + ability + "/api/use?api_version=1.0&api_client=" + window.API_CLIENT + paramsStr;
                //				console.log('url: ', url)
                //				if (!_settingsValues.autohelp) return;
                hero.energy.value -= 4, $.ajax({
                    url: url,
                    dataType: "json",
                    type: "post",
                    data: {}
                });
            }
        }
        var _settingsValues = _settings.settingsValues, hero = gameData.account.hero, actionType = hero.action.type, actionPercent = hero.action.percents, actionName = _const.ACTION_TYPE_NAMES[actionType], energy = hero.energy.value, energyBonus = _settingsValues.autohelpEnergyBonus ? hero.energy.bonus - _settingsValues.autohelpEnergyBonusMax : 0;
        if (0 > energyBonus && (energyBonus = 0), !(4 > energy + energyBonus)) {
            var isFight = "fight" === actionName, isRest = 10 > actionType && "fight" !== actionName, isBoss = !!hero.action.is_boss;
            if (_settingsValues.autohelpHp && hero.base.health < _settingsValues.autohelpHpLowerValue && isFight && (!_settingsValues.autohelpHpBoss || isBoss)) {
                return void godHelp("Низкое здоровье: " + hero.base.health);
            }
            var isHeplingСompanion = "companionHeal" === actionName;
            if (_settingsValues.autohelpСompanion && isHeplingСompanion && hero.companion.health < _settingsValues.autohelpСompanionHp) {
                return void godHelp("Низкое здоровье спутника: " + hero.companion.health);
            }
            if (_settingsValues.autohelpEnergy && energy > _settingsValues.autohelpEnergyGreaterValue && (_settingsValues.autohelpEnergyFight && isFight || _settingsValues.autohelpEnergyRest && isRest || _settingsValues.autohelpEnergyWalk && "walk" === actionName || _settingsValues.autohelpEnergyTradeMed && ("trade" === actionName || "energy" === actionName))) {
                //console.log('check passed', energy, _settingsValues.autohelpEnergyGreaterValue)
                //			if (_settingsValues.autohelpEnergyRepairBuilding && _settingsValues.autohelpEnergyRepairBuildingID) {
                //				var x = _settingsValues.autohelpEnergyRepairBuildingX;
                //				var y = _settingsValues.autohelpEnergyRepairBuildingY;
                //				getBuildingState(x,y)
                //					.done(function(integrity) {
                //						if (integrity && integrity < (_settingsValues.autohelpEnergyRepairBuildingPercent/100 || 0.982)) {
                //							godHelp('repair', 'building_repair', {building: _settingsValues.autohelpEnergyRepairBuildingID});
                //						}
                //					});
                //			} else {
                return void godHelp("Накопилась энергия: " + energy);
            }
            if (_settingsValues.autohelpIdle && 0 === actionType && !isFight && actionPercent > 0 && .8 > actionPercent) {
                return void godHelp("Герой бездействует");
            }
            if (_settingsValues.autohelpDead && 4 === actionType && !isFight && actionPercent > 0 && .8 > actionPercent) {
                return void godHelp("Герой умер");
            }
            var hasCard = !$(".pgf-get-card-button").hasClass("pgf-hidden");
            return _settingsValues.autocard && hasCard ? void $(".pgf-get-card-button a").trigger("click") : !0;
        }
    }
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _subscribe = utils.subscribe, _const = utils["const"], _settings = utils.settings, _notification = __webpack_require__(66), _heroName = utils.heroName;
    module.exports = checkHero, _subscribe("newTurn", function(messagesNew, gameData) {
        window.setTimeout(function() {
            checkHero(gameData);
        }, 1e3);
    });
}, /* 74 */
/***/
function(module, exports, __webpack_require__) {
    function checkQuest(gameData) {
        function chooseQuest(uid, name) {
            _settingsValues.autoquestNotify && lastquest !== name && (lastquest = name, _notification.sendNotify("The Tale Extended - " + _heroName, {
                tag: "autoquest",
                body: "Сделан выбор! \n— " + name,
                addTime: 1,
                icon: window.extPath + "img/quest/caravan.png"
            })), _settingsValues.autoquest && $.ajax({
                url: "/game/quests/api/choose?api_version=1.0&api_client=" + window.API_CLIENT + "&option_uid=" + encodeURIComponent(uid),
                dataType: "json",
                type: "post",
                data: {}
            });
        }
        var _settingsValues = _settings.settingsValues, selectChoices = {};
        _settingsValues.autoquestPeacePlus && (selectChoices.peacePlus = 1), _settingsValues.autoquestPeaceMinus && (selectChoices.peaceMinus = 1), _settingsValues.autoquestHonorPlus && (selectChoices.honorPlus = 1), 
        _settingsValues.autoquestHonorMinus && (selectChoices.honorMinus = 1);
        for (var hero = gameData.account.hero, quests = hero.quests.quests, line = quests[1].line, i = 0; i < line.length; i++) {
            for (var q = line[i], choiceIndex = 0; choiceIndex < q.choice_alternatives.length; choiceIndex++) {
                var choiceName = q.choice_alternatives[choiceIndex][1], option_uid = q.choice_alternatives[choiceIndex][0];
                for (var reward in CHOICES) {
                    CHOICES.hasOwnProperty(reward) && CHOICES[reward].indexOf(choiceName) >= 0 && selectChoices[reward] && chooseQuest(option_uid, choiceName);
                }
            }
        }
    }
    var $ = __webpack_require__(18), utils = __webpack_require__(10), _subscribe = utils.subscribe, _settings = utils.settings, _notification = __webpack_require__(66), _heroName = utils.heroName, CHOICES = {
        /* peacefullnes */
        peacePlus: [ "прибегнуть к дипломатии" ],
        peaceMinus: [ "задействовать грубую силу" ],
        honorPlus: [ "довести дело до конца", /* spying */
        "защищать торговца", /* caravan */
        "честно выполнить свои обязательства" ],
        honorMinus: [ "поддаться укорам совести и раскрыться", /* spying */
        "шантажировать самостоятельно", /* spying */
        "присвоить письмо и продать", /* delivery */
        "украсть-украсть-украсть", /* delivery */
        "подделать письмо" ]
    }, lastquest = "";
    module.exports = checkQuest, _subscribe("newMessages", function(messagesNew, gameData) {
        window.setTimeout(function() {
            checkQuest(gameData);
        }, 1e3);
    });
}, /* 75 */
/***/
function(module, exports, __webpack_require__) {
    var $ = __webpack_require__(18);
    //console.log('tables.js')
    window.tables = function(_tables) {
        "use strict";
        function makeSortable($table) {
            var $head = $table.find("thead tr").first(), $rows = $table.find("tbody tr");
            $head.children("th").wrapInner('<span class="sort" />').each(function() {
                var $th = $(this), thIndex = $th.index();
                $th.children(".sort").click(function() {
                    $th.siblings("th").children(".sort").attr("class", "sort");
                    var inverse = $(this).hasClass("sort-up");
                    $(this).attr("class", "sort sort-" + (inverse ? "down" : "up"));
                    var arr = [];
                    $rows.each(function() {
                        var value, valueText = $.trim($(this).children("td").eq(thIndex).text());
                        value = -valueText || parseDate(valueText) || valueText, arr.push({
                            $item: this,
                            value: value
                        });
                    }), arr.sort(function(a, b) {
                        return a.value === b.value ? 0 : a.value > b.value ? inverse ? 1 : -1 : inverse ? -1 : 1;
                    }), arr.forEach(function(item) {
                        $table.append(item.$item);
                    });
                });
            });
        }
        function parseDate(str) {
            //02.04.2014 10:50
            var p = /(\d{2})\.(\d{2})\.(\d{4})\s(\d{1,2})\:(\d{2})/.exec(str);
            return p ? +new Date(p[3], p[2] - 1, p[1], p[4], p[5]) : 0;
        }
        return $(".table").each(function() {
            makeSortable($(this));
        }), $.extend(_tables, {
            makeSortable: makeSortable
        }), _tables;
    }({});
} ]);