mirror of
https://github.com/hevin-lee/EasyPlayerJs.git
synced 2026-06-04 21:59:17 +00:00
3159 lines
3.4 MiB
3159 lines
3.4 MiB
(function webpackUniversalModuleDefinition(root, factory) {
|
||
if(typeof exports === 'object' && typeof module === 'object')
|
||
module.exports = factory();
|
||
else if(typeof define === 'function' && define.amd)
|
||
define([], factory);
|
||
else if(typeof exports === 'object')
|
||
exports["WasmPlayer"] = factory();
|
||
else
|
||
root["WasmPlayer"] = factory();
|
||
})(this, function() {
|
||
return /******/ (function(modules) { // webpackBootstrap
|
||
/******/ // The module cache
|
||
/******/ var installedModules = {};
|
||
/******/
|
||
/******/ // 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] = {
|
||
/******/ i: moduleId,
|
||
/******/ l: false,
|
||
/******/ exports: {}
|
||
/******/ };
|
||
/******/
|
||
/******/ // Execute the module function
|
||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||
/******/
|
||
/******/ // Flag the module as loaded
|
||
/******/ module.l = true;
|
||
/******/
|
||
/******/ // Return the exports of the module
|
||
/******/ return module.exports;
|
||
/******/ }
|
||
/******/
|
||
/******/
|
||
/******/ // expose the modules object (__webpack_modules__)
|
||
/******/ __webpack_require__.m = modules;
|
||
/******/
|
||
/******/ // expose the module cache
|
||
/******/ __webpack_require__.c = installedModules;
|
||
/******/
|
||
/******/ // define getter function for harmony exports
|
||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
||
/******/ }
|
||
/******/ };
|
||
/******/
|
||
/******/ // define __esModule on exports
|
||
/******/ __webpack_require__.r = function(exports) {
|
||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
||
/******/ }
|
||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
||
/******/ };
|
||
/******/
|
||
/******/ // create a fake namespace object
|
||
/******/ // mode & 1: value is a module id, require it
|
||
/******/ // mode & 2: merge all properties of value into the ns
|
||
/******/ // mode & 4: return value when already ns object
|
||
/******/ // mode & 8|1: behave like require
|
||
/******/ __webpack_require__.t = function(value, mode) {
|
||
/******/ if(mode & 1) value = __webpack_require__(value);
|
||
/******/ if(mode & 8) return value;
|
||
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
||
/******/ var ns = Object.create(null);
|
||
/******/ __webpack_require__.r(ns);
|
||
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
||
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
||
/******/ return ns;
|
||
/******/ };
|
||
/******/
|
||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||
/******/ __webpack_require__.n = function(module) {
|
||
/******/ var getter = module && module.__esModule ?
|
||
/******/ function getDefault() { return module['default']; } :
|
||
/******/ function getModuleExports() { return module; };
|
||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||
/******/ return getter;
|
||
/******/ };
|
||
/******/
|
||
/******/ // Object.prototype.hasOwnProperty.call
|
||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||
/******/
|
||
/******/ // __webpack_public_path__
|
||
/******/ __webpack_require__.p = "";
|
||
/******/
|
||
/******/
|
||
/******/ // Load entry module and return exports
|
||
/******/ return __webpack_require__(__webpack_require__.s = "./src/SyncPlayer.js");
|
||
/******/ })
|
||
/************************************************************************/
|
||
/******/ ({
|
||
|
||
/***/ "./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js":
|
||
/*!*****************************************************************************************************!*\
|
||
!*** ./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js ***!
|
||
\*****************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(Buffer) {/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */\n\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar window = _interopDefault(__webpack_require__(/*! global/window */ \"./node_modules/_global@4.4.0@global/window.js\"));\n\nvar atob = function atob(s) {\n return window.atob ? window.atob(s) : Buffer.from(s, 'base64').toString('binary');\n};\n\nfunction decodeB64ToUint8Array(b64Text) {\n var decodedString = atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\n}\n\nmodule.exports = decodeB64ToUint8Array;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/stream.js":
|
||
/*!**********************************************************************************!*\
|
||
!*** ./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/stream.js ***!
|
||
\**********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */\n\n/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\n\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nmodule.exports = Stream;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/stream.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1.js ***!
|
||
\*********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar asn1 = exports;\nasn1.bignum = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\nasn1.define = __webpack_require__(/*! ./asn1/api */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/api.js\").define;\nasn1.base = __webpack_require__(/*! ./asn1/base */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/index.js\");\nasn1.constants = __webpack_require__(/*! ./asn1/constants */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/index.js\");\nasn1.decoders = __webpack_require__(/*! ./asn1/decoders */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/index.js\");\nasn1.encoders = __webpack_require__(/*! ./asn1/encoders */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/index.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/api.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/api.js ***!
|
||
\*************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar encoders = __webpack_require__(/*! ./encoders */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/index.js\");\n\nvar decoders = __webpack_require__(/*! ./decoders */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n var name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n\n inherits(Generated, Base);\n\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der'; // Lazily create decoder\n\n if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der'; // Lazily create encoder\n\n if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc,\n/* internal */\nreporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/api.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/buffer.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/buffer.js ***!
|
||
\*********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Reporter = __webpack_require__(/*! ../base/reporter */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/reporter.js\").Reporter;\n\nvar Buffer = __webpack_require__(/*! safer-buffer */ \"./node_modules/_safer-buffer@2.1.2@safer-buffer/safer.js\").Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\n\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n } // Or accept compatible API\n\n\n var isCompatible = typeof data === 'object' && Buffer.isBuffer(data.base) && data.constructor.name === 'DecoderBuffer' && typeof data.offset === 'number' && typeof data.length === 'number' && typeof data.save === 'function' && typeof data.restore === 'function' && typeof data.isEmpty === 'function' && typeof data.readUInt8 === 'function' && typeof data.skip === 'function' && typeof data.raw === 'function';\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return {\n offset: this.offset,\n reporter: Reporter.prototype.save.call(this)\n };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true);else return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length)) return this.error(fail || 'DecoderBuffer overrun');\n var res = new DecoderBuffer(this.base); // Share reporter state\n\n res._reporterState = this._reporterState;\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function (item) {\n if (!EncoderBuffer.isEncoderBuffer(item)) item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff)) return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\n\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n } // Or accept compatible API\n\n\n var isCompatible = typeof data === 'object' && data.constructor.name === 'EncoderBuffer' && typeof data.length === 'number' && typeof data.join === 'function';\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out) out = Buffer.alloc(this.length);\n if (!offset) offset = 0;\n if (this.length === 0) return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function (item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number') out[offset] = this.value;else if (typeof this.value === 'string') out.write(this.value, offset);else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/buffer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/index.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/index.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar base = exports;\nbase.Reporter = __webpack_require__(/*! ./reporter */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/reporter.js\").Reporter;\nbase.DecoderBuffer = __webpack_require__(/*! ./buffer */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer;\nbase.EncoderBuffer = __webpack_require__(/*! ./buffer */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/buffer.js\").EncoderBuffer;\nbase.Node = __webpack_require__(/*! ./node */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/node.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/node.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/node.js ***!
|
||
\*******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar Reporter = __webpack_require__(/*! ../base/reporter */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/reporter.js\").Reporter;\n\nvar EncoderBuffer = __webpack_require__(/*! ../base/buffer */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/buffer.js\").EncoderBuffer;\n\nvar DecoderBuffer = __webpack_require__(/*! ../base/buffer */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer;\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\"); // Supported tags\n\n\nvar tags = ['seq', 'seqof', 'set', 'setof', 'objid', 'bool', 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr']; // Public methods list\n\nvar methods = ['key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', 'any', 'contains'].concat(tags); // Overrided methods list\n\nvar overrided = ['_peekTag', '_decodeTag', '_use', '_decodeStr', '_decodeObjid', '_decodeTime', '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', '_encodeNull', '_encodeInt', '_encodeBool'];\n\nfunction Node(enc, parent, name) {\n var state = {};\n this._baseState = state;\n state.name = name;\n state.enc = enc;\n state.parent = parent || null;\n state.children = null; // State\n\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null; // Should create new instance on each method\n\n if (!state.parent) {\n state.children = [];\n\n this._wrap();\n }\n}\n\nmodule.exports = Node;\nvar stateProps = ['enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', 'implicit', 'contains'];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function (prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function (method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n assert(state.parent === null);\n body.call(this); // Filter children\n\n state.children = state.children.filter(function (child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState; // Filter children and args\n\n var children = args.filter(function (arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function (arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children; // Replace parent to maintain backward link\n\n children.forEach(function (child) {\n child._baseState.parent = this;\n }, this);\n }\n\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function (arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object) return arg;\n var res = {};\n Object.keys(arg).forEach(function (key) {\n if (key == (key | 0)) key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n}; //\n// Overrided methods\n//\n\n\noverrided.forEach(function (method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n}); //\n// Public methods\n//\n\ntags.forEach(function (tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n assert(state.use === null);\n state.use = item;\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n state.optional = true;\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n state.obj = true;\n if (args.length !== 0) this._useArgs(args);\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n assert(state.key === null);\n state.key = newKey;\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n state.any = true;\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n assert(state.choice === null);\n state.choice = obj;\n\n this._useArgs(Object.keys(obj).map(function (key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n assert(state.use === null);\n state.contains = item;\n return this;\n}; //\n// Decoding\n//\n\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState; // Decode root node\n\n if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));\n var result = state['default'];\n var present = true;\n var prevKey = null;\n if (state.key !== null) prevKey = input.enterKey(state.key); // Check if tag is there\n\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null) tag = state.explicit;else if (state.implicit !== null) tag = state.implicit;else if (state.tag !== null) tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n\n try {\n if (state.choice === null) this._decodeGeneric(state.tag, input, options);else this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n if (input.isError(present)) return present;\n }\n } // Push object on stack\n\n\n var prevObj;\n if (state.obj && present) prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n\n if (input.isError(explicit)) return explicit;\n input = explicit;\n }\n\n var start = input.offset; // Unwrap implicit and normal values\n\n if (state.use === null && state.choice === null) {\n var _save;\n\n if (state.any) _save = input.save();\n\n var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);\n\n if (input.isError(body)) return body;\n if (state.any) result = input.raw(_save);else input = body;\n }\n\n if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, 'tagged');\n if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, 'content'); // Select proper method for tag\n\n if (state.any) {// no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result)) return result; // Decode children\n\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n } // Decode contained/encoded by schema, only in bit or octet strings\n\n\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);\n }\n } // Pop object\n\n\n if (state.obj && present) result = input.leaveObject(prevObj); // Set key\n\n if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);else if (prevKey !== null) input.exitKey(prevKey);\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n if (tag === 'seq' || tag === 'set') return null;\n if (tag === 'seqof' || tag === 'setof') return this._decodeList(input, tag, state.args[0], options);else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);else if (tag === 'objid' && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);else if (tag === 'objid') return this._decodeObjid(input, null, null, options);else if (tag === 'gentime' || tag === 'utctime') return this._decodeTime(input, tag, options);else if (tag === 'null_') return this._decodeNull(input, options);else if (tag === 'bool') return this._decodeBool(input, options);else if (tag === 'objDesc') return this._decodeStr(input, tag, options);else if (tag === 'int' || tag === 'enum') return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n var state = this._baseState; // Create altered use decoder if implicit is set\n\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n Object.keys(state.choice).some(function (key) {\n var save = input.save();\n var node = state.choice[key];\n\n try {\n var value = node._decode(input, options);\n\n if (input.isError(value)) return false;\n result = {\n type: key,\n value: value\n };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n\n return true;\n }, this);\n if (!match) return input.error('Choice not matched');\n return result;\n}; //\n// Encoding\n//\n\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data) return;\n\n var result = this._encodeValue(data, reporter, parent);\n\n if (result === undefined) return;\n if (this._skipDefault(result, reporter, parent)) return;\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState; // Decode root node\n\n if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter());\n var result = null; // Set reporter to share it with a child class\n\n this.reporter = reporter; // Check if data is there\n\n if (state.optional && data === undefined) {\n if (state['default'] !== null) data = state['default'];else return;\n } // Encode children first\n\n\n var content = null;\n var primitive = false;\n\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function (child) {\n if (child._baseState.tag === 'null_') return child._encode(null, reporter, data);\n if (child._baseState.key === null) return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n if (typeof data !== 'object') return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n\n reporter.leaveKey(prevKey);\n return res;\n }, this).filter(function (child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1)) return reporter.error('Too many args for : ' + state.tag);\n if (!Array.isArray(data)) return reporter.error('seqof/setof, but data is not Array');\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function (item) {\n var state = this._baseState;\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n } // Encode data itself\n\n\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null) reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);\n }\n } // Wrap in explicit\n\n\n if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, 'context', result);\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n var node = state.choice[data.type];\n\n if (!node) {\n assert(false, data.type + ' not found in ' + JSON.stringify(Object.keys(state.choice)));\n }\n\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n if (/str$/.test(tag)) return this._encodeStr(data, tag);else if (tag === 'objid' && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);else if (tag === 'objid') return this._encodeObjid(data, null, null);else if (tag === 'gentime' || tag === 'utctime') return this._encodeTime(data, tag);else if (tag === 'null_') return this._encodeNull();else if (tag === 'int' || tag === 'enum') return this._encodeInt(data, state.args && state.reverseArgs[0]);else if (tag === 'bool') return this._encodeBool(data);else if (tag === 'objDesc') return this._encodeStr(data, tag);else throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/node.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/reporter.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/reporter.js ***!
|
||
\***********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\n\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n return {\n obj: state.obj,\n pathLen: state.path.length\n };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n this.exitKey(index);\n if (state.obj !== null) state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n var inherited = msg instanceof ReporterError;\n\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function (elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial) throw err;\n if (!inherited) state.errors.push(err);\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial) return result;\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\n\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n\n return this;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/reporter.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/der.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/der.js ***!
|
||
\***********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval(" // Helper\n\nfunction reverse(map) {\n var res = {};\n Object.keys(map).forEach(function (key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key) key = key | 0;\n var value = map[key];\n res[value] = key;\n });\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/der.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/index.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/index.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar constants = exports; // Helper\n\nconstants._reverse = function reverse(map) {\n var res = {};\n Object.keys(map).forEach(function (key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key) key = key | 0;\n var value = map[key];\n res[value] = key;\n });\n return res;\n};\n\nconstants.der = __webpack_require__(/*! ./der */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/der.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/der.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/der.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar bignum = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar DecoderBuffer = __webpack_require__(/*! ../base/buffer */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer;\n\nvar Node = __webpack_require__(/*! ../base/node */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/node.js\"); // Import DER constants\n\n\nvar der = __webpack_require__(/*! ../constants/der */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/der.js\");\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity; // Construct base tree\n\n this.tree = new DERNode();\n\n this.tree._init(entity.body);\n}\n\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n}; // Tree methods\n\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\n\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty()) return false;\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n buffer.restore(state);\n return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + 'of' === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer, 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n var len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of \"' + tag + '\"'); // Failure\n\n if (buffer.isError(len)) return len;\n\n if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"'); // Indefinite length... find END tag\n\n var state = buffer.save();\n\n var res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n\n if (buffer.isError(res)) return res;\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag)) return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len)) return len;\n var res = void 0;\n if (tag.primitive || len !== null) res = buffer.skip(len);else res = this._skipUntilEnd(buffer, fail); // Failure\n\n if (buffer.isError(res)) return res;\n if (tag.tagStr === 'end') break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, options) {\n var result = [];\n\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n\n if (buffer.isError(possibleEnd)) return possibleEnd;\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd) break;\n result.push(res);\n }\n\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused)) return unused;\n return {\n unused: unused,\n data: buffer.raw()\n };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1) return buffer.error('Decoding of string type: bmpstr length mismatch');\n var str = '';\n\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' + 'numstr unsupported characters');\n }\n\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' + 'printstr unsupported characters');\n }\n\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n var subident = 0;\n\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n\n if (subident & 0x80) identifiers.push(ident);\n var first = identifiers[0] / 40 | 0;\n var second = identifiers[0] % 40;\n if (relative) result = identifiers;else result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined) tmp = values[result.join('.')];\n if (tmp !== undefined) result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n var year;\n var mon;\n var day;\n var hour;\n var min;\n var sec;\n\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70) year = 2000 + year;else year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res)) return res;else return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n if (values) res = values[res.toString(10)] || res;\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getDecoder('der').tree;\n}; // Utility methods\n\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag)) return tag;\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0; // Multi-octet tag - load\n\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct)) return oct;\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n\n var tagStr = der.tag[tag];\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len)) return len; // Indefinite form\n\n if (!primitive && len === 0x80) return null; // Definite form\n\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n } // Long form\n\n\n var num = len & 0x7f;\n if (num > 4) return buf.error('length octect is too long');\n len = 0;\n\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j)) return j;\n len |= j;\n }\n\n return len;\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/der.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/index.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/index.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar decoders = exports;\ndecoders.der = __webpack_require__(/*! ./der */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/der.js\");\ndecoders.pem = __webpack_require__(/*! ./pem */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/pem.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/pem.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/pem.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Buffer = __webpack_require__(/*! safer-buffer */ \"./node_modules/_safer-buffer@2.1.2@safer-buffer/safer.js\").Buffer;\n\nvar DERDecoder = __webpack_require__(/*! ./der */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/der.js\");\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\n\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n var label = options.label.toUpperCase();\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null) continue;\n if (match[2] !== label) continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN') break;\n start = i;\n } else {\n if (match[1] !== 'END') break;\n end = i;\n break;\n }\n }\n\n if (start === -1 || end === -1) throw new Error('PEM section not found for: ' + label);\n var base64 = lines.slice(start + 1, end).join(''); // Remove excessive symbols\n\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n var input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/decoders/pem.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/der.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/der.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Buffer = __webpack_require__(/*! safer-buffer */ \"./node_modules/_safer-buffer@2.1.2@safer-buffer/safer.js\").Buffer;\n\nvar Node = __webpack_require__(/*! ../base/node */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/base/node.js\"); // Import DER constants\n\n\nvar der = __webpack_require__(/*! ../constants/der */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/constants/der.js\");\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity; // Construct base tree\n\n this.tree = new DERNode();\n\n this.tree._init(entity.body);\n}\n\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n}; // Tree methods\n\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\n\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter); // Short form\n\n if (content.length < 0x80) {\n var _header = Buffer.alloc(2);\n\n _header[0] = encodedTag;\n _header[1] = content.length;\n return this._createEncoderBuffer([_header, content]);\n } // Long form\n // Count octets required to store length\n\n\n var lenOctets = 1;\n\n for (var i = content.length; i >= 0x100; i >>= 8) {\n lenOctets++;\n }\n\n var header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var _i = 1 + lenOctets, j = content.length; j > 0; _i--, j >>= 8) {\n header[_i] = j & 0xff;\n }\n\n return this._createEncoderBuffer([header, content]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([str.unused | 0, str.data]);\n } else if (tag === 'bmpstr') {\n var buf = Buffer.alloc(str.length * 2);\n\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' + 'only digits and space');\n }\n\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' + 'only latin upper and lower case letters, ' + 'digits, space, apostrophe, left and rigth ' + 'parenthesis, plus sign, comma, hyphen, ' + 'dot, slash, colon, equal sign, ' + 'question mark');\n }\n\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values) return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id)) return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n\n for (var i = 0; i < id.length; i++) {\n id[i] |= 0;\n }\n } else if (Array.isArray(id)) {\n id = id.slice();\n\n for (var _i2 = 0; _i2 < id.length; _i2++) {\n id[_i2] |= 0;\n }\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' + 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40) return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n } // Count number of octets\n\n\n var size = 0;\n\n for (var _i3 = 0; _i3 < id.length; _i3++) {\n var ident = id[_i3];\n\n for (size++; ident >= 0x80; ident >>= 7) {\n size++;\n }\n }\n\n var objid = Buffer.alloc(size);\n var offset = objid.length - 1;\n\n for (var _i4 = id.length - 1; _i4 >= 0; _i4--) {\n var _ident = id[_i4];\n objid[offset--] = _ident & 0x7f;\n\n while ((_ident >>= 7) > 0) {\n objid[offset--] = 0x80 | _ident & 0x7f;\n }\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10) return '0' + num;else return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [two(date.getUTCFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else if (tag === 'utctime') {\n str = [two(date.getUTCFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values) return this.reporter.error('String int or enum given, but no values map');\n\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' + JSON.stringify(num));\n }\n\n num = values[num];\n } // Bignum, assume big endian\n\n\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var _size = num.length;\n if (num.length === 0) _size++;\n\n var _out = Buffer.alloc(_size);\n\n num.copy(_out);\n if (num.length === 0) _out[0] = 0;\n return this._createEncoderBuffer(_out);\n }\n\n if (num < 0x80) return this._createEncoderBuffer(num);\n if (num < 0x100) return this._createEncoderBuffer([0, num]);\n var size = 1;\n\n for (var i = num; i >= 0x100; i >>= 8) {\n size++;\n }\n\n var out = new Array(size);\n\n for (var _i5 = out.length - 1; _i5 >= 0; _i5--) {\n out[_i5] = num & 0xff;\n num >>= 8;\n }\n\n if (out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null) return false;\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined) state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n if (data.length !== state.defaultBuffer.length) return false;\n\n for (i = 0; i < data.length; i++) {\n if (data[i] !== state.defaultBuffer[i]) return false;\n }\n\n return true;\n}; // Utility methods\n\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n if (tag === 'seqof') tag = 'seq';else if (tag === 'setof') tag = 'set';\n if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];else if (typeof tag === 'number' && (tag | 0) === tag) res = tag;else return reporter.error('Unknown tag: ' + tag);\n if (res >= 0x1f) return reporter.error('Multi-octet tag encoding unsupported');\n if (!primitive) res |= 0x20;\n res |= der.tagClassByName[cls || 'universal'] << 6;\n return res;\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/der.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/index.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/index.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar encoders = exports;\nencoders.der = __webpack_require__(/*! ./der */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/der.js\");\nencoders.pem = __webpack_require__(/*! ./pem */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/pem.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/pem.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/pem.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar DEREncoder = __webpack_require__(/*! ./der */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/der.js\");\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\n\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n var p = buf.toString('base64');\n var out = ['-----BEGIN ' + options.label + '-----'];\n\n for (var i = 0; i < p.length; i += 64) {\n out.push(p.slice(i, i + 64));\n }\n\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1/encoders/pem.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_base64-js@1.3.1@base64-js/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/_base64-js@1.3.1@base64-js/index.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_base64-js@1.3.1@base64-js/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n Buffer = __webpack_require__(/*! buffer */ 4).Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa; // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_webpack@4.44.1@webpack/buildin/module.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_bn.js@5.1.3@bn.js/lib/bn.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/_bn.js@5.1.3@bn.js/lib/bn.js ***!
|
||
\***************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n Buffer = __webpack_require__(/*! buffer */ 6).Buffer;\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this._strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this._strip();\n };\n\n function parseHex(str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n var z = 0;\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r <<= 4;\n var b; // 'a' - 'f'\n\n if (c >= 49 && c <= 54) {\n b = c - 49 + 0xa; // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n b = c - 17 + 0xa; // '0' - '9'\n } else {\n b = c;\n }\n\n r |= b;\n z |= b;\n }\n\n assert(!(z & 0xf0), 'Invalid character in ' + str);\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w; // Scan 24-bit chunks and add them to the number\n\n var off = 0;\n\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] |= w >>> 26 - off & 0x3fffff;\n }\n\n this._strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n b = c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa; // '0' - '9'\n } else {\n b = c;\n }\n\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move(dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move(dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype._strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n }; // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n\n\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate(ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position++] = word & 0xff;\n\n if (position < res.length) {\n res[position++] = word >> 8 & 0xff;\n }\n\n if (position < res.length) {\n res[position++] = word >> 16 & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = word >> 24 & 0xff;\n }\n\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position--] = word & 0xff;\n\n if (position >= 0) {\n res[position--] = word >> 8 & 0xff;\n }\n\n if (position >= 0) {\n res[position--] = word >> 16 & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = word >> 24 & 0xff;\n }\n\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = num.words[off] >>> wbit & 0x01;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this._strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this._strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo(self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q._strip();\n }\n\n a._strip(); // Denormalize\n\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n }; // WARNING: DEPRECATED\n\n\n BN.prototype.modn = function modn(num) {\n return this.modrn(num);\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n this._strip();\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_webpack@4.44.1@webpack/buildin/module.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_bn.js@5.1.3@bn.js/lib/bn.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_brorand@1.1.0@brorand/index.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/_brorand@1.1.0@brorand/index.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var r;\n\nmodule.exports = function rand(len) {\n if (!r) r = new Rand(null);\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\n\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n}; // Emulate crypto API using randy\n\n\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes) return this.rand.getBytes(n);\n var res = new Uint8Array(n);\n\n for (var i = 0; i < res.length; i++) {\n res[i] = this.rand.getByte();\n }\n\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n }; // Safari's WebWorkers do not have `crypto`\n\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function () {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = __webpack_require__(/*! crypto */ 5);\n\n if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {}\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_brorand@1.1.0@brorand/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/aes.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/aes.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nfunction asUInt32Array(buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n var len = buf.length / 4 | 0;\n var out = new Array(len);\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4);\n }\n\n return out;\n}\n\nfunction scrubVec(v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0;\n }\n}\n\nfunction cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0];\n var SUB_MIX1 = SUB_MIX[1];\n var SUB_MIX2 = SUB_MIX[2];\n var SUB_MIX3 = SUB_MIX[3];\n var s0 = M[0] ^ keySchedule[0];\n var s1 = M[1] ^ keySchedule[1];\n var s2 = M[2] ^ keySchedule[2];\n var s3 = M[3] ^ keySchedule[3];\n var t0, t1, t2, t3;\n var ksRow = 4;\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 0xff] ^ SUB_MIX2[s2 >>> 8 & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++];\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s2 >>> 16 & 0xff] ^ SUB_MIX2[s3 >>> 8 & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++];\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[s3 >>> 16 & 0xff] ^ SUB_MIX2[s0 >>> 8 & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++];\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 0xff] ^ SUB_MIX2[s1 >>> 8 & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++];\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n\n t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n t0 = t0 >>> 0;\n t1 = t1 >>> 0;\n t2 = t2 >>> 0;\n t3 = t3 >>> 0;\n return [t0, t1, t2, t3];\n} // AES constants\n\n\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\nvar G = function () {\n // Compute double table\n var d = new Array(256);\n\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1;\n } else {\n d[j] = j << 1 ^ 0x11b;\n }\n }\n\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX = [[], [], [], []];\n var INV_SUB_MIX = [[], [], [], []]; // Walk GF(2^8)\n\n var x = 0;\n var xi = 0;\n\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub bytes, mix columns tables\n\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n SUB_MIX[0][x] = t << 24 | t >>> 8;\n SUB_MIX[1][x] = t << 16 | t >>> 16;\n SUB_MIX[2][x] = t << 8 | t >>> 24;\n SUB_MIX[3][x] = t; // Compute inv sub bytes, inv mix columns tables\n\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n INV_SUB_MIX[0][sx] = t << 24 | t >>> 8;\n INV_SUB_MIX[1][sx] = t << 16 | t >>> 16;\n INV_SUB_MIX[2][sx] = t << 8 | t >>> 24;\n INV_SUB_MIX[3][sx] = t;\n\n if (x === 0) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n };\n}();\n\nfunction AES(key) {\n this._key = asUInt32Array(key);\n\n this._reset();\n}\n\nAES.blockSize = 4 * 4;\nAES.keySize = 256 / 8;\nAES.prototype.blockSize = AES.blockSize;\nAES.prototype.keySize = AES.keySize;\n\nAES.prototype._reset = function () {\n var keyWords = this._key;\n var keySize = keyWords.length;\n var nRounds = keySize + 6;\n var ksRows = (nRounds + 1) * 4;\n var keySchedule = [];\n\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k];\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1];\n\n if (k % keySize === 0) {\n t = t << 8 | t >>> 24;\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n t ^= RCON[k / keySize | 0] << 24;\n } else if (keySize > 6 && k % keySize === 4) {\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t;\n }\n\n var invKeySchedule = [];\n\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik;\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt;\n } else {\n invKeySchedule[ik] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]];\n }\n }\n\n this._nRounds = nRounds;\n this._keySchedule = keySchedule;\n this._invKeySchedule = invKeySchedule;\n};\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M);\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds);\n};\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[1], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[3], 12);\n return buf;\n};\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M); // swap\n\n var m1 = M[1];\n M[1] = M[3];\n M[3] = m1;\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[3], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[1], 12);\n return buf;\n};\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule);\n scrubVec(this._invKeySchedule);\n scrubVec(this._key);\n};\n\nmodule.exports.AES = AES;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/aes.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/authCipher.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/authCipher.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var aes = __webpack_require__(/*! ./aes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/aes.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/_cipher-base@1.0.4@cipher-base/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar GHASH = __webpack_require__(/*! ./ghash */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/ghash.js\");\n\nvar xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/_buffer-xor@1.0.3@buffer-xor/index.js\");\n\nvar incr32 = __webpack_require__(/*! ./incr32 */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/incr32.js\");\n\nfunction xorTest(a, b) {\n var out = 0;\n if (a.length !== b.length) out++;\n var len = Math.min(a.length, b.length);\n\n for (var i = 0; i < len; ++i) {\n out += a[i] ^ b[i];\n }\n\n return out;\n}\n\nfunction calcIv(self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]);\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]);\n }\n\n var ghash = new GHASH(ck);\n var len = iv.length;\n var toPad = len % 16;\n ghash.update(iv);\n\n if (toPad) {\n toPad = 16 - toPad;\n ghash.update(Buffer.alloc(toPad, 0));\n }\n\n ghash.update(Buffer.alloc(8, 0));\n var ivBits = len * 8;\n var tail = Buffer.alloc(8);\n tail.writeUIntBE(ivBits, 0, 8);\n ghash.update(tail);\n self._finID = ghash.state;\n var out = Buffer.from(self._finID);\n incr32(out);\n return out;\n}\n\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n var h = Buffer.alloc(4, 0);\n this._cipher = new aes.AES(key);\n\n var ck = this._cipher.encryptBlock(h);\n\n this._ghash = new GHASH(ck);\n iv = calcIv(this, iv, ck);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._alen = 0;\n this._len = 0;\n this._mode = mode;\n this._authTag = null;\n this._called = false;\n}\n\ninherits(StreamCipher, Transform);\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - this._alen % 16;\n\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0);\n\n this._ghash.update(rump);\n }\n }\n\n this._called = true;\n\n var out = this._mode.encrypt(this, chunk);\n\n if (this._decrypt) {\n this._ghash.update(chunk);\n } else {\n this._ghash.update(out);\n }\n\n this._len += chunk.length;\n return out;\n};\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data');\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID));\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data');\n this._authTag = tag;\n\n this._cipher.scrub();\n};\n\nStreamCipher.prototype.getAuthTag = function getAuthTag() {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state');\n return this._authTag;\n};\n\nStreamCipher.prototype.setAuthTag = function setAuthTag(tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state');\n this._authTag = tag;\n};\n\nStreamCipher.prototype.setAAD = function setAAD(buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state');\n\n this._ghash.update(buf);\n\n this._alen += buf.length;\n};\n\nmodule.exports = StreamCipher;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/authCipher.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/browser.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/browser.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var ciphers = __webpack_require__(/*! ./encrypter */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/encrypter.js\");\n\nvar deciphers = __webpack_require__(/*! ./decrypter */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/decrypter.js\");\n\nvar modes = __webpack_require__(/*! ./modes/list.json */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/list.json\");\n\nfunction getCiphers() {\n return Object.keys(modes);\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher;\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv;\nexports.createDecipher = exports.Decipher = deciphers.createDecipher;\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/decrypter.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/decrypter.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var AuthCipher = __webpack_require__(/*! ./authCipher */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/authCipher.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar MODES = __webpack_require__(/*! ./modes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/index.js\");\n\nvar StreamCipher = __webpack_require__(/*! ./streamCipher */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/streamCipher.js\");\n\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/_cipher-base@1.0.4@cipher-base/index.js\");\n\nvar aes = __webpack_require__(/*! ./aes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/aes.js\");\n\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/_evp_bytestokey@1.0.3@evp_bytestokey/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nfunction Decipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._last = void 0;\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\n\ninherits(Decipher, Transform);\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data);\n\n var chunk;\n var thing;\n var out = [];\n\n while (chunk = this._cache.get(this._autopadding)) {\n thing = this._mode.decrypt(this, chunk);\n out.push(thing);\n }\n\n return Buffer.concat(out);\n};\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush();\n\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk));\n } else if (chunk) {\n throw new Error('data not multiple of block length');\n }\n};\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\n\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\n\nSplitter.prototype.get = function (autoPadding) {\n var out;\n\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n }\n\n return null;\n};\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache;\n};\n\nfunction unpad(last) {\n var padded = last[15];\n\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data');\n }\n\n var i = -1;\n\n while (++i < padded) {\n if (last[i + (16 - padded)] !== padded) {\n throw new Error('unable to decrypt data');\n }\n }\n\n if (padded === 16) return;\n return last.slice(0, 16 - padded);\n}\n\nfunction createDecipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true);\n }\n\n return new Decipher(config.module, password, iv);\n}\n\nfunction createDecipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\n\nexports.createDecipher = createDecipher;\nexports.createDecipheriv = createDecipheriv;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/decrypter.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/encrypter.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/encrypter.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var MODES = __webpack_require__(/*! ./modes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/index.js\");\n\nvar AuthCipher = __webpack_require__(/*! ./authCipher */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/authCipher.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar StreamCipher = __webpack_require__(/*! ./streamCipher */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/streamCipher.js\");\n\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/_cipher-base@1.0.4@cipher-base/index.js\");\n\nvar aes = __webpack_require__(/*! ./aes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/aes.js\");\n\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/_evp_bytestokey@1.0.3@evp_bytestokey/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nfunction Cipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\n\ninherits(Cipher, Transform);\n\nCipher.prototype._update = function (data) {\n this._cache.add(data);\n\n var chunk;\n var thing;\n var out = [];\n\n while (chunk = this._cache.get()) {\n thing = this._mode.encrypt(this, chunk);\n out.push(thing);\n }\n\n return Buffer.concat(out);\n};\n\nvar PADDING = Buffer.alloc(16, 0x10);\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush();\n\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk);\n\n this._cipher.scrub();\n\n return chunk;\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub();\n\n throw new Error('data not multiple of block length');\n }\n};\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\n\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n\n return null;\n};\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length;\n var padBuff = Buffer.allocUnsafe(len);\n var i = -1;\n\n while (++i < len) {\n padBuff.writeUInt8(len, i);\n }\n\n return Buffer.concat([this.cache, padBuff]);\n};\n\nfunction createCipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv);\n }\n\n return new Cipher(config.module, password, iv);\n}\n\nfunction createCipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createCipheriv(suite, keys.key, keys.iv);\n}\n\nexports.createCipheriv = createCipheriv;\nexports.createCipher = createCipher;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/encrypter.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/ghash.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/ghash.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar ZEROES = Buffer.alloc(16, 0);\n\nfunction toArray(buf) {\n return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n}\n\nfunction fromArray(out) {\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0] >>> 0, 0);\n buf.writeUInt32BE(out[1] >>> 0, 4);\n buf.writeUInt32BE(out[2] >>> 0, 8);\n buf.writeUInt32BE(out[3] >>> 0, 12);\n return buf;\n}\n\nfunction GHASH(key) {\n this.h = key;\n this.state = Buffer.alloc(16, 0);\n this.cache = Buffer.allocUnsafe(0);\n} // from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\n\n\nGHASH.prototype.ghash = function (block) {\n var i = -1;\n\n while (++i < block.length) {\n this.state[i] ^= block[i];\n }\n\n this._multiply();\n};\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h);\n var Zi = [0, 0, 0, 0];\n var j, xi, lsbVi;\n var i = -1;\n\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0;\n\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0];\n Zi[1] ^= Vi[1];\n Zi[2] ^= Vi[2];\n Zi[3] ^= Vi[3];\n } // Store the value of LSB(V_i)\n\n\n lsbVi = (Vi[3] & 1) !== 0; // V_i+1 = V_i >> 1\n\n for (j = 3; j > 0; j--) {\n Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31;\n }\n\n Vi[0] = Vi[0] >>> 1; // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n\n if (lsbVi) {\n Vi[0] = Vi[0] ^ 0xe1 << 24;\n }\n }\n\n this.state = fromArray(Zi);\n};\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf]);\n var chunk;\n\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n this.ghash(chunk);\n }\n};\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16));\n }\n\n this.ghash(fromArray([0, abl, 0, bl]));\n return this.state;\n};\n\nmodule.exports = GHASH;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/ghash.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/incr32.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/incr32.js ***!
|
||
\*********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function incr32(iv) {\n var len = iv.length;\n var item;\n\n while (len--) {\n item = iv.readUInt8(len);\n\n if (item === 255) {\n iv.writeUInt8(0, len);\n } else {\n item++;\n iv.writeUInt8(item, len);\n break;\n }\n }\n}\n\nmodule.exports = incr32;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/incr32.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cbc.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cbc.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/_buffer-xor@1.0.3@buffer-xor/index.js\");\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev);\n self._prev = self._cipher.encryptBlock(data);\n return self._prev;\n};\n\nexports.decrypt = function (self, block) {\n var pad = self._prev;\n self._prev = block;\n\n var out = self._cipher.decryptBlock(block);\n\n return xor(out, pad);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cbc.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/_buffer-xor@1.0.3@buffer-xor/index.js\");\n\nfunction encryptStart(self, data, decrypt) {\n var len = data.length;\n var out = xor(data, self._cache);\n self._cache = self._cache.slice(len);\n self._prev = Buffer.concat([self._prev, decrypt ? data : out]);\n return out;\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0);\n var len;\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev);\n self._prev = Buffer.allocUnsafe(0);\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length;\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]);\n data = data.slice(len);\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)]);\n break;\n }\n }\n\n return out;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb1.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb1.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nfunction encryptByte(self, byteParam, decrypt) {\n var pad;\n var i = -1;\n var len = 8;\n var out = 0;\n var bit, value;\n\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev);\n bit = byteParam & 1 << 7 - i ? 0x80 : 0;\n value = pad[0] ^ bit;\n out += (value & 0x80) >> i % 8;\n self._prev = shiftIn(self._prev, decrypt ? bit : value);\n }\n\n return out;\n}\n\nfunction shiftIn(buffer, value) {\n var len = buffer.length;\n var i = -1;\n var out = Buffer.allocUnsafe(buffer.length);\n buffer = Buffer.concat([buffer, Buffer.from([value])]);\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> 7;\n }\n\n return out;\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n\n return out;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb1.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb8.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb8.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nfunction encryptByte(self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev);\n\n var out = pad[0] ^ byteParam;\n self._prev = Buffer.concat([self._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\n return out;\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n\n return out;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb8.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ctr.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ctr.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/_buffer-xor@1.0.3@buffer-xor/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar incr32 = __webpack_require__(/*! ../incr32 */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/incr32.js\");\n\nfunction getBlock(self) {\n var out = self._cipher.encryptBlockRaw(self._prev);\n\n incr32(self._prev);\n return out;\n}\n\nvar blockSize = 16;\n\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize);\n var start = self._cache.length;\n self._cache = Buffer.concat([self._cache, Buffer.allocUnsafe(chunkNum * blockSize)]);\n\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self);\n var offset = start + i * blockSize;\n\n self._cache.writeUInt32BE(out[0], offset + 0);\n\n self._cache.writeUInt32BE(out[1], offset + 4);\n\n self._cache.writeUInt32BE(out[2], offset + 8);\n\n self._cache.writeUInt32BE(out[3], offset + 12);\n }\n\n var pad = self._cache.slice(0, chunk.length);\n\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ctr.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ecb.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ecb.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block);\n};\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ecb.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/index.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/index.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var modeModules = {\n ECB: __webpack_require__(/*! ./ecb */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ecb.js\"),\n CBC: __webpack_require__(/*! ./cbc */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cbc.js\"),\n CFB: __webpack_require__(/*! ./cfb */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb.js\"),\n CFB8: __webpack_require__(/*! ./cfb8 */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb8.js\"),\n CFB1: __webpack_require__(/*! ./cfb1 */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/cfb1.js\"),\n OFB: __webpack_require__(/*! ./ofb */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ofb.js\"),\n CTR: __webpack_require__(/*! ./ctr */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ctr.js\"),\n GCM: __webpack_require__(/*! ./ctr */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ctr.js\")\n};\n\nvar modes = __webpack_require__(/*! ./list.json */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/list.json\");\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode];\n}\n\nmodule.exports = modes;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/list.json":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/list.json ***!
|
||
\***************************************************************************/
|
||
/*! exports provided: aes-128-ecb, aes-192-ecb, aes-256-ecb, aes-128-cbc, aes-192-cbc, aes-256-cbc, aes128, aes192, aes256, aes-128-cfb, aes-192-cfb, aes-256-cfb, aes-128-cfb8, aes-192-cfb8, aes-256-cfb8, aes-128-cfb1, aes-192-cfb1, aes-256-cfb1, aes-128-ofb, aes-192-ofb, aes-256-ofb, aes-128-ctr, aes-192-ctr, aes-256-ctr, aes-128-gcm, aes-192-gcm, aes-256-gcm, default */
|
||
/***/ (function(module) {
|
||
|
||
eval("module.exports = JSON.parse(\"{\\\"aes-128-ecb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":0,\\\"mode\\\":\\\"ECB\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-192-ecb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":0,\\\"mode\\\":\\\"ECB\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-256-ecb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":0,\\\"mode\\\":\\\"ECB\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-128-cbc\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-192-cbc\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-256-cbc\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes128\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes192\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes256\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-128-cfb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-cfb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-cfb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-cfb8\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB8\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-cfb8\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB8\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-cfb8\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB8\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-cfb1\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB1\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-cfb1\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB1\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-cfb1\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB1\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-ofb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"OFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-ofb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"OFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-ofb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"OFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-ctr\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CTR\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-ctr\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CTR\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-ctr\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CTR\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-gcm\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":12,\\\"mode\\\":\\\"GCM\\\",\\\"type\\\":\\\"auth\\\"},\\\"aes-192-gcm\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":12,\\\"mode\\\":\\\"GCM\\\",\\\"type\\\":\\\"auth\\\"},\\\"aes-256-gcm\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":12,\\\"mode\\\":\\\"GCM\\\",\\\"type\\\":\\\"auth\\\"}}\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/list.json?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ofb.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ofb.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/_buffer-xor@1.0.3@buffer-xor/index.js\");\n\nfunction getBlock(self) {\n self._prev = self._cipher.encryptBlock(self._prev);\n return self._prev;\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)]);\n }\n\n var pad = self._cache.slice(0, chunk.length);\n\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/ofb.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-aes@1.2.0@browserify-aes/streamCipher.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/_browserify-aes@1.2.0@browserify-aes/streamCipher.js ***!
|
||
\***************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var aes = __webpack_require__(/*! ./aes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/aes.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/_cipher-base@1.0.4@cipher-base/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._mode = mode;\n}\n\ninherits(StreamCipher, Transform);\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt);\n};\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub();\n};\n\nmodule.exports = StreamCipher;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-aes@1.2.0@browserify-aes/streamCipher.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-cipher@1.0.1@browserify-cipher/browser.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/_browserify-cipher@1.0.1@browserify-cipher/browser.js ***!
|
||
\****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var DES = __webpack_require__(/*! browserify-des */ \"./node_modules/_browserify-des@1.0.2@browserify-des/index.js\");\n\nvar aes = __webpack_require__(/*! browserify-aes/browser */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/browser.js\");\n\nvar aesModes = __webpack_require__(/*! browserify-aes/modes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/modes/index.js\");\n\nvar desModes = __webpack_require__(/*! browserify-des/modes */ \"./node_modules/_browserify-des@1.0.2@browserify-des/modes.js\");\n\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/_evp_bytestokey@1.0.3@evp_bytestokey/index.js\");\n\nfunction createCipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n\n var keys = ebtk(password, false, keyLen, ivLen);\n return createCipheriv(suite, keys.key, keys.iv);\n}\n\nfunction createDecipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n\n var keys = ebtk(password, false, keyLen, ivLen);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\n\nfunction createCipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite\n });\n throw new TypeError('invalid suite type');\n}\n\nfunction createDecipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite,\n decrypt: true\n });\n throw new TypeError('invalid suite type');\n}\n\nfunction getCiphers() {\n return Object.keys(desModes).concat(aes.getCiphers());\n}\n\nexports.createCipher = exports.Cipher = createCipher;\nexports.createCipheriv = exports.Cipheriv = createCipheriv;\nexports.createDecipher = exports.Decipher = createDecipher;\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-cipher@1.0.1@browserify-cipher/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-des@1.0.2@browserify-des/index.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/_browserify-des@1.0.2@browserify-des/index.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var CipherBase = __webpack_require__(/*! cipher-base */ \"./node_modules/_cipher-base@1.0.4@cipher-base/index.js\");\n\nvar des = __webpack_require__(/*! des.js */ \"./node_modules/_des.js@1.0.1@des.js/lib/des.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n};\nmodes.des = modes['des-cbc'];\nmodes.des3 = modes['des-ede3-cbc'];\nmodule.exports = DES;\ninherits(DES, CipherBase);\n\nfunction DES(opts) {\n CipherBase.call(this);\n var modeName = opts.mode.toLowerCase();\n var mode = modes[modeName];\n var type;\n\n if (opts.decrypt) {\n type = 'decrypt';\n } else {\n type = 'encrypt';\n }\n\n var key = opts.key;\n\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key);\n }\n\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)]);\n }\n\n var iv = opts.iv;\n\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv);\n }\n\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n });\n}\n\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data));\n};\n\nDES.prototype._final = function () {\n return Buffer.from(this._des.final());\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-des@1.0.2@browserify-des/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-des@1.0.2@browserify-des/modes.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/_browserify-des@1.0.2@browserify-des/modes.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("exports['des-ecb'] = {\n key: 8,\n iv: 0\n};\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n};\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n};\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n};\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n};\nexports['des-ede'] = {\n key: 16,\n iv: 0\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-des@1.0.2@browserify-des/modes.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-rsa@4.0.1@browserify-rsa/index.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/_browserify-rsa@4.0.1@browserify-rsa/index.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var bn = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/_randombytes@2.1.0@randombytes/browser.js\");\n\nmodule.exports = crt;\n\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(bn.mont(priv.modulus)).redPow(new bn(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder: r.invm(priv.modulus)\n };\n}\n\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var mod = bn.mont(priv.modulus);\n var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(bn.mont(priv.prime1));\n var c2 = blinded.toRed(bn.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1);\n var m2 = c2.redPow(priv.exponent2);\n m1 = m1.fromRed();\n m2 = m2.fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p);\n h.imul(q);\n m2.iadd(h);\n return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));\n}\n\ncrt.getr = getr;\n\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r = new bn(randomBytes(len));\n\n while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {\n r = new bn(randomBytes(len));\n }\n\n return r;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-rsa@4.0.1@browserify-rsa/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-sign@4.2.1@browserify-sign/algos.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_browserify-sign@4.2.1@browserify-sign/algos.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! ./browser/algorithms.json */ \"./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/algorithms.json\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-sign@4.2.1@browserify-sign/algos.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/algorithms.json":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/algorithms.json ***!
|
||
\*************************************************************************************/
|
||
/*! exports provided: sha224WithRSAEncryption, RSA-SHA224, sha256WithRSAEncryption, RSA-SHA256, sha384WithRSAEncryption, RSA-SHA384, sha512WithRSAEncryption, RSA-SHA512, RSA-SHA1, ecdsa-with-SHA1, sha256, sha224, sha384, sha512, DSA-SHA, DSA-SHA1, DSA, DSA-WITH-SHA224, DSA-SHA224, DSA-WITH-SHA256, DSA-SHA256, DSA-WITH-SHA384, DSA-SHA384, DSA-WITH-SHA512, DSA-SHA512, DSA-RIPEMD160, ripemd160WithRSA, RSA-RIPEMD160, md5WithRSAEncryption, RSA-MD5, default */
|
||
/***/ (function(module) {
|
||
|
||
eval("module.exports = JSON.parse(\"{\\\"sha224WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"302d300d06096086480165030402040500041c\\\"},\\\"RSA-SHA224\\\":{\\\"sign\\\":\\\"ecdsa/rsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"302d300d06096086480165030402040500041c\\\"},\\\"sha256WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"3031300d060960864801650304020105000420\\\"},\\\"RSA-SHA256\\\":{\\\"sign\\\":\\\"ecdsa/rsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"3031300d060960864801650304020105000420\\\"},\\\"sha384WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"3041300d060960864801650304020205000430\\\"},\\\"RSA-SHA384\\\":{\\\"sign\\\":\\\"ecdsa/rsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"3041300d060960864801650304020205000430\\\"},\\\"sha512WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"3051300d060960864801650304020305000440\\\"},\\\"RSA-SHA512\\\":{\\\"sign\\\":\\\"ecdsa/rsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"3051300d060960864801650304020305000440\\\"},\\\"RSA-SHA1\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"3021300906052b0e03021a05000414\\\"},\\\"ecdsa-with-SHA1\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"\\\"},\\\"sha256\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"\\\"},\\\"sha224\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"\\\"},\\\"sha384\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"\\\"},\\\"sha512\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA1\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"\\\"},\\\"DSA\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-WITH-SHA224\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA224\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-WITH-SHA256\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA256\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-WITH-SHA384\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA384\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-WITH-SHA512\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA512\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-RIPEMD160\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"rmd160\\\",\\\"id\\\":\\\"\\\"},\\\"ripemd160WithRSA\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"rmd160\\\",\\\"id\\\":\\\"3021300906052b2403020105000414\\\"},\\\"RSA-RIPEMD160\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"rmd160\\\",\\\"id\\\":\\\"3021300906052b2403020105000414\\\"},\\\"md5WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"md5\\\",\\\"id\\\":\\\"3020300c06082a864886f70d020505000410\\\"},\\\"RSA-MD5\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"md5\\\",\\\"id\\\":\\\"3020300c06082a864886f70d020505000410\\\"}}\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/algorithms.json?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/curves.json":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/curves.json ***!
|
||
\*********************************************************************************/
|
||
/*! exports provided: 1.3.132.0.10, 1.3.132.0.33, 1.2.840.10045.3.1.1, 1.2.840.10045.3.1.7, 1.3.132.0.34, 1.3.132.0.35, default */
|
||
/***/ (function(module) {
|
||
|
||
eval("module.exports = JSON.parse(\"{\\\"1.3.132.0.10\\\":\\\"secp256k1\\\",\\\"1.3.132.0.33\\\":\\\"p224\\\",\\\"1.2.840.10045.3.1.1\\\":\\\"p192\\\",\\\"1.2.840.10045.3.1.7\\\":\\\"p256\\\",\\\"1.3.132.0.34\\\":\\\"p384\\\",\\\"1.3.132.0.35\\\":\\\"p521\\\"}\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/curves.json?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/index.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/index.js ***!
|
||
\******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar createHash = __webpack_require__(/*! create-hash */ \"./node_modules/_create-hash@1.2.0@create-hash/browser.js\");\n\nvar stream = __webpack_require__(/*! readable-stream */ \"./node_modules/_readable-stream@3.6.0@readable-stream/readable-browser.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar sign = __webpack_require__(/*! ./sign */ \"./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/sign.js\");\n\nvar verify = __webpack_require__(/*! ./verify */ \"./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/verify.js\");\n\nvar algorithms = __webpack_require__(/*! ./algorithms.json */ \"./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/algorithms.json\");\n\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\n\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) throw new Error('Unknown message digest');\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\n\ninherits(Sign, stream.Writable);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n\n done();\n};\n\nSign.prototype.update = function update(data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc);\n\n this._hash.update(data);\n\n return this;\n};\n\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n\n var hash = this._hash.digest();\n\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) throw new Error('Unknown message digest');\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\n\ninherits(Verify, stream.Writable);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n\n done();\n};\n\nVerify.prototype.update = function update(data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc);\n\n this._hash.update(data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc);\n this.end();\n\n var hash = this._hash.digest();\n\n return verify(sig, hash, key, this._signType, this._tag);\n};\n\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\n\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/sign.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/sign.js ***!
|
||
\*****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar createHmac = __webpack_require__(/*! create-hmac */ \"./node_modules/_create-hmac@1.1.7@create-hmac/browser.js\");\n\nvar crt = __webpack_require__(/*! browserify-rsa */ \"./node_modules/_browserify-rsa@4.0.1@browserify-rsa/index.js\");\n\nvar EC = __webpack_require__(/*! elliptic */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic.js\").ec;\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@5.1.3@bn.js/lib/bn.js\");\n\nvar parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/_parse-asn1@5.1.6@parse-asn1/index.js\");\n\nvar curves = __webpack_require__(/*! ./curves.json */ \"./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/curves.json\");\n\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type');\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type');\n return dsaSign(hash, priv, hashType);\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type');\n }\n\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n\n while (hash.length + pad.length + 1 < len) {\n pad.push(0xff);\n }\n\n pad.push(0x00);\n var i = -1;\n\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n\n var out = crt(pad, priv);\n return out;\n}\n\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'));\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n return Buffer.from(out.toDER());\n}\n\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n\n return toDER(r, s);\n}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray(); // Pad values\n\n if (r[0] & 0x80) r = [0].concat(r);\n if (s[0] & 0x80) s = [0].concat(s);\n var total = r.length + s.length + 4;\n var res = [0x30, total, 0x02, r.length];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\n\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return {\n k: k,\n v: v\n };\n}\n\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) bits.ishrn(shift);\n return bits;\n}\n\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n\n return out;\n}\n\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n\n do {\n t = Buffer.alloc(0);\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n\n return k;\n}\n\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\n\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/sign.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/verify.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/verify.js ***!
|
||
\*******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@5.1.3@bn.js/lib/bn.js\");\n\nvar EC = __webpack_require__(/*! elliptic */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic.js\").ec;\n\nvar parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/_parse-asn1@5.1.6@parse-asn1/index.js\");\n\nvar curves = __webpack_require__(/*! ./curves.json */ \"./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/curves.json\");\n\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type');\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type');\n return dsaVerify(sig, hash, pub);\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type');\n }\n\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum++;\n }\n\n pad.push(0x00);\n var i = -1;\n\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) out = 1;\n i = -1;\n\n while (++i < len) {\n out |= sig[i] ^ pad[i];\n }\n\n return out === 0;\n}\n\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'));\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n return curve.verify(hash, sig, pubkey);\n}\n\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q);\n return v.cmp(r) === 0;\n}\n\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig');\n if (b.cmp(q) >= q) throw new Error('invalid sig');\n}\n\nmodule.exports = verify;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/verify.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_buffer-xor@1.0.3@buffer-xor/index.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/_buffer-xor@1.0.3@buffer-xor/index.js ***!
|
||
\************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(Buffer) {module.exports = function xor(a, b) {\n var length = Math.min(a.length, b.length);\n var buffer = new Buffer(length);\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i];\n }\n\n return buffer;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_buffer-xor@1.0.3@buffer-xor/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_buffer@4.9.2@buffer/index.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/_buffer@4.9.2@buffer/index.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n\n/* eslint-disable no-proto */\n\n\nvar base64 = __webpack_require__(/*! base64-js */ \"./node_modules/_base64-js@1.3.1@base64-js/index.js\");\n\nvar ieee754 = __webpack_require__(/*! ieee754 */ \"./node_modules/_ieee754@1.1.13@ieee754/index.js\");\n\nvar isArray = __webpack_require__(/*! isarray */ \"./node_modules/_isarray@1.0.0@isarray/index.js\");\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '<Buffer ' + str + '>';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_buffer@4.9.2@buffer/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_cipher-base@1.0.4@cipher-base/index.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/_cipher-base@1.0.4@cipher-base/index.js ***!
|
||
\**************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar Transform = __webpack_require__(/*! stream */ \"./node_modules/_stream-browserify@2.0.2@stream-browserify/index.js\").Transform;\n\nvar StringDecoder = __webpack_require__(/*! string_decoder */ \"./node_modules/_string_decoder@1.3.0@string_decoder/lib/string_decoder.js\").StringDecoder;\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nfunction CipherBase(hashMode) {\n Transform.call(this);\n this.hashMode = typeof hashMode === 'string';\n\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest;\n } else {\n this.final = this._finalOrDigest;\n }\n\n if (this._final) {\n this.__final = this._final;\n this._final = null;\n }\n\n this._decoder = null;\n this._encoding = null;\n}\n\ninherits(CipherBase, Transform);\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc);\n }\n\n var outData = this._update(data);\n\n if (this.hashMode) return this;\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc);\n }\n\n return outData;\n};\n\nCipherBase.prototype.setAutoPadding = function () {};\n\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state');\n};\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err;\n\n try {\n if (this.hashMode) {\n this._update(data);\n } else {\n this.push(this._update(data));\n }\n } catch (e) {\n err = e;\n } finally {\n next(err);\n }\n};\n\nCipherBase.prototype._flush = function (done) {\n var err;\n\n try {\n this.push(this.__final());\n } catch (e) {\n err = e;\n }\n\n done(err);\n};\n\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0);\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true);\n }\n\n return outData;\n};\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc);\n this._encoding = enc;\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings');\n\n var out = this._decoder.write(value);\n\n if (fin) {\n out += this._decoder.end();\n }\n\n return out;\n};\n\nmodule.exports = CipherBase;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_cipher-base@1.0.4@cipher-base/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_core-util-is@1.0.2@core-util-is/lib/util.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/_core-util-is@1.0.2@core-util-is/lib/util.js ***!
|
||
\*******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n\n return objectToString(arg) === '[object Array]';\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_core-util-is@1.0.2@core-util-is/lib/util.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_create-ecdh@4.0.4@create-ecdh/browser.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/_create-ecdh@4.0.4@create-ecdh/browser.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var elliptic = __webpack_require__(/*! elliptic */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nmodule.exports = function createECDH(curve) {\n return new ECDH(curve);\n};\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n};\naliases.p224 = aliases.secp224r1;\naliases.p256 = aliases.secp256r1 = aliases.prime256v1;\naliases.p192 = aliases.secp192r1 = aliases.prime192v1;\naliases.p384 = aliases.secp384r1;\naliases.p521 = aliases.secp521r1;\n\nfunction ECDH(curve) {\n this.curveType = aliases[curve];\n\n if (!this.curveType) {\n this.curveType = {\n name: curve\n };\n }\n\n this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap\n\n this.keys = void 0;\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair();\n return this.getPublicKey(enc, format);\n};\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8';\n\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc);\n }\n\n var otherPub = this.curve.keyFromPublic(other).getPublic();\n var out = otherPub.mul(this.keys.getPrivate()).getX();\n return formatReturnValue(out, enc, this.curveType.byteLength);\n};\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true);\n\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7;\n } else {\n key[0] = 6;\n }\n }\n\n return formatReturnValue(key, enc);\n};\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc);\n};\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n\n this.keys._importPublic(pub);\n\n return this;\n};\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n\n var _priv = new BN(priv);\n\n _priv = _priv.toString(16);\n this.keys = this.curve.genKeyPair();\n\n this.keys._importPrivate(_priv);\n\n return this;\n};\n\nfunction formatReturnValue(bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray();\n }\n\n var buf = new Buffer(bn);\n\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length);\n zeros.fill(0);\n buf = Buffer.concat([zeros, buf]);\n }\n\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_create-ecdh@4.0.4@create-ecdh/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_create-hash@1.2.0@create-hash/browser.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/_create-hash@1.2.0@create-hash/browser.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/_md5.js@1.3.5@md5.js/index.js\");\n\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ \"./node_modules/_ripemd160@2.0.2@ripemd160/index.js\");\n\nvar sha = __webpack_require__(/*! sha.js */ \"./node_modules/_sha.js@2.4.11@sha.js/index.js\");\n\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/_cipher-base@1.0.4@cipher-base/index.js\");\n\nfunction Hash(hash) {\n Base.call(this, 'digest');\n this._hash = hash;\n}\n\ninherits(Hash, Base);\n\nHash.prototype._update = function (data) {\n this._hash.update(data);\n};\n\nHash.prototype._final = function () {\n return this._hash.digest();\n};\n\nmodule.exports = function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') return new MD5();\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160();\n return new Hash(sha(alg));\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_create-hash@1.2.0@create-hash/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_create-hash@1.2.0@create-hash/md5.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/_create-hash@1.2.0@create-hash/md5.js ***!
|
||
\************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/_md5.js@1.3.5@md5.js/index.js\");\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest();\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_create-hash@1.2.0@create-hash/md5.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_create-hmac@1.1.7@create-hmac/browser.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/_create-hmac@1.1.7@create-hmac/browser.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Legacy = __webpack_require__(/*! ./legacy */ \"./node_modules/_create-hmac@1.1.7@create-hmac/legacy.js\");\n\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/_cipher-base@1.0.4@cipher-base/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar md5 = __webpack_require__(/*! create-hash/md5 */ \"./node_modules/_create-hash@1.2.0@create-hash/md5.js\");\n\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ \"./node_modules/_ripemd160@2.0.2@ripemd160/index.js\");\n\nvar sha = __webpack_require__(/*! sha.js */ \"./node_modules/_sha.js@2.4.11@sha.js/index.js\");\n\nvar ZEROS = Buffer.alloc(128);\n\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n this._alg = alg;\n this._key = key;\n\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n key = hash.update(key).digest();\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n\n this._hash.update(ipad);\n}\n\ninherits(Hmac, Base);\n\nHmac.prototype._update = function (data) {\n this._hash.update(data);\n};\n\nHmac.prototype._final = function () {\n var h = this._hash.digest();\n\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg);\n return hash.update(this._opad).update(h).digest();\n};\n\nmodule.exports = function createHmac(alg, key) {\n alg = alg.toLowerCase();\n\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key);\n }\n\n if (alg === 'md5') {\n return new Legacy(md5, key);\n }\n\n return new Hmac(alg, key);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_create-hmac@1.1.7@create-hmac/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_create-hmac@1.1.7@create-hmac/legacy.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/_create-hmac@1.1.7@create-hmac/legacy.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/_cipher-base@1.0.4@cipher-base/index.js\");\n\nvar ZEROS = Buffer.alloc(128);\nvar blocksize = 64;\n\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n\n this._alg = alg;\n this._key = key;\n\n if (key.length > blocksize) {\n key = alg(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n\n this._hash = [ipad];\n}\n\ninherits(Hmac, Base);\n\nHmac.prototype._update = function (data) {\n this._hash.push(data);\n};\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash));\n\n return this._alg(Buffer.concat([this._opad, h]));\n};\n\nmodule.exports = Hmac;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_create-hmac@1.1.7@create-hmac/legacy.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_crypto-browserify@3.12.0@crypto-browserify/index.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/_crypto-browserify@3.12.0@crypto-browserify/index.js ***!
|
||
\***************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__(/*! randombytes */ \"./node_modules/_randombytes@2.1.0@randombytes/browser.js\");\nexports.createHash = exports.Hash = __webpack_require__(/*! create-hash */ \"./node_modules/_create-hash@1.2.0@create-hash/browser.js\");\nexports.createHmac = exports.Hmac = __webpack_require__(/*! create-hmac */ \"./node_modules/_create-hmac@1.1.7@create-hmac/browser.js\");\n\nvar algos = __webpack_require__(/*! browserify-sign/algos */ \"./node_modules/_browserify-sign@4.2.1@browserify-sign/algos.js\");\n\nvar algoKeys = Object.keys(algos);\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys);\n\nexports.getHashes = function () {\n return hashes;\n};\n\nvar p = __webpack_require__(/*! pbkdf2 */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/browser.js\");\n\nexports.pbkdf2 = p.pbkdf2;\nexports.pbkdf2Sync = p.pbkdf2Sync;\n\nvar aes = __webpack_require__(/*! browserify-cipher */ \"./node_modules/_browserify-cipher@1.0.1@browserify-cipher/browser.js\");\n\nexports.Cipher = aes.Cipher;\nexports.createCipher = aes.createCipher;\nexports.Cipheriv = aes.Cipheriv;\nexports.createCipheriv = aes.createCipheriv;\nexports.Decipher = aes.Decipher;\nexports.createDecipher = aes.createDecipher;\nexports.Decipheriv = aes.Decipheriv;\nexports.createDecipheriv = aes.createDecipheriv;\nexports.getCiphers = aes.getCiphers;\nexports.listCiphers = aes.listCiphers;\n\nvar dh = __webpack_require__(/*! diffie-hellman */ \"./node_modules/_diffie-hellman@5.0.3@diffie-hellman/browser.js\");\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup;\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\nexports.getDiffieHellman = dh.getDiffieHellman;\nexports.createDiffieHellman = dh.createDiffieHellman;\nexports.DiffieHellman = dh.DiffieHellman;\n\nvar sign = __webpack_require__(/*! browserify-sign */ \"./node_modules/_browserify-sign@4.2.1@browserify-sign/browser/index.js\");\n\nexports.createSign = sign.createSign;\nexports.Sign = sign.Sign;\nexports.createVerify = sign.createVerify;\nexports.Verify = sign.Verify;\nexports.createECDH = __webpack_require__(/*! create-ecdh */ \"./node_modules/_create-ecdh@4.0.4@create-ecdh/browser.js\");\n\nvar publicEncrypt = __webpack_require__(/*! public-encrypt */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/browser.js\");\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt;\nexports.privateEncrypt = publicEncrypt.privateEncrypt;\nexports.publicDecrypt = publicEncrypt.publicDecrypt;\nexports.privateDecrypt = publicEncrypt.privateDecrypt; // the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = __webpack_require__(/*! randomfill */ \"./node_modules/_randomfill@1.0.4@randomfill/browser.js\");\n\nexports.randomFill = rf.randomFill;\nexports.randomFillSync = rf.randomFillSync;\n\nexports.createCredentials = function () {\n throw new Error(['sorry, createCredentials is not implemented yet', 'we accept pull requests', 'https://github.com/crypto-browserify/crypto-browserify'].join('\\n'));\n};\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_crypto-browserify@3.12.0@crypto-browserify/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/font-awesome-4.7.0/css/font-awesome.css":
|
||
/*!*************************************************************************************************************!*\
|
||
!*** ./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/font-awesome-4.7.0/css/font-awesome.css ***!
|
||
\*************************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js */ \"./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(/*! ../../../node_modules/_css-loader@3.6.0@css-loader/dist/runtime/getUrl.js */ \"./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(/*! ../fonts/fontawesome-webfont.eot?v=4.7.0 */ \"./src/font-awesome-4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = __webpack_require__(/*! ../fonts/fontawesome-webfont.eot */ \"./src/font-awesome-4.7.0/fonts/fontawesome-webfont.eot\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = __webpack_require__(/*! ../fonts/fontawesome-webfont.woff2?v=4.7.0 */ \"./src/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = __webpack_require__(/*! ../fonts/fontawesome-webfont.woff?v=4.7.0 */ \"./src/font-awesome-4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0\");\nvar ___CSS_LOADER_URL_IMPORT_4___ = __webpack_require__(/*! ../fonts/fontawesome-webfont.ttf?v=4.7.0 */ \"./src/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0\");\nvar ___CSS_LOADER_URL_IMPORT_5___ = __webpack_require__(/*! ../fonts/fontawesome-webfont.svg?v=4.7.0 */ \"./src/font-awesome-4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___, { hash: \"?#iefix&v=4.7.0\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___, { hash: \"#fontawesomeregular\" });\n// Module\nexports.push([module.i, \"/*!\\r\\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\\r\\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\\r\\n */\\r\\n/* FONT PATH\\r\\n * -------------------------- */\\r\\n@font-face {\\r\\n font-family: 'FontAwesome';\\r\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\r\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format('embedded-opentype'), \\r\\n url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format('woff2'), \\r\\n url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format('woff'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format('truetype'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format('svg');\\r\\n font-weight: normal;\\r\\n font-style: normal;\\r\\n}\\r\\n.fa {\\r\\n display: inline-block;\\r\\n font: normal normal normal 14px/1 FontAwesome;\\r\\n font-size: inherit;\\r\\n text-rendering: auto;\\r\\n -webkit-font-smoothing: antialiased;\\r\\n -moz-osx-font-smoothing: grayscale;\\r\\n}\\r\\n/* makes the font 33% larger relative to the icon container */\\r\\n.fa-lg {\\r\\n font-size: 1.33333333em;\\r\\n line-height: 0.75em;\\r\\n vertical-align: -15%;\\r\\n}\\r\\n.fa-2x {\\r\\n font-size: 2em;\\r\\n}\\r\\n.fa-3x {\\r\\n font-size: 3em;\\r\\n}\\r\\n.fa-4x {\\r\\n font-size: 4em;\\r\\n}\\r\\n.fa-5x {\\r\\n font-size: 5em;\\r\\n}\\r\\n.fa-fw {\\r\\n width: 1.28571429em;\\r\\n text-align: center;\\r\\n}\\r\\n.fa-ul {\\r\\n padding-left: 0;\\r\\n margin-left: 2.14285714em;\\r\\n list-style-type: none;\\r\\n}\\r\\n.fa-ul > li {\\r\\n position: relative;\\r\\n}\\r\\n.fa-li {\\r\\n position: absolute;\\r\\n left: -2.14285714em;\\r\\n width: 2.14285714em;\\r\\n top: 0.14285714em;\\r\\n text-align: center;\\r\\n}\\r\\n.fa-li.fa-lg {\\r\\n left: -1.85714286em;\\r\\n}\\r\\n.fa-border {\\r\\n padding: .2em .25em .15em;\\r\\n border: solid 0.08em #eee;\\r\\n border-radius: .1em;\\r\\n}\\r\\n.fa-pull-left {\\r\\n float: left;\\r\\n}\\r\\n.fa-pull-right {\\r\\n float: right;\\r\\n}\\r\\n.fa.fa-pull-left {\\r\\n margin-right: .3em;\\r\\n}\\r\\n.fa.fa-pull-right {\\r\\n margin-left: .3em;\\r\\n}\\r\\n/* Deprecated as of 4.4.0 */\\r\\n.pull-right {\\r\\n float: right;\\r\\n}\\r\\n.pull-left {\\r\\n float: left;\\r\\n}\\r\\n.fa.pull-left {\\r\\n margin-right: .3em;\\r\\n}\\r\\n.fa.pull-right {\\r\\n margin-left: .3em;\\r\\n}\\r\\n.fa-spin {\\r\\n -webkit-animation: fa-spin 2s infinite linear;\\r\\n animation: fa-spin 2s infinite linear;\\r\\n}\\r\\n.fa-pulse {\\r\\n -webkit-animation: fa-spin 1s infinite steps(8);\\r\\n animation: fa-spin 1s infinite steps(8);\\r\\n}\\r\\n@-webkit-keyframes fa-spin {\\r\\n 0% {\\r\\n -webkit-transform: rotate(0deg);\\r\\n transform: rotate(0deg);\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: rotate(359deg);\\r\\n transform: rotate(359deg);\\r\\n }\\r\\n}\\r\\n@keyframes fa-spin {\\r\\n 0% {\\r\\n -webkit-transform: rotate(0deg);\\r\\n transform: rotate(0deg);\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: rotate(359deg);\\r\\n transform: rotate(359deg);\\r\\n }\\r\\n}\\r\\n.fa-rotate-90 {\\r\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\r\\n -webkit-transform: rotate(90deg);\\r\\n -ms-transform: rotate(90deg);\\r\\n transform: rotate(90deg);\\r\\n}\\r\\n.fa-rotate-180 {\\r\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\r\\n -webkit-transform: rotate(180deg);\\r\\n -ms-transform: rotate(180deg);\\r\\n transform: rotate(180deg);\\r\\n}\\r\\n.fa-rotate-270 {\\r\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\r\\n -webkit-transform: rotate(270deg);\\r\\n -ms-transform: rotate(270deg);\\r\\n transform: rotate(270deg);\\r\\n}\\r\\n.fa-flip-horizontal {\\r\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\r\\n -webkit-transform: scale(-1, 1);\\r\\n -ms-transform: scale(-1, 1);\\r\\n transform: scale(-1, 1);\\r\\n}\\r\\n.fa-flip-vertical {\\r\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\r\\n -webkit-transform: scale(1, -1);\\r\\n -ms-transform: scale(1, -1);\\r\\n transform: scale(1, -1);\\r\\n}\\r\\n:root .fa-rotate-90,\\r\\n:root .fa-rotate-180,\\r\\n:root .fa-rotate-270,\\r\\n:root .fa-flip-horizontal,\\r\\n:root .fa-flip-vertical {\\r\\n filter: none;\\r\\n}\\r\\n.fa-stack {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n width: 2em;\\r\\n height: 2em;\\r\\n line-height: 2em;\\r\\n vertical-align: middle;\\r\\n}\\r\\n.fa-stack-1x,\\r\\n.fa-stack-2x {\\r\\n position: absolute;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n text-align: center;\\r\\n}\\r\\n.fa-stack-1x {\\r\\n line-height: inherit;\\r\\n}\\r\\n.fa-stack-2x {\\r\\n font-size: 2em;\\r\\n}\\r\\n.fa-inverse {\\r\\n color: #fff;\\r\\n}\\r\\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\\r\\n readers do not read off random characters that represent icons */\\r\\n.fa-glass:before {\\r\\n content: \\\"\\\\f000\\\";\\r\\n}\\r\\n.fa-music:before {\\r\\n content: \\\"\\\\f001\\\";\\r\\n}\\r\\n.fa-search:before {\\r\\n content: \\\"\\\\f002\\\";\\r\\n}\\r\\n.fa-envelope-o:before {\\r\\n content: \\\"\\\\f003\\\";\\r\\n}\\r\\n.fa-heart:before {\\r\\n content: \\\"\\\\f004\\\";\\r\\n}\\r\\n.fa-star:before {\\r\\n content: \\\"\\\\f005\\\";\\r\\n}\\r\\n.fa-star-o:before {\\r\\n content: \\\"\\\\f006\\\";\\r\\n}\\r\\n.fa-user:before {\\r\\n content: \\\"\\\\f007\\\";\\r\\n}\\r\\n.fa-film:before {\\r\\n content: \\\"\\\\f008\\\";\\r\\n}\\r\\n.fa-th-large:before {\\r\\n content: \\\"\\\\f009\\\";\\r\\n}\\r\\n.fa-th:before {\\r\\n content: \\\"\\\\f00a\\\";\\r\\n}\\r\\n.fa-th-list:before {\\r\\n content: \\\"\\\\f00b\\\";\\r\\n}\\r\\n.fa-check:before {\\r\\n content: \\\"\\\\f00c\\\";\\r\\n}\\r\\n.fa-remove:before,\\r\\n.fa-close:before,\\r\\n.fa-times:before {\\r\\n content: \\\"\\\\f00d\\\";\\r\\n}\\r\\n.fa-search-plus:before {\\r\\n content: \\\"\\\\f00e\\\";\\r\\n}\\r\\n.fa-search-minus:before {\\r\\n content: \\\"\\\\f010\\\";\\r\\n}\\r\\n.fa-power-off:before {\\r\\n content: \\\"\\\\f011\\\";\\r\\n}\\r\\n.fa-signal:before {\\r\\n content: \\\"\\\\f012\\\";\\r\\n}\\r\\n.fa-gear:before,\\r\\n.fa-cog:before {\\r\\n content: \\\"\\\\f013\\\";\\r\\n}\\r\\n.fa-trash-o:before {\\r\\n content: \\\"\\\\f014\\\";\\r\\n}\\r\\n.fa-home:before {\\r\\n content: \\\"\\\\f015\\\";\\r\\n}\\r\\n.fa-file-o:before {\\r\\n content: \\\"\\\\f016\\\";\\r\\n}\\r\\n.fa-clock-o:before {\\r\\n content: \\\"\\\\f017\\\";\\r\\n}\\r\\n.fa-road:before {\\r\\n content: \\\"\\\\f018\\\";\\r\\n}\\r\\n.fa-download:before {\\r\\n content: \\\"\\\\f019\\\";\\r\\n}\\r\\n.fa-arrow-circle-o-down:before {\\r\\n content: \\\"\\\\f01a\\\";\\r\\n}\\r\\n.fa-arrow-circle-o-up:before {\\r\\n content: \\\"\\\\f01b\\\";\\r\\n}\\r\\n.fa-inbox:before {\\r\\n content: \\\"\\\\f01c\\\";\\r\\n}\\r\\n.fa-play-circle-o:before {\\r\\n content: \\\"\\\\f01d\\\";\\r\\n}\\r\\n.fa-rotate-right:before,\\r\\n.fa-repeat:before {\\r\\n content: \\\"\\\\f01e\\\";\\r\\n}\\r\\n.fa-refresh:before {\\r\\n content: \\\"\\\\f021\\\";\\r\\n}\\r\\n.fa-list-alt:before {\\r\\n content: \\\"\\\\f022\\\";\\r\\n}\\r\\n.fa-lock:before {\\r\\n content: \\\"\\\\f023\\\";\\r\\n}\\r\\n.fa-flag:before {\\r\\n content: \\\"\\\\f024\\\";\\r\\n}\\r\\n.fa-headphones:before {\\r\\n content: \\\"\\\\f025\\\";\\r\\n}\\r\\n.fa-volume-off:before {\\r\\n content: \\\"\\\\f026\\\";\\r\\n}\\r\\n.fa-volume-down:before {\\r\\n content: \\\"\\\\f027\\\";\\r\\n}\\r\\n.fa-volume-up:before {\\r\\n content: \\\"\\\\f028\\\";\\r\\n}\\r\\n.fa-qrcode:before {\\r\\n content: \\\"\\\\f029\\\";\\r\\n}\\r\\n.fa-barcode:before {\\r\\n content: \\\"\\\\f02a\\\";\\r\\n}\\r\\n.fa-tag:before {\\r\\n content: \\\"\\\\f02b\\\";\\r\\n}\\r\\n.fa-tags:before {\\r\\n content: \\\"\\\\f02c\\\";\\r\\n}\\r\\n.fa-book:before {\\r\\n content: \\\"\\\\f02d\\\";\\r\\n}\\r\\n.fa-bookmark:before {\\r\\n content: \\\"\\\\f02e\\\";\\r\\n}\\r\\n.fa-print:before {\\r\\n content: \\\"\\\\f02f\\\";\\r\\n}\\r\\n.fa-camera:before {\\r\\n content: \\\"\\\\f030\\\";\\r\\n}\\r\\n.fa-font:before {\\r\\n content: \\\"\\\\f031\\\";\\r\\n}\\r\\n.fa-bold:before {\\r\\n content: \\\"\\\\f032\\\";\\r\\n}\\r\\n.fa-italic:before {\\r\\n content: \\\"\\\\f033\\\";\\r\\n}\\r\\n.fa-text-height:before {\\r\\n content: \\\"\\\\f034\\\";\\r\\n}\\r\\n.fa-text-width:before {\\r\\n content: \\\"\\\\f035\\\";\\r\\n}\\r\\n.fa-align-left:before {\\r\\n content: \\\"\\\\f036\\\";\\r\\n}\\r\\n.fa-align-center:before {\\r\\n content: \\\"\\\\f037\\\";\\r\\n}\\r\\n.fa-align-right:before {\\r\\n content: \\\"\\\\f038\\\";\\r\\n}\\r\\n.fa-align-justify:before {\\r\\n content: \\\"\\\\f039\\\";\\r\\n}\\r\\n.fa-list:before {\\r\\n content: \\\"\\\\f03a\\\";\\r\\n}\\r\\n.fa-dedent:before,\\r\\n.fa-outdent:before {\\r\\n content: \\\"\\\\f03b\\\";\\r\\n}\\r\\n.fa-indent:before {\\r\\n content: \\\"\\\\f03c\\\";\\r\\n}\\r\\n.fa-video-camera:before {\\r\\n content: \\\"\\\\f03d\\\";\\r\\n}\\r\\n.fa-photo:before,\\r\\n.fa-image:before,\\r\\n.fa-picture-o:before {\\r\\n content: \\\"\\\\f03e\\\";\\r\\n}\\r\\n.fa-pencil:before {\\r\\n content: \\\"\\\\f040\\\";\\r\\n}\\r\\n.fa-map-marker:before {\\r\\n content: \\\"\\\\f041\\\";\\r\\n}\\r\\n.fa-adjust:before {\\r\\n content: \\\"\\\\f042\\\";\\r\\n}\\r\\n.fa-tint:before {\\r\\n content: \\\"\\\\f043\\\";\\r\\n}\\r\\n.fa-edit:before,\\r\\n.fa-pencil-square-o:before {\\r\\n content: \\\"\\\\f044\\\";\\r\\n}\\r\\n.fa-share-square-o:before {\\r\\n content: \\\"\\\\f045\\\";\\r\\n}\\r\\n.fa-check-square-o:before {\\r\\n content: \\\"\\\\f046\\\";\\r\\n}\\r\\n.fa-arrows:before {\\r\\n content: \\\"\\\\f047\\\";\\r\\n}\\r\\n.fa-step-backward:before {\\r\\n content: \\\"\\\\f048\\\";\\r\\n}\\r\\n.fa-fast-backward:before {\\r\\n content: \\\"\\\\f049\\\";\\r\\n}\\r\\n.fa-backward:before {\\r\\n content: \\\"\\\\f04a\\\";\\r\\n}\\r\\n.fa-play:before {\\r\\n content: \\\"\\\\f04b\\\";\\r\\n}\\r\\n.fa-pause:before {\\r\\n content: \\\"\\\\f04c\\\";\\r\\n}\\r\\n.fa-stop:before {\\r\\n content: \\\"\\\\f04d\\\";\\r\\n}\\r\\n.fa-forward:before {\\r\\n content: \\\"\\\\f04e\\\";\\r\\n}\\r\\n.fa-fast-forward:before {\\r\\n content: \\\"\\\\f050\\\";\\r\\n}\\r\\n.fa-step-forward:before {\\r\\n content: \\\"\\\\f051\\\";\\r\\n}\\r\\n.fa-eject:before {\\r\\n content: \\\"\\\\f052\\\";\\r\\n}\\r\\n.fa-chevron-left:before {\\r\\n content: \\\"\\\\f053\\\";\\r\\n}\\r\\n.fa-chevron-right:before {\\r\\n content: \\\"\\\\f054\\\";\\r\\n}\\r\\n.fa-plus-circle:before {\\r\\n content: \\\"\\\\f055\\\";\\r\\n}\\r\\n.fa-minus-circle:before {\\r\\n content: \\\"\\\\f056\\\";\\r\\n}\\r\\n.fa-times-circle:before {\\r\\n content: \\\"\\\\f057\\\";\\r\\n}\\r\\n.fa-check-circle:before {\\r\\n content: \\\"\\\\f058\\\";\\r\\n}\\r\\n.fa-question-circle:before {\\r\\n content: \\\"\\\\f059\\\";\\r\\n}\\r\\n.fa-info-circle:before {\\r\\n content: \\\"\\\\f05a\\\";\\r\\n}\\r\\n.fa-crosshairs:before {\\r\\n content: \\\"\\\\f05b\\\";\\r\\n}\\r\\n.fa-times-circle-o:before {\\r\\n content: \\\"\\\\f05c\\\";\\r\\n}\\r\\n.fa-check-circle-o:before {\\r\\n content: \\\"\\\\f05d\\\";\\r\\n}\\r\\n.fa-ban:before {\\r\\n content: \\\"\\\\f05e\\\";\\r\\n}\\r\\n.fa-arrow-left:before {\\r\\n content: \\\"\\\\f060\\\";\\r\\n}\\r\\n.fa-arrow-right:before {\\r\\n content: \\\"\\\\f061\\\";\\r\\n}\\r\\n.fa-arrow-up:before {\\r\\n content: \\\"\\\\f062\\\";\\r\\n}\\r\\n.fa-arrow-down:before {\\r\\n content: \\\"\\\\f063\\\";\\r\\n}\\r\\n.fa-mail-forward:before,\\r\\n.fa-share:before {\\r\\n content: \\\"\\\\f064\\\";\\r\\n}\\r\\n.fa-expand:before {\\r\\n content: \\\"\\\\f065\\\";\\r\\n}\\r\\n.fa-compress:before {\\r\\n content: \\\"\\\\f066\\\";\\r\\n}\\r\\n.fa-plus:before {\\r\\n content: \\\"\\\\f067\\\";\\r\\n}\\r\\n.fa-minus:before {\\r\\n content: \\\"\\\\f068\\\";\\r\\n}\\r\\n.fa-asterisk:before {\\r\\n content: \\\"\\\\f069\\\";\\r\\n}\\r\\n.fa-exclamation-circle:before {\\r\\n content: \\\"\\\\f06a\\\";\\r\\n}\\r\\n.fa-gift:before {\\r\\n content: \\\"\\\\f06b\\\";\\r\\n}\\r\\n.fa-leaf:before {\\r\\n content: \\\"\\\\f06c\\\";\\r\\n}\\r\\n.fa-fire:before {\\r\\n content: \\\"\\\\f06d\\\";\\r\\n}\\r\\n.fa-eye:before {\\r\\n content: \\\"\\\\f06e\\\";\\r\\n}\\r\\n.fa-eye-slash:before {\\r\\n content: \\\"\\\\f070\\\";\\r\\n}\\r\\n.fa-warning:before,\\r\\n.fa-exclamation-triangle:before {\\r\\n content: \\\"\\\\f071\\\";\\r\\n}\\r\\n.fa-plane:before {\\r\\n content: \\\"\\\\f072\\\";\\r\\n}\\r\\n.fa-calendar:before {\\r\\n content: \\\"\\\\f073\\\";\\r\\n}\\r\\n.fa-random:before {\\r\\n content: \\\"\\\\f074\\\";\\r\\n}\\r\\n.fa-comment:before {\\r\\n content: \\\"\\\\f075\\\";\\r\\n}\\r\\n.fa-magnet:before {\\r\\n content: \\\"\\\\f076\\\";\\r\\n}\\r\\n.fa-chevron-up:before {\\r\\n content: \\\"\\\\f077\\\";\\r\\n}\\r\\n.fa-chevron-down:before {\\r\\n content: \\\"\\\\f078\\\";\\r\\n}\\r\\n.fa-retweet:before {\\r\\n content: \\\"\\\\f079\\\";\\r\\n}\\r\\n.fa-shopping-cart:before {\\r\\n content: \\\"\\\\f07a\\\";\\r\\n}\\r\\n.fa-folder:before {\\r\\n content: \\\"\\\\f07b\\\";\\r\\n}\\r\\n.fa-folder-open:before {\\r\\n content: \\\"\\\\f07c\\\";\\r\\n}\\r\\n.fa-arrows-v:before {\\r\\n content: \\\"\\\\f07d\\\";\\r\\n}\\r\\n.fa-arrows-h:before {\\r\\n content: \\\"\\\\f07e\\\";\\r\\n}\\r\\n.fa-bar-chart-o:before,\\r\\n.fa-bar-chart:before {\\r\\n content: \\\"\\\\f080\\\";\\r\\n}\\r\\n.fa-twitter-square:before {\\r\\n content: \\\"\\\\f081\\\";\\r\\n}\\r\\n.fa-facebook-square:before {\\r\\n content: \\\"\\\\f082\\\";\\r\\n}\\r\\n.fa-camera-retro:before {\\r\\n content: \\\"\\\\f083\\\";\\r\\n}\\r\\n.fa-key:before {\\r\\n content: \\\"\\\\f084\\\";\\r\\n}\\r\\n.fa-gears:before,\\r\\n.fa-cogs:before {\\r\\n content: \\\"\\\\f085\\\";\\r\\n}\\r\\n.fa-comments:before {\\r\\n content: \\\"\\\\f086\\\";\\r\\n}\\r\\n.fa-thumbs-o-up:before {\\r\\n content: \\\"\\\\f087\\\";\\r\\n}\\r\\n.fa-thumbs-o-down:before {\\r\\n content: \\\"\\\\f088\\\";\\r\\n}\\r\\n.fa-star-half:before {\\r\\n content: \\\"\\\\f089\\\";\\r\\n}\\r\\n.fa-heart-o:before {\\r\\n content: \\\"\\\\f08a\\\";\\r\\n}\\r\\n.fa-sign-out:before {\\r\\n content: \\\"\\\\f08b\\\";\\r\\n}\\r\\n.fa-linkedin-square:before {\\r\\n content: \\\"\\\\f08c\\\";\\r\\n}\\r\\n.fa-thumb-tack:before {\\r\\n content: \\\"\\\\f08d\\\";\\r\\n}\\r\\n.fa-external-link:before {\\r\\n content: \\\"\\\\f08e\\\";\\r\\n}\\r\\n.fa-sign-in:before {\\r\\n content: \\\"\\\\f090\\\";\\r\\n}\\r\\n.fa-trophy:before {\\r\\n content: \\\"\\\\f091\\\";\\r\\n}\\r\\n.fa-github-square:before {\\r\\n content: \\\"\\\\f092\\\";\\r\\n}\\r\\n.fa-upload:before {\\r\\n content: \\\"\\\\f093\\\";\\r\\n}\\r\\n.fa-lemon-o:before {\\r\\n content: \\\"\\\\f094\\\";\\r\\n}\\r\\n.fa-phone:before {\\r\\n content: \\\"\\\\f095\\\";\\r\\n}\\r\\n.fa-square-o:before {\\r\\n content: \\\"\\\\f096\\\";\\r\\n}\\r\\n.fa-bookmark-o:before {\\r\\n content: \\\"\\\\f097\\\";\\r\\n}\\r\\n.fa-phone-square:before {\\r\\n content: \\\"\\\\f098\\\";\\r\\n}\\r\\n.fa-twitter:before {\\r\\n content: \\\"\\\\f099\\\";\\r\\n}\\r\\n.fa-facebook-f:before,\\r\\n.fa-facebook:before {\\r\\n content: \\\"\\\\f09a\\\";\\r\\n}\\r\\n.fa-github:before {\\r\\n content: \\\"\\\\f09b\\\";\\r\\n}\\r\\n.fa-unlock:before {\\r\\n content: \\\"\\\\f09c\\\";\\r\\n}\\r\\n.fa-credit-card:before {\\r\\n content: \\\"\\\\f09d\\\";\\r\\n}\\r\\n.fa-feed:before,\\r\\n.fa-rss:before {\\r\\n content: \\\"\\\\f09e\\\";\\r\\n}\\r\\n.fa-hdd-o:before {\\r\\n content: \\\"\\\\f0a0\\\";\\r\\n}\\r\\n.fa-bullhorn:before {\\r\\n content: \\\"\\\\f0a1\\\";\\r\\n}\\r\\n.fa-bell:before {\\r\\n content: \\\"\\\\f0f3\\\";\\r\\n}\\r\\n.fa-certificate:before {\\r\\n content: \\\"\\\\f0a3\\\";\\r\\n}\\r\\n.fa-hand-o-right:before {\\r\\n content: \\\"\\\\f0a4\\\";\\r\\n}\\r\\n.fa-hand-o-left:before {\\r\\n content: \\\"\\\\f0a5\\\";\\r\\n}\\r\\n.fa-hand-o-up:before {\\r\\n content: \\\"\\\\f0a6\\\";\\r\\n}\\r\\n.fa-hand-o-down:before {\\r\\n content: \\\"\\\\f0a7\\\";\\r\\n}\\r\\n.fa-arrow-circle-left:before {\\r\\n content: \\\"\\\\f0a8\\\";\\r\\n}\\r\\n.fa-arrow-circle-right:before {\\r\\n content: \\\"\\\\f0a9\\\";\\r\\n}\\r\\n.fa-arrow-circle-up:before {\\r\\n content: \\\"\\\\f0aa\\\";\\r\\n}\\r\\n.fa-arrow-circle-down:before {\\r\\n content: \\\"\\\\f0ab\\\";\\r\\n}\\r\\n.fa-globe:before {\\r\\n content: \\\"\\\\f0ac\\\";\\r\\n}\\r\\n.fa-wrench:before {\\r\\n content: \\\"\\\\f0ad\\\";\\r\\n}\\r\\n.fa-tasks:before {\\r\\n content: \\\"\\\\f0ae\\\";\\r\\n}\\r\\n.fa-filter:before {\\r\\n content: \\\"\\\\f0b0\\\";\\r\\n}\\r\\n.fa-briefcase:before {\\r\\n content: \\\"\\\\f0b1\\\";\\r\\n}\\r\\n.fa-arrows-alt:before {\\r\\n content: \\\"\\\\f0b2\\\";\\r\\n}\\r\\n.fa-group:before,\\r\\n.fa-users:before {\\r\\n content: \\\"\\\\f0c0\\\";\\r\\n}\\r\\n.fa-chain:before,\\r\\n.fa-link:before {\\r\\n content: \\\"\\\\f0c1\\\";\\r\\n}\\r\\n.fa-cloud:before {\\r\\n content: \\\"\\\\f0c2\\\";\\r\\n}\\r\\n.fa-flask:before {\\r\\n content: \\\"\\\\f0c3\\\";\\r\\n}\\r\\n.fa-cut:before,\\r\\n.fa-scissors:before {\\r\\n content: \\\"\\\\f0c4\\\";\\r\\n}\\r\\n.fa-copy:before,\\r\\n.fa-files-o:before {\\r\\n content: \\\"\\\\f0c5\\\";\\r\\n}\\r\\n.fa-paperclip:before {\\r\\n content: \\\"\\\\f0c6\\\";\\r\\n}\\r\\n.fa-save:before,\\r\\n.fa-floppy-o:before {\\r\\n content: \\\"\\\\f0c7\\\";\\r\\n}\\r\\n.fa-square:before {\\r\\n content: \\\"\\\\f0c8\\\";\\r\\n}\\r\\n.fa-navicon:before,\\r\\n.fa-reorder:before,\\r\\n.fa-bars:before {\\r\\n content: \\\"\\\\f0c9\\\";\\r\\n}\\r\\n.fa-list-ul:before {\\r\\n content: \\\"\\\\f0ca\\\";\\r\\n}\\r\\n.fa-list-ol:before {\\r\\n content: \\\"\\\\f0cb\\\";\\r\\n}\\r\\n.fa-strikethrough:before {\\r\\n content: \\\"\\\\f0cc\\\";\\r\\n}\\r\\n.fa-underline:before {\\r\\n content: \\\"\\\\f0cd\\\";\\r\\n}\\r\\n.fa-table:before {\\r\\n content: \\\"\\\\f0ce\\\";\\r\\n}\\r\\n.fa-magic:before {\\r\\n content: \\\"\\\\f0d0\\\";\\r\\n}\\r\\n.fa-truck:before {\\r\\n content: \\\"\\\\f0d1\\\";\\r\\n}\\r\\n.fa-pinterest:before {\\r\\n content: \\\"\\\\f0d2\\\";\\r\\n}\\r\\n.fa-pinterest-square:before {\\r\\n content: \\\"\\\\f0d3\\\";\\r\\n}\\r\\n.fa-google-plus-square:before {\\r\\n content: \\\"\\\\f0d4\\\";\\r\\n}\\r\\n.fa-google-plus:before {\\r\\n content: \\\"\\\\f0d5\\\";\\r\\n}\\r\\n.fa-money:before {\\r\\n content: \\\"\\\\f0d6\\\";\\r\\n}\\r\\n.fa-caret-down:before {\\r\\n content: \\\"\\\\f0d7\\\";\\r\\n}\\r\\n.fa-caret-up:before {\\r\\n content: \\\"\\\\f0d8\\\";\\r\\n}\\r\\n.fa-caret-left:before {\\r\\n content: \\\"\\\\f0d9\\\";\\r\\n}\\r\\n.fa-caret-right:before {\\r\\n content: \\\"\\\\f0da\\\";\\r\\n}\\r\\n.fa-columns:before {\\r\\n content: \\\"\\\\f0db\\\";\\r\\n}\\r\\n.fa-unsorted:before,\\r\\n.fa-sort:before {\\r\\n content: \\\"\\\\f0dc\\\";\\r\\n}\\r\\n.fa-sort-down:before,\\r\\n.fa-sort-desc:before {\\r\\n content: \\\"\\\\f0dd\\\";\\r\\n}\\r\\n.fa-sort-up:before,\\r\\n.fa-sort-asc:before {\\r\\n content: \\\"\\\\f0de\\\";\\r\\n}\\r\\n.fa-envelope:before {\\r\\n content: \\\"\\\\f0e0\\\";\\r\\n}\\r\\n.fa-linkedin:before {\\r\\n content: \\\"\\\\f0e1\\\";\\r\\n}\\r\\n.fa-rotate-left:before,\\r\\n.fa-undo:before {\\r\\n content: \\\"\\\\f0e2\\\";\\r\\n}\\r\\n.fa-legal:before,\\r\\n.fa-gavel:before {\\r\\n content: \\\"\\\\f0e3\\\";\\r\\n}\\r\\n.fa-dashboard:before,\\r\\n.fa-tachometer:before {\\r\\n content: \\\"\\\\f0e4\\\";\\r\\n}\\r\\n.fa-comment-o:before {\\r\\n content: \\\"\\\\f0e5\\\";\\r\\n}\\r\\n.fa-comments-o:before {\\r\\n content: \\\"\\\\f0e6\\\";\\r\\n}\\r\\n.fa-flash:before,\\r\\n.fa-bolt:before {\\r\\n content: \\\"\\\\f0e7\\\";\\r\\n}\\r\\n.fa-sitemap:before {\\r\\n content: \\\"\\\\f0e8\\\";\\r\\n}\\r\\n.fa-umbrella:before {\\r\\n content: \\\"\\\\f0e9\\\";\\r\\n}\\r\\n.fa-paste:before,\\r\\n.fa-clipboard:before {\\r\\n content: \\\"\\\\f0ea\\\";\\r\\n}\\r\\n.fa-lightbulb-o:before {\\r\\n content: \\\"\\\\f0eb\\\";\\r\\n}\\r\\n.fa-exchange:before {\\r\\n content: \\\"\\\\f0ec\\\";\\r\\n}\\r\\n.fa-cloud-download:before {\\r\\n content: \\\"\\\\f0ed\\\";\\r\\n}\\r\\n.fa-cloud-upload:before {\\r\\n content: \\\"\\\\f0ee\\\";\\r\\n}\\r\\n.fa-user-md:before {\\r\\n content: \\\"\\\\f0f0\\\";\\r\\n}\\r\\n.fa-stethoscope:before {\\r\\n content: \\\"\\\\f0f1\\\";\\r\\n}\\r\\n.fa-suitcase:before {\\r\\n content: \\\"\\\\f0f2\\\";\\r\\n}\\r\\n.fa-bell-o:before {\\r\\n content: \\\"\\\\f0a2\\\";\\r\\n}\\r\\n.fa-coffee:before {\\r\\n content: \\\"\\\\f0f4\\\";\\r\\n}\\r\\n.fa-cutlery:before {\\r\\n content: \\\"\\\\f0f5\\\";\\r\\n}\\r\\n.fa-file-text-o:before {\\r\\n content: \\\"\\\\f0f6\\\";\\r\\n}\\r\\n.fa-building-o:before {\\r\\n content: \\\"\\\\f0f7\\\";\\r\\n}\\r\\n.fa-hospital-o:before {\\r\\n content: \\\"\\\\f0f8\\\";\\r\\n}\\r\\n.fa-ambulance:before {\\r\\n content: \\\"\\\\f0f9\\\";\\r\\n}\\r\\n.fa-medkit:before {\\r\\n content: \\\"\\\\f0fa\\\";\\r\\n}\\r\\n.fa-fighter-jet:before {\\r\\n content: \\\"\\\\f0fb\\\";\\r\\n}\\r\\n.fa-beer:before {\\r\\n content: \\\"\\\\f0fc\\\";\\r\\n}\\r\\n.fa-h-square:before {\\r\\n content: \\\"\\\\f0fd\\\";\\r\\n}\\r\\n.fa-plus-square:before {\\r\\n content: \\\"\\\\f0fe\\\";\\r\\n}\\r\\n.fa-angle-double-left:before {\\r\\n content: \\\"\\\\f100\\\";\\r\\n}\\r\\n.fa-angle-double-right:before {\\r\\n content: \\\"\\\\f101\\\";\\r\\n}\\r\\n.fa-angle-double-up:before {\\r\\n content: \\\"\\\\f102\\\";\\r\\n}\\r\\n.fa-angle-double-down:before {\\r\\n content: \\\"\\\\f103\\\";\\r\\n}\\r\\n.fa-angle-left:before {\\r\\n content: \\\"\\\\f104\\\";\\r\\n}\\r\\n.fa-angle-right:before {\\r\\n content: \\\"\\\\f105\\\";\\r\\n}\\r\\n.fa-angle-up:before {\\r\\n content: \\\"\\\\f106\\\";\\r\\n}\\r\\n.fa-angle-down:before {\\r\\n content: \\\"\\\\f107\\\";\\r\\n}\\r\\n.fa-desktop:before {\\r\\n content: \\\"\\\\f108\\\";\\r\\n}\\r\\n.fa-laptop:before {\\r\\n content: \\\"\\\\f109\\\";\\r\\n}\\r\\n.fa-tablet:before {\\r\\n content: \\\"\\\\f10a\\\";\\r\\n}\\r\\n.fa-mobile-phone:before,\\r\\n.fa-mobile:before {\\r\\n content: \\\"\\\\f10b\\\";\\r\\n}\\r\\n.fa-circle-o:before {\\r\\n content: \\\"\\\\f10c\\\";\\r\\n}\\r\\n.fa-quote-left:before {\\r\\n content: \\\"\\\\f10d\\\";\\r\\n}\\r\\n.fa-quote-right:before {\\r\\n content: \\\"\\\\f10e\\\";\\r\\n}\\r\\n.fa-spinner:before {\\r\\n content: \\\"\\\\f110\\\";\\r\\n}\\r\\n.fa-circle:before {\\r\\n content: \\\"\\\\f111\\\";\\r\\n}\\r\\n.fa-mail-reply:before,\\r\\n.fa-reply:before {\\r\\n content: \\\"\\\\f112\\\";\\r\\n}\\r\\n.fa-github-alt:before {\\r\\n content: \\\"\\\\f113\\\";\\r\\n}\\r\\n.fa-folder-o:before {\\r\\n content: \\\"\\\\f114\\\";\\r\\n}\\r\\n.fa-folder-open-o:before {\\r\\n content: \\\"\\\\f115\\\";\\r\\n}\\r\\n.fa-smile-o:before {\\r\\n content: \\\"\\\\f118\\\";\\r\\n}\\r\\n.fa-frown-o:before {\\r\\n content: \\\"\\\\f119\\\";\\r\\n}\\r\\n.fa-meh-o:before {\\r\\n content: \\\"\\\\f11a\\\";\\r\\n}\\r\\n.fa-gamepad:before {\\r\\n content: \\\"\\\\f11b\\\";\\r\\n}\\r\\n.fa-keyboard-o:before {\\r\\n content: \\\"\\\\f11c\\\";\\r\\n}\\r\\n.fa-flag-o:before {\\r\\n content: \\\"\\\\f11d\\\";\\r\\n}\\r\\n.fa-flag-checkered:before {\\r\\n content: \\\"\\\\f11e\\\";\\r\\n}\\r\\n.fa-terminal:before {\\r\\n content: \\\"\\\\f120\\\";\\r\\n}\\r\\n.fa-code:before {\\r\\n content: \\\"\\\\f121\\\";\\r\\n}\\r\\n.fa-mail-reply-all:before,\\r\\n.fa-reply-all:before {\\r\\n content: \\\"\\\\f122\\\";\\r\\n}\\r\\n.fa-star-half-empty:before,\\r\\n.fa-star-half-full:before,\\r\\n.fa-star-half-o:before {\\r\\n content: \\\"\\\\f123\\\";\\r\\n}\\r\\n.fa-location-arrow:before {\\r\\n content: \\\"\\\\f124\\\";\\r\\n}\\r\\n.fa-crop:before {\\r\\n content: \\\"\\\\f125\\\";\\r\\n}\\r\\n.fa-code-fork:before {\\r\\n content: \\\"\\\\f126\\\";\\r\\n}\\r\\n.fa-unlink:before,\\r\\n.fa-chain-broken:before {\\r\\n content: \\\"\\\\f127\\\";\\r\\n}\\r\\n.fa-question:before {\\r\\n content: \\\"\\\\f128\\\";\\r\\n}\\r\\n.fa-info:before {\\r\\n content: \\\"\\\\f129\\\";\\r\\n}\\r\\n.fa-exclamation:before {\\r\\n content: \\\"\\\\f12a\\\";\\r\\n}\\r\\n.fa-superscript:before {\\r\\n content: \\\"\\\\f12b\\\";\\r\\n}\\r\\n.fa-subscript:before {\\r\\n content: \\\"\\\\f12c\\\";\\r\\n}\\r\\n.fa-eraser:before {\\r\\n content: \\\"\\\\f12d\\\";\\r\\n}\\r\\n.fa-puzzle-piece:before {\\r\\n content: \\\"\\\\f12e\\\";\\r\\n}\\r\\n.fa-microphone:before {\\r\\n content: \\\"\\\\f130\\\";\\r\\n}\\r\\n.fa-microphone-slash:before {\\r\\n content: \\\"\\\\f131\\\";\\r\\n}\\r\\n.fa-shield:before {\\r\\n content: \\\"\\\\f132\\\";\\r\\n}\\r\\n.fa-calendar-o:before {\\r\\n content: \\\"\\\\f133\\\";\\r\\n}\\r\\n.fa-fire-extinguisher:before {\\r\\n content: \\\"\\\\f134\\\";\\r\\n}\\r\\n.fa-rocket:before {\\r\\n content: \\\"\\\\f135\\\";\\r\\n}\\r\\n.fa-maxcdn:before {\\r\\n content: \\\"\\\\f136\\\";\\r\\n}\\r\\n.fa-chevron-circle-left:before {\\r\\n content: \\\"\\\\f137\\\";\\r\\n}\\r\\n.fa-chevron-circle-right:before {\\r\\n content: \\\"\\\\f138\\\";\\r\\n}\\r\\n.fa-chevron-circle-up:before {\\r\\n content: \\\"\\\\f139\\\";\\r\\n}\\r\\n.fa-chevron-circle-down:before {\\r\\n content: \\\"\\\\f13a\\\";\\r\\n}\\r\\n.fa-html5:before {\\r\\n content: \\\"\\\\f13b\\\";\\r\\n}\\r\\n.fa-css3:before {\\r\\n content: \\\"\\\\f13c\\\";\\r\\n}\\r\\n.fa-anchor:before {\\r\\n content: \\\"\\\\f13d\\\";\\r\\n}\\r\\n.fa-unlock-alt:before {\\r\\n content: \\\"\\\\f13e\\\";\\r\\n}\\r\\n.fa-bullseye:before {\\r\\n content: \\\"\\\\f140\\\";\\r\\n}\\r\\n.fa-ellipsis-h:before {\\r\\n content: \\\"\\\\f141\\\";\\r\\n}\\r\\n.fa-ellipsis-v:before {\\r\\n content: \\\"\\\\f142\\\";\\r\\n}\\r\\n.fa-rss-square:before {\\r\\n content: \\\"\\\\f143\\\";\\r\\n}\\r\\n.fa-play-circle:before {\\r\\n content: \\\"\\\\f144\\\";\\r\\n}\\r\\n.fa-ticket:before {\\r\\n content: \\\"\\\\f145\\\";\\r\\n}\\r\\n.fa-minus-square:before {\\r\\n content: \\\"\\\\f146\\\";\\r\\n}\\r\\n.fa-minus-square-o:before {\\r\\n content: \\\"\\\\f147\\\";\\r\\n}\\r\\n.fa-level-up:before {\\r\\n content: \\\"\\\\f148\\\";\\r\\n}\\r\\n.fa-level-down:before {\\r\\n content: \\\"\\\\f149\\\";\\r\\n}\\r\\n.fa-check-square:before {\\r\\n content: \\\"\\\\f14a\\\";\\r\\n}\\r\\n.fa-pencil-square:before {\\r\\n content: \\\"\\\\f14b\\\";\\r\\n}\\r\\n.fa-external-link-square:before {\\r\\n content: \\\"\\\\f14c\\\";\\r\\n}\\r\\n.fa-share-square:before {\\r\\n content: \\\"\\\\f14d\\\";\\r\\n}\\r\\n.fa-compass:before {\\r\\n content: \\\"\\\\f14e\\\";\\r\\n}\\r\\n.fa-toggle-down:before,\\r\\n.fa-caret-square-o-down:before {\\r\\n content: \\\"\\\\f150\\\";\\r\\n}\\r\\n.fa-toggle-up:before,\\r\\n.fa-caret-square-o-up:before {\\r\\n content: \\\"\\\\f151\\\";\\r\\n}\\r\\n.fa-toggle-right:before,\\r\\n.fa-caret-square-o-right:before {\\r\\n content: \\\"\\\\f152\\\";\\r\\n}\\r\\n.fa-euro:before,\\r\\n.fa-eur:before {\\r\\n content: \\\"\\\\f153\\\";\\r\\n}\\r\\n.fa-gbp:before {\\r\\n content: \\\"\\\\f154\\\";\\r\\n}\\r\\n.fa-dollar:before,\\r\\n.fa-usd:before {\\r\\n content: \\\"\\\\f155\\\";\\r\\n}\\r\\n.fa-rupee:before,\\r\\n.fa-inr:before {\\r\\n content: \\\"\\\\f156\\\";\\r\\n}\\r\\n.fa-cny:before,\\r\\n.fa-rmb:before,\\r\\n.fa-yen:before,\\r\\n.fa-jpy:before {\\r\\n content: \\\"\\\\f157\\\";\\r\\n}\\r\\n.fa-ruble:before,\\r\\n.fa-rouble:before,\\r\\n.fa-rub:before {\\r\\n content: \\\"\\\\f158\\\";\\r\\n}\\r\\n.fa-won:before,\\r\\n.fa-krw:before {\\r\\n content: \\\"\\\\f159\\\";\\r\\n}\\r\\n.fa-bitcoin:before,\\r\\n.fa-btc:before {\\r\\n content: \\\"\\\\f15a\\\";\\r\\n}\\r\\n.fa-file:before {\\r\\n content: \\\"\\\\f15b\\\";\\r\\n}\\r\\n.fa-file-text:before {\\r\\n content: \\\"\\\\f15c\\\";\\r\\n}\\r\\n.fa-sort-alpha-asc:before {\\r\\n content: \\\"\\\\f15d\\\";\\r\\n}\\r\\n.fa-sort-alpha-desc:before {\\r\\n content: \\\"\\\\f15e\\\";\\r\\n}\\r\\n.fa-sort-amount-asc:before {\\r\\n content: \\\"\\\\f160\\\";\\r\\n}\\r\\n.fa-sort-amount-desc:before {\\r\\n content: \\\"\\\\f161\\\";\\r\\n}\\r\\n.fa-sort-numeric-asc:before {\\r\\n content: \\\"\\\\f162\\\";\\r\\n}\\r\\n.fa-sort-numeric-desc:before {\\r\\n content: \\\"\\\\f163\\\";\\r\\n}\\r\\n.fa-thumbs-up:before {\\r\\n content: \\\"\\\\f164\\\";\\r\\n}\\r\\n.fa-thumbs-down:before {\\r\\n content: \\\"\\\\f165\\\";\\r\\n}\\r\\n.fa-youtube-square:before {\\r\\n content: \\\"\\\\f166\\\";\\r\\n}\\r\\n.fa-youtube:before {\\r\\n content: \\\"\\\\f167\\\";\\r\\n}\\r\\n.fa-xing:before {\\r\\n content: \\\"\\\\f168\\\";\\r\\n}\\r\\n.fa-xing-square:before {\\r\\n content: \\\"\\\\f169\\\";\\r\\n}\\r\\n.fa-youtube-play:before {\\r\\n content: \\\"\\\\f16a\\\";\\r\\n}\\r\\n.fa-dropbox:before {\\r\\n content: \\\"\\\\f16b\\\";\\r\\n}\\r\\n.fa-stack-overflow:before {\\r\\n content: \\\"\\\\f16c\\\";\\r\\n}\\r\\n.fa-instagram:before {\\r\\n content: \\\"\\\\f16d\\\";\\r\\n}\\r\\n.fa-flickr:before {\\r\\n content: \\\"\\\\f16e\\\";\\r\\n}\\r\\n.fa-adn:before {\\r\\n content: \\\"\\\\f170\\\";\\r\\n}\\r\\n.fa-bitbucket:before {\\r\\n content: \\\"\\\\f171\\\";\\r\\n}\\r\\n.fa-bitbucket-square:before {\\r\\n content: \\\"\\\\f172\\\";\\r\\n}\\r\\n.fa-tumblr:before {\\r\\n content: \\\"\\\\f173\\\";\\r\\n}\\r\\n.fa-tumblr-square:before {\\r\\n content: \\\"\\\\f174\\\";\\r\\n}\\r\\n.fa-long-arrow-down:before {\\r\\n content: \\\"\\\\f175\\\";\\r\\n}\\r\\n.fa-long-arrow-up:before {\\r\\n content: \\\"\\\\f176\\\";\\r\\n}\\r\\n.fa-long-arrow-left:before {\\r\\n content: \\\"\\\\f177\\\";\\r\\n}\\r\\n.fa-long-arrow-right:before {\\r\\n content: \\\"\\\\f178\\\";\\r\\n}\\r\\n.fa-apple:before {\\r\\n content: \\\"\\\\f179\\\";\\r\\n}\\r\\n.fa-windows:before {\\r\\n content: \\\"\\\\f17a\\\";\\r\\n}\\r\\n.fa-android:before {\\r\\n content: \\\"\\\\f17b\\\";\\r\\n}\\r\\n.fa-linux:before {\\r\\n content: \\\"\\\\f17c\\\";\\r\\n}\\r\\n.fa-dribbble:before {\\r\\n content: \\\"\\\\f17d\\\";\\r\\n}\\r\\n.fa-skype:before {\\r\\n content: \\\"\\\\f17e\\\";\\r\\n}\\r\\n.fa-foursquare:before {\\r\\n content: \\\"\\\\f180\\\";\\r\\n}\\r\\n.fa-trello:before {\\r\\n content: \\\"\\\\f181\\\";\\r\\n}\\r\\n.fa-female:before {\\r\\n content: \\\"\\\\f182\\\";\\r\\n}\\r\\n.fa-male:before {\\r\\n content: \\\"\\\\f183\\\";\\r\\n}\\r\\n.fa-gittip:before,\\r\\n.fa-gratipay:before {\\r\\n content: \\\"\\\\f184\\\";\\r\\n}\\r\\n.fa-sun-o:before {\\r\\n content: \\\"\\\\f185\\\";\\r\\n}\\r\\n.fa-moon-o:before {\\r\\n content: \\\"\\\\f186\\\";\\r\\n}\\r\\n.fa-archive:before {\\r\\n content: \\\"\\\\f187\\\";\\r\\n}\\r\\n.fa-bug:before {\\r\\n content: \\\"\\\\f188\\\";\\r\\n}\\r\\n.fa-vk:before {\\r\\n content: \\\"\\\\f189\\\";\\r\\n}\\r\\n.fa-weibo:before {\\r\\n content: \\\"\\\\f18a\\\";\\r\\n}\\r\\n.fa-renren:before {\\r\\n content: \\\"\\\\f18b\\\";\\r\\n}\\r\\n.fa-pagelines:before {\\r\\n content: \\\"\\\\f18c\\\";\\r\\n}\\r\\n.fa-stack-exchange:before {\\r\\n content: \\\"\\\\f18d\\\";\\r\\n}\\r\\n.fa-arrow-circle-o-right:before {\\r\\n content: \\\"\\\\f18e\\\";\\r\\n}\\r\\n.fa-arrow-circle-o-left:before {\\r\\n content: \\\"\\\\f190\\\";\\r\\n}\\r\\n.fa-toggle-left:before,\\r\\n.fa-caret-square-o-left:before {\\r\\n content: \\\"\\\\f191\\\";\\r\\n}\\r\\n.fa-dot-circle-o:before {\\r\\n content: \\\"\\\\f192\\\";\\r\\n}\\r\\n.fa-wheelchair:before {\\r\\n content: \\\"\\\\f193\\\";\\r\\n}\\r\\n.fa-vimeo-square:before {\\r\\n content: \\\"\\\\f194\\\";\\r\\n}\\r\\n.fa-turkish-lira:before,\\r\\n.fa-try:before {\\r\\n content: \\\"\\\\f195\\\";\\r\\n}\\r\\n.fa-plus-square-o:before {\\r\\n content: \\\"\\\\f196\\\";\\r\\n}\\r\\n.fa-space-shuttle:before {\\r\\n content: \\\"\\\\f197\\\";\\r\\n}\\r\\n.fa-slack:before {\\r\\n content: \\\"\\\\f198\\\";\\r\\n}\\r\\n.fa-envelope-square:before {\\r\\n content: \\\"\\\\f199\\\";\\r\\n}\\r\\n.fa-wordpress:before {\\r\\n content: \\\"\\\\f19a\\\";\\r\\n}\\r\\n.fa-openid:before {\\r\\n content: \\\"\\\\f19b\\\";\\r\\n}\\r\\n.fa-institution:before,\\r\\n.fa-bank:before,\\r\\n.fa-university:before {\\r\\n content: \\\"\\\\f19c\\\";\\r\\n}\\r\\n.fa-mortar-board:before,\\r\\n.fa-graduation-cap:before {\\r\\n content: \\\"\\\\f19d\\\";\\r\\n}\\r\\n.fa-yahoo:before {\\r\\n content: \\\"\\\\f19e\\\";\\r\\n}\\r\\n.fa-google:before {\\r\\n content: \\\"\\\\f1a0\\\";\\r\\n}\\r\\n.fa-reddit:before {\\r\\n content: \\\"\\\\f1a1\\\";\\r\\n}\\r\\n.fa-reddit-square:before {\\r\\n content: \\\"\\\\f1a2\\\";\\r\\n}\\r\\n.fa-stumbleupon-circle:before {\\r\\n content: \\\"\\\\f1a3\\\";\\r\\n}\\r\\n.fa-stumbleupon:before {\\r\\n content: \\\"\\\\f1a4\\\";\\r\\n}\\r\\n.fa-delicious:before {\\r\\n content: \\\"\\\\f1a5\\\";\\r\\n}\\r\\n.fa-digg:before {\\r\\n content: \\\"\\\\f1a6\\\";\\r\\n}\\r\\n.fa-pied-piper-pp:before {\\r\\n content: \\\"\\\\f1a7\\\";\\r\\n}\\r\\n.fa-pied-piper-alt:before {\\r\\n content: \\\"\\\\f1a8\\\";\\r\\n}\\r\\n.fa-drupal:before {\\r\\n content: \\\"\\\\f1a9\\\";\\r\\n}\\r\\n.fa-joomla:before {\\r\\n content: \\\"\\\\f1aa\\\";\\r\\n}\\r\\n.fa-language:before {\\r\\n content: \\\"\\\\f1ab\\\";\\r\\n}\\r\\n.fa-fax:before {\\r\\n content: \\\"\\\\f1ac\\\";\\r\\n}\\r\\n.fa-building:before {\\r\\n content: \\\"\\\\f1ad\\\";\\r\\n}\\r\\n.fa-child:before {\\r\\n content: \\\"\\\\f1ae\\\";\\r\\n}\\r\\n.fa-paw:before {\\r\\n content: \\\"\\\\f1b0\\\";\\r\\n}\\r\\n.fa-spoon:before {\\r\\n content: \\\"\\\\f1b1\\\";\\r\\n}\\r\\n.fa-cube:before {\\r\\n content: \\\"\\\\f1b2\\\";\\r\\n}\\r\\n.fa-cubes:before {\\r\\n content: \\\"\\\\f1b3\\\";\\r\\n}\\r\\n.fa-behance:before {\\r\\n content: \\\"\\\\f1b4\\\";\\r\\n}\\r\\n.fa-behance-square:before {\\r\\n content: \\\"\\\\f1b5\\\";\\r\\n}\\r\\n.fa-steam:before {\\r\\n content: \\\"\\\\f1b6\\\";\\r\\n}\\r\\n.fa-steam-square:before {\\r\\n content: \\\"\\\\f1b7\\\";\\r\\n}\\r\\n.fa-recycle:before {\\r\\n content: \\\"\\\\f1b8\\\";\\r\\n}\\r\\n.fa-automobile:before,\\r\\n.fa-car:before {\\r\\n content: \\\"\\\\f1b9\\\";\\r\\n}\\r\\n.fa-cab:before,\\r\\n.fa-taxi:before {\\r\\n content: \\\"\\\\f1ba\\\";\\r\\n}\\r\\n.fa-tree:before {\\r\\n content: \\\"\\\\f1bb\\\";\\r\\n}\\r\\n.fa-spotify:before {\\r\\n content: \\\"\\\\f1bc\\\";\\r\\n}\\r\\n.fa-deviantart:before {\\r\\n content: \\\"\\\\f1bd\\\";\\r\\n}\\r\\n.fa-soundcloud:before {\\r\\n content: \\\"\\\\f1be\\\";\\r\\n}\\r\\n.fa-database:before {\\r\\n content: \\\"\\\\f1c0\\\";\\r\\n}\\r\\n.fa-file-pdf-o:before {\\r\\n content: \\\"\\\\f1c1\\\";\\r\\n}\\r\\n.fa-file-word-o:before {\\r\\n content: \\\"\\\\f1c2\\\";\\r\\n}\\r\\n.fa-file-excel-o:before {\\r\\n content: \\\"\\\\f1c3\\\";\\r\\n}\\r\\n.fa-file-powerpoint-o:before {\\r\\n content: \\\"\\\\f1c4\\\";\\r\\n}\\r\\n.fa-file-photo-o:before,\\r\\n.fa-file-picture-o:before,\\r\\n.fa-file-image-o:before {\\r\\n content: \\\"\\\\f1c5\\\";\\r\\n}\\r\\n.fa-file-zip-o:before,\\r\\n.fa-file-archive-o:before {\\r\\n content: \\\"\\\\f1c6\\\";\\r\\n}\\r\\n.fa-file-sound-o:before,\\r\\n.fa-file-audio-o:before {\\r\\n content: \\\"\\\\f1c7\\\";\\r\\n}\\r\\n.fa-file-movie-o:before,\\r\\n.fa-file-video-o:before {\\r\\n content: \\\"\\\\f1c8\\\";\\r\\n}\\r\\n.fa-file-code-o:before {\\r\\n content: \\\"\\\\f1c9\\\";\\r\\n}\\r\\n.fa-vine:before {\\r\\n content: \\\"\\\\f1ca\\\";\\r\\n}\\r\\n.fa-codepen:before {\\r\\n content: \\\"\\\\f1cb\\\";\\r\\n}\\r\\n.fa-jsfiddle:before {\\r\\n content: \\\"\\\\f1cc\\\";\\r\\n}\\r\\n.fa-life-bouy:before,\\r\\n.fa-life-buoy:before,\\r\\n.fa-life-saver:before,\\r\\n.fa-support:before,\\r\\n.fa-life-ring:before {\\r\\n content: \\\"\\\\f1cd\\\";\\r\\n}\\r\\n.fa-circle-o-notch:before {\\r\\n content: \\\"\\\\f1ce\\\";\\r\\n}\\r\\n.fa-ra:before,\\r\\n.fa-resistance:before,\\r\\n.fa-rebel:before {\\r\\n content: \\\"\\\\f1d0\\\";\\r\\n}\\r\\n.fa-ge:before,\\r\\n.fa-empire:before {\\r\\n content: \\\"\\\\f1d1\\\";\\r\\n}\\r\\n.fa-git-square:before {\\r\\n content: \\\"\\\\f1d2\\\";\\r\\n}\\r\\n.fa-git:before {\\r\\n content: \\\"\\\\f1d3\\\";\\r\\n}\\r\\n.fa-y-combinator-square:before,\\r\\n.fa-yc-square:before,\\r\\n.fa-hacker-news:before {\\r\\n content: \\\"\\\\f1d4\\\";\\r\\n}\\r\\n.fa-tencent-weibo:before {\\r\\n content: \\\"\\\\f1d5\\\";\\r\\n}\\r\\n.fa-qq:before {\\r\\n content: \\\"\\\\f1d6\\\";\\r\\n}\\r\\n.fa-wechat:before,\\r\\n.fa-weixin:before {\\r\\n content: \\\"\\\\f1d7\\\";\\r\\n}\\r\\n.fa-send:before,\\r\\n.fa-paper-plane:before {\\r\\n content: \\\"\\\\f1d8\\\";\\r\\n}\\r\\n.fa-send-o:before,\\r\\n.fa-paper-plane-o:before {\\r\\n content: \\\"\\\\f1d9\\\";\\r\\n}\\r\\n.fa-history:before {\\r\\n content: \\\"\\\\f1da\\\";\\r\\n}\\r\\n.fa-circle-thin:before {\\r\\n content: \\\"\\\\f1db\\\";\\r\\n}\\r\\n.fa-header:before {\\r\\n content: \\\"\\\\f1dc\\\";\\r\\n}\\r\\n.fa-paragraph:before {\\r\\n content: \\\"\\\\f1dd\\\";\\r\\n}\\r\\n.fa-sliders:before {\\r\\n content: \\\"\\\\f1de\\\";\\r\\n}\\r\\n.fa-share-alt:before {\\r\\n content: \\\"\\\\f1e0\\\";\\r\\n}\\r\\n.fa-share-alt-square:before {\\r\\n content: \\\"\\\\f1e1\\\";\\r\\n}\\r\\n.fa-bomb:before {\\r\\n content: \\\"\\\\f1e2\\\";\\r\\n}\\r\\n.fa-soccer-ball-o:before,\\r\\n.fa-futbol-o:before {\\r\\n content: \\\"\\\\f1e3\\\";\\r\\n}\\r\\n.fa-tty:before {\\r\\n content: \\\"\\\\f1e4\\\";\\r\\n}\\r\\n.fa-binoculars:before {\\r\\n content: \\\"\\\\f1e5\\\";\\r\\n}\\r\\n.fa-plug:before {\\r\\n content: \\\"\\\\f1e6\\\";\\r\\n}\\r\\n.fa-slideshare:before {\\r\\n content: \\\"\\\\f1e7\\\";\\r\\n}\\r\\n.fa-twitch:before {\\r\\n content: \\\"\\\\f1e8\\\";\\r\\n}\\r\\n.fa-yelp:before {\\r\\n content: \\\"\\\\f1e9\\\";\\r\\n}\\r\\n.fa-newspaper-o:before {\\r\\n content: \\\"\\\\f1ea\\\";\\r\\n}\\r\\n.fa-wifi:before {\\r\\n content: \\\"\\\\f1eb\\\";\\r\\n}\\r\\n.fa-calculator:before {\\r\\n content: \\\"\\\\f1ec\\\";\\r\\n}\\r\\n.fa-paypal:before {\\r\\n content: \\\"\\\\f1ed\\\";\\r\\n}\\r\\n.fa-google-wallet:before {\\r\\n content: \\\"\\\\f1ee\\\";\\r\\n}\\r\\n.fa-cc-visa:before {\\r\\n content: \\\"\\\\f1f0\\\";\\r\\n}\\r\\n.fa-cc-mastercard:before {\\r\\n content: \\\"\\\\f1f1\\\";\\r\\n}\\r\\n.fa-cc-discover:before {\\r\\n content: \\\"\\\\f1f2\\\";\\r\\n}\\r\\n.fa-cc-amex:before {\\r\\n content: \\\"\\\\f1f3\\\";\\r\\n}\\r\\n.fa-cc-paypal:before {\\r\\n content: \\\"\\\\f1f4\\\";\\r\\n}\\r\\n.fa-cc-stripe:before {\\r\\n content: \\\"\\\\f1f5\\\";\\r\\n}\\r\\n.fa-bell-slash:before {\\r\\n content: \\\"\\\\f1f6\\\";\\r\\n}\\r\\n.fa-bell-slash-o:before {\\r\\n content: \\\"\\\\f1f7\\\";\\r\\n}\\r\\n.fa-trash:before {\\r\\n content: \\\"\\\\f1f8\\\";\\r\\n}\\r\\n.fa-copyright:before {\\r\\n content: \\\"\\\\f1f9\\\";\\r\\n}\\r\\n.fa-at:before {\\r\\n content: \\\"\\\\f1fa\\\";\\r\\n}\\r\\n.fa-eyedropper:before {\\r\\n content: \\\"\\\\f1fb\\\";\\r\\n}\\r\\n.fa-paint-brush:before {\\r\\n content: \\\"\\\\f1fc\\\";\\r\\n}\\r\\n.fa-birthday-cake:before {\\r\\n content: \\\"\\\\f1fd\\\";\\r\\n}\\r\\n.fa-area-chart:before {\\r\\n content: \\\"\\\\f1fe\\\";\\r\\n}\\r\\n.fa-pie-chart:before {\\r\\n content: \\\"\\\\f200\\\";\\r\\n}\\r\\n.fa-line-chart:before {\\r\\n content: \\\"\\\\f201\\\";\\r\\n}\\r\\n.fa-lastfm:before {\\r\\n content: \\\"\\\\f202\\\";\\r\\n}\\r\\n.fa-lastfm-square:before {\\r\\n content: \\\"\\\\f203\\\";\\r\\n}\\r\\n.fa-toggle-off:before {\\r\\n content: \\\"\\\\f204\\\";\\r\\n}\\r\\n.fa-toggle-on:before {\\r\\n content: \\\"\\\\f205\\\";\\r\\n}\\r\\n.fa-bicycle:before {\\r\\n content: \\\"\\\\f206\\\";\\r\\n}\\r\\n.fa-bus:before {\\r\\n content: \\\"\\\\f207\\\";\\r\\n}\\r\\n.fa-ioxhost:before {\\r\\n content: \\\"\\\\f208\\\";\\r\\n}\\r\\n.fa-angellist:before {\\r\\n content: \\\"\\\\f209\\\";\\r\\n}\\r\\n.fa-cc:before {\\r\\n content: \\\"\\\\f20a\\\";\\r\\n}\\r\\n.fa-shekel:before,\\r\\n.fa-sheqel:before,\\r\\n.fa-ils:before {\\r\\n content: \\\"\\\\f20b\\\";\\r\\n}\\r\\n.fa-meanpath:before {\\r\\n content: \\\"\\\\f20c\\\";\\r\\n}\\r\\n.fa-buysellads:before {\\r\\n content: \\\"\\\\f20d\\\";\\r\\n}\\r\\n.fa-connectdevelop:before {\\r\\n content: \\\"\\\\f20e\\\";\\r\\n}\\r\\n.fa-dashcube:before {\\r\\n content: \\\"\\\\f210\\\";\\r\\n}\\r\\n.fa-forumbee:before {\\r\\n content: \\\"\\\\f211\\\";\\r\\n}\\r\\n.fa-leanpub:before {\\r\\n content: \\\"\\\\f212\\\";\\r\\n}\\r\\n.fa-sellsy:before {\\r\\n content: \\\"\\\\f213\\\";\\r\\n}\\r\\n.fa-shirtsinbulk:before {\\r\\n content: \\\"\\\\f214\\\";\\r\\n}\\r\\n.fa-simplybuilt:before {\\r\\n content: \\\"\\\\f215\\\";\\r\\n}\\r\\n.fa-skyatlas:before {\\r\\n content: \\\"\\\\f216\\\";\\r\\n}\\r\\n.fa-cart-plus:before {\\r\\n content: \\\"\\\\f217\\\";\\r\\n}\\r\\n.fa-cart-arrow-down:before {\\r\\n content: \\\"\\\\f218\\\";\\r\\n}\\r\\n.fa-diamond:before {\\r\\n content: \\\"\\\\f219\\\";\\r\\n}\\r\\n.fa-ship:before {\\r\\n content: \\\"\\\\f21a\\\";\\r\\n}\\r\\n.fa-user-secret:before {\\r\\n content: \\\"\\\\f21b\\\";\\r\\n}\\r\\n.fa-motorcycle:before {\\r\\n content: \\\"\\\\f21c\\\";\\r\\n}\\r\\n.fa-street-view:before {\\r\\n content: \\\"\\\\f21d\\\";\\r\\n}\\r\\n.fa-heartbeat:before {\\r\\n content: \\\"\\\\f21e\\\";\\r\\n}\\r\\n.fa-venus:before {\\r\\n content: \\\"\\\\f221\\\";\\r\\n}\\r\\n.fa-mars:before {\\r\\n content: \\\"\\\\f222\\\";\\r\\n}\\r\\n.fa-mercury:before {\\r\\n content: \\\"\\\\f223\\\";\\r\\n}\\r\\n.fa-intersex:before,\\r\\n.fa-transgender:before {\\r\\n content: \\\"\\\\f224\\\";\\r\\n}\\r\\n.fa-transgender-alt:before {\\r\\n content: \\\"\\\\f225\\\";\\r\\n}\\r\\n.fa-venus-double:before {\\r\\n content: \\\"\\\\f226\\\";\\r\\n}\\r\\n.fa-mars-double:before {\\r\\n content: \\\"\\\\f227\\\";\\r\\n}\\r\\n.fa-venus-mars:before {\\r\\n content: \\\"\\\\f228\\\";\\r\\n}\\r\\n.fa-mars-stroke:before {\\r\\n content: \\\"\\\\f229\\\";\\r\\n}\\r\\n.fa-mars-stroke-v:before {\\r\\n content: \\\"\\\\f22a\\\";\\r\\n}\\r\\n.fa-mars-stroke-h:before {\\r\\n content: \\\"\\\\f22b\\\";\\r\\n}\\r\\n.fa-neuter:before {\\r\\n content: \\\"\\\\f22c\\\";\\r\\n}\\r\\n.fa-genderless:before {\\r\\n content: \\\"\\\\f22d\\\";\\r\\n}\\r\\n.fa-facebook-official:before {\\r\\n content: \\\"\\\\f230\\\";\\r\\n}\\r\\n.fa-pinterest-p:before {\\r\\n content: \\\"\\\\f231\\\";\\r\\n}\\r\\n.fa-whatsapp:before {\\r\\n content: \\\"\\\\f232\\\";\\r\\n}\\r\\n.fa-server:before {\\r\\n content: \\\"\\\\f233\\\";\\r\\n}\\r\\n.fa-user-plus:before {\\r\\n content: \\\"\\\\f234\\\";\\r\\n}\\r\\n.fa-user-times:before {\\r\\n content: \\\"\\\\f235\\\";\\r\\n}\\r\\n.fa-hotel:before,\\r\\n.fa-bed:before {\\r\\n content: \\\"\\\\f236\\\";\\r\\n}\\r\\n.fa-viacoin:before {\\r\\n content: \\\"\\\\f237\\\";\\r\\n}\\r\\n.fa-train:before {\\r\\n content: \\\"\\\\f238\\\";\\r\\n}\\r\\n.fa-subway:before {\\r\\n content: \\\"\\\\f239\\\";\\r\\n}\\r\\n.fa-medium:before {\\r\\n content: \\\"\\\\f23a\\\";\\r\\n}\\r\\n.fa-yc:before,\\r\\n.fa-y-combinator:before {\\r\\n content: \\\"\\\\f23b\\\";\\r\\n}\\r\\n.fa-optin-monster:before {\\r\\n content: \\\"\\\\f23c\\\";\\r\\n}\\r\\n.fa-opencart:before {\\r\\n content: \\\"\\\\f23d\\\";\\r\\n}\\r\\n.fa-expeditedssl:before {\\r\\n content: \\\"\\\\f23e\\\";\\r\\n}\\r\\n.fa-battery-4:before,\\r\\n.fa-battery:before,\\r\\n.fa-battery-full:before {\\r\\n content: \\\"\\\\f240\\\";\\r\\n}\\r\\n.fa-battery-3:before,\\r\\n.fa-battery-three-quarters:before {\\r\\n content: \\\"\\\\f241\\\";\\r\\n}\\r\\n.fa-battery-2:before,\\r\\n.fa-battery-half:before {\\r\\n content: \\\"\\\\f242\\\";\\r\\n}\\r\\n.fa-battery-1:before,\\r\\n.fa-battery-quarter:before {\\r\\n content: \\\"\\\\f243\\\";\\r\\n}\\r\\n.fa-battery-0:before,\\r\\n.fa-battery-empty:before {\\r\\n content: \\\"\\\\f244\\\";\\r\\n}\\r\\n.fa-mouse-pointer:before {\\r\\n content: \\\"\\\\f245\\\";\\r\\n}\\r\\n.fa-i-cursor:before {\\r\\n content: \\\"\\\\f246\\\";\\r\\n}\\r\\n.fa-object-group:before {\\r\\n content: \\\"\\\\f247\\\";\\r\\n}\\r\\n.fa-object-ungroup:before {\\r\\n content: \\\"\\\\f248\\\";\\r\\n}\\r\\n.fa-sticky-note:before {\\r\\n content: \\\"\\\\f249\\\";\\r\\n}\\r\\n.fa-sticky-note-o:before {\\r\\n content: \\\"\\\\f24a\\\";\\r\\n}\\r\\n.fa-cc-jcb:before {\\r\\n content: \\\"\\\\f24b\\\";\\r\\n}\\r\\n.fa-cc-diners-club:before {\\r\\n content: \\\"\\\\f24c\\\";\\r\\n}\\r\\n.fa-clone:before {\\r\\n content: \\\"\\\\f24d\\\";\\r\\n}\\r\\n.fa-balance-scale:before {\\r\\n content: \\\"\\\\f24e\\\";\\r\\n}\\r\\n.fa-hourglass-o:before {\\r\\n content: \\\"\\\\f250\\\";\\r\\n}\\r\\n.fa-hourglass-1:before,\\r\\n.fa-hourglass-start:before {\\r\\n content: \\\"\\\\f251\\\";\\r\\n}\\r\\n.fa-hourglass-2:before,\\r\\n.fa-hourglass-half:before {\\r\\n content: \\\"\\\\f252\\\";\\r\\n}\\r\\n.fa-hourglass-3:before,\\r\\n.fa-hourglass-end:before {\\r\\n content: \\\"\\\\f253\\\";\\r\\n}\\r\\n.fa-hourglass:before {\\r\\n content: \\\"\\\\f254\\\";\\r\\n}\\r\\n.fa-hand-grab-o:before,\\r\\n.fa-hand-rock-o:before {\\r\\n content: \\\"\\\\f255\\\";\\r\\n}\\r\\n.fa-hand-stop-o:before,\\r\\n.fa-hand-paper-o:before {\\r\\n content: \\\"\\\\f256\\\";\\r\\n}\\r\\n.fa-hand-scissors-o:before {\\r\\n content: \\\"\\\\f257\\\";\\r\\n}\\r\\n.fa-hand-lizard-o:before {\\r\\n content: \\\"\\\\f258\\\";\\r\\n}\\r\\n.fa-hand-spock-o:before {\\r\\n content: \\\"\\\\f259\\\";\\r\\n}\\r\\n.fa-hand-pointer-o:before {\\r\\n content: \\\"\\\\f25a\\\";\\r\\n}\\r\\n.fa-hand-peace-o:before {\\r\\n content: \\\"\\\\f25b\\\";\\r\\n}\\r\\n.fa-trademark:before {\\r\\n content: \\\"\\\\f25c\\\";\\r\\n}\\r\\n.fa-registered:before {\\r\\n content: \\\"\\\\f25d\\\";\\r\\n}\\r\\n.fa-creative-commons:before {\\r\\n content: \\\"\\\\f25e\\\";\\r\\n}\\r\\n.fa-gg:before {\\r\\n content: \\\"\\\\f260\\\";\\r\\n}\\r\\n.fa-gg-circle:before {\\r\\n content: \\\"\\\\f261\\\";\\r\\n}\\r\\n.fa-tripadvisor:before {\\r\\n content: \\\"\\\\f262\\\";\\r\\n}\\r\\n.fa-odnoklassniki:before {\\r\\n content: \\\"\\\\f263\\\";\\r\\n}\\r\\n.fa-odnoklassniki-square:before {\\r\\n content: \\\"\\\\f264\\\";\\r\\n}\\r\\n.fa-get-pocket:before {\\r\\n content: \\\"\\\\f265\\\";\\r\\n}\\r\\n.fa-wikipedia-w:before {\\r\\n content: \\\"\\\\f266\\\";\\r\\n}\\r\\n.fa-safari:before {\\r\\n content: \\\"\\\\f267\\\";\\r\\n}\\r\\n.fa-chrome:before {\\r\\n content: \\\"\\\\f268\\\";\\r\\n}\\r\\n.fa-firefox:before {\\r\\n content: \\\"\\\\f269\\\";\\r\\n}\\r\\n.fa-opera:before {\\r\\n content: \\\"\\\\f26a\\\";\\r\\n}\\r\\n.fa-internet-explorer:before {\\r\\n content: \\\"\\\\f26b\\\";\\r\\n}\\r\\n.fa-tv:before,\\r\\n.fa-television:before {\\r\\n content: \\\"\\\\f26c\\\";\\r\\n}\\r\\n.fa-contao:before {\\r\\n content: \\\"\\\\f26d\\\";\\r\\n}\\r\\n.fa-500px:before {\\r\\n content: \\\"\\\\f26e\\\";\\r\\n}\\r\\n.fa-amazon:before {\\r\\n content: \\\"\\\\f270\\\";\\r\\n}\\r\\n.fa-calendar-plus-o:before {\\r\\n content: \\\"\\\\f271\\\";\\r\\n}\\r\\n.fa-calendar-minus-o:before {\\r\\n content: \\\"\\\\f272\\\";\\r\\n}\\r\\n.fa-calendar-times-o:before {\\r\\n content: \\\"\\\\f273\\\";\\r\\n}\\r\\n.fa-calendar-check-o:before {\\r\\n content: \\\"\\\\f274\\\";\\r\\n}\\r\\n.fa-industry:before {\\r\\n content: \\\"\\\\f275\\\";\\r\\n}\\r\\n.fa-map-pin:before {\\r\\n content: \\\"\\\\f276\\\";\\r\\n}\\r\\n.fa-map-signs:before {\\r\\n content: \\\"\\\\f277\\\";\\r\\n}\\r\\n.fa-map-o:before {\\r\\n content: \\\"\\\\f278\\\";\\r\\n}\\r\\n.fa-map:before {\\r\\n content: \\\"\\\\f279\\\";\\r\\n}\\r\\n.fa-commenting:before {\\r\\n content: \\\"\\\\f27a\\\";\\r\\n}\\r\\n.fa-commenting-o:before {\\r\\n content: \\\"\\\\f27b\\\";\\r\\n}\\r\\n.fa-houzz:before {\\r\\n content: \\\"\\\\f27c\\\";\\r\\n}\\r\\n.fa-vimeo:before {\\r\\n content: \\\"\\\\f27d\\\";\\r\\n}\\r\\n.fa-black-tie:before {\\r\\n content: \\\"\\\\f27e\\\";\\r\\n}\\r\\n.fa-fonticons:before {\\r\\n content: \\\"\\\\f280\\\";\\r\\n}\\r\\n.fa-reddit-alien:before {\\r\\n content: \\\"\\\\f281\\\";\\r\\n}\\r\\n.fa-edge:before {\\r\\n content: \\\"\\\\f282\\\";\\r\\n}\\r\\n.fa-credit-card-alt:before {\\r\\n content: \\\"\\\\f283\\\";\\r\\n}\\r\\n.fa-codiepie:before {\\r\\n content: \\\"\\\\f284\\\";\\r\\n}\\r\\n.fa-modx:before {\\r\\n content: \\\"\\\\f285\\\";\\r\\n}\\r\\n.fa-fort-awesome:before {\\r\\n content: \\\"\\\\f286\\\";\\r\\n}\\r\\n.fa-usb:before {\\r\\n content: \\\"\\\\f287\\\";\\r\\n}\\r\\n.fa-product-hunt:before {\\r\\n content: \\\"\\\\f288\\\";\\r\\n}\\r\\n.fa-mixcloud:before {\\r\\n content: \\\"\\\\f289\\\";\\r\\n}\\r\\n.fa-scribd:before {\\r\\n content: \\\"\\\\f28a\\\";\\r\\n}\\r\\n.fa-pause-circle:before {\\r\\n content: \\\"\\\\f28b\\\";\\r\\n}\\r\\n.fa-pause-circle-o:before {\\r\\n content: \\\"\\\\f28c\\\";\\r\\n}\\r\\n.fa-stop-circle:before {\\r\\n content: \\\"\\\\f28d\\\";\\r\\n}\\r\\n.fa-stop-circle-o:before {\\r\\n content: \\\"\\\\f28e\\\";\\r\\n}\\r\\n.fa-shopping-bag:before {\\r\\n content: \\\"\\\\f290\\\";\\r\\n}\\r\\n.fa-shopping-basket:before {\\r\\n content: \\\"\\\\f291\\\";\\r\\n}\\r\\n.fa-hashtag:before {\\r\\n content: \\\"\\\\f292\\\";\\r\\n}\\r\\n.fa-bluetooth:before {\\r\\n content: \\\"\\\\f293\\\";\\r\\n}\\r\\n.fa-bluetooth-b:before {\\r\\n content: \\\"\\\\f294\\\";\\r\\n}\\r\\n.fa-percent:before {\\r\\n content: \\\"\\\\f295\\\";\\r\\n}\\r\\n.fa-gitlab:before {\\r\\n content: \\\"\\\\f296\\\";\\r\\n}\\r\\n.fa-wpbeginner:before {\\r\\n content: \\\"\\\\f297\\\";\\r\\n}\\r\\n.fa-wpforms:before {\\r\\n content: \\\"\\\\f298\\\";\\r\\n}\\r\\n.fa-envira:before {\\r\\n content: \\\"\\\\f299\\\";\\r\\n}\\r\\n.fa-universal-access:before {\\r\\n content: \\\"\\\\f29a\\\";\\r\\n}\\r\\n.fa-wheelchair-alt:before {\\r\\n content: \\\"\\\\f29b\\\";\\r\\n}\\r\\n.fa-question-circle-o:before {\\r\\n content: \\\"\\\\f29c\\\";\\r\\n}\\r\\n.fa-blind:before {\\r\\n content: \\\"\\\\f29d\\\";\\r\\n}\\r\\n.fa-audio-description:before {\\r\\n content: \\\"\\\\f29e\\\";\\r\\n}\\r\\n.fa-volume-control-phone:before {\\r\\n content: \\\"\\\\f2a0\\\";\\r\\n}\\r\\n.fa-braille:before {\\r\\n content: \\\"\\\\f2a1\\\";\\r\\n}\\r\\n.fa-assistive-listening-systems:before {\\r\\n content: \\\"\\\\f2a2\\\";\\r\\n}\\r\\n.fa-asl-interpreting:before,\\r\\n.fa-american-sign-language-interpreting:before {\\r\\n content: \\\"\\\\f2a3\\\";\\r\\n}\\r\\n.fa-deafness:before,\\r\\n.fa-hard-of-hearing:before,\\r\\n.fa-deaf:before {\\r\\n content: \\\"\\\\f2a4\\\";\\r\\n}\\r\\n.fa-glide:before {\\r\\n content: \\\"\\\\f2a5\\\";\\r\\n}\\r\\n.fa-glide-g:before {\\r\\n content: \\\"\\\\f2a6\\\";\\r\\n}\\r\\n.fa-signing:before,\\r\\n.fa-sign-language:before {\\r\\n content: \\\"\\\\f2a7\\\";\\r\\n}\\r\\n.fa-low-vision:before {\\r\\n content: \\\"\\\\f2a8\\\";\\r\\n}\\r\\n.fa-viadeo:before {\\r\\n content: \\\"\\\\f2a9\\\";\\r\\n}\\r\\n.fa-viadeo-square:before {\\r\\n content: \\\"\\\\f2aa\\\";\\r\\n}\\r\\n.fa-snapchat:before {\\r\\n content: \\\"\\\\f2ab\\\";\\r\\n}\\r\\n.fa-snapchat-ghost:before {\\r\\n content: \\\"\\\\f2ac\\\";\\r\\n}\\r\\n.fa-snapchat-square:before {\\r\\n content: \\\"\\\\f2ad\\\";\\r\\n}\\r\\n.fa-pied-piper:before {\\r\\n content: \\\"\\\\f2ae\\\";\\r\\n}\\r\\n.fa-first-order:before {\\r\\n content: \\\"\\\\f2b0\\\";\\r\\n}\\r\\n.fa-yoast:before {\\r\\n content: \\\"\\\\f2b1\\\";\\r\\n}\\r\\n.fa-themeisle:before {\\r\\n content: \\\"\\\\f2b2\\\";\\r\\n}\\r\\n.fa-google-plus-circle:before,\\r\\n.fa-google-plus-official:before {\\r\\n content: \\\"\\\\f2b3\\\";\\r\\n}\\r\\n.fa-fa:before,\\r\\n.fa-font-awesome:before {\\r\\n content: \\\"\\\\f2b4\\\";\\r\\n}\\r\\n.fa-handshake-o:before {\\r\\n content: \\\"\\\\f2b5\\\";\\r\\n}\\r\\n.fa-envelope-open:before {\\r\\n content: \\\"\\\\f2b6\\\";\\r\\n}\\r\\n.fa-envelope-open-o:before {\\r\\n content: \\\"\\\\f2b7\\\";\\r\\n}\\r\\n.fa-linode:before {\\r\\n content: \\\"\\\\f2b8\\\";\\r\\n}\\r\\n.fa-address-book:before {\\r\\n content: \\\"\\\\f2b9\\\";\\r\\n}\\r\\n.fa-address-book-o:before {\\r\\n content: \\\"\\\\f2ba\\\";\\r\\n}\\r\\n.fa-vcard:before,\\r\\n.fa-address-card:before {\\r\\n content: \\\"\\\\f2bb\\\";\\r\\n}\\r\\n.fa-vcard-o:before,\\r\\n.fa-address-card-o:before {\\r\\n content: \\\"\\\\f2bc\\\";\\r\\n}\\r\\n.fa-user-circle:before {\\r\\n content: \\\"\\\\f2bd\\\";\\r\\n}\\r\\n.fa-user-circle-o:before {\\r\\n content: \\\"\\\\f2be\\\";\\r\\n}\\r\\n.fa-user-o:before {\\r\\n content: \\\"\\\\f2c0\\\";\\r\\n}\\r\\n.fa-id-badge:before {\\r\\n content: \\\"\\\\f2c1\\\";\\r\\n}\\r\\n.fa-drivers-license:before,\\r\\n.fa-id-card:before {\\r\\n content: \\\"\\\\f2c2\\\";\\r\\n}\\r\\n.fa-drivers-license-o:before,\\r\\n.fa-id-card-o:before {\\r\\n content: \\\"\\\\f2c3\\\";\\r\\n}\\r\\n.fa-quora:before {\\r\\n content: \\\"\\\\f2c4\\\";\\r\\n}\\r\\n.fa-free-code-camp:before {\\r\\n content: \\\"\\\\f2c5\\\";\\r\\n}\\r\\n.fa-telegram:before {\\r\\n content: \\\"\\\\f2c6\\\";\\r\\n}\\r\\n.fa-thermometer-4:before,\\r\\n.fa-thermometer:before,\\r\\n.fa-thermometer-full:before {\\r\\n content: \\\"\\\\f2c7\\\";\\r\\n}\\r\\n.fa-thermometer-3:before,\\r\\n.fa-thermometer-three-quarters:before {\\r\\n content: \\\"\\\\f2c8\\\";\\r\\n}\\r\\n.fa-thermometer-2:before,\\r\\n.fa-thermometer-half:before {\\r\\n content: \\\"\\\\f2c9\\\";\\r\\n}\\r\\n.fa-thermometer-1:before,\\r\\n.fa-thermometer-quarter:before {\\r\\n content: \\\"\\\\f2ca\\\";\\r\\n}\\r\\n.fa-thermometer-0:before,\\r\\n.fa-thermometer-empty:before {\\r\\n content: \\\"\\\\f2cb\\\";\\r\\n}\\r\\n.fa-shower:before {\\r\\n content: \\\"\\\\f2cc\\\";\\r\\n}\\r\\n.fa-bathtub:before,\\r\\n.fa-s15:before,\\r\\n.fa-bath:before {\\r\\n content: \\\"\\\\f2cd\\\";\\r\\n}\\r\\n.fa-podcast:before {\\r\\n content: \\\"\\\\f2ce\\\";\\r\\n}\\r\\n.fa-window-maximize:before {\\r\\n content: \\\"\\\\f2d0\\\";\\r\\n}\\r\\n.fa-window-minimize:before {\\r\\n content: \\\"\\\\f2d1\\\";\\r\\n}\\r\\n.fa-window-restore:before {\\r\\n content: \\\"\\\\f2d2\\\";\\r\\n}\\r\\n.fa-times-rectangle:before,\\r\\n.fa-window-close:before {\\r\\n content: \\\"\\\\f2d3\\\";\\r\\n}\\r\\n.fa-times-rectangle-o:before,\\r\\n.fa-window-close-o:before {\\r\\n content: \\\"\\\\f2d4\\\";\\r\\n}\\r\\n.fa-bandcamp:before {\\r\\n content: \\\"\\\\f2d5\\\";\\r\\n}\\r\\n.fa-grav:before {\\r\\n content: \\\"\\\\f2d6\\\";\\r\\n}\\r\\n.fa-etsy:before {\\r\\n content: \\\"\\\\f2d7\\\";\\r\\n}\\r\\n.fa-imdb:before {\\r\\n content: \\\"\\\\f2d8\\\";\\r\\n}\\r\\n.fa-ravelry:before {\\r\\n content: \\\"\\\\f2d9\\\";\\r\\n}\\r\\n.fa-eercast:before {\\r\\n content: \\\"\\\\f2da\\\";\\r\\n}\\r\\n.fa-microchip:before {\\r\\n content: \\\"\\\\f2db\\\";\\r\\n}\\r\\n.fa-snowflake-o:before {\\r\\n content: \\\"\\\\f2dc\\\";\\r\\n}\\r\\n.fa-superpowers:before {\\r\\n content: \\\"\\\\f2dd\\\";\\r\\n}\\r\\n.fa-wpexplorer:before {\\r\\n content: \\\"\\\\f2de\\\";\\r\\n}\\r\\n.fa-meetup:before {\\r\\n content: \\\"\\\\f2e0\\\";\\r\\n}\\r\\n.sr-only {\\r\\n position: absolute;\\r\\n width: 1px;\\r\\n height: 1px;\\r\\n padding: 0;\\r\\n margin: -1px;\\r\\n overflow: hidden;\\r\\n clip: rect(0, 0, 0, 0);\\r\\n border: 0;\\r\\n}\\r\\n.sr-only-focusable:active,\\r\\n.sr-only-focusable:focus {\\r\\n position: static;\\r\\n width: auto;\\r\\n height: auto;\\r\\n margin: 0;\\r\\n overflow: visible;\\r\\n clip: auto;\\r\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://WasmPlayer/./src/font-awesome-4.7.0/css/font-awesome.css?./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/icon/iconfont.css":
|
||
/*!***************************************************************************************!*\
|
||
!*** ./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/icon/iconfont.css ***!
|
||
\***************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js */ \"./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(/*! ../../node_modules/_css-loader@3.6.0@css-loader/dist/runtime/getUrl.js */ \"./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(/*! ./iconfont.eot?t=1595495774403 */ \"./src/icon/iconfont.eot?t=1595495774403\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = __webpack_require__(/*! ./iconfont.woff?t=1595495774403 */ \"./src/icon/iconfont.woff?t=1595495774403\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = __webpack_require__(/*! ./iconfont.ttf?t=1595495774403 */ \"./src/icon/iconfont.ttf?t=1595495774403\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = __webpack_require__(/*! ./iconfont.svg?t=1595495774403 */ \"./src/icon/iconfont.svg?t=1595495774403\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \"#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { hash: \"#iconfont\" });\n// Module\nexports.push([module.i, \"@font-face {font-family: \\\"iconfont\\\";\\r\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \"); /* IE9 */\\r\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format('embedded-opentype'), \\r\\n url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAWwAAsAAAAAC7QAAAViAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDdAqJTIdvATYCJAMgCxIABCAFhG0Hexv8CREVpMGRfXFgnrR3yGVcg8V7C46keQ4e/t+p3qf3BHkKSAphCVmp03abk9oFYA3IHpDtMaEzwr+d4wSQoVrUadshHY+ufeGv7xj+gOy6BnmyMmqAgLS4DMZg4tb/3LvX5vHA5rVnucyxbVk4JgcU0N7UiaIwC/8A/ML4F/MqdnCqyZn82l2HADRN9EdMnzk/xEEB8wQgNm9Y14ETUaEKCAJHamVsVYjzMHGMM43XwbnO74tfSDhgYErgpsVrZySZnDc775dRIXKcjIjaMwDXsSCB/oCifXamKYX0Qv2R6Hei4gTAE39RQt7MB/nWfCyf6ryr8/5CIVFKRaJWEf0XDywUNiYSAwHCAkTFDJ8M25A3FQIL8gECBflWVrE4RoXgxCmKQELnXQgM6Lyfs7Mix2zxgFoQF4J4D5CMd0TujhgEiuapSruuJrAcMTqoKK+Snu8HvudVwInr0DVuQ3SRXl7vCt2cy7luJtNLBSpCHYvxIYTRRRUXZauqJlJGfMOJuVymsjUmdItbr+trOXQqK7KYT2msJUY6v54yUgStXnw607tG4yptt0QEU6PYWlOq4KKI3hdlhajrTGfCCn/liVpns9XVOXdGGqJDIUJ/8Uk19oturItfdlt1xw1XrA9vfrTOvOzSnu03Xlofy7kdmVtqj4viatehsg8+aFXvvx+WfvjhcvOjj+Ju+ra24m5N3VyB1unRLStcMrckRfrO3xJSVAsE+5cK0S1xN3c1i+ytj5H73BtuqVUX39xd33hrj7VuW80TY1zzwQz3pgqJPXXqViEufYR2uC991M1LrCG6WevruwltEtd+OJMm9nDTt8Algwjt1M+/30JD9eLE29wWjg+yRodINDnrrG1CrQmSjVabFV+cqtfqzWxjae05tcYCpz1dZExXI1uW3jvt4idurTDm1hht1r7VJw6bNveekWztF5MTZNhsxsydcm2RMdPaYG1qP5QurkwYiSZ7vbXdTMpkg7v/34r9ap2dPqRmlyesw01GEEYZH3moKT/pL1/UyclmRTBV7rCsCbJy8cmPd02YW2yr/+Be5U8EcrtlH5GM26WOm7Ou6LK5xwbO3//465JDInx6Mf417347ao4v6w+LhR2K9v+/mzb7srIhvN0TnvEpfPV07zhl06ZUzxPJJPPqmGer5oknSqDFMuLFf3jDy/4o9ev9kvfeo6gGZ9t77xfz4J9lw70/HtaVf5fkSEqRDn/uH28XC0q/hKA+mDmMm76Ktv9uL7F/3+7UeojYnfx+VDlr1pLIO7376V4U7Asisb/7/tCPlsyaVRmIRAazqEV+iHsOx4BCAQrxBgrvy+fkWADZx/gahaflk3KqQxepUwBke1bkA3mb7HeeTGPrX/1+ipeN/89x/zrezybtPcHhF8D4tKJ+Gg4GoNlnhUT1yvtwQeWol7pQcCooFpricC3uFwxAo4FzwRbwZZuSSpYJAofKAAxsGkHi0B2t8P3BxGU4WDhMAk0/Zu12KWcnEqGKgL6cSkDgcRcYlPIUSDzeQCv8F2BSxW9g4QkJ0m2fnRy547RtnzG2ggN0f2B6CkpqZdvNfkU9upbDXIf4iZyMF6q8jEevMCC3sSJ961pEgWLycEluQ+cIItMSe8kXInFeFCrrSXlPfrLtDEMtgQag8wcYPRIo01tsJ37+FdJGTosLyr5pPyGWmMFBJVci0FeigCo7lsLkm1YTFlCAumYSD1wyA3IiREDMnrSEeiK3qBGI5gpWTWFFef8Sf6T7AA0ec0qljXWeH9s3Qf+a+6erJ3+MI02rrambza05OQnFQ/w1kqnRuSz1jBg2/tu9LAh682tsQ3SVkwkAAA==') format('woff2'),\\r\\n url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format('woff'),\\r\\n url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format('truetype'), \\r\\n url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format('svg'); /* iOS 4.1- */\\r\\n}\\r\\n\\r\\n.iconfont {\\r\\n font-family: \\\"iconfont\\\" !important;\\r\\n font-size: 16px;\\r\\n font-style: normal;\\r\\n -webkit-font-smoothing: antialiased;\\r\\n -moz-osx-font-smoothing: grayscale;\\r\\n}\\r\\n\\r\\n.iconqingxiLOGO:before {\\r\\n content: \\\"\\\\e7b4\\\";\\r\\n}\\r\\n\\r\\n.iconqingxilogo:before {\\r\\n content: \\\"\\\\e7af\\\";\\r\\n}\\r\\n\\r\\n.iconai23:before {\\r\\n content: \\\"\\\\e68a\\\";\\r\\n}\\r\\n\\r\\n.iconiconstop:before {\\r\\n content: \\\"\\\\e612\\\";\\r\\n}\\r\\n\\r\\n.iconexit-full-screen:before {\\r\\n content: \\\"\\\\e657\\\";\\r\\n}\\r\\n\\r\\n.iconzanting:before {\\r\\n content: \\\"\\\\e605\\\";\\r\\n}\\r\\n\\r\\n.iconquanping:before {\\r\\n content: \\\"\\\\e655\\\";\\r\\n}\\r\\n\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://WasmPlayer/./src/icon/iconfont.css?./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/range.css":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/range.css ***!
|
||
\*******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js */ \"./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"input[type=range] {\\r\\n -webkit-appearance: none;\\r\\n}\\r\\ninput[type=range]::-webkit-slider-thumb {\\r\\n -webkit-appearance: none;\\r\\n} \\r\\ninput[type=range]::-webkit-slider-runnable-track {\\r\\n height: 15px;\\r\\n border-radius: 10px; /*将轨道设为圆角的*/\\r\\n}\\r\\ninput[type=range]:focus {\\r\\n outline: none;\\r\\n}\\r\\ninput[type=range]::-webkit-slider-thumb {\\r\\n -webkit-appearance: none;\\r\\n height: 15px;\\r\\n width: 15px;\\r\\n margin-top: -2px; /*使滑块超出轨道部分的偏移量相等*/\\r\\n background: #ffffff; \\r\\n border-radius: 50%; /*外观设置为圆形*/\\r\\n}\\r\\n.conter{\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n top: 46%;\\r\\n transform: translate(-50%,-50%);\\r\\n}\\r\\n#load5{\\r\\n margin: 0 auto;\\r\\n font-size: 6px;\\r\\n width: 8px;\\r\\n height:8px;\\r\\n border-radius: 50%;\\r\\n position: relative;\\r\\n text-indent: -9999em;\\r\\n -webkit-animation: load5 1.1s infinite ease;\\r\\n animation: load5 1.1s infinite ease;\\r\\n}\\r\\n@-webkit-keyframes load5 {\\r\\n 0%,\\r\\n 100% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 0, 255, 1), 1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 0, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 0, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 0, 255, 0.5), -1.8em -1.8em 0 0 rgba(255, 0, 255, 0.7);\\r\\n }\\r\\n 12.5% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 0, 255, 0.7), 1.8em -1.8em 0 0 rgba(255, 0, 255, 1),\\r\\n 2.5em 0 0 0 rgba(255, 0, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(158, 106, 158, 0.2), -1.8em 1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 0, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 0, 255, 0.5);\\r\\n }\\r\\n 25% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 0, 255, 0.5), 1.8em -1.8em 0 0 rgba(255, 0, 255, 0.7),\\r\\n 2.5em 0 0 0 rgba(255, 0, 255, 0.5), 1.75em 1.75em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 0, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 0, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2);\\r\\n }\\r\\n 37.5% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 0, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 0, 255, 0.5),\\r\\n 2.5em 0em 0 0 rgba(255, 0, 255, 0.7), 1.75em 1.75em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 0, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 0, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2);\\r\\n }\\r\\n 50% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 0, 255, 0.2), 1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 0, 255, 0.5), 1.75em 1.75em 0 0 rgba(255, 0, 255, 0.7),\\r\\n 0 2.5em 0 0 rgba(255, 0, 255, 1), -1.8em 1.8em 0 0 rgba(255, 255, 0, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 0, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2);\\r\\n }\\r\\n 62.5% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 0, 255, 0.2), 1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 0, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 0, 255, 0.5),\\r\\n 0 2.5em 0 0 rgba(255, 0, 255, 0.7), -1.8em 1.8em 0 0 rgba(255, 0, 255, 1),\\r\\n -2.6em 0 0 0 rgba(255, 0, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2);\\r\\n }\\r\\n 75% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 0, 255, 0.2), 1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 0, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 0, 255, 0.5), -1.8em 1.8em 0 0 rgba(255, 0, 255, 0.7),\\r\\n -2.6em 0 0 0 rgba(255, 0, 255, 1), -1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2);\\r\\n }\\r\\n 87.5% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 0, 255, 0.2), 1.8em -1.8em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 0, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 0, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 0, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 0, 255, 0.5),\\r\\n -2.6em 0 0 0 rgba(255, 0, 255, 0.7), -1.8em -1.8em 0 0 rgba(255, 0, 255, 1);\\r\\n }\\r\\n }\\r\\n @keyframes load5 {\\r\\n 0%,\\r\\n 100% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 255, 255, 1), 1.8em -1.8em 0 0 rgba(255,255, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0 rgba(255, 255, 255, 0.7);\\r\\n }\\r\\n 12.5% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0 rgba(255, 255, 255, 1),\\r\\n 2.5em 0 0 0 rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 255, 255, 0.5);\\r\\n }\\r\\n 25% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0 rgba(255, 255, 255, 0.7),\\r\\n 2.5em 0 0 0 rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2);\\r\\n }\\r\\n 37.5% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5),\\r\\n 2.5em 0em 0 0 rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0 rgba(255, v, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2);\\r\\n }\\r\\n 50% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, v, 255, 0.2), 1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0 rgba(255, 255, 255, 0.7),\\r\\n 0 2.5em 0 0 rgba(255, 255, 255, 1), -1.8em 1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n -2.6em 0 0 0 rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2);\\r\\n }\\r\\n 62.5% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 255, 255, 0.5),\\r\\n 0 2.5em 0 0 rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0 rgba(255, 255, 255, 1),\\r\\n -2.6em 0 0 0 rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2);\\r\\n }\\r\\n 75% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0 rgba(255, 255, 255, 0.7),\\r\\n -2.6em 0 0 0 rgba(255, 255, 255, 1), -1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2);\\r\\n }\\r\\n 87.5% {\\r\\n box-shadow: 0 -2.6em 0 0 rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 2.5em 0 0 0 rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0 rgba(255, 255, 255, 0.2),\\r\\n 0 2.5em 0 0 rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0 rgba(255, 255, 255, 0.5),\\r\\n -2.6em 0 0 0 rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0 rgba(255, 255, 255, 1);\\r\\n }\\r\\n} \\r\\n.LodingTitle {\\r\\n color: #fff;\\r\\n font-size: 14px;\\r\\n position: absolute;\\r\\n top:30px;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n}\\r\\n@keyframes load{\\r\\n 0%{\\r\\n transform: rotate(0deg);\\r\\n }\\r\\n 100%{\\r\\n transform:rotate(360deg);\\r\\n }\\r\\n}\\r\\n/* 中间大播放按钮样式 */\\r\\n.bigPlayBox{\\r\\n position: absolute;\\r\\n top: 50%;\\r\\n left: 50%;\\r\\n transform: translate(-50%,-50%);\\r\\n background-color: rgba(0,0,0,.5);\\r\\n cursor: pointer;\\r\\n width: 80px;\\r\\n height:80px;\\r\\n border-radius: 40px;\\r\\n text-align: center;\\r\\n line-height: 80px;\\r\\n font-size: 36px;\\r\\n color: #fff;\\r\\n z-index: 9;\\r\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://WasmPlayer/./src/range.css?./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js ***!
|
||
\***********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\n\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/getUrl.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/getUrl.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/getUrl.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_des.js@1.0.1@des.js/lib/des.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/_des.js@1.0.1@des.js/lib/des.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.utils = __webpack_require__(/*! ./des/utils */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/utils.js\");\nexports.Cipher = __webpack_require__(/*! ./des/cipher */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/cipher.js\");\nexports.DES = __webpack_require__(/*! ./des/des */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/des.js\");\nexports.CBC = __webpack_require__(/*! ./des/cbc */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/cbc.js\");\nexports.EDE = __webpack_require__(/*! ./des/ede */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/ede.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_des.js@1.0.1@des.js/lib/des.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_des.js@1.0.1@des.js/lib/des/cbc.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/_des.js@1.0.1@des.js/lib/des/cbc.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n this.iv = new Array(8);\n\n for (var i = 0; i < this.iv.length; i++) {\n this.iv[i] = iv[i];\n }\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n\n this._cbcInit();\n }\n\n inherits(CBC, Base);\n var keys = Object.keys(proto);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n var iv = state.iv;\n\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] ^= inp[inOff + i];\n }\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] = out[outOff + i];\n }\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++) {\n out[outOff + i] ^= iv[i];\n }\n\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] = inp[inOff + i];\n }\n }\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_des.js@1.0.1@des.js/lib/des/cbc.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_des.js@1.0.1@des.js/lib/des/cipher.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/_des.js@1.0.1@des.js/lib/des/cipher.js ***!
|
||
\*************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nfunction Cipher(options) {\n this.options = options;\n this.type = this.options.type;\n this.blockSize = 8;\n\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\n\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {// Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0) return [];\n if (this.type === 'decrypt') return this._updateDecrypt(data);else return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n\n for (var i = 0; i < min; i++) {\n this.buffer[this.bufferOff + i] = data[off + i];\n }\n\n this.bufferOff += min; // Shift next\n\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = (this.bufferOff + data.length) / this.blockSize | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n } // Write blocks\n\n\n var max = data.length - (data.length - inputOff) % this.blockSize;\n\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n\n outputOff += this.blockSize;\n } // Queue rest\n\n\n for (; inputOff < data.length; inputOff++, this.bufferOff++) {\n this.buffer[this.bufferOff] = data[inputOff];\n }\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize); // TODO(indutny): optimize it, this is far from optimal\n\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n } // Buffer rest of the input\n\n\n inputOff += this._buffer(data, inputOff);\n return out;\n};\n\nCipher.prototype.final = function _final(buffer) {\n var first;\n if (buffer) first = this.update(buffer);\n var last;\n if (this.type === 'encrypt') last = this._finalEncrypt();else last = this._finalDecrypt();\n if (first) return first.concat(last);else return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0) return false;\n\n while (off < buffer.length) {\n buffer[off++] = 0;\n }\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff)) return [];\n var out = new Array(this.blockSize);\n\n this._update(this.buffer, 0, out, 0);\n\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_des.js@1.0.1@des.js/lib/des/cipher.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_des.js@1.0.1@des.js/lib/des/des.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/_des.js@1.0.1@des.js/lib/des/des.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/utils.js\");\n\nvar Cipher = __webpack_require__(/*! ./cipher */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/cipher.js\");\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n var state = new DESState();\n this._desState = state;\n this.deriveKeys(state, options.key);\n}\n\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4); // Initial Permutation\n\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n if (this.type === 'encrypt') this._encrypt(state, l, r, state.tmp, 0);else this._decrypt(state, l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n\n for (var i = off; i < buffer.length; i++) {\n buffer[i] = value;\n }\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n\n for (var i = buffer.length - pad; i < buffer.length; i++) {\n assert.equal(buffer[i], pad);\n }\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart; // Apply f() x16 times\n\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1]; // f(r, k)\n\n utils.expand(r, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n } // Reverse Initial Permutation\n\n\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart; // Apply f() x16 times\n\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1]; // f(r, k)\n\n utils.expand(l, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n } // Reverse Initial Permutation\n\n\n utils.rip(l, r, out, off);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_des.js@1.0.1@des.js/lib/des/des.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_des.js@1.0.1@des.js/lib/des/ede.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/_des.js@1.0.1@des.js/lib/des/ede.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Cipher = __webpack_require__(/*! ./cipher */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/cipher.js\");\n\nvar DES = __webpack_require__(/*! ./des */ \"./node_modules/_des.js@1.0.1@des.js/lib/des/des.js\");\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [DES.create({\n type: 'encrypt',\n key: k1\n }), DES.create({\n type: 'decrypt',\n key: k2\n }), DES.create({\n type: 'encrypt',\n key: k3\n })];\n } else {\n this.ciphers = [DES.create({\n type: 'decrypt',\n key: k3\n }), DES.create({\n type: 'encrypt',\n key: k2\n }), DES.create({\n type: 'decrypt',\n key: k1\n })];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\n\ninherits(EDE, Cipher);\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n\n state.ciphers[1]._update(out, outOff, out, outOff);\n\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_des.js@1.0.1@des.js/lib/des/ede.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_des.js@1.0.1@des.js/lib/des/utils.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/_des.js@1.0.1@des.js/lib/des/utils.js ***!
|
||
\************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = value >>> 16 & 0xff;\n bytes[2 + off] = value >>> 8 & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n }\n\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0; // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >> j + i & 1;\n }\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n } // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n\n\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inR >> j + i & 1;\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return num << shift & 0xfffffff | num >>> 28 - shift;\n};\n\nvar pc2table = [// inL => outL\n14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, // inR => outR\n15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n var len = pc2table.length >>> 1;\n\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= inL >>> pc2table[i] & 0x1;\n }\n\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= inR >>> pc2table[i] & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n outL = (r & 1) << 5 | r >>> 27;\n\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= r >>> i & 0x3f;\n }\n\n for (var i = 11; i >= 3; i -= 4) {\n outR |= r >>> i & 0x3f;\n outR <<= 6;\n }\n\n outR |= (r & 0x1f) << 1 | r >>> 31;\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n\n for (var i = 0; i < 4; i++) {\n var b = inL >>> 18 - i * 6 & 0x3f;\n var sb = sTable[i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n\n for (var i = 0; i < 4; i++) {\n var b = inR >>> 18 - i * 6 & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n\n return out >>> 0;\n};\n\nvar permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\n\nexports.permute = function permute(num) {\n var out = 0;\n\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= num >>> permuteTable[i] & 0x1;\n }\n\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n\n while (str.length < size) {\n str = '0' + str;\n }\n\n var out = [];\n\n for (var i = 0; i < size; i += group) {\n out.push(str.slice(i, i + group));\n }\n\n return out.join(' ');\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_des.js@1.0.1@des.js/lib/des/utils.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_diffie-hellman@5.0.3@diffie-hellman/browser.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_diffie-hellman@5.0.3@diffie-hellman/browser.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var generatePrime = __webpack_require__(/*! ./lib/generatePrime */ \"./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/generatePrime.js\");\n\nvar primes = __webpack_require__(/*! ./lib/primes.json */ \"./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/primes.json\");\n\nvar DH = __webpack_require__(/*! ./lib/dh */ \"./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/dh.js\");\n\nfunction getDiffieHellman(mod) {\n var prime = new Buffer(primes[mod].prime, 'hex');\n var gen = new Buffer(primes[mod].gen, 'hex');\n return new DH(prime, gen);\n}\n\nvar ENCODINGS = {\n 'binary': true,\n 'hex': true,\n 'base64': true\n};\n\nfunction createDiffieHellman(prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator);\n }\n\n enc = enc || 'binary';\n genc = genc || 'binary';\n generator = generator || new Buffer([2]);\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc);\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true);\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc);\n }\n\n return new DH(prime, generator, true);\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman;\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_diffie-hellman@5.0.3@diffie-hellman/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/dh.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/dh.js ***!
|
||
\*********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar MillerRabin = __webpack_require__(/*! miller-rabin */ \"./node_modules/_miller-rabin@4.0.1@miller-rabin/lib/mr.js\");\n\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\n\nvar primes = __webpack_require__(/*! ./generatePrime */ \"./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/generatePrime.js\");\n\nvar randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/_randombytes@2.1.0@randombytes/browser.js\");\n\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\n\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n\n if (hex in primeCache) {\n return primeCache[hex];\n }\n\n var error = 0;\n\n if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n\n primeCache[hex] = error;\n return error;\n }\n\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n\n var rem;\n\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n\n break;\n\n case '05':\n rem = prime.mod(TEN);\n\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n\n break;\n\n default:\n error += 4;\n }\n\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\n\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function get() {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n\n return this._primeCode;\n }\n});\n\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/dh.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/generatePrime.js":
|
||
/*!********************************************************************************!*\
|
||
!*** ./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/generatePrime.js ***!
|
||
\********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/_randombytes@2.1.0@randombytes/browser.js\");\n\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar TWENTYFOUR = new BN(24);\n\nvar MillerRabin = __webpack_require__(/*! miller-rabin */ \"./node_modules/_miller-rabin@4.0.1@miller-rabin/lib/mr.js\");\n\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null) return primes;\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n\n for (var j = 0; j < i && res[j] <= sqrt; j++) {\n if (k % res[j] === 0) break;\n }\n\n if (i !== j && res[j] <= sqrt) continue;\n res[i++] = k;\n }\n\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++) {\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n\n gen = new BN(gen);\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n\n if (num.isEven()) {\n num.iadd(ONE);\n }\n\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n\n n2 = num.shrn(1);\n\n if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/generatePrime.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/primes.json":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/primes.json ***!
|
||
\***************************************************************************/
|
||
/*! exports provided: modp1, modp2, modp5, modp14, modp15, modp16, modp17, modp18, default */
|
||
/***/ (function(module) {
|
||
|
||
eval("module.exports = JSON.parse(\"{\\\"modp1\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\\\"},\\\"modp2\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\\\"},\\\"modp5\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\\\"},\\\"modp14\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\\\"},\\\"modp15\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\\\"},\\\"modp16\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\\\"},\\\"modp17\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\\\"},\\\"modp18\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\\\"}}\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_diffie-hellman@5.0.3@diffie-hellman/lib/primes.json?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar elliptic = exports;\nelliptic.version = __webpack_require__(/*! ../package.json */ \"./node_modules/_elliptic@6.5.3@elliptic/package.json\").version;\nelliptic.utils = __webpack_require__(/*! ./elliptic/utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\nelliptic.rand = __webpack_require__(/*! brorand */ \"./node_modules/_brorand@1.1.0@brorand/index.js\");\nelliptic.curve = __webpack_require__(/*! ./elliptic/curve */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/index.js\");\nelliptic.curves = __webpack_require__(/*! ./elliptic/curves */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curves.js\"); // Protocols\n\nelliptic.ec = __webpack_require__(/*! ./elliptic/ec */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/index.js\");\nelliptic.eddsa = __webpack_require__(/*! ./elliptic/eddsa */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/index.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/base.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/base.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16); // Use Montgomery, when there is no fast reduction for the prime\n\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); // Useful for many curves\n\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red); // Curve configuration, optional\n\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); // Temporary arrays\n\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n this._bitLength = this.n ? this.n.bitLength() : 0; // Generalized Greg Maxwell's trick\n\n var adjustCount = this.n && this.p.div(this.n);\n\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\n\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3; // Translate into more windowed form\n\n var repr = [];\n\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n\n for (var k = j + doubles.step - 1; k >= j; k--) {\n nafW = (nafW << 1) + naf[k];\n }\n\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i) b = b.mixedAdd(doubles.points[j]);else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg());\n }\n\n a = a.add(b);\n }\n\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4; // Precompute window\n\n var nafPoints = p._getNAFPoints(w);\n\n w = nafPoints.wnd;\n var wnd = nafPoints.points; // Get NAF form\n\n var naf = getNAF(k, w, this._bitLength); // Add `this`*(N+1) for every w-NAF index\n\n var acc = this.jpoint(null, null, null);\n\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--) {\n k++;\n }\n\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n var z = naf[i];\n assert(z !== 0);\n\n if (p.type === 'affine') {\n // J +- P\n if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]);else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg());\n } else {\n // J +- J\n if (z > 0) acc = acc.add(wnd[z - 1 >> 1]);else acc = acc.add(wnd[-z - 1 >> 1].neg());\n }\n }\n\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3; // Fill all arrays\n\n var max = 0;\n\n for (var i = 0; i < len; i++) {\n var p = points[i];\n\n var nafPoints = p._getNAFPoints(defW);\n\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n } // Comb small window NAFs\n\n\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [points[a],\n /* 1 */\n null,\n /* 3 */\n null,\n /* 5 */\n points[b]\n /* 7 */\n ]; // Try to avoid Projective points, if possible\n\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [-3,\n /* -1 -1 */\n -1,\n /* -1 0 */\n -5,\n /* -1 1 */\n -7,\n /* 0 -1 */\n 0,\n /* 0 0 */\n 7,\n /* 0 1 */\n 5,\n /* 1 -1 */\n 1,\n /* 1 0 */\n 3\n /* 1 1 */\n ];\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0) zero = false;\n }\n\n if (!zero) break;\n k++;\n i--;\n }\n\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0) continue;else if (z > 0) p = wnd[j][z - 1 >> 1];else if (z < 0) p = wnd[j][-z - 1 >> 1].neg();\n if (p.type === 'affine') acc = acc.mixedAdd(p);else acc = acc.add(p);\n }\n } // Zeroify references\n\n\n for (var i = 0; i < len; i++) {\n wnd[i] = null;\n }\n\n if (jacobianResult) return acc;else return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\n\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq()\n/*other*/\n{\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n var len = this.p.byteLength(); // uncompressed, hybrid-odd, hybrid-even\n\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06) assert(bytes[bytes.length - 1] % 2 === 0);else if (bytes[0] === 0x07) assert(bytes[bytes.length - 1] % 2 === 1);\n var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n if (compact) return [this.getY().isEven() ? 0x02 : 0x03].concat(x);\n return [0x04].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed) return this;\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed) return false;\n var doubles = this.precomputed.doubles;\n if (!doubles) return false;\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n var doubles = [this];\n var acc = this;\n\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++) {\n acc = acc.dbl();\n }\n\n doubles.push(acc);\n }\n\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n var res = [this];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n\n for (var i = 1; i < max; i++) {\n res[i] = res[i - 1].add(dbl);\n }\n\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n\n for (var i = 0; i < k; i++) {\n r = r.dbl();\n }\n\n return r;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/base.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/edwards.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/edwards.js ***!
|
||
\*****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/base.js\");\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n Base.call(this, 'edwards', conf);\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\n\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA) return num.redNeg();else return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC) return num;else return this.c.redMul(num);\n}; // Just for compatibility with Short curve\n\n\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red) y = y.toRed(this.red); // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd) throw new Error('invalid point');else return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error('invalid point');\n if (x.fromRed().isOdd() !== odd) x = x.redNeg();\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity()) return true; // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n\n point.normalize();\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one; // Use extended coordinates\n\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\n\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' y: ' + this.y.fromRed().toString(16, 2) + ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n // A = X1^2\n var a = this.x.redSqr(); // B = Y1^2\n\n var b = this.y.redSqr(); // C = 2 * Z1^2\n\n var c = this.z.redSqr();\n c = c.redIAdd(c); // D = a * A\n\n var d = this.curve._mulA(a); // E = (X1 + Y1)^2 - A - B\n\n\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); // G = D + B\n\n var g = d.redAdd(b); // F = G - C\n\n var f = g.redSub(c); // H = D - B\n\n var h = d.redSub(b); // X3 = E * F\n\n var nx = e.redMul(f); // Y3 = G * H\n\n var ny = g.redMul(h); // T3 = E * H\n\n var nt = e.redMul(h); // Z3 = F * G\n\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr(); // C = X1^2\n\n var c = this.x.redSqr(); // D = Y1^2\n\n var d = this.y.redSqr();\n var nx;\n var ny;\n var nz;\n\n if (this.curve.twisted) {\n // E = a * C\n var e = this.curve._mulA(c); // F = E + D\n\n\n var f = e.redAdd(d);\n\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); // Y3 = F * (E - D)\n\n ny = f.redMul(e.redSub(d)); // Z3 = F^2 - 2 * F\n\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n var h = this.z.redSqr(); // J = F - 2 * H\n\n var j = f.redSub(h).redISub(h); // X3 = (B-C-D)*J\n\n nx = b.redSub(c).redISub(d).redMul(j); // Y3 = F * (E - D)\n\n ny = f.redMul(e.redSub(d)); // Z3 = F * J\n\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n var e = c.redAdd(d); // H = (c * Z1)^2\n\n var h = this.curve._mulC(this.z).redSqr(); // J = E - 2 * H\n\n\n var j = e.redSub(h).redSub(h); // X3 = c * (B - E) * J\n\n nx = this.curve._mulC(b.redISub(e)).redMul(j); // Y3 = c * E * (C - D)\n\n ny = this.curve._mulC(e).redMul(c.redISub(d)); // Z3 = E * J\n\n nz = e.redMul(j);\n }\n\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this; // Double in extended coordinates\n\n if (this.curve.extended) return this._extDbl();else return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); // B = (Y1 + X1) * (Y2 + X2)\n\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); // C = T1 * k * T2\n\n var c = this.t.redMul(this.curve.dd).redMul(p.t); // D = Z1 * 2 * Z2\n\n var d = this.z.redMul(p.z.redAdd(p.z)); // E = B - A\n\n var e = b.redSub(a); // F = D - C\n\n var f = d.redSub(c); // G = D + C\n\n var g = d.redAdd(c); // H = B + A\n\n var h = b.redAdd(a); // X3 = E * F\n\n var nx = e.redMul(f); // Y3 = G * H\n\n var ny = g.redMul(h); // T3 = E * H\n\n var nt = e.redMul(h); // Z3 = F * G\n\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n // A = Z1 * Z2\n var a = this.z.redMul(p.z); // B = A^2\n\n var b = a.redSqr(); // C = X1 * X2\n\n var c = this.x.redMul(p.x); // D = Y1 * Y2\n\n var d = this.y.redMul(p.y); // E = d * C * D\n\n var e = this.curve.d.redMul(c).redMul(d); // F = B - E\n\n var f = b.redSub(e); // G = B + E\n\n var g = b.redAdd(e); // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); // Z3 = F * G\n\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c)); // Z3 = c * F * G\n\n nz = this.curve._mulC(f).redMul(g);\n }\n\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity()) return p;\n if (p.isInfinity()) return this;\n if (this.curve.extended) return this._extAdd(p);else return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne) return this; // Normalize coordinates\n\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t) this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n}; // Compatibility with BaseCurve\n\n\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/edwards.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/index.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/index.js ***!
|
||
\***************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar curve = exports;\ncurve.base = __webpack_require__(/*! ./base */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/base.js\");\ncurve.short = __webpack_require__(/*! ./short */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/short.js\");\ncurve.mont = __webpack_require__(/*! ./mont */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/mont.js\");\ncurve.edwards = __webpack_require__(/*! ./edwards */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/edwards.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/mont.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/mont.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/base.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\n\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n }\n}\n\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {// No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n // A = X1 + Z1\n var a = this.x.redAdd(this.z); // AA = A^2\n\n var aa = a.redSqr(); // B = X1 - Z1\n\n var b = this.x.redSub(this.z); // BB = B^2\n\n var bb = b.redSqr(); // C = AA - BB\n\n var c = aa.redSub(bb); // X3 = AA * BB\n\n var nx = aa.redMul(bb); // Z3 = C * (BB + A24 * C)\n\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n // A = X2 + Z2\n var a = this.x.redAdd(this.z); // B = X2 - Z2\n\n var b = this.x.redSub(this.z); // C = X3 + Z3\n\n var c = p.x.redAdd(p.z); // D = X3 - Z3\n\n var d = p.x.redSub(p.z); // DA = D * A\n\n var da = d.redMul(a); // CB = C * B\n\n var cb = c.redMul(b); // X5 = Z1 * (DA + CB)^2\n\n var nx = diff.z.redMul(da.redAdd(cb).redSqr()); // Z5 = X1 * (DA - CB)^2\n\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n\n var b = this.curve.point(null, null); // (N / 2) * Q\n\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) {\n bits.push(t.andln(1));\n }\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c); // N * Q = 2 * ((N / 2) * Q + Q))\n\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c); // N * Q + Q = 2 * ((N / 2) * Q + Q)\n\n a = a.dbl();\n }\n }\n\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n return this.x.fromRed();\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/mont.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/short.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/short.js ***!
|
||
\***************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/base.js\");\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; // If the curve is endomorphic, precalculate beta and lambda\n\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\n\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return; // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n\n var beta;\n var lambda;\n\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p); // Choose the smallest beta\n\n\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n } // Get basis vectors, used for balanced length-two representation\n\n\n var basis;\n\n if (conf.basis) {\n basis = conf.basis.map(function (vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [l1, l2];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1); // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n\n var a0;\n var b0; // First vector\n\n var a1;\n var b1; // Second vector\n\n var a2;\n var b2;\n var prevR;\n var i = 0;\n var r;\n var x;\n\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n\n prevR = r;\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n\n a2 = r.neg();\n b2 = x;\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n } // Normalize signs\n\n\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [{\n a: a1,\n b: b1\n }, {\n a: a2,\n b: b2\n }];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b); // Calculate answer\n\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return {\n k1: k1,\n k2: k2\n };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point'); // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf) return true;\n var x = point.x;\n var y = point.y;\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n\n var p = points[i];\n\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); // Clean-up references to points and coefficients\n\n\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16); // Force redgomery representation when loading from JSON\n\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\n\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo) return;\n var pre = this.precomputed;\n if (pre && pre.beta) return pre.beta;\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n\n if (pre) {\n var curve = this.curve;\n\n var endoMul = function endoMul(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed) return [this.x, this.y];\n return [this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n }];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string') obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2]) return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [res].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [res].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf) return p; // P + O = P\n\n if (p.inf) return this; // P + P = 2P\n\n if (this.eq(p)) return this.dbl(); // P + (-P) = O\n\n if (this.neg().eq(p)) return this.curve.point(null, null); // P + Q = O\n\n if (this.x.cmp(p.x) === 0) return this.curve.point(null, null);\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0) c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf) return this; // 2P = O\n\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n var a = this.curve.a;\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity()) return this;else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k]);else return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);else return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf) return this;\n var res = this.curve.point(this.x, this.y.redNeg());\n\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n\n var negate = function negate(p) {\n return p.neg();\n };\n\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf) return this.curve.jpoint(null, null, null);\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n}\n\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity()) return this.curve.point(null, null);\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity()) return p; // P + O = P\n\n if (p.isInfinity()) return this; // 12M + 4S + 7A\n\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity()) return p.toJ(); // P + O = P\n\n if (p.isInfinity()) return this; // 8M + 3S + 7A\n\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0) return this;\n if (this.isInfinity()) return this;\n if (!pow) return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n\n for (var i = 0; i < pow; i++) {\n r = r.dbl();\n }\n\n return r;\n } // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n\n\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr(); // Reuse results\n\n var jyd = jy.redAdd(jy);\n\n for (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow) jz4 = jz4.redMul(jyd4);\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this;\n if (this.curve.zeroA) return this._zeroDbl();else if (this.curve.threeA) return this._threeDbl();else return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz; // Z = 1\n\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n // XX = X1^2\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s); // M = 3 * XX + a; a = 0\n\n var m = xx.redAdd(xx).redIAdd(xx); // T = M ^ 2 - 2*S\n\n var t = m.redSqr().redISub(s).redISub(s); // 8 * YYYY\n\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8); // X3 = T\n\n nx = t; // Y3 = M * (S - T) - 8 * YYYY\n\n ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2*Y1\n\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n // A = X1^2\n var a = this.x.redSqr(); // B = Y1^2\n\n var b = this.y.redSqr(); // C = B^2\n\n var c = b.redSqr(); // D = 2 * ((X1 + B)^2 - A - C)\n\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d); // E = 3 * A\n\n var e = a.redAdd(a).redIAdd(a); // F = E^2\n\n var f = e.redSqr(); // 8 * C\n\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8); // X3 = F - 2 * D\n\n nx = f.redISub(d).redISub(d); // Y3 = E * (D - X3) - 8 * C\n\n ny = e.redMul(d.redISub(nx)).redISub(c8); // Z3 = 2 * Y1 * Z1\n\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz; // Z = 1\n\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n // XX = X1^2\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s); // M = 3 * XX + a\n\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); // T = M^2 - 2 * S\n\n var t = m.redSqr().redISub(s).redISub(s); // X3 = T\n\n nx = t; // Y3 = M * (S - T) - 8 * YYYY\n\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2 * Y1\n\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n // delta = Z1^2\n var delta = this.z.redSqr(); // gamma = Y1^2\n\n var gamma = this.y.redSqr(); // beta = X1 * gamma\n\n var beta = this.x.redMul(gamma); // alpha = 3 * (X1 - delta) * (X1 + delta)\n\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha); // X3 = alpha^2 - 8 * beta\n\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8); // Z3 = (Y1 + Z1)^2 - gamma - delta\n\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a; // 4M + 6S + 10A\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA) return this.dbl().add(this); // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n // XX = X1^2\n\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // ZZ = Z1^2\n\n var zz = this.z.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // M = 3 * XX + a * ZZ2; a = 0\n\n var m = xx.redAdd(xx).redIAdd(xx); // MM = M^2\n\n var mm = m.redSqr(); // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm); // EE = E^2\n\n var ee = e.redSqr(); // T = 16*YYYY\n\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t); // U = (M + E)^2 - MM - EE - T\n\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); // X3 = 4 * (X1 * EE - 4 * YY * U)\n\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx); // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny); // Z3 = (Z1 + E)^2 - ZZ - EE\n\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine') return this.eq(p.toJ());\n if (this === p) return true; // x1 * z2^2 == x2 * z1^2\n\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return false; // y1 * z2^3 == y2 * z1^3\n\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) + ' y: ' + this.y.toString(16, 2) + ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/short.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curves.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curves.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar curves = exports;\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash.js\");\n\nvar curve = __webpack_require__(/*! ./curve */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curve/index.js\");\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short') this.curve = new curve.short(options);else if (options.type === 'edwards') this.curve = new curve.edwards(options);else this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\n\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function get() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: ['188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811']\n});\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: ['b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34']\n});\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: ['6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5']\n});\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: ['aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + '5502f25d bf55296c 3a545e38 72760ab7', '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f']\n});\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: ['000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + '3fad0761 353c7086 a272c240 88be9476 9fd16650']\n});\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['9']\n});\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658']\n});\nvar pre;\n\ntry {\n pre = __webpack_require__(/*! ./precomputed/secp256k1 */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/precomputed/secp256k1.js\");\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [{\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n }, {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }],\n gRed: false,\n g: ['79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', pre]\n});\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curves.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/index.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/index.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar HmacDRBG = __webpack_require__(/*! hmac-drbg */ \"./node_modules/_hmac-drbg@1.0.1@hmac-drbg/lib/hmac-drbg.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar curves = __webpack_require__(/*! ../curves */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curves.js\");\n\nvar rand = __webpack_require__(/*! brorand */ \"./node_modules/_brorand@1.1.0@brorand/index.js\");\n\nvar assert = utils.assert;\n\nvar KeyPair = __webpack_require__(/*! ./key */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/key.js\");\n\nvar Signature = __webpack_require__(/*! ./signature */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/signature.js\");\n\nfunction EC(options) {\n if (!(this instanceof EC)) return new EC(options); // Shortcut `elliptic.ec(curve-name)`\n\n if (typeof options === 'string') {\n assert(curves.hasOwnProperty(options), 'Unknown curve ' + options);\n options = curves[options];\n } // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n\n\n if (options instanceof curves.PresetCurve) options = {\n curve: options\n };\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g; // Point on curve\n\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1); // Hash for function for DRBG\n\n this.hash = options.hash || options.curve.hash;\n}\n\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options) options = {}; // Instantiate Hmac_DRBG\n\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray()\n });\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0) continue;\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0) msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);else return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n\n if (!options) options = {};\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16)); // Zero-extend key to provide enough entropy\n\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes); // Zero-extend nonce to have the same byte size as N\n\n var nonce = msg.toArray('be', bytes); // Instantiate Hmac_DRBG\n\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8'\n }); // Number of bytes to generate\n\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue;\n var kp = this.g.mul(k);\n if (kp.isInfinity()) continue;\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0) continue;\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0) continue;\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0); // Use complement of `s`, if it is > `n / 2`\n\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({\n r: r,\n s: s,\n recoveryParam: recoveryParam\n });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex'); // Perform primitive values validation\n\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false; // Validate signature\n\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n return p.getX().umod(this.n).cmp(r) === 0;\n } // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false; // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function (msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s; // A set LSB signifies that the y-coordinate is odd\n\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error('Unable to find sencond key candinate'); // 1.1. Let x = r + jn.\n\n if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);else r = this.curve.pointFromX(r, isYOdd);\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n); // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function (e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null) return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q)) return i;\n }\n\n throw new Error('Unable to find valid recovery factor');\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/key.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/key.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null; // KeyPair(ec, { priv: ..., pub: ... })\n\n if (options.priv) this._importPrivate(options.priv, options.privEnc);\n if (options.pub) this._importPublic(options.pub, options.pubEnc);\n}\n\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair) return priv;\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n if (pub.isInfinity()) return {\n result: false,\n reason: 'Invalid public key'\n };\n if (!pub.validate()) return {\n result: false,\n reason: 'Public key is not a point'\n };\n if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n result: false,\n reason: 'Public key * N != O'\n };\n return {\n result: true,\n reason: null\n };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub) this.pub = this.ec.g.mul(this.priv);\n if (!enc) return this.pub;\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex') return this.priv.toString(16, 2);else return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16); // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' || this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n\n this.pub = this.ec.curve.decodePoint(key, enc);\n}; // ECDH\n\n\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n}; // ECDSA\n\n\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) + ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/key.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/signature.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/signature.js ***!
|
||
\****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature) return options;\n if (this._importDER(options, enc)) return;\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined) this.recoveryParam = null;else this.recoveryParam = options.recoveryParam;\n}\n\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n\n if (!(initial & 0x80)) {\n return initial;\n }\n\n var octetLen = initial & 0xf; // Indefinite length or overflow\n\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n } // Leading zeroes\n\n\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n\n if (i === 0) {\n return buf;\n }\n\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n\n if (data[p.place++] !== 0x30) {\n return false;\n }\n\n var len = getLength(data, p);\n\n if (len === false) {\n return false;\n }\n\n if (len + p.place !== data.length) {\n return false;\n }\n\n if (data[p.place++] !== 0x02) {\n return false;\n }\n\n var rlen = getLength(data, p);\n\n if (rlen === false) {\n return false;\n }\n\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n\n if (data[p.place++] !== 0x02) {\n return false;\n }\n\n var slen = getLength(data, p);\n\n if (slen === false) {\n return false;\n }\n\n if (data.length !== slen + p.place) {\n return false;\n }\n\n var s = data.slice(p.place, slen + p.place);\n\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n\n while (--octets) {\n arr.push(len >>> (octets << 3) & 0xff);\n }\n\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray(); // Pad values\n\n if (r[0] & 0x80) r = [0].concat(r); // Pad values\n\n if (s[0] & 0x80) s = [0].concat(s);\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n\n var arr = [0x02];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [0x30];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/ec/signature.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/index.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/index.js ***!
|
||
\***************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash.js\");\n\nvar curves = __webpack_require__(/*! ../curves */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/curves.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\n\nvar KeyPair = __webpack_require__(/*! ./key */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/key.js\");\n\nvar Signature = __webpack_require__(/*! ./signature */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/signature.js\");\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n if (!(this instanceof EDDSA)) return new EDDSA(curve);\n var curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\n\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({\n R: R,\n S: S,\n Rencoded: Rencoded\n });\n};\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\n\n\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n\n for (var i = 0; i < arguments.length; i++) {\n hash.update(arguments[i]);\n }\n\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature) return sig;\n return new Signature(this, sig);\n};\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\n\n\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/key.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/key.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\n\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub)) this._pub = params.pub;else this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(eddsa, {\n pub: pub\n });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair) return secret;\n return new KeyPair(eddsa, {\n secret: secret\n });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n return a;\n});\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/key.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/signature.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/signature.js ***!
|
||
\*******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\n\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n if (typeof sig !== 'object') sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength)\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n if (eddsa.isPoint(sig.R)) this._R = sig.R;\n if (sig.S instanceof BN) this._S = sig.S;\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/eddsa/signature.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/precomputed/secp256k1.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/precomputed/secp256k1.js ***!
|
||
\*************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("module.exports = {\n doubles: {\n step: 4,\n points: [['e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'], ['8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'], ['175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'], ['363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'], ['8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'], ['723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'], ['eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'], ['100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'], ['e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'], ['feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'], ['da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'], ['53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'], ['8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'], ['385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'], ['6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'], ['3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'], ['85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'], ['948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'], ['6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'], ['e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'], ['e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'], ['213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'], ['4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'], ['fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'], ['76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'], ['c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'], ['d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'], ['b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'], ['e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'], ['a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'], ['90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'], ['8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'], ['e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'], ['8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'], ['e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'], ['b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'], ['d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'], ['324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'], ['4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'], ['9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'], ['6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'], ['a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'], ['7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'], ['928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'], ['85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'], ['ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'], ['827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'], ['eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'], ['e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'], ['1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'], ['146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'], ['fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'], ['da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'], ['a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'], ['174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'], ['959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'], ['d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'], ['64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'], ['8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'], ['13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'], ['bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'], ['8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'], ['8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'], ['dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'], ['f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82']]\n },\n naf: {\n wnd: 7,\n points: [['f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'], ['2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'], ['5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'], ['acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'], ['774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'], ['f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'], ['d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'], ['defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'], ['2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'], ['352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'], ['2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'], ['9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'], ['daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'], ['c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'], ['6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'], ['1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'], ['605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'], ['62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'], ['80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'], ['7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'], ['d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'], ['49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'], ['77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'], ['f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'], ['463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'], ['f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'], ['caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'], ['2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'], ['7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'], ['754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'], ['e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'], ['186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'], ['df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'], ['5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'], ['290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'], ['af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'], ['766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'], ['59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'], ['f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'], ['7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'], ['948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'], ['7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'], ['3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'], ['d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'], ['1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'], ['733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'], ['15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'], ['a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'], ['e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'], ['311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'], ['34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'], ['f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'], ['d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'], ['32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'], ['7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'], ['ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'], ['16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'], ['eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'], ['78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'], ['494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'], ['a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'], ['c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'], ['841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'], ['5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'], ['36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'], ['336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'], ['8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'], ['1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'], ['85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'], ['29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'], ['a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'], ['4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'], ['d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'], ['ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'], ['af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'], ['e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'], ['591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'], ['11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'], ['3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'], ['cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'], ['c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'], ['c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'], ['a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'], ['347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'], ['da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'], ['c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'], ['4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'], ['3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'], ['cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'], ['b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'], ['d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'], ['48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'], ['dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'], ['6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'], ['e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'], ['eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'], ['13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'], ['ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'], ['b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'], ['ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'], ['8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'], ['52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'], ['e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'], ['7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'], ['5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'], ['32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'], ['e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'], ['8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'], ['4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'], ['3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'], ['674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'], ['d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'], ['30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'], ['be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'], ['93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'], ['b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'], ['d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'], ['d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'], ['463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'], ['7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'], ['74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'], ['30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'], ['9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'], ['176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'], ['75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'], ['809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'], ['1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9']]\n }\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/precomputed/secp256k1.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js ***!
|
||
\*********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = exports;\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar minAssert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nvar minUtils = __webpack_require__(/*! minimalistic-crypto-utils */ \"./node_modules/_minimalistic-crypto-utils@1.0.1@minimalistic-crypto-utils/lib/utils.js\");\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode; // Represent num in a w-NAF form\n\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n var ws = 1 << w + 1;\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod;else z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\n\nutils.getNAF = getNAF; // Represent k1, k2 in a Joint Sparse Form\n\nfunction getJSF(k1, k2) {\n var jsf = [[], []];\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = k1.andln(3) + d1 & 3;\n var m24 = k2.andln(3) + d2 & 3;\n if (m14 === 3) m14 = -1;\n if (m24 === 3) m24 = -1;\n var u1;\n\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = k1.andln(7) + d1 & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;else u1 = m14;\n }\n\n jsf[0].push(u1);\n var u2;\n\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = k2.andln(7) + d2 & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24;else u2 = m24;\n }\n\n jsf[1].push(u2); // Second phase\n\n if (2 * d1 === u1 + 1) d1 = 1 - d1;\n if (2 * d2 === u2 + 1) d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\n\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] : this[key] = computer.call(this);\n };\n}\n\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes;\n}\n\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\n\nutils.intFromLE = intFromLE;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/lib/elliptic/utils.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_elliptic@6.5.3@elliptic/package.json":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/_elliptic@6.5.3@elliptic/package.json ***!
|
||
\************************************************************/
|
||
/*! exports provided: name, version, description, main, files, scripts, repository, keywords, author, license, bugs, homepage, devDependencies, dependencies, __npminstall_done, _from, _resolved, default */
|
||
/***/ (function(module) {
|
||
|
||
eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"elliptic\\\",\\\"version\\\":\\\"6.5.3\\\",\\\"description\\\":\\\"EC cryptography\\\",\\\"main\\\":\\\"lib/elliptic.js\\\",\\\"files\\\":[\\\"lib\\\"],\\\"scripts\\\":{\\\"jscs\\\":\\\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\\\",\\\"jshint\\\":\\\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\\\",\\\"lint\\\":\\\"npm run jscs && npm run jshint\\\",\\\"unit\\\":\\\"istanbul test _mocha --reporter=spec test/index.js\\\",\\\"test\\\":\\\"npm run lint && npm run unit\\\",\\\"version\\\":\\\"grunt dist && git add dist/\\\"},\\\"repository\\\":{\\\"type\\\":\\\"git\\\",\\\"url\\\":\\\"git@github.com:indutny/elliptic\\\"},\\\"keywords\\\":[\\\"EC\\\",\\\"Elliptic\\\",\\\"curve\\\",\\\"Cryptography\\\"],\\\"author\\\":\\\"Fedor Indutny <fedor@indutny.com>\\\",\\\"license\\\":\\\"MIT\\\",\\\"bugs\\\":{\\\"url\\\":\\\"https://github.com/indutny/elliptic/issues\\\"},\\\"homepage\\\":\\\"https://github.com/indutny/elliptic\\\",\\\"devDependencies\\\":{\\\"brfs\\\":\\\"^1.4.3\\\",\\\"coveralls\\\":\\\"^3.0.8\\\",\\\"grunt\\\":\\\"^1.0.4\\\",\\\"grunt-browserify\\\":\\\"^5.0.0\\\",\\\"grunt-cli\\\":\\\"^1.2.0\\\",\\\"grunt-contrib-connect\\\":\\\"^1.0.0\\\",\\\"grunt-contrib-copy\\\":\\\"^1.0.0\\\",\\\"grunt-contrib-uglify\\\":\\\"^1.0.1\\\",\\\"grunt-mocha-istanbul\\\":\\\"^3.0.1\\\",\\\"grunt-saucelabs\\\":\\\"^9.0.1\\\",\\\"istanbul\\\":\\\"^0.4.2\\\",\\\"jscs\\\":\\\"^3.0.7\\\",\\\"jshint\\\":\\\"^2.10.3\\\",\\\"mocha\\\":\\\"^6.2.2\\\"},\\\"dependencies\\\":{\\\"bn.js\\\":\\\"^4.4.0\\\",\\\"brorand\\\":\\\"^1.0.1\\\",\\\"hash.js\\\":\\\"^1.0.0\\\",\\\"hmac-drbg\\\":\\\"^1.0.0\\\",\\\"inherits\\\":\\\"^2.0.1\\\",\\\"minimalistic-assert\\\":\\\"^1.0.0\\\",\\\"minimalistic-crypto-utils\\\":\\\"^1.0.0\\\"},\\\"__npminstall_done\\\":\\\"Tue Sep 15 2020 09:43:51 GMT+0800 (GMT+08:00)\\\",\\\"_from\\\":\\\"elliptic@6.5.3\\\",\\\"_resolved\\\":\\\"https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.3.tgz?cache=0&sync_timestamp=1592492864889&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.3.tgz\\\"}\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_elliptic@6.5.3@elliptic/package.json?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_es6-promise@4.2.8@es6-promise/dist/es6-promise.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/_es6-promise@4.2.8@es6-promise/dist/es6-promise.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(process, global) {/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n(function (global, factory) {\n true ? module.exports = factory() : undefined;\n})(this, function () {\n 'use strict';\n\n function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n }\n\n function isFunction(x) {\n return typeof x === 'function';\n }\n\n var _isArray = void 0;\n\n if (Array.isArray) {\n _isArray = Array.isArray;\n } else {\n _isArray = function _isArray(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n }\n\n var isArray = _isArray;\n var len = 0;\n var vertxNext = void 0;\n var customSchedulerFn = void 0;\n\n var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n };\n\n function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n }\n\n function setAsap(asapFn) {\n asap = asapFn;\n }\n\n var browserWindow = typeof window !== 'undefined' ? window : undefined;\n var browserGlobal = browserWindow || {};\n var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\n var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; // test for web worker but not in IE10\n\n var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; // node\n\n function useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n } // vertx\n\n\n function useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n }\n\n function useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, {\n characterData: true\n });\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n } // web worker\n\n\n function useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n }\n\n function useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n }\n\n var queue = new Array(1000);\n\n function flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n callback(arg);\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n }\n\n function attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n }\n\n var scheduleFlush = void 0; // Decide what async method to use to triggering processing of queued callbacks:\n\n if (isNode) {\n scheduleFlush = useNextTick();\n } else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n } else if (isWorker) {\n scheduleFlush = useMessageChannel();\n } else if (browserWindow === undefined && \"function\" === 'function') {\n scheduleFlush = attemptVertx();\n } else {\n scheduleFlush = useSetTimeout();\n }\n\n function then(onFulfillment, onRejection) {\n var parent = this;\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n }\n /**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n \n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n \n promise.then(function(value){\n // value === 1\n });\n ```\n \n Instead of writing the above, your code now simply becomes the following:\n \n ```javascript\n let promise = Promise.resolve(1);\n \n promise.then(function(value){\n // value === 1\n });\n ```\n \n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n */\n\n\n function resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n }\n\n var PROMISE_ID = Math.random().toString(36).substring(2);\n\n function noop() {}\n\n var PENDING = void 0;\n var FULFILLED = 1;\n var REJECTED = 2;\n\n function selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n }\n\n function handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n\n sealed = true;\n\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n\n sealed = true;\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n }\n\n function handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n }\n\n function handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n }\n\n function resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n }\n\n function publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n }\n\n function fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n }\n\n function reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._state = REJECTED;\n promise._result = reason;\n asap(publishRejection, promise);\n }\n\n function subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n parent._onerror = null;\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n }\n\n function publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {// noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n\n function initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n }\n\n var id = 0;\n\n function nextId() {\n return id++;\n }\n\n function makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n }\n\n function validationError() {\n return new Error('Array Methods must be provided an Array');\n }\n\n var Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n\n this._enumerate(input);\n\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n\n var error = void 0;\n var didError = false;\n\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n }();\n /**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n \n Example:\n \n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n \n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n \n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n \n Example:\n \n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n \n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n \n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n */\n\n\n function all(entries) {\n return new Enumerator(this, entries).promise;\n }\n /**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n \n Example:\n \n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n \n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n \n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n \n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n \n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n \n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n \n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n \n An example real-world use case is implementing timeouts:\n \n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n \n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n */\n\n\n function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n }\n /**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n \n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n \n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n \n Instead of writing the above, your code now simply becomes the following:\n \n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n \n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n \n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n */\n\n\n function reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n }\n\n function needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n \n Terminology\n -----------\n \n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n \n A promise can be in one of three states: pending, fulfilled, or rejected.\n \n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n \n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n \n \n Basic Usage:\n ------------\n \n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n \n // on failure\n reject(reason);\n });\n \n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n \n Advanced Usage:\n ---------------\n \n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n \n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n \n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n \n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n \n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n \n Unlike callbacks, promises are great composable primitives.\n \n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n \n return values;\n });\n ```\n \n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n */\n\n\n var Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n }();\n\n Promise$1.prototype.then = then;\n Promise$1.all = all;\n Promise$1.race = race;\n Promise$1.resolve = resolve$1;\n Promise$1.reject = reject$1;\n Promise$1._setScheduler = setScheduler;\n Promise$1._setAsap = setAsap;\n Promise$1._asap = asap;\n /*global self*/\n\n function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {// silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n } // Strange compat..\n\n\n Promise$1.polyfill = polyfill;\n Promise$1.Promise = Promise$1;\n return Promise$1;\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\"), __webpack_require__(/*! ./../../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_es6-promise@4.2.8@es6-promise/dist/es6-promise.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_events@3.2.0@events/events.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/_events@3.2.0@events/events.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null;\nvar ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n};\nvar ReflectOwnKeys;\n\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys;\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n};\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\nmodule.exports = EventEmitter;\nmodule.exports.once = once; // Backwards-compat with node 0.10.x\n\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\n\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function get() {\n return defaultMaxListeners;\n },\n set: function set(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function () {\n if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n}; // Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n\n\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n\n for (var i = 1; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var doError = type === 'error';\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false; // If there is no 'error' event listener then throw.\n\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n } // At least give some kind of context to the user\n\n\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n if (handler === undefined) return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n\n for (var i = 0; i < len; ++i) {\n ReflectApply(listeners[i], this, args);\n }\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n\n events = target._events;\n }\n\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] : [existing, listener]; // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n } // Check for listener leak\n\n\n m = _getMaxListeners(target);\n\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true; // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n\n var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n};\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0) return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n}; // Emits a 'removeListener' event if and only if the listener was removed.\n\n\nEventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else {\n delete events[type];\n if (events.removeListener) this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0) return this;\n if (position === 0) list.shift();else {\n spliceOne(list, position);\n }\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this; // not listening for removeListener, no need to emit\n\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];\n }\n\n return this;\n } // emit removeListener for all listeners on all events\n\n\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n};\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function (emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\n\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n\n for (var i = 0; i < n; ++i) {\n copy[i] = arr[i];\n }\n\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++) {\n list[index] = list[index + 1];\n }\n\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n\n resolve([].slice.call(arguments));\n }\n\n ;\n var errorListener; // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_events@3.2.0@events/events.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_evp_bytestokey@1.0.3@evp_bytestokey/index.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/_evp_bytestokey@1.0.3@evp_bytestokey/index.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/_md5.js@1.3.5@md5.js/index.js\");\n/* eslint-disable camelcase */\n\n\nfunction EVP_BytesToKey(password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary');\n\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary');\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length');\n }\n\n var keyLen = keyBits / 8;\n var key = Buffer.alloc(keyLen);\n var iv = Buffer.alloc(ivLen || 0);\n var tmp = Buffer.alloc(0);\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5();\n hash.update(tmp);\n hash.update(password);\n if (salt) hash.update(salt);\n tmp = hash.digest();\n var used = 0;\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen;\n used = Math.min(keyLen, tmp.length);\n tmp.copy(key, keyStart, 0, used);\n keyLen -= used;\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen;\n var length = Math.min(ivLen, tmp.length - used);\n tmp.copy(iv, ivStart, used, used + length);\n ivLen -= length;\n }\n }\n\n tmp.fill(0);\n return {\n key: key,\n iv: iv\n };\n}\n\nmodule.exports = EVP_BytesToKey;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_evp_bytestokey@1.0.3@evp_bytestokey/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_global@4.4.0@global/window.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/_global@4.4.0@global/window.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(global) {var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_global@4.4.0@global/window.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash-base@3.1.0@hash-base/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/_hash-base@3.1.0@hash-base/index.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar Transform = __webpack_require__(/*! readable-stream */ \"./node_modules/_readable-stream@3.6.0@readable-stream/readable-browser.js\").Transform;\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nfunction throwIfNotStringOrBuffer(val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer');\n }\n}\n\nfunction HashBase(blockSize) {\n Transform.call(this);\n this._block = Buffer.allocUnsafe(blockSize);\n this._blockSize = blockSize;\n this._blockOffset = 0;\n this._length = [0, 0, 0, 0];\n this._finalized = false;\n}\n\ninherits(HashBase, Transform);\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null;\n\n try {\n this.update(chunk, encoding);\n } catch (err) {\n error = err;\n }\n\n callback(error);\n};\n\nHashBase.prototype._flush = function (callback) {\n var error = null;\n\n try {\n this.push(this.digest());\n } catch (err) {\n error = err;\n }\n\n callback(error);\n};\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data');\n if (this._finalized) throw new Error('Digest already called');\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding); // consume data\n\n var block = this._block;\n var offset = 0;\n\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) {\n block[i++] = data[offset++];\n }\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n while (offset < data.length) {\n block[this._blockOffset++] = data[offset++];\n } // update length\n\n\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry;\n carry = this._length[j] / 0x0100000000 | 0;\n if (carry > 0) this._length[j] -= 0x0100000000 * carry;\n }\n\n return this;\n};\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented');\n};\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called');\n this._finalized = true;\n\n var digest = this._digest();\n\n if (encoding !== undefined) digest = digest.toString(encoding); // reset state\n\n this._block.fill(0);\n\n this._blockOffset = 0;\n\n for (var i = 0; i < 4; ++i) {\n this._length[i] = 0;\n }\n\n return digest;\n};\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented');\n};\n\nmodule.exports = HashBase;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash-base@3.1.0@hash-base/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash.js ***!
|
||
\*********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var hash = exports;\nhash.utils = __webpack_require__(/*! ./hash/utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\nhash.common = __webpack_require__(/*! ./hash/common */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/common.js\");\nhash.sha = __webpack_require__(/*! ./hash/sha */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha.js\");\nhash.ripemd = __webpack_require__(/*! ./hash/ripemd */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/ripemd.js\");\nhash.hmac = __webpack_require__(/*! ./hash/hmac */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/hmac.js\"); // Proxy hash functions to the main object\n\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/common.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/common.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\n\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending) this.pending = msg;else this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length; // Enough data, try updating\n\n if (this.pending.length >= this._delta8) {\n msg = this.pending; // Process pending data in blocks\n\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0) this.pending = null;\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n\n for (var i = 0; i < msg.length; i += this._delta32) {\n this._update(msg, i, i + this._delta32);\n }\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - (len + this.padLength) % bytes;\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n\n for (var i = 1; i < k; i++) {\n res[i] = 0;\n } // Append length\n\n\n len <<= 3;\n\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++) {\n res[i++] = 0;\n }\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = len >>> 24 & 0xff;\n res[i++] = len >>> 16 & 0xff;\n res[i++] = len >>> 8 & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = len >>> 8 & 0xff;\n res[i++] = len >>> 16 & 0xff;\n res[i++] = len >>> 24 & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++) {\n res[i++] = 0;\n }\n }\n\n return res;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/common.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/hmac.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/hmac.js ***!
|
||
\**************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac)) return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\n\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize) key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize); // Add padding to key\n\n for (var i = key.length; i < this.blockSize; i++) {\n key.push(0);\n }\n\n for (i = 0; i < key.length; i++) {\n key[i] ^= 0x36;\n }\n\n this.inner = new this.Hash().update(key); // 0x36 ^ 0x5c = 0x6a\n\n for (i = 0; i < key.length; i++) {\n key[i] ^= 0x6a;\n }\n\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/hmac.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/ripemd.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/ripemd.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar common = __webpack_require__(/*! ./common */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/common.js\");\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160)) return new RIPEMD160();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.endian = 'little';\n}\n\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n\n for (var j = 0; j < 80; j++) {\n var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'little');else return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15) return x ^ y ^ z;else if (j <= 31) return x & y | ~x & z;else if (j <= 47) return (x | ~y) ^ z;else if (j <= 63) return x & z | y & ~z;else return x ^ (y | ~z);\n}\n\nfunction K(j) {\n if (j <= 15) return 0x00000000;else if (j <= 31) return 0x5a827999;else if (j <= 47) return 0x6ed9eba1;else if (j <= 63) return 0x8f1bbcdc;else return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15) return 0x50a28be6;else if (j <= 31) return 0x5c4dd124;else if (j <= 47) return 0x6d703ef3;else if (j <= 63) return 0x7a6d76e9;else return 0x00000000;\n}\n\nvar r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/ripemd.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha.js ***!
|
||
\*************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.sha1 = __webpack_require__(/*! ./sha/1 */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/1.js\");\nexports.sha224 = __webpack_require__(/*! ./sha/224 */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/224.js\");\nexports.sha256 = __webpack_require__(/*! ./sha/256 */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/256.js\");\nexports.sha384 = __webpack_require__(/*! ./sha/384 */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/384.js\");\nexports.sha512 = __webpack_require__(/*! ./sha/512 */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/512.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/1.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/1.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/common.js\");\n\nvar shaCommon = __webpack_require__(/*! ./common */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/common.js\");\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\nvar sha1_K = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];\n\nfunction SHA1() {\n if (!(this instanceof SHA1)) return new SHA1();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i++) {\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n }\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/1.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/224.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/224.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar SHA256 = __webpack_require__(/*! ./256 */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/256.js\");\n\nfunction SHA224() {\n if (!(this instanceof SHA224)) return new SHA224();\n SHA256.call(this);\n this.h = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4];\n}\n\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 7), 'big');else return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/224.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/256.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/256.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/common.js\");\n\nvar shaCommon = __webpack_require__(/*! ./common */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/common.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\nvar BlockHash = common.BlockHash;\nvar sha256_K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\nfunction SHA256() {\n if (!(this instanceof SHA256)) return new SHA256();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n this.k = sha256_K;\n this.W = new Array(64);\n}\n\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i++) {\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n }\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n assert(this.k.length === W.length);\n\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/256.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/384.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/384.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar SHA512 = __webpack_require__(/*! ./512 */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/512.js\");\n\nfunction SHA384() {\n if (!(this instanceof SHA384)) return new SHA384();\n SHA512.call(this);\n this.h = [0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939, 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4];\n}\n\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 12), 'big');else return utils.split32(this.h.slice(0, 12), 'big');\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/384.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/512.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/512.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/common.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\nvar BlockHash = common.BlockHash;\nvar sha512_K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\n\nfunction SHA512() {\n if (!(this instanceof SHA512)) return new SHA512();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179];\n this.k = sha512_K;\n this.W = new Array(160);\n}\n\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W; // 32 x 32bit words\n\n for (var i = 0; i < 32; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n\n var c3_lo = W[i - 31];\n W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n assert(this.k.length === W.length);\n\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ ~xh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ ~xl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ xh & zh ^ yh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ xl & zl ^ yl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n\n var c2_hi = shr64_hi(xh, xl, 6);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n\n var c2_lo = shr64_lo(xh, xl, 6);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/512.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/common.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/common.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js\");\n\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0) return ch32(x, y, z);\n if (s === 1 || s === 3) return p32(x, y, z);\n if (s === 2) return maj32(x, y, z);\n}\n\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return x & y ^ ~x & z;\n}\n\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return x & y ^ x & z ^ y & z;\n}\n\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\n\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\n\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\n\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3;\n}\n\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10;\n}\n\nexports.g1_256 = g1_256;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/sha/common.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = c >> 6 | 192;\n res[p++] = c & 63 | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = c >> 18 | 240;\n res[p++] = c >> 12 & 63 | 128;\n res[p++] = c >> 6 & 63 | 128;\n res[p++] = c & 63 | 128;\n } else {\n res[p++] = c >> 12 | 224;\n res[p++] = c >> 6 & 63 | 128;\n res[p++] = c & 63 | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n\n for (i = 0; i < msg.length; i += 2) {\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n }\n } else {\n for (i = 0; i < msg.length; i++) {\n res[i] = msg[i] | 0;\n }\n }\n\n return res;\n}\n\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n res += zero2(msg[i].toString(16));\n }\n\n return res;\n}\n\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = w >>> 24 | w >>> 8 & 0xff00 | w << 8 & 0xff0000 | (w & 0xff) << 24;\n return res >>> 0;\n}\n\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little') w = htonl(w);\n res += zero8(w.toString(16));\n }\n\n return res;\n}\n\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\n\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7) return '0' + word;else if (word.length === 6) return '00' + word;else if (word.length === 5) return '000' + word;else if (word.length === 4) return '0000' + word;else if (word.length === 3) return '00000' + word;else if (word.length === 2) return '000000' + word;else if (word.length === 1) return '0000000' + word;else return word;\n}\n\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big') w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3];else w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k];\n res[i] = w >>> 0;\n }\n\n return res;\n}\n\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = m >>> 16 & 0xff;\n res[k + 2] = m >>> 8 & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = m >>> 16 & 0xff;\n res[k + 1] = m >>> 8 & 0xff;\n res[k] = m & 0xff;\n }\n }\n\n return res;\n}\n\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return w >>> b | w << 32 - b;\n}\n\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return w << b | w >>> 32 - b;\n}\n\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return a + b >>> 0;\n}\n\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return a + b + c >>> 0;\n}\n\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return a + b + c + d >>> 0;\n}\n\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return a + b + c + d + e >>> 0;\n}\n\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n var lo = al + bl >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\n\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = al + bl >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\n\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\n\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = lo + bl >>> 0;\n carry += lo < al ? 1 : 0;\n lo = lo + cl >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = lo + dl >>> 0;\n carry += lo < dl ? 1 : 0;\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\n\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\n\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = lo + bl >>> 0;\n carry += lo < al ? 1 : 0;\n lo = lo + cl >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = lo + dl >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = lo + el >>> 0;\n carry += lo < el ? 1 : 0;\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\n\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n return lo >>> 0;\n}\n\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = al << 32 - num | ah >>> num;\n return r >>> 0;\n}\n\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = ah << 32 - num | al >>> num;\n return r >>> 0;\n}\n\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\n\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = ah << 32 - num | al >>> num;\n return r >>> 0;\n}\n\nexports.shr64_lo = shr64_lo;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hash.js@1.1.7@hash.js/lib/hash/utils.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_hmac-drbg@1.0.1@hmac-drbg/lib/hmac-drbg.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/_hmac-drbg@1.0.1@hmac-drbg/lib/hmac-drbg.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/_hash.js@1.1.7@hash.js/lib/hash.js\");\n\nvar utils = __webpack_require__(/*! minimalistic-crypto-utils */ \"./node_modules/_minimalistic-crypto-utils@1.0.1@minimalistic-crypto-utils/lib/utils.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js\");\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._init(entropy, nonce, pers);\n}\n\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac().update(this.V).update([0x00]);\n\n if (seed) kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed) return;\n this.K = this._hmac().update(this.V).update([0x01]).update(seed).digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval) throw new Error('Reseed is required'); // Optional encoding\n\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n } // Optional additional data\n\n\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n\n this._update(add);\n }\n\n var temp = [];\n\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n\n this._update(add);\n\n this._reseed++;\n return utils.encode(res, enc);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_hmac-drbg@1.0.1@hmac-drbg/lib/hmac-drbg.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_ieee754@1.1.13@ieee754/index.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/_ieee754@1.1.13@ieee754/index.js ***!
|
||
\*******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_ieee754@1.1.13@ieee754/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_inherits@2.0.4@inherits/inherits_browser.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/_inherits@2.0.4@inherits/inherits_browser.js ***!
|
||
\*******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_inherits@2.0.4@inherits/inherits_browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_isarray@1.0.0@isarray/index.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/_isarray@1.0.0@isarray/index.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_isarray@1.0.0@isarray/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_md5.js@1.3.5@md5.js/index.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/_md5.js@1.3.5@md5.js/index.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar HashBase = __webpack_require__(/*! hash-base */ \"./node_modules/_hash-base@3.1.0@hash-base/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar ARRAY16 = new Array(16);\n\nfunction MD5() {\n HashBase.call(this, 64); // state\n\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n}\n\ninherits(MD5, HashBase);\n\nMD5.prototype._update = function () {\n var M = ARRAY16;\n\n for (var i = 0; i < 16; ++i) {\n M[i] = this._block.readInt32LE(i * 4);\n }\n\n var a = this._a;\n var b = this._b;\n var c = this._c;\n var d = this._d;\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7);\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12);\n c = fnF(c, d, a, b, M[2], 0x242070db, 17);\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22);\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7);\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12);\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17);\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22);\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7);\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12);\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17);\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22);\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7);\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12);\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17);\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22);\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5);\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9);\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14);\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20);\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5);\n d = fnG(d, a, b, c, M[10], 0x02441453, 9);\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14);\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20);\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5);\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9);\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14);\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20);\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5);\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9);\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14);\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20);\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4);\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11);\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16);\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23);\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4);\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11);\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16);\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23);\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4);\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11);\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16);\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23);\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4);\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11);\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16);\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23);\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6);\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10);\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15);\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21);\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6);\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10);\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15);\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21);\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6);\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10);\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15);\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21);\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6);\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10);\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15);\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21);\n this._a = this._a + a | 0;\n this._b = this._b + b | 0;\n this._c = this._c + c | 0;\n this._d = this._d + d | 0;\n};\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n this._block.fill(0, this._blockOffset, 56);\n\n this._block.writeUInt32LE(this._length[0], 56);\n\n this._block.writeUInt32LE(this._length[1], 60);\n\n this._update(); // produce result\n\n\n var buffer = Buffer.allocUnsafe(16);\n buffer.writeInt32LE(this._a, 0);\n buffer.writeInt32LE(this._b, 4);\n buffer.writeInt32LE(this._c, 8);\n buffer.writeInt32LE(this._d, 12);\n return buffer;\n};\n\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction fnF(a, b, c, d, m, k, s) {\n return rotl(a + (b & c | ~b & d) + m + k | 0, s) + b | 0;\n}\n\nfunction fnG(a, b, c, d, m, k, s) {\n return rotl(a + (b & d | c & ~d) + m + k | 0, s) + b | 0;\n}\n\nfunction fnH(a, b, c, d, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + b | 0;\n}\n\nfunction fnI(a, b, c, d, m, k, s) {\n return rotl(a + (c ^ (b | ~d)) + m + k | 0, s) + b | 0;\n}\n\nmodule.exports = MD5;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_md5.js@1.3.5@md5.js/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_miller-rabin@4.0.1@miller-rabin/lib/mr.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/_miller-rabin@4.0.1@miller-rabin/lib/mr.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var bn = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar brorand = __webpack_require__(/*! brorand */ \"./node_modules/_brorand@1.1.0@brorand/index.js\");\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\n\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8); // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n\n do {\n var a = new bn(this.rand.generate(min_bytes));\n } while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0); // Find d and s, (n - 1) = (2 ^ s) * d;\n\n var n1 = n.subn(1);\n\n for (var s = 0; !n1.testn(s); s++) {}\n\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n var prime = true;\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n if (cb) cb(a);\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return false;\n if (x.cmp(rn1) === 0) break;\n }\n\n if (i === s) return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0); // Find d and s, (n - 1) = (2 ^ s) * d;\n\n var n1 = n.subn(1);\n\n for (var s = 0; !n1.testn(s); s++) {}\n\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0) return g;\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0) break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_miller-rabin@4.0.1@miller-rabin/lib/mr.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js ***!
|
||
\******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r) throw new Error(msg || 'Assertion failed: ' + l + ' != ' + r);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_minimalistic-assert@1.0.1@minimalistic-assert/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_minimalistic-crypto-utils@1.0.1@minimalistic-crypto-utils/lib/utils.js":
|
||
/*!**********************************************************************************************!*\
|
||
!*** ./node_modules/_minimalistic-crypto-utils@1.0.1@minimalistic-crypto-utils/lib/utils.js ***!
|
||
\**********************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++) {\n res[i] = msg[i] | 0;\n }\n\n return res;\n }\n\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n\n for (var i = 0; i < msg.length; i += 2) {\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi) res.push(hi, lo);else res.push(lo);\n }\n }\n\n return res;\n}\n\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\n\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n res += zero2(msg[i].toString(16));\n }\n\n return res;\n}\n\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex') return toHex(arr);else return arr;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_minimalistic-crypto-utils@1.0.1@minimalistic-crypto-utils/lib/utils.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_node-libs-browser@2.2.1@node-libs-browser/mock/empty.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/_node-libs-browser@2.2.1@node-libs-browser/mock/empty.js ***!
|
||
\*******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_node-libs-browser@2.2.1@node-libs-browser/mock/empty.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_parse-asn1@5.1.6@parse-asn1/aesid.json":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/_parse-asn1@5.1.6@parse-asn1/aesid.json ***!
|
||
\**************************************************************/
|
||
/*! exports provided: 2.16.840.1.101.3.4.1.1, 2.16.840.1.101.3.4.1.2, 2.16.840.1.101.3.4.1.3, 2.16.840.1.101.3.4.1.4, 2.16.840.1.101.3.4.1.21, 2.16.840.1.101.3.4.1.22, 2.16.840.1.101.3.4.1.23, 2.16.840.1.101.3.4.1.24, 2.16.840.1.101.3.4.1.41, 2.16.840.1.101.3.4.1.42, 2.16.840.1.101.3.4.1.43, 2.16.840.1.101.3.4.1.44, default */
|
||
/***/ (function(module) {
|
||
|
||
eval("module.exports = JSON.parse(\"{\\\"2.16.840.1.101.3.4.1.1\\\":\\\"aes-128-ecb\\\",\\\"2.16.840.1.101.3.4.1.2\\\":\\\"aes-128-cbc\\\",\\\"2.16.840.1.101.3.4.1.3\\\":\\\"aes-128-ofb\\\",\\\"2.16.840.1.101.3.4.1.4\\\":\\\"aes-128-cfb\\\",\\\"2.16.840.1.101.3.4.1.21\\\":\\\"aes-192-ecb\\\",\\\"2.16.840.1.101.3.4.1.22\\\":\\\"aes-192-cbc\\\",\\\"2.16.840.1.101.3.4.1.23\\\":\\\"aes-192-ofb\\\",\\\"2.16.840.1.101.3.4.1.24\\\":\\\"aes-192-cfb\\\",\\\"2.16.840.1.101.3.4.1.41\\\":\\\"aes-256-ecb\\\",\\\"2.16.840.1.101.3.4.1.42\\\":\\\"aes-256-cbc\\\",\\\"2.16.840.1.101.3.4.1.43\\\":\\\"aes-256-ofb\\\",\\\"2.16.840.1.101.3.4.1.44\\\":\\\"aes-256-cfb\\\"}\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_parse-asn1@5.1.6@parse-asn1/aesid.json?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_parse-asn1@5.1.6@parse-asn1/asn1.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/_parse-asn1@5.1.6@parse-asn1/asn1.js ***!
|
||
\***********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\n\nvar asn1 = __webpack_require__(/*! asn1.js */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1.js\");\n\nexports.certificate = __webpack_require__(/*! ./certificate */ \"./node_modules/_parse-asn1@5.1.6@parse-asn1/certificate.js\");\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('modulus').int(), this.key('publicExponent').int(), this.key('privateExponent').int(), this.key('prime1').int(), this.key('prime2').int(), this.key('exponent1').int(), this.key('exponent2').int(), this.key('coefficient').int());\n});\nexports.RSAPrivateKey = RSAPrivateKey;\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(this.key('modulus').int(), this.key('publicExponent').int());\n});\nexports.RSAPublicKey = RSAPublicKey;\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nexports.PublicKey = PublicKey;\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('none').null_().optional(), this.key('curve').objid().optional(), this.key('params').seq().obj(this.key('p').int(), this.key('q').int(), this.key('g').int()).optional());\n});\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(this.key('version').int(), this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPrivateKey').octstr());\n});\nexports.PrivateKey = PrivateKeyInfo;\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(this.key('algorithm').seq().obj(this.key('id').objid(), this.key('decrypt').seq().obj(this.key('kde').seq().obj(this.key('id').objid(), this.key('kdeparams').seq().obj(this.key('salt').octstr(), this.key('iters').int())), this.key('cipher').seq().obj(this.key('algo').objid(), this.key('iv').octstr()))), this.key('subjectPrivateKey').octstr());\n});\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('p').int(), this.key('q').int(), this.key('g').int(), this.key('pub_key').int(), this.key('priv_key').int());\n});\nexports.DSAPrivateKey = DSAPrivateKey;\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int();\n});\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('privateKey').octstr(), this.key('parameters').optional().explicit(0).use(ECParameters), this.key('publicKey').optional().explicit(1).bitstr());\n});\nexports.ECPrivateKey = ECPrivateKey;\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n });\n});\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(this.key('r').int(), this.key('s').int());\n});\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_parse-asn1@5.1.6@parse-asn1/asn1.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_parse-asn1@5.1.6@parse-asn1/certificate.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/_parse-asn1@5.1.6@parse-asn1/certificate.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n\nvar asn = __webpack_require__(/*! asn1.js */ \"./node_modules/_asn1.js@5.4.1@asn1.js/lib/asn1.js\");\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n });\n});\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(this.key('type').objid(), this.key('value').any());\n});\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('parameters').optional(), this.key('curve').objid().optional());\n});\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue);\n});\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName);\n});\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n });\n});\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(this.key('notBefore').use(Time), this.key('notAfter').use(Time));\n});\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(this.key('extnID').objid(), this.key('critical').bool().def(false), this.key('extnValue').octstr());\n});\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(this.key('version').explicit(0).int().optional(), this.key('serialNumber').int(), this.key('signature').use(AlgorithmIdentifier), this.key('issuer').use(Name), this.key('validity').use(Validity), this.key('subject').use(Name), this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), this.key('issuerUniqueID').implicit(1).bitstr().optional(), this.key('subjectUniqueID').implicit(2).bitstr().optional(), this.key('extensions').explicit(3).seqof(Extension).optional());\n});\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(this.key('tbsCertificate').use(TBSCertificate), this.key('signatureAlgorithm').use(AlgorithmIdentifier), this.key('signatureValue').bitstr());\n});\nmodule.exports = X509Certificate;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_parse-asn1@5.1.6@parse-asn1/certificate.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_parse-asn1@5.1.6@parse-asn1/fixProc.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/_parse-asn1@5.1.6@parse-asn1/fixProc.js ***!
|
||
\**************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\n\nvar evp = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/_evp_bytestokey@1.0.3@evp_bytestokey/index.js\");\n\nvar ciphers = __webpack_require__(/*! browserify-aes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nmodule.exports = function (okey, password) {\n var key = okey.toString();\n var match = key.match(findProc);\n var decrypted;\n\n if (!match) {\n var match2 = key.match(fullRegex);\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64');\n } else {\n var suite = 'aes' + match[1];\n var iv = Buffer.from(match[2], 'hex');\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64');\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n var out = [];\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n out.push(cipher.update(cipherText));\n out.push(cipher.final());\n decrypted = Buffer.concat(out);\n }\n\n var tag = key.match(startRegex)[1];\n return {\n tag: tag,\n data: decrypted\n };\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_parse-asn1@5.1.6@parse-asn1/fixProc.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_parse-asn1@5.1.6@parse-asn1/index.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/_parse-asn1@5.1.6@parse-asn1/index.js ***!
|
||
\************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var asn1 = __webpack_require__(/*! ./asn1 */ \"./node_modules/_parse-asn1@5.1.6@parse-asn1/asn1.js\");\n\nvar aesid = __webpack_require__(/*! ./aesid.json */ \"./node_modules/_parse-asn1@5.1.6@parse-asn1/aesid.json\");\n\nvar fixProc = __webpack_require__(/*! ./fixProc */ \"./node_modules/_parse-asn1@5.1.6@parse-asn1/fixProc.js\");\n\nvar ciphers = __webpack_require__(/*! browserify-aes */ \"./node_modules/_browserify-aes@1.2.0@browserify-aes/browser.js\");\n\nvar compat = __webpack_require__(/*! pbkdf2 */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nmodule.exports = parseKeys;\n\nfunction parseKeys(buffer) {\n var password;\n\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase;\n buffer = buffer.key;\n }\n\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer);\n }\n\n var stripped = fixProc(buffer, password);\n var type = stripped.tag;\n var data = stripped.data;\n var subtype, ndata;\n\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n // falls through\n\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der');\n }\n\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey;\n return {\n type: 'ec',\n data: ndata\n };\n\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n };\n\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der');\n data = decrypt(data, password);\n // falls through\n\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der');\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n };\n\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n };\n\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der');\n\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der');\n\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n };\n\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der');\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n };\n\n default:\n throw new Error('unknown key type ' + type);\n }\n}\n\nparseKeys.signature = asn1.signature;\n\nfunction decrypt(data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt;\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];\n var iv = data.algorithm.decrypt.cipher.iv;\n var cipherText = data.subjectPrivateKey;\n var keylen = parseInt(algo.split('-')[1], 10) / 8;\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1');\n var cipher = ciphers.createDecipheriv(algo, key, iv);\n var out = [];\n out.push(cipher.update(cipherText));\n out.push(cipher.final());\n return Buffer.concat(out);\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_parse-asn1@5.1.6@parse-asn1/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_path-browserify@0.0.1@path-browserify/index.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_path-browserify@0.0.1@path-browserify/index.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n} // path.resolve([from ...], to)\n// posix version\n\n\nexports.resolve = function () {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries\n\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n } // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n\n\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}; // path.normalize(path)\n// posix version\n\n\nexports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/'; // Normalize the path\n\n path = normalizeArray(filter(path.split('/'), function (p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n}; // posix version\n\n\nexports.isAbsolute = function (path) {\n return path.charAt(0) === '/';\n}; // posix version\n\n\nexports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n\n return p;\n }).join('/'));\n}; // path.relative(from, to)\n// posix version\n\n\nexports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47\n /*/*/\n ;\n var end = -1;\n var matchedSlash = true;\n\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n} // Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\n\n\nexports.basename = function (path, ext) {\n var f = basename(path);\n\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true; // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n\n var preDotState = 0;\n\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n\n continue;\n }\n\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n\n if (code === 46\n /*.*/\n ) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n\n return path.slice(startDot, end);\n};\n\nfunction filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n\n return res;\n} // String.prototype.substr - negative index don't work in IE8\n\n\nvar substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) {\n return str.substr(start, len);\n} : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_path-browserify@0.0.1@path-browserify/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_pbkdf2@3.1.1@pbkdf2/browser.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/_pbkdf2@3.1.1@pbkdf2/browser.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("exports.pbkdf2 = __webpack_require__(/*! ./lib/async */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/async.js\");\nexports.pbkdf2Sync = __webpack_require__(/*! ./lib/sync */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/sync-browser.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_pbkdf2@3.1.1@pbkdf2/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/async.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/async.js ***!
|
||
\********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(global, process) {var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar checkParameters = __webpack_require__(/*! ./precondition */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/precondition.js\");\n\nvar defaultEncoding = __webpack_require__(/*! ./default-encoding */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/default-encoding.js\");\n\nvar sync = __webpack_require__(/*! ./sync */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/sync-browser.js\");\n\nvar toBuffer = __webpack_require__(/*! ./to-buffer */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/to-buffer.js\");\n\nvar ZERO_BUF;\nvar subtle = global.crypto && global.crypto.subtle;\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n};\nvar checks = [];\n\nfunction checkNative(algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false);\n }\n\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false);\n }\n\n if (checks[algo] !== undefined) {\n return checks[algo];\n }\n\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8);\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function () {\n return true;\n }).catch(function () {\n return false;\n });\n checks[algo] = prom;\n return prom;\n}\n\nfunction browserPbkdf2(password, salt, iterations, length, algo) {\n return subtle.importKey('raw', password, {\n name: 'PBKDF2'\n }, false, ['deriveBits']).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3);\n }).then(function (res) {\n return Buffer.from(res);\n });\n}\n\nfunction resolvePromise(promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out);\n });\n }, function (e) {\n process.nextTick(function () {\n callback(e);\n });\n });\n}\n\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest;\n digest = undefined;\n }\n\n digest = digest || 'sha1';\n var algo = toBrowser[digest.toLowerCase()];\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out;\n\n try {\n out = sync(password, salt, iterations, keylen, digest);\n } catch (e) {\n return callback(e);\n }\n\n callback(null, out);\n });\n }\n\n checkParameters(iterations, keylen);\n password = toBuffer(password, defaultEncoding, 'Password');\n salt = toBuffer(salt, defaultEncoding, 'Salt');\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2');\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo);\n return sync(password, salt, iterations, keylen, digest);\n }), callback);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\"), __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/async.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/default-encoding.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/default-encoding.js ***!
|
||
\*******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(process) {var defaultEncoding;\n/* istanbul ignore next */\n\nif (process.browser) {\n defaultEncoding = 'utf-8';\n} else if (process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10);\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary';\n} else {\n defaultEncoding = 'utf-8';\n}\n\nmodule.exports = defaultEncoding;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/default-encoding.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/precondition.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/precondition.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number');\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations');\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number');\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) {\n /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length');\n }\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/precondition.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/sync-browser.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/sync-browser.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var md5 = __webpack_require__(/*! create-hash/md5 */ \"./node_modules/_create-hash@1.2.0@create-hash/md5.js\");\n\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ \"./node_modules/_ripemd160@2.0.2@ripemd160/index.js\");\n\nvar sha = __webpack_require__(/*! sha.js */ \"./node_modules/_sha.js@2.4.11@sha.js/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar checkParameters = __webpack_require__(/*! ./precondition */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/precondition.js\");\n\nvar defaultEncoding = __webpack_require__(/*! ./default-encoding */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/default-encoding.js\");\n\nvar toBuffer = __webpack_require__(/*! ./to-buffer */ \"./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/to-buffer.js\");\n\nvar ZEROS = Buffer.alloc(128);\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n};\n\nfunction Hmac(alg, key, saltLen) {\n var hash = getDigest(alg);\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n\n if (key.length > blocksize) {\n key = hash(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);\n ipad.copy(ipad1, 0, 0, blocksize);\n this.ipad1 = ipad1;\n this.ipad2 = ipad;\n this.opad = opad;\n this.alg = alg;\n this.blocksize = blocksize;\n this.hash = hash;\n this.size = sizes[alg];\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize);\n var h = this.hash(ipad);\n h.copy(this.opad, this.blocksize);\n return this.hash(this.opad);\n};\n\nfunction getDigest(alg) {\n function shaFunc(data) {\n return sha(alg).update(data).digest();\n }\n\n function rmd160Func(data) {\n return new RIPEMD160().update(data).digest();\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func;\n if (alg === 'md5') return md5;\n return shaFunc;\n}\n\nfunction pbkdf2(password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen);\n password = toBuffer(password, defaultEncoding, 'Password');\n salt = toBuffer(salt, defaultEncoding, 'Salt');\n digest = digest || 'sha1';\n var hmac = new Hmac(digest, password, salt.length);\n var DK = Buffer.allocUnsafe(keylen);\n var block1 = Buffer.allocUnsafe(salt.length + 4);\n salt.copy(block1, 0, 0, salt.length);\n var destPos = 0;\n var hLen = sizes[digest];\n var l = Math.ceil(keylen / hLen);\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length);\n var T = hmac.run(block1, hmac.ipad1);\n var U = T;\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2);\n\n for (var k = 0; k < hLen; k++) {\n T[k] ^= U[k];\n }\n }\n\n T.copy(DK, destPos);\n destPos += hLen;\n }\n\n return DK;\n}\n\nmodule.exports = pbkdf2;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/sync-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/to-buffer.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/to-buffer.js ***!
|
||
\************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing;\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding);\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer);\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView');\n }\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_pbkdf2@3.1.1@pbkdf2/lib/to-buffer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_process-nextick-args@2.0.1@process-nextick-args/index.js":
|
||
/*!********************************************************************************!*\
|
||
!*** ./node_modules/_process-nextick-args@2.0.1@process-nextick-args/index.js ***!
|
||
\********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nif (typeof process === 'undefined' || !process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = {\n nextTick: nextTick\n };\n} else {\n module.exports = process;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n\n var len = arguments.length;\n var args, i;\n\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n\n default:\n args = new Array(len - 1);\n i = 0;\n\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_process-nextick-args@2.0.1@process-nextick-args/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_process@0.11.10@process/browser.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/_process@0.11.10@process/browser.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_process@0.11.10@process/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_public-encrypt@4.0.3@public-encrypt/browser.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_public-encrypt@4.0.3@public-encrypt/browser.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("exports.publicEncrypt = __webpack_require__(/*! ./publicEncrypt */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/publicEncrypt.js\");\nexports.privateDecrypt = __webpack_require__(/*! ./privateDecrypt */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/privateDecrypt.js\");\n\nexports.privateEncrypt = function privateEncrypt(key, buf) {\n return exports.publicEncrypt(key, buf, true);\n};\n\nexports.publicDecrypt = function publicDecrypt(key, buf) {\n return exports.privateDecrypt(key, buf, true);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_public-encrypt@4.0.3@public-encrypt/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_public-encrypt@4.0.3@public-encrypt/mgf.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/_public-encrypt@4.0.3@public-encrypt/mgf.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var createHash = __webpack_require__(/*! create-hash */ \"./node_modules/_create-hash@1.2.0@create-hash/browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0);\n var i = 0;\n var c;\n\n while (t.length < len) {\n c = i2ops(i++);\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);\n }\n\n return t.slice(0, len);\n};\n\nfunction i2ops(c) {\n var out = Buffer.allocUnsafe(4);\n out.writeUInt32BE(c, 0);\n return out;\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_public-encrypt@4.0.3@public-encrypt/mgf.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_public-encrypt@4.0.3@public-encrypt/privateDecrypt.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/_public-encrypt@4.0.3@public-encrypt/privateDecrypt.js ***!
|
||
\*****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/_parse-asn1@5.1.6@parse-asn1/index.js\");\n\nvar mgf = __webpack_require__(/*! ./mgf */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/mgf.js\");\n\nvar xor = __webpack_require__(/*! ./xor */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/xor.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar crt = __webpack_require__(/*! browserify-rsa */ \"./node_modules/_browserify-rsa@4.0.1@browserify-rsa/index.js\");\n\nvar createHash = __webpack_require__(/*! create-hash */ \"./node_modules/_create-hash@1.2.0@create-hash/browser.js\");\n\nvar withPublic = __webpack_require__(/*! ./withPublic */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/withPublic.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nmodule.exports = function privateDecrypt(privateKey, enc, reverse) {\n var padding;\n\n if (privateKey.padding) {\n padding = privateKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n\n var key = parseKeys(privateKey);\n var k = key.modulus.byteLength();\n\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error');\n }\n\n var msg;\n\n if (reverse) {\n msg = withPublic(new BN(enc), key);\n } else {\n msg = crt(enc, key);\n }\n\n var zBuffer = Buffer.alloc(k - msg.length);\n msg = Buffer.concat([zBuffer, msg], k);\n\n if (padding === 4) {\n return oaep(key, msg);\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse);\n } else if (padding === 3) {\n return msg;\n } else {\n throw new Error('unknown padding');\n }\n};\n\nfunction oaep(key, msg) {\n var k = key.modulus.byteLength();\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest();\n var hLen = iHash.length;\n\n if (msg[0] !== 0) {\n throw new Error('decryption error');\n }\n\n var maskedSeed = msg.slice(1, hLen + 1);\n var maskedDb = msg.slice(hLen + 1);\n var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n var db = xor(maskedDb, mgf(seed, k - hLen - 1));\n\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error');\n }\n\n var i = hLen;\n\n while (db[i] === 0) {\n i++;\n }\n\n if (db[i++] !== 1) {\n throw new Error('decryption error');\n }\n\n return db.slice(i);\n}\n\nfunction pkcs1(key, msg, reverse) {\n var p1 = msg.slice(0, 2);\n var i = 2;\n var status = 0;\n\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++;\n break;\n }\n }\n\n var ps = msg.slice(2, i - 1);\n\n if (p1.toString('hex') !== '0002' && !reverse || p1.toString('hex') !== '0001' && reverse) {\n status++;\n }\n\n if (ps.length < 8) {\n status++;\n }\n\n if (status) {\n throw new Error('decryption error');\n }\n\n return msg.slice(i);\n}\n\nfunction compare(a, b) {\n a = Buffer.from(a);\n b = Buffer.from(b);\n var dif = 0;\n var len = a.length;\n\n if (a.length !== b.length) {\n dif++;\n len = Math.min(a.length, b.length);\n }\n\n var i = -1;\n\n while (++i < len) {\n dif += a[i] ^ b[i];\n }\n\n return dif;\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_public-encrypt@4.0.3@public-encrypt/privateDecrypt.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_public-encrypt@4.0.3@public-encrypt/publicEncrypt.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/_public-encrypt@4.0.3@public-encrypt/publicEncrypt.js ***!
|
||
\****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/_parse-asn1@5.1.6@parse-asn1/index.js\");\n\nvar randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/_randombytes@2.1.0@randombytes/browser.js\");\n\nvar createHash = __webpack_require__(/*! create-hash */ \"./node_modules/_create-hash@1.2.0@create-hash/browser.js\");\n\nvar mgf = __webpack_require__(/*! ./mgf */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/mgf.js\");\n\nvar xor = __webpack_require__(/*! ./xor */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/xor.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar withPublic = __webpack_require__(/*! ./withPublic */ \"./node_modules/_public-encrypt@4.0.3@public-encrypt/withPublic.js\");\n\nvar crt = __webpack_require__(/*! browserify-rsa */ \"./node_modules/_browserify-rsa@4.0.1@browserify-rsa/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nmodule.exports = function publicEncrypt(publicKey, msg, reverse) {\n var padding;\n\n if (publicKey.padding) {\n padding = publicKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n\n var key = parseKeys(publicKey);\n var paddedMsg;\n\n if (padding === 4) {\n paddedMsg = oaep(key, msg);\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse);\n } else if (padding === 3) {\n paddedMsg = new BN(msg);\n\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus');\n }\n } else {\n throw new Error('unknown padding');\n }\n\n if (reverse) {\n return crt(paddedMsg, key);\n } else {\n return withPublic(paddedMsg, key);\n }\n};\n\nfunction oaep(key, msg) {\n var k = key.modulus.byteLength();\n var mLen = msg.length;\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest();\n var hLen = iHash.length;\n var hLen2 = 2 * hLen;\n\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long');\n }\n\n var ps = Buffer.alloc(k - mLen - hLen2 - 2);\n var dblen = k - hLen - 1;\n var seed = randomBytes(hLen);\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen));\n var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k));\n}\n\nfunction pkcs1(key, msg, reverse) {\n var mLen = msg.length;\n var k = key.modulus.byteLength();\n\n if (mLen > k - 11) {\n throw new Error('message too long');\n }\n\n var ps;\n\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff);\n } else {\n ps = nonZero(k - mLen - 3);\n }\n\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k));\n}\n\nfunction nonZero(len) {\n var out = Buffer.allocUnsafe(len);\n var i = 0;\n var cache = randomBytes(len * 2);\n var cur = 0;\n var num;\n\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2);\n cur = 0;\n }\n\n num = cache[cur++];\n\n if (num) {\n out[i++] = num;\n }\n }\n\n return out;\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_public-encrypt@4.0.3@public-encrypt/publicEncrypt.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_public-encrypt@4.0.3@public-encrypt/withPublic.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/_public-encrypt@4.0.3@public-encrypt/withPublic.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var BN = __webpack_require__(/*! bn.js */ \"./node_modules/_bn.js@4.11.9@bn.js/lib/bn.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nfunction withPublic(paddedMsg, key) {\n return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n}\n\nmodule.exports = withPublic;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_public-encrypt@4.0.3@public-encrypt/withPublic.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_public-encrypt@4.0.3@public-encrypt/xor.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/_public-encrypt@4.0.3@public-encrypt/xor.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("module.exports = function xor(a, b) {\n var len = a.length;\n var i = -1;\n\n while (++i < len) {\n a[i] ^= b[i];\n }\n\n return a;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_public-encrypt@4.0.3@public-encrypt/xor.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_randombytes@2.1.0@randombytes/browser.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/_randombytes@2.1.0@randombytes/browser.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(global, process) { // limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\n\nvar MAX_BYTES = 65536; // Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\n\nvar MAX_UINT32 = 4294967295;\n\nfunction oldBrowser() {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11');\n}\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar crypto = global.crypto || global.msCrypto;\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes;\n} else {\n module.exports = oldBrowser;\n}\n\nfunction randomBytes(size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes');\n var bytes = Buffer.allocUnsafe(size);\n\n if (size > 0) {\n // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) {\n // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));\n }\n } else {\n crypto.getRandomValues(bytes);\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes);\n });\n }\n\n return bytes;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\"), __webpack_require__(/*! ./../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_randombytes@2.1.0@randombytes/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_randomfill@1.0.4@randomfill/browser.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/_randomfill@1.0.4@randomfill/browser.js ***!
|
||
\**************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(global, process) {\n\nfunction oldBrowser() {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11');\n}\n\nvar safeBuffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\");\n\nvar randombytes = __webpack_require__(/*! randombytes */ \"./node_modules/_randombytes@2.1.0@randombytes/browser.js\");\n\nvar Buffer = safeBuffer.Buffer;\nvar kBufferMaxLength = safeBuffer.kMaxLength;\nvar crypto = global.crypto || global.msCrypto;\nvar kMaxUint32 = Math.pow(2, 32) - 1;\n\nfunction assertOffset(offset, length) {\n if (typeof offset !== 'number' || offset !== offset) {\n // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number');\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32');\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range');\n }\n}\n\nfunction assertSize(size, offset, length) {\n if (typeof size !== 'number' || size !== size) {\n // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number');\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32');\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small');\n }\n}\n\nif (crypto && crypto.getRandomValues || !process.browser) {\n exports.randomFill = randomFill;\n exports.randomFillSync = randomFillSync;\n} else {\n exports.randomFill = oldBrowser;\n exports.randomFillSync = oldBrowser;\n}\n\nfunction randomFill(buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n }\n\n if (typeof offset === 'function') {\n cb = offset;\n offset = 0;\n size = buf.length;\n } else if (typeof size === 'function') {\n cb = size;\n size = buf.length - offset;\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function');\n }\n\n assertOffset(offset, buf.length);\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size, cb);\n}\n\nfunction actualFill(buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer;\n var uint = new Uint8Array(ourBuf, offset, size);\n crypto.getRandomValues(uint);\n\n if (cb) {\n process.nextTick(function () {\n cb(null, buf);\n });\n return;\n }\n\n return buf;\n }\n\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err);\n }\n\n bytes.copy(buf, offset);\n cb(null, buf);\n });\n return;\n }\n\n var bytes = randombytes(size);\n bytes.copy(buf, offset);\n return buf;\n}\n\nfunction randomFillSync(buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n }\n\n assertOffset(offset, buf.length);\n if (size === undefined) size = buf.length - offset;\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\"), __webpack_require__(/*! ./../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_randomfill@1.0.4@randomfill/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/duplex-browser.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/duplex-browser.js ***!
|
||
\*******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/duplex-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js":
|
||
/*!***********************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js ***!
|
||
\***********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(/*! process-nextick-args */ \"./node_modules/_process-nextick-args@2.0.1@process-nextick-args/index.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n/*<replacement>*/\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/_core-util-is@1.0.2@core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n/*</replacement>*/\n\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_readable.js\");\n\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_writable.js\");\n\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_passthrough.js":
|
||
/*!****************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_passthrough.js ***!
|
||
\****************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(/*! ./_stream_transform */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_transform.js\");\n/*<replacement>*/\n\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/_core-util-is@1.0.2@core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_passthrough.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_readable.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_readable.js ***!
|
||
\*************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(/*! process-nextick-args */ \"./node_modules/_process-nextick-args@2.0.1@process-nextick-args/index.js\");\n/*</replacement>*/\n\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar isArray = __webpack_require__(/*! isarray */ \"./node_modules/_isarray@1.0.0@isarray/index.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\").EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.1.2@safe-buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/_core-util-is@1.0.2@core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar debugUtil = __webpack_require__(/*! util */ 2);\n\nvar debug = void 0;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/BufferList */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/BufferList.js\");\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/destroy.js\");\n\nvar StringDecoder;\nutil.inherits(Readable, Stream);\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/_string_decoder@1.3.0@string_decoder/lib/string_decoder.js\").StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options);\n this._readableState = new ReadableState(options, this); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n return er;\n} // if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\n\n\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/_string_decoder@1.3.0@string_decoder/lib/string_decoder.js\").StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n}; // Don't raise the hwm > 8MB\n\n\nvar MAX_HWM = 0x800000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true; // emit 'readable' now to make sure it gets picked up.\n\n emitReadable(stream);\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n } // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n\n\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {}\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList; // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n return ret;\n} // Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n\n return ret;\n} // Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n} // Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState; // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\"), __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_readable.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_transform.js":
|
||
/*!**************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_transform.js ***!
|
||
\**************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\nmodule.exports = Transform;\n\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js\");\n/*<replacement>*/\n\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/_core-util-is@1.0.2@core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_transform.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_writable.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_writable.js ***!
|
||
\*************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(/*! process-nextick-args */ \"./node_modules/_process-nextick-args@2.0.1@process-nextick-args/index.js\");\n/*</replacement>*/\n\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/_core-util-is@1.0.2@core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/_util-deprecate@1.0.2@util-deprecate/browser.js\")\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.1.2@safe-buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/destroy.js\");\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js\"); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end'); // TODO: defer error events consistently everywhere, not just the cb\n\n stream.emit('error', er);\n pna.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n stream.emit('error', err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\"), __webpack_require__(/*! ./../../_timers-browserify@2.0.11@timers-browserify/main.js */ \"./node_modules/_timers-browserify@2.0.11@timers-browserify/main.js\").setImmediate, __webpack_require__(/*! ./../../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_writable.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/BufferList.js":
|
||
/*!************************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/BufferList.js ***!
|
||
\************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.1.2@safe-buffer/index.js\").Buffer;\n\nvar util = __webpack_require__(/*! util */ 3);\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({\n length: this.length\n });\n return this.constructor.name + ' ' + obj;\n };\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/BufferList.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/destroy.js":
|
||
/*!*********************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/destroy.js ***!
|
||
\*********************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n/*<replacement>*/\n\nvar pna = __webpack_require__(/*! process-nextick-args */ \"./node_modules/_process-nextick-args@2.0.1@process-nextick-args/index.js\");\n/*</replacement>*/\n// undocumented cb() API, needed for core, not for public API\n\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/destroy.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/stream-browser.js":
|
||
/*!****************************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/stream-browser.js ***!
|
||
\****************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\").EventEmitter;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/lib/internal/streams/stream-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/passthrough.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/passthrough.js ***!
|
||
\****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! ./readable */ \"./node_modules/_readable-stream@2.3.7@readable-stream/readable-browser.js\").PassThrough;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/passthrough.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/readable-browser.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/readable-browser.js ***!
|
||
\*********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_readable.js\");\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_writable.js\");\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_duplex.js\");\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_transform.js\");\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_passthrough.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/readable-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/transform.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/transform.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! ./readable */ \"./node_modules/_readable-stream@2.3.7@readable-stream/readable-browser.js\").Transform;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/transform.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@2.3.7@readable-stream/writable-browser.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@2.3.7@readable-stream/writable-browser.js ***!
|
||
\*********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/lib/_stream_writable.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@2.3.7@readable-stream/writable-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js ***!
|
||
\*******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError = /*#__PURE__*/function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js":
|
||
/*!***********************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js ***!
|
||
\***********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_readable.js\");\n\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_writable.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\")(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_passthrough.js":
|
||
/*!****************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_passthrough.js ***!
|
||
\****************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(/*! ./_stream_transform */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_transform.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\")(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_passthrough.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_readable.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_readable.js ***!
|
||
\*************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\").EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! buffer */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = __webpack_require__(/*! util */ 0);\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/buffer_list */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/buffer_list.js\");\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js\").codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\n__webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\")(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/_string_decoder@1.3.0@string_decoder/lib/string_decoder.js\").StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/_string_decoder@1.3.0@string_decoder/lib/string_decoder.js\").StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = __webpack_require__(/*! ./internal/streams/async_iterator */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/async_iterator.js\");\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = __webpack_require__(/*! ./internal/streams/from */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/from-browser.js\");\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\"), __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_readable.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_transform.js":
|
||
/*!**************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_transform.js ***!
|
||
\**************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\nmodule.exports = Transform;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js\").codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\")(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_transform.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_writable.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_writable.js ***!
|
||
\*************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/_util-deprecate@1.0.2@util-deprecate/browser.js\")\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! buffer */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js\").codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\n__webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\")(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js\"); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\"), __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_writable.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/async_iterator.js":
|
||
/*!****************************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/async_iterator.js ***!
|
||
\****************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar finished = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/end-of-stream.js\");\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this; // if we have detected an error in the meanwhile\n // reject straight away\n\n\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this; // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n\n\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/async_iterator.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/buffer_list.js":
|
||
/*!*************************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/buffer_list.js ***!
|
||
\*************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nvar _require = __webpack_require__(/*! buffer */ \"./node_modules/_buffer@4.9.2@buffer/index.js\"),\n Buffer = _require.Buffer;\n\nvar _require2 = __webpack_require__(/*! util */ 1),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/buffer_list.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/destroy.js":
|
||
/*!*********************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/destroy.js ***!
|
||
\*********************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(process) { // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/destroy.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/end-of-stream.js":
|
||
/*!***************************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/end-of-stream.js ***!
|
||
\***************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = __webpack_require__(/*! ../../../errors */ \"./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js\").codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/end-of-stream.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/from-browser.js":
|
||
/*!**************************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/from-browser.js ***!
|
||
\**************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("module.exports = function () {\n throw new Error('Readable.from is not available in the browser');\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/from-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/pipeline.js":
|
||
/*!**********************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/pipeline.js ***!
|
||
\**********************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = __webpack_require__(/*! ../../../errors */ \"./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js\").codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/end-of-stream.js\");\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/pipeline.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/state.js":
|
||
/*!*******************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/state.js ***!
|
||
\*******************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar ERR_INVALID_OPT_VALUE = __webpack_require__(/*! ../../../errors */ \"./node_modules/_readable-stream@3.6.0@readable-stream/errors-browser.js\").codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/state.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/stream-browser.js":
|
||
/*!****************************************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/stream-browser.js ***!
|
||
\****************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\").EventEmitter;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/stream-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_readable-stream@3.6.0@readable-stream/readable-browser.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/_readable-stream@3.6.0@readable-stream/readable-browser.js ***!
|
||
\*********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_readable.js\");\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_writable.js\");\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_duplex.js\");\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_transform.js\");\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/_stream_passthrough.js\");\nexports.finished = __webpack_require__(/*! ./lib/internal/streams/end-of-stream.js */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/end-of-stream.js\");\nexports.pipeline = __webpack_require__(/*! ./lib/internal/streams/pipeline.js */ \"./node_modules/_readable-stream@3.6.0@readable-stream/lib/internal/streams/pipeline.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_readable-stream@3.6.0@readable-stream/readable-browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_ripemd160@2.0.2@ripemd160/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/_ripemd160@2.0.2@ripemd160/index.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar Buffer = __webpack_require__(/*! buffer */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer;\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar HashBase = __webpack_require__(/*! hash-base */ \"./node_modules/_hash-base@3.1.0@hash-base/index.js\");\n\nvar ARRAY16 = new Array(16);\nvar zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e];\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000];\n\nfunction RIPEMD160() {\n HashBase.call(this, 64); // state\n\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n}\n\ninherits(RIPEMD160, HashBase);\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16;\n\n for (var j = 0; j < 16; ++j) {\n words[j] = this._block.readInt32LE(j * 4);\n }\n\n var al = this._a | 0;\n var bl = this._b | 0;\n var cl = this._c | 0;\n var dl = this._d | 0;\n var el = this._e | 0;\n var ar = this._a | 0;\n var br = this._b | 0;\n var cr = this._c | 0;\n var dr = this._d | 0;\n var er = this._e | 0; // computation\n\n for (var i = 0; i < 80; i += 1) {\n var tl;\n var tr;\n\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]);\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]);\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]);\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]);\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]);\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]);\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]);\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]);\n } else {\n // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]);\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]);\n }\n\n al = el;\n el = dl;\n dl = rotl(cl, 10);\n cl = bl;\n bl = tl;\n ar = er;\n er = dr;\n dr = rotl(cr, 10);\n cr = br;\n br = tr;\n } // update state\n\n\n var t = this._b + cl + dr | 0;\n this._b = this._c + dl + er | 0;\n this._c = this._d + el + ar | 0;\n this._d = this._e + al + br | 0;\n this._e = this._a + bl + cr | 0;\n this._a = t;\n};\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n this._block.fill(0, this._blockOffset, 56);\n\n this._block.writeUInt32LE(this._length[0], 56);\n\n this._block.writeUInt32LE(this._length[1], 60);\n\n this._update(); // produce result\n\n\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20);\n buffer.writeInt32LE(this._a, 0);\n buffer.writeInt32LE(this._b, 4);\n buffer.writeInt32LE(this._c, 8);\n buffer.writeInt32LE(this._d, 12);\n buffer.writeInt32LE(this._e, 16);\n return buffer;\n};\n\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction fn1(a, b, c, d, e, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + e | 0;\n}\n\nfunction fn2(a, b, c, d, e, m, k, s) {\n return rotl(a + (b & c | ~b & d) + m + k | 0, s) + e | 0;\n}\n\nfunction fn3(a, b, c, d, e, m, k, s) {\n return rotl(a + ((b | ~c) ^ d) + m + k | 0, s) + e | 0;\n}\n\nfunction fn4(a, b, c, d, e, m, k, s) {\n return rotl(a + (b & d | c & ~d) + m + k | 0, s) + e | 0;\n}\n\nfunction fn5(a, b, c, d, e, m, k, s) {\n return rotl(a + (b ^ (c | ~d)) + m + k | 0, s) + e | 0;\n}\n\nmodule.exports = RIPEMD160;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_ripemd160@2.0.2@ripemd160/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_safe-buffer@5.1.2@safe-buffer/index.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/_safe-buffer@5.1.2@safe-buffer/index.js ***!
|
||
\**************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/_buffer@4.9.2@buffer/index.js\");\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\n\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n} // Copy static methods from Buffer\n\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_safe-buffer@5.1.2@safe-buffer/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js ***!
|
||
\**************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/_buffer@4.9.2@buffer/index.js\");\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\n\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype); // Copy static methods from Buffer\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_safer-buffer@2.1.2@safer-buffer/safer.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/_safer-buffer@2.1.2@safer-buffer/safer.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/* WEBPACK VAR INJECTION */(function(process) {/* eslint-disable node/no-deprecated-api */\n\n\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/_buffer@4.9.2@buffer/index.js\");\n\nvar Buffer = buffer.Buffer;\nvar safer = {};\nvar key;\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue;\n if (key === 'SlowBuffer' || key === 'Buffer') continue;\n safer[key] = buffer[key];\n}\n\nvar Safer = safer.Buffer = {};\n\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue;\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue;\n Safer[key] = Buffer[key];\n}\n\nsafer.Buffer.prototype = Buffer.prototype;\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value);\n }\n\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value);\n }\n\n return Buffer(value, encodingOrOffset, length);\n };\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size);\n }\n\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n }\n\n var buf = Buffer(size);\n\n if (!fill || fill.length === 0) {\n buf.fill(0);\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n\n return buf;\n };\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength;\n } catch (e) {// we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n };\n\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;\n }\n}\n\nmodule.exports = safer;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_safer-buffer@2.1.2@safer-buffer/safer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_setimmediate@1.0.5@setimmediate/setImmediate.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/_setimmediate@1.0.5@setimmediate/setImmediate.js ***!
|
||
\***********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function registerImmediate(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments.\n\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\"), __webpack_require__(/*! ./../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_setimmediate@1.0.5@setimmediate/setImmediate.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_sha.js@2.4.11@sha.js/hash.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/_sha.js@2.4.11@sha.js/hash.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer; // prototype class for hash functions\n\n\nfunction Hash(blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize);\n this._finalSize = finalSize;\n this._blockSize = blockSize;\n this._len = 0;\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8';\n data = Buffer.from(data, enc);\n }\n\n var block = this._block;\n var blockSize = this._blockSize;\n var length = data.length;\n var accum = this._len;\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize;\n var remainder = Math.min(length - offset, blockSize - assigned);\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i];\n }\n\n accum += remainder;\n offset += remainder;\n\n if (accum % blockSize === 0) {\n this._update(block);\n }\n }\n\n this._len += length;\n return this;\n};\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize;\n this._block[rem] = 0x80; // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n\n this._block.fill(0, rem + 1);\n\n if (rem >= this._finalSize) {\n this._update(this._block);\n\n this._block.fill(0);\n }\n\n var bits = this._len * 8; // uint32\n\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4); // uint64\n\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0;\n var highBits = (bits - lowBits) / 0x100000000;\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8);\n\n this._block.writeUInt32BE(lowBits, this._blockSize - 4);\n }\n\n this._update(this._block);\n\n var hash = this._hash();\n\n return enc ? hash.toString(enc) : hash;\n};\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass');\n};\n\nmodule.exports = Hash;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_sha.js@2.4.11@sha.js/hash.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_sha.js@2.4.11@sha.js/index.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/_sha.js@2.4.11@sha.js/index.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var exports = module.exports = function SHA(algorithm) {\n algorithm = algorithm.toLowerCase();\n var Algorithm = exports[algorithm];\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)');\n return new Algorithm();\n};\n\nexports.sha = __webpack_require__(/*! ./sha */ \"./node_modules/_sha.js@2.4.11@sha.js/sha.js\");\nexports.sha1 = __webpack_require__(/*! ./sha1 */ \"./node_modules/_sha.js@2.4.11@sha.js/sha1.js\");\nexports.sha224 = __webpack_require__(/*! ./sha224 */ \"./node_modules/_sha.js@2.4.11@sha.js/sha224.js\");\nexports.sha256 = __webpack_require__(/*! ./sha256 */ \"./node_modules/_sha.js@2.4.11@sha.js/sha256.js\");\nexports.sha384 = __webpack_require__(/*! ./sha384 */ \"./node_modules/_sha.js@2.4.11@sha.js/sha384.js\");\nexports.sha512 = __webpack_require__(/*! ./sha512 */ \"./node_modules/_sha.js@2.4.11@sha.js/sha512.js\");\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_sha.js@2.4.11@sha.js/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_sha.js@2.4.11@sha.js/sha.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/_sha.js@2.4.11@sha.js/sha.js ***!
|
||
\***************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/_sha.js@2.4.11@sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\n\nfunction Sha() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha, Hash);\n\nSha.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\n\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\n\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\n\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\n\nSha.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n\n for (var i = 0; i < 16; ++i) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 80; ++i) {\n W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n }\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\n\nmodule.exports = Sha;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_sha.js@2.4.11@sha.js/sha.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_sha.js@2.4.11@sha.js/sha1.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/_sha.js@2.4.11@sha.js/sha1.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/_sha.js@2.4.11@sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\n\nfunction Sha1() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha1, Hash);\n\nSha1.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\n\nfunction rotl1(num) {\n return num << 1 | num >>> 31;\n}\n\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\n\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\n\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n\n for (var i = 0; i < 16; ++i) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 80; ++i) {\n W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]);\n }\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\n\nmodule.exports = Sha1;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_sha.js@2.4.11@sha.js/sha1.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_sha.js@2.4.11@sha.js/sha224.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/_sha.js@2.4.11@sha.js/sha224.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Sha256 = __webpack_require__(/*! ./sha256 */ \"./node_modules/_sha.js@2.4.11@sha.js/sha256.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/_sha.js@2.4.11@sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar W = new Array(64);\n\nfunction Sha224() {\n this.init();\n this._w = W; // new Array(64)\n\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha224, Sha256);\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8;\n this._b = 0x367cd507;\n this._c = 0x3070dd17;\n this._d = 0xf70e5939;\n this._e = 0xffc00b31;\n this._f = 0x68581511;\n this._g = 0x64f98fa7;\n this._h = 0xbefa4fa4;\n return this;\n};\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28);\n H.writeInt32BE(this._a, 0);\n H.writeInt32BE(this._b, 4);\n H.writeInt32BE(this._c, 8);\n H.writeInt32BE(this._d, 12);\n H.writeInt32BE(this._e, 16);\n H.writeInt32BE(this._f, 20);\n H.writeInt32BE(this._g, 24);\n return H;\n};\n\nmodule.exports = Sha224;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_sha.js@2.4.11@sha.js/sha224.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_sha.js@2.4.11@sha.js/sha256.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/_sha.js@2.4.11@sha.js/sha256.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/_sha.js@2.4.11@sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar K = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2];\nvar W = new Array(64);\n\nfunction Sha256() {\n this.init();\n this._w = W; // new Array(64)\n\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha256, Hash);\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667;\n this._b = 0xbb67ae85;\n this._c = 0x3c6ef372;\n this._d = 0xa54ff53a;\n this._e = 0x510e527f;\n this._f = 0x9b05688c;\n this._g = 0x1f83d9ab;\n this._h = 0x5be0cd19;\n return this;\n};\n\nfunction ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\n\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\n\nfunction sigma0(x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10);\n}\n\nfunction sigma1(x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7);\n}\n\nfunction gamma0(x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ x >>> 3;\n}\n\nfunction gamma1(x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ x >>> 10;\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n var f = this._f | 0;\n var g = this._g | 0;\n var h = this._h | 0;\n\n for (var i = 0; i < 16; ++i) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 64; ++i) {\n W[i] = gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16] | 0;\n }\n\n for (var j = 0; j < 64; ++j) {\n var T1 = h + sigma1(e) + ch(e, f, g) + K[j] + W[j] | 0;\n var T2 = sigma0(a) + maj(a, b, c) | 0;\n h = g;\n g = f;\n f = e;\n e = d + T1 | 0;\n d = c;\n c = b;\n b = a;\n a = T1 + T2 | 0;\n }\n\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n this._f = f + this._f | 0;\n this._g = g + this._g | 0;\n this._h = h + this._h | 0;\n};\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32);\n H.writeInt32BE(this._a, 0);\n H.writeInt32BE(this._b, 4);\n H.writeInt32BE(this._c, 8);\n H.writeInt32BE(this._d, 12);\n H.writeInt32BE(this._e, 16);\n H.writeInt32BE(this._f, 20);\n H.writeInt32BE(this._g, 24);\n H.writeInt32BE(this._h, 28);\n return H;\n};\n\nmodule.exports = Sha256;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_sha.js@2.4.11@sha.js/sha256.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_sha.js@2.4.11@sha.js/sha384.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/_sha.js@2.4.11@sha.js/sha384.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar SHA512 = __webpack_require__(/*! ./sha512 */ \"./node_modules/_sha.js@2.4.11@sha.js/sha512.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/_sha.js@2.4.11@sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar W = new Array(160);\n\nfunction Sha384() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\n\ninherits(Sha384, SHA512);\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d;\n this._bh = 0x629a292a;\n this._ch = 0x9159015a;\n this._dh = 0x152fecd8;\n this._eh = 0x67332667;\n this._fh = 0x8eb44a87;\n this._gh = 0xdb0c2e0d;\n this._hh = 0x47b5481d;\n this._al = 0xc1059ed8;\n this._bl = 0x367cd507;\n this._cl = 0x3070dd17;\n this._dl = 0xf70e5939;\n this._el = 0xffc00b31;\n this._fl = 0x68581511;\n this._gl = 0x64f98fa7;\n this._hl = 0xbefa4fa4;\n return this;\n};\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48);\n\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\n\n writeInt64BE(this._ah, this._al, 0);\n writeInt64BE(this._bh, this._bl, 8);\n writeInt64BE(this._ch, this._cl, 16);\n writeInt64BE(this._dh, this._dl, 24);\n writeInt64BE(this._eh, this._el, 32);\n writeInt64BE(this._fh, this._fl, 40);\n return H;\n};\n\nmodule.exports = Sha384;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_sha.js@2.4.11@sha.js/sha384.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_sha.js@2.4.11@sha.js/sha512.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/_sha.js@2.4.11@sha.js/sha512.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/_sha.js@2.4.11@sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n\nvar K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\nvar W = new Array(160);\n\nfunction Sha512() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\n\ninherits(Sha512, Hash);\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667;\n this._bh = 0xbb67ae85;\n this._ch = 0x3c6ef372;\n this._dh = 0xa54ff53a;\n this._eh = 0x510e527f;\n this._fh = 0x9b05688c;\n this._gh = 0x1f83d9ab;\n this._hh = 0x5be0cd19;\n this._al = 0xf3bcc908;\n this._bl = 0x84caa73b;\n this._cl = 0xfe94f82b;\n this._dl = 0x5f1d36f1;\n this._el = 0xade682d1;\n this._fl = 0x2b3e6c1f;\n this._gl = 0xfb41bd6b;\n this._hl = 0x137e2179;\n return this;\n};\n\nfunction Ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\n\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\n\nfunction sigma0(x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25);\n}\n\nfunction sigma1(x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23);\n}\n\nfunction Gamma0(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ x >>> 7;\n}\n\nfunction Gamma0l(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25);\n}\n\nfunction Gamma1(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ x >>> 6;\n}\n\nfunction Gamma1l(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26);\n}\n\nfunction getCarry(a, b) {\n return a >>> 0 < b >>> 0 ? 1 : 0;\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w;\n var ah = this._ah | 0;\n var bh = this._bh | 0;\n var ch = this._ch | 0;\n var dh = this._dh | 0;\n var eh = this._eh | 0;\n var fh = this._fh | 0;\n var gh = this._gh | 0;\n var hh = this._hh | 0;\n var al = this._al | 0;\n var bl = this._bl | 0;\n var cl = this._cl | 0;\n var dl = this._dl | 0;\n var el = this._el | 0;\n var fl = this._fl | 0;\n var gl = this._gl | 0;\n var hl = this._hl | 0;\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4);\n W[i + 1] = M.readInt32BE(i * 4 + 4);\n }\n\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2];\n var xl = W[i - 15 * 2 + 1];\n var gamma0 = Gamma0(xh, xl);\n var gamma0l = Gamma0l(xl, xh);\n xh = W[i - 2 * 2];\n xl = W[i - 2 * 2 + 1];\n var gamma1 = Gamma1(xh, xl);\n var gamma1l = Gamma1l(xl, xh); // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\n var Wi7h = W[i - 7 * 2];\n var Wi7l = W[i - 7 * 2 + 1];\n var Wi16h = W[i - 16 * 2];\n var Wi16l = W[i - 16 * 2 + 1];\n var Wil = gamma0l + Wi7l | 0;\n var Wih = gamma0 + Wi7h + getCarry(Wil, gamma0l) | 0;\n Wil = Wil + gamma1l | 0;\n Wih = Wih + gamma1 + getCarry(Wil, gamma1l) | 0;\n Wil = Wil + Wi16l | 0;\n Wih = Wih + Wi16h + getCarry(Wil, Wi16l) | 0;\n W[i] = Wih;\n W[i + 1] = Wil;\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j];\n Wil = W[j + 1];\n var majh = maj(ah, bh, ch);\n var majl = maj(al, bl, cl);\n var sigma0h = sigma0(ah, al);\n var sigma0l = sigma0(al, ah);\n var sigma1h = sigma1(eh, el);\n var sigma1l = sigma1(el, eh); // t1 = h + sigma1 + ch + K[j] + W[j]\n\n var Kih = K[j];\n var Kil = K[j + 1];\n var chh = Ch(eh, fh, gh);\n var chl = Ch(el, fl, gl);\n var t1l = hl + sigma1l | 0;\n var t1h = hh + sigma1h + getCarry(t1l, hl) | 0;\n t1l = t1l + chl | 0;\n t1h = t1h + chh + getCarry(t1l, chl) | 0;\n t1l = t1l + Kil | 0;\n t1h = t1h + Kih + getCarry(t1l, Kil) | 0;\n t1l = t1l + Wil | 0;\n t1h = t1h + Wih + getCarry(t1l, Wil) | 0; // t2 = sigma0 + maj\n\n var t2l = sigma0l + majl | 0;\n var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n el = dl + t1l | 0;\n eh = dh + t1h + getCarry(el, dl) | 0;\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n al = t1l + t2l | 0;\n ah = t1h + t2h + getCarry(al, t1l) | 0;\n }\n\n this._al = this._al + al | 0;\n this._bl = this._bl + bl | 0;\n this._cl = this._cl + cl | 0;\n this._dl = this._dl + dl | 0;\n this._el = this._el + el | 0;\n this._fl = this._fl + fl | 0;\n this._gl = this._gl + gl | 0;\n this._hl = this._hl + hl | 0;\n this._ah = this._ah + ah + getCarry(this._al, al) | 0;\n this._bh = this._bh + bh + getCarry(this._bl, bl) | 0;\n this._ch = this._ch + ch + getCarry(this._cl, cl) | 0;\n this._dh = this._dh + dh + getCarry(this._dl, dl) | 0;\n this._eh = this._eh + eh + getCarry(this._el, el) | 0;\n this._fh = this._fh + fh + getCarry(this._fl, fl) | 0;\n this._gh = this._gh + gh + getCarry(this._gl, gl) | 0;\n this._hh = this._hh + hh + getCarry(this._hl, hl) | 0;\n};\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64);\n\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\n\n writeInt64BE(this._ah, this._al, 0);\n writeInt64BE(this._bh, this._bl, 8);\n writeInt64BE(this._ch, this._cl, 16);\n writeInt64BE(this._dh, this._dl, 24);\n writeInt64BE(this._eh, this._el, 32);\n writeInt64BE(this._fh, this._fl, 40);\n writeInt64BE(this._gh, this._gl, 48);\n writeInt64BE(this._hh, this._hl, 56);\n return H;\n};\n\nmodule.exports = Sha512;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_sha.js@2.4.11@sha.js/sha512.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_stream-browserify@2.0.2@stream-browserify/index.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/_stream-browserify@2.0.2@stream-browserify/index.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nmodule.exports = Stream;\n\nvar EE = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\").EventEmitter;\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/_inherits@2.0.4@inherits/inherits_browser.js\");\n\ninherits(Stream, EE);\nStream.Readable = __webpack_require__(/*! readable-stream/readable.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/readable-browser.js\");\nStream.Writable = __webpack_require__(/*! readable-stream/writable.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/writable-browser.js\");\nStream.Duplex = __webpack_require__(/*! readable-stream/duplex.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/duplex-browser.js\");\nStream.Transform = __webpack_require__(/*! readable-stream/transform.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/transform.js\");\nStream.PassThrough = __webpack_require__(/*! readable-stream/passthrough.js */ \"./node_modules/_readable-stream@2.3.7@readable-stream/passthrough.js\"); // Backwards-compat with node 0.4.x\n\nStream.Stream = Stream; // old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function (dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain); // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n dest.end();\n }\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n if (typeof dest.destroy === 'function') dest.destroy();\n } // don't leave dangling pipes when there are errors.\n\n\n function onerror(er) {\n cleanup();\n\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror); // remove all the event listeners that were added.\n\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n dest.on('close', cleanup);\n dest.emit('pipe', source); // Allow for unix-like usage: A.pipe(B).pipe(C)\n\n return dest;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_stream-browserify@2.0.2@stream-browserify/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_string_decoder@1.3.0@string_decoder/lib/string_decoder.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/_string_decoder@1.3.0@string_decoder/lib/string_decoder.js ***!
|
||
\*********************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/*<replacement>*/\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/_safe-buffer@5.2.1@safe-buffer/index.js\").Buffer;\n/*</replacement>*/\n\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n\n case 'latin1':\n case 'binary':\n return 'latin1';\n\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n\n default:\n if (retried) return; // undefined\n\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n}\n\n; // Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\n\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n} // StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\n\n\nexports.StringDecoder = StringDecoder;\n\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End; // Returns only complete characters in a Buffer\n\nStringDecoder.prototype.text = utf8Text; // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\n\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n}; // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\n\n\nfunction utf8CheckByte(_byte) {\n if (_byte <= 0x7F) return 0;else if (_byte >> 5 === 0x06) return 2;else if (_byte >> 4 === 0x0E) return 3;else if (_byte >> 3 === 0x1E) return 4;\n return _byte >> 6 === 0x02 ? -1 : -2;\n} // Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\n\n\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n\n return nb;\n }\n\n return 0;\n} // Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\n\n\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return \"\\uFFFD\";\n }\n }\n }\n} // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\n\n\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n} // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\n\n\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n} // For UTF-8, a replacement character is added when ending on a partial\n// character.\n\n\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + \"\\uFFFD\";\n return r;\n} // UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\n\n\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n\n return r;\n }\n\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n} // For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\n\n\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n} // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\n\n\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_string_decoder@1.3.0@string_decoder/lib/string_decoder.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js":
|
||
/*!************************************************************************************************!*\
|
||
!*** ./node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
||
\************************************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_timers-browserify@2.0.11@timers-browserify/main.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/_timers-browserify@2.0.11@timers-browserify/main.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(global) {var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\n__webpack_require__(/*! setimmediate */ \"./node_modules/_setimmediate@1.0.5@setimmediate/setImmediate.js\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_timers-browserify@2.0.11@timers-browserify/main.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_util-deprecate@1.0.2@util-deprecate/browser.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/_util-deprecate@1.0.2@util-deprecate/browser.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module exports.\n */\nmodule.exports = deprecate;\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate(fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\n\nfunction config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.44.1@webpack/buildin/global.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_util-deprecate@1.0.2@util-deprecate/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/actions.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/actions.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.__esModule = true;\nvar ACTIONS = {\n COMPILE_MODULE: 0,\n CALL_FUNCTION_EXPORT: 1,\n RUN_FUNCTION: 2\n};\nexports[\"default\"] = ACTIONS;\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/actions.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/index.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/index.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nexports['default'] = wasmWorker;\n\nvar _actions = __webpack_require__(/*! ./actions */ \"./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/actions.js\");\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _worker = __webpack_require__(/*! ./worker */ \"./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/worker.js\");\n\nvar _worker2 = _interopRequireDefault(_worker);\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/utils.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nvar getTransferableParams = function getTransferableParams() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return params.filter(function (x) {\n return x instanceof ArrayBuffer || x instanceof MessagePort || x instanceof ImageBitmap;\n });\n};\n\nfunction wasmWorker(source) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var currentId = 0;\n var promises = {};\n\n var getImportObject = options.getImportObject,\n otherOptions = _objectWithoutProperties(options, ['getImportObject']);\n\n var worker = new Worker('data:,ACTIONS=' + JSON.stringify(_actions2['default']) + ';getImportObject=' + getImportObject + ';' + ('importObject=undefined;wasmModule=null;moduleInstance=null;onmessage=' + _worker2['default']), otherOptions);\n\n worker.onmessage = function (e) {\n var _e$data = e.data,\n id = _e$data.id,\n result = _e$data.result,\n action = _e$data.action,\n payload = _e$data.payload;\n\n if (action === _actions2['default'].COMPILE_MODULE) {\n if (result === 0) {\n var exports = payload.exports;\n promises[id][0]({\n exports: exports.reduce(function (acc, exp) {\n return _extends({}, acc, _defineProperty({}, exp, function () {\n for (var _len = arguments.length, params = Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n\n return new Promise(function () {\n for (var _len2 = arguments.length, rest = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n rest[_key2] = arguments[_key2];\n }\n\n promises[++currentId] = rest;\n worker.postMessage({\n id: currentId,\n action: _actions2['default'].CALL_FUNCTION_EXPORT,\n payload: {\n func: exp,\n params: params\n }\n }, getTransferableParams(params));\n });\n }));\n }, {}),\n run: function run(func, params) {\n return new Promise(function () {\n for (var _len3 = arguments.length, rest = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n rest[_key3] = arguments[_key3];\n }\n\n promises[++currentId] = rest;\n worker.postMessage({\n id: currentId,\n action: _actions2['default'].RUN_FUNCTION,\n payload: {\n func: func.toString(),\n params: params\n }\n }, getTransferableParams(params));\n });\n }\n });\n } else if (result === 1) {\n promises[id][1](payload);\n }\n } else if (action === _actions2['default'].CALL_FUNCTION_EXPORT || action === _actions2['default'].RUN_FUNCTION) {\n promises[id][result](payload);\n }\n\n promises[id] = null;\n };\n\n return new Promise(function () {\n for (var _len4 = arguments.length, params = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n params[_key4] = arguments[_key4];\n }\n\n promises[++currentId] = [].concat(params);\n worker.postMessage({\n id: currentId,\n action: _actions2['default'].COMPILE_MODULE,\n payload: (0, _utils.getWasmSource)(source)\n });\n });\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/utils.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/utils.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.__esModule = true;\n\nvar getWasmSource = exports.getWasmSource = function getWasmSource(source) {\n var result = source;\n\n if (typeof result === 'string' && typeof location !== 'undefined') {\n result = result.trim();\n\n if (result.indexOf('/') === 0) {\n result = location.origin + result;\n } else if (result.indexOf('http') !== 0) {\n result = location.href + (location.href[location.href.length - 1] === '/' ? '' : '/') + result;\n }\n }\n\n return result;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/utils.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/worker.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/worker.js ***!
|
||
\*******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.__esModule = true;\nexports['default'] = worker;\n\nfunction worker(e) {\n var _e$data = e.data,\n id = _e$data.id,\n action = _e$data.action,\n payload = _e$data.payload;\n\n var sendMessage = function sendMessage(result, data) {\n self.postMessage({\n id: id,\n action: action,\n result: result,\n payload: data\n });\n };\n\n var onError = function onError(ex) {\n return sendMessage(1, '' + ex);\n };\n\n var onSuccess = sendMessage.bind(null, 0);\n\n if (action === ACTIONS.COMPILE_MODULE) {\n Promise.resolve().then(function () {\n var res = void 0;\n\n if (getImportObject !== undefined) {\n importObject = getImportObject();\n }\n\n if (typeof payload === 'string') {\n res = fetch(payload);\n\n if (WebAssembly.instantiateStreaming !== undefined) {\n return WebAssembly.instantiateStreaming(res, importObject);\n }\n\n res = res.then(function (response) {\n return response.arrayBuffer();\n });\n } else {\n res = Promise.resolve(payload);\n }\n\n return res.then(function (buff) {\n return WebAssembly.compile(buff);\n }).then(function (module) {\n return WebAssembly.instantiate(module, importObject).then(function (instance) {\n return {\n module: module,\n instance: instance\n };\n });\n });\n }).then(function (_ref) {\n var module = _ref.module,\n instance = _ref.instance;\n moduleInstance = instance;\n wasmModule = module;\n onSuccess({\n exports: WebAssembly.Module.exports(module).filter(function (exp) {\n return exp.kind === 'function';\n }).map(function (exp) {\n return exp.name;\n })\n });\n })['catch'](onError);\n } else if (action === ACTIONS.CALL_FUNCTION_EXPORT) {\n var func = payload.func,\n params = payload.params;\n Promise.resolve().then(function () {\n var ctx = moduleInstance.exports;\n onSuccess(ctx[func].apply(ctx, params));\n })['catch'](onError);\n } else if (action === ACTIONS.RUN_FUNCTION) {\n var _func = payload.func,\n _params = payload.params;\n Promise.resolve().then(function () {\n var fun = new Function('return ' + _func)();\n onSuccess(fun({\n module: wasmModule,\n instance: moduleInstance,\n importObject: importObject,\n params: _params\n }));\n })['catch'](onError);\n }\n}\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/worker.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_webpack@4.44.1@webpack/buildin/global.js":
|
||
/*!***********************************!*\
|
||
!*** (webpack)/buildin/global.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n//# sourceURL=webpack://WasmPlayer/(webpack)/buildin/global.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_webpack@4.44.1@webpack/buildin/harmony-module.js":
|
||
/*!*******************************************!*\
|
||
!*** (webpack)/buildin/harmony-module.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("module.exports = function (originalModule) {\n if (!originalModule.webpackPolyfill) {\n var module = Object.create(originalModule); // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n Object.defineProperty(module, \"exports\", {\n enumerable: true\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n//# sourceURL=webpack://WasmPlayer/(webpack)/buildin/harmony-module.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_webpack@4.44.1@webpack/buildin/module.js":
|
||
/*!***********************************!*\
|
||
!*** (webpack)/buildin/module.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n//# sourceURL=webpack://WasmPlayer/(webpack)/buildin/module.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_webworkify-webpack@2.1.5@webworkify-webpack/index.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/_webworkify-webpack@2.1.5@webworkify-webpack/index.js ***!
|
||
\****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("function webpackBootstrapFunc(modules) {\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId])\n /******/\n return installedModules[moduleId].exports;\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n // identity function for calling harmony imports with the correct context\n\n /******/\n\n __webpack_require__.i = function (value) {\n return value;\n };\n /******/\n // define getter function for harmony exports\n\n /******/\n\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n /******/\n configurable: false,\n\n /******/\n enumerable: true,\n\n /******/\n get: getter\n /******/\n\n });\n /******/\n }\n /******/\n\n };\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"/\";\n /******/\n // on error function for async loading\n\n /******/\n\n __webpack_require__.oe = function (err) {\n console.error(err);\n throw err;\n };\n\n var f = __webpack_require__(__webpack_require__.s = ENTRY_MODULE);\n\n return f.default || f; // try to call default if defined to also support babel esmodule exports\n}\n\nvar moduleNameReqExp = '[\\\\.|\\\\-|\\\\+|\\\\w|\\/|@]+';\nvar dependencyRegExp = '\\\\(\\\\s*(\\/\\\\*.*?\\\\*\\/)?\\\\s*.*?(' + moduleNameReqExp + ').*?\\\\)'; // additional chars when output.pathinfo is true\n// http://stackoverflow.com/a/2593661/130442\n\nfunction quoteRegExp(str) {\n return (str + '').replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n}\n\nfunction isNumeric(n) {\n return !isNaN(1 * n); // 1 * n converts integers, integers as string (\"123\"), 1e3 and \"1e3\" to integers and strings to NaN\n}\n\nfunction getModuleDependencies(sources, module, queueName) {\n var retval = {};\n retval[queueName] = [];\n var fnString = module.toString();\n var wrapperSignature = fnString.match(/^function\\s?\\w*\\(\\w+,\\s*\\w+,\\s*(\\w+)\\)/);\n if (!wrapperSignature) return retval;\n var webpackRequireName = wrapperSignature[1]; // main bundle deps\n\n var re = new RegExp('(\\\\\\\\n|\\\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g');\n var match;\n\n while (match = re.exec(fnString)) {\n if (match[3] === 'dll-reference') continue;\n retval[queueName].push(match[3]);\n } // dll deps\n\n\n re = new RegExp('\\\\(' + quoteRegExp(webpackRequireName) + '\\\\(\"(dll-reference\\\\s(' + moduleNameReqExp + '))\"\\\\)\\\\)' + dependencyRegExp, 'g');\n\n while (match = re.exec(fnString)) {\n if (!sources[match[2]]) {\n retval[queueName].push(match[1]);\n sources[match[2]] = __webpack_require__(match[1]).m;\n }\n\n retval[match[2]] = retval[match[2]] || [];\n retval[match[2]].push(match[4]);\n } // convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3\n\n\n var keys = Object.keys(retval);\n\n for (var i = 0; i < keys.length; i++) {\n for (var j = 0; j < retval[keys[i]].length; j++) {\n if (isNumeric(retval[keys[i]][j])) {\n retval[keys[i]][j] = 1 * retval[keys[i]][j];\n }\n }\n }\n\n return retval;\n}\n\nfunction hasValuesInQueues(queues) {\n var keys = Object.keys(queues);\n return keys.reduce(function (hasValues, key) {\n return hasValues || queues[key].length > 0;\n }, false);\n}\n\nfunction getRequiredModules(sources, moduleId) {\n var modulesQueue = {\n main: [moduleId]\n };\n var requiredModules = {\n main: []\n };\n var seenModules = {\n main: {}\n };\n\n while (hasValuesInQueues(modulesQueue)) {\n var queues = Object.keys(modulesQueue);\n\n for (var i = 0; i < queues.length; i++) {\n var queueName = queues[i];\n var queue = modulesQueue[queueName];\n var moduleToCheck = queue.pop();\n seenModules[queueName] = seenModules[queueName] || {};\n if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue;\n seenModules[queueName][moduleToCheck] = true;\n requiredModules[queueName] = requiredModules[queueName] || [];\n requiredModules[queueName].push(moduleToCheck);\n var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName);\n var newModulesKeys = Object.keys(newModules);\n\n for (var j = 0; j < newModulesKeys.length; j++) {\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || [];\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]]);\n }\n }\n }\n\n return requiredModules;\n}\n\nmodule.exports = function (moduleId, options) {\n options = options || {};\n var sources = {\n main: __webpack_require__.m\n };\n var requiredModules = options.all ? {\n main: Object.keys(sources.main)\n } : getRequiredModules(sources, moduleId);\n var src = '';\n Object.keys(requiredModules).filter(function (m) {\n return m !== 'main';\n }).forEach(function (module) {\n var entryModule = 0;\n\n while (requiredModules[module][entryModule]) {\n entryModule++;\n }\n\n requiredModules[module].push(entryModule);\n sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })';\n src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) {\n return '' + JSON.stringify(id) + ': ' + sources[module][id].toString();\n }).join(',') + '});\\n';\n });\n src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) {\n return '' + JSON.stringify(id) + ': ' + sources.main[id].toString();\n }).join(',') + '}))(self);';\n var blob = new window.Blob([src], {\n type: 'text/javascript'\n });\n\n if (options.bare) {\n return blob;\n }\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n var workerUrl = URL.createObjectURL(blob);\n var worker = new window.Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_webworkify-webpack@2.1.5@webworkify-webpack/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/_webworkify@1.5.0@webworkify/index.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/_webworkify@1.5.0@webworkify/index.js ***!
|
||
\************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports; // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n\n sources[wkey] = ['function(require,module,exports){' + fn + '(self); }', wcache];\n }\n\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var scache = {};\n scache[wkey] = wkey;\n sources[skey] = ['function(require,module,exports){' + // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' + '(f.default ? f.default : f)(self);' + '}', scache];\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({' + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':[' + sources[key][0] + ',' + stringify(sources[key][1]) + ']';\n }).join(',') + '},{},[' + stringify(skey) + '])';\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n var blob = new Blob([src], {\n type: 'text/javascript'\n });\n\n if (options && options.bare) {\n return blob;\n }\n\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n//# sourceURL=webpack://WasmPlayer/./node_modules/_webworkify@1.5.0@webworkify/index.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/AudioWorker.js":
|
||
/*!**************************************!*\
|
||
!*** ./src/FlvPlayer/AudioWorker.js ***!
|
||
\**************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _common_soundPlayer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/soundPlayer */ \"./src/common/soundPlayer.js\");\n\n\n\nvar AudioWorker = function AudioWorker(self) {\n console.log(\"new AudioWorker.js\");\n self._requestAbort = false;\n self.soundPlayer = null;\n self.audioSampleQueue = [];\n\n var clearAudioQueue = function clearAudioQueue() {\n self.audioSampleQueue.length = 0;\n self.audioSampleQueue = []; //console.log(\"clean audio queue.\");\n };\n\n var OpenAudioPlayer = function OpenAudioPlayer(sampleFmt, channels, sampleRate) {\n if (self.soundPlayer == null) {\n var encoding = \"16bitInt\";\n\n switch (sampleFmt) {\n case 0:\n encoding = \"8bitInt\";\n break;\n\n case 1:\n encoding = \"16bitInt\";\n break;\n\n case 2:\n encoding = \"32bitInt\";\n break;\n\n case 3:\n encoding = \"32bitFloat\";\n break;\n\n default:\n this.logger.logError(\"Unsupported audio sampleFmt \" + sampleFmt + \"!\");\n }\n\n self.soundPlayer = new _common_soundPlayer__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n self.soundPlayer.init({\n encoding: encoding,\n channels: channels,\n sampleRate: sampleRate,\n flushingTime: 5000\n });\n }\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data;\n console.log(\"AudioWorker: recv data.\");\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenStream\"]:\n console.log(\"init audio player.\");\n OpenAudioPlayer(1, 2, 8000);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"]:\n console.log(\"recv audio data...\");\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"]:\n self._requestAbort = true;\n break;\n\n default:\n break;\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioWorker);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/AudioWorker.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/EasyFlvPlayer.js":
|
||
/*!****************************************!*\
|
||
!*** ./src/FlvPlayer/EasyFlvPlayer.js ***!
|
||
\****************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return EasyFlvPlayer; });\n/* harmony import */ var _common_webgl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/webgl */ \"./src/common/webgl.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! webworkify-webpack */ \"./node_modules/_webworkify-webpack@2.1.5@webworkify-webpack/index.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _common_soundPlayer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/soundPlayer */ \"./src/common/soundPlayer.js\");\n/* harmony import */ var _flv_js_player_flv_player_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flv.js/player/flv-player.js */ \"./src/FlvPlayer/flv.js/player/flv-player.js\");\n\n\n\n\n //import wasmWorker from 'wasm-worker';\n\nvar EasyFlvPlayer = /*#__PURE__*/function () {\n function EasyFlvPlayer(streamType, h5Video, h5Canvas, decodeType, callbackFunc, callbackPlayTimeFunc, callbackConnectStatusFunc, callbackUserPtr, hasAudio, cbFunc) {\n this.url = \"\";\n this.hasVideos = hasAudio;\n this.downloadWorker = null;\n this.decodeWorker = null;\n this.renderWorker = null;\n this.audioWorker = null;\n this.printStatInfo = false;\n this.pauseDisplay = false;\n this.enableLog = false; //是否启用日志\n\n this.streamType = streamType;\n this.h5Video = h5Video;\n this.canvas = h5Canvas;\n this.flvPlayer = null;\n this.decodeType = decodeType;\n this.callbackFunc = callbackFunc;\n this.cbFunc = cbFunc;\n this.callbackPlayTimeFunc = callbackPlayTimeFunc;\n this.callbackConnectStatusFunc = callbackConnectStatusFunc;\n this.callbackUserPtr = callbackUserPtr;\n this.avQueue = [];\n this.webGLPlayer = null;\n this.soundPlayer = null;\n this.fullScreenFlag = false;\n }\n\n var _proto = EasyFlvPlayer.prototype;\n\n _proto.destroy = function destroy() {\n if (this.webGLPlayer) {\n this.webGLPlayer.renderVideoFrame(null, 0, 0);\n }\n\n if (this.renderWorker && this.renderWorker !== undefined) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_1__[\"tCloseStream\"]\n };\n this.renderWorker.postMessage(objData);\n }\n\n if (this.soundPlayer) {\n this.soundPlayer.destroy();\n delete this.soundPlayer;\n this.soundPlayer = null;\n }\n\n if (this.flvPlayer) {\n this.flvPlayer.destroy();\n this.flvPlayer = null;\n }\n };\n\n _proto.logD = function logD(strLog) {\n if (this.enableLog) {\n console.log(\"FlvPlayer: \" + strLog);\n }\n };\n\n _proto.createDecodeWorker = function createDecodeWorker() {\n this.logD(\"create decode worker...\");\n this.decodeWorker = undefined; //if (config.enableWorker && (typeof (Worker) !== 'undefined')) {\n\n if (typeof Worker !== 'undefined') {\n var w;\n\n try {\n w = this.decodeWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_2__(/*require.resolve*/(/*! ../common/DecodeWorker.js */ \"./src/common/DecodeWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_1__[\"tOpenStream\"],\n url: _common_common__WEBPACK_IMPORTED_MODULE_1__[\"getFullURL\"](),\n isFlv: true\n };\n w.postMessage(objData);\n w.addEventListener('message', this.onwmsg);\n\n w.onerror = function (event) {};\n } catch (err) {\n //logger.warn('Error in worker:', err);\n //logger.error('Error while initializing DemuxerWorker, fallback on DemuxerInline');\n console.log(\"Create Decode Worker fail: \" + err);\n\n if (w) {// revoke the Object URL that was used to create demuxer worker, so as not to leak it\n //global.URL.revokeObjectURL(w.objectURL);\n }\n\n this.w = undefined;\n }\n } else {}\n } //创建音频播放线程\n ;\n\n _proto.createAudioWorker = function createAudioWorker() {\n this.logD(\"create audio play worker...\");\n this.audioWorker = undefined;\n\n if (typeof Worker !== 'undefined') {\n var w;\n\n try {\n w = this.audioWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_2__(/*require.resolve*/(/*! ./AudioWorker.js */ \"./src/FlvPlayer/AudioWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_1__[\"tOpenStream\"]\n };\n w.postMessage(objData);\n w.addEventListener('message', this.onwmsg);\n\n w.onerror = function (event) {};\n } catch (err) {\n console.log(\"Create audio Worker fail: \" + err);\n this.audioWorker = undefined;\n }\n } else {\n console.log(\"Unsupport worker...\");\n } //如果音频播放线程创建失败, 则在主线程中播放\n\n\n if (this.audioWorker === undefined) {}\n };\n\n _proto.decodeAndDisplayLoop = function decodeAndDisplayLoop() {\n if (this.avQueue.length < 1) return;\n\n while (this.avQueue.length > 0) {\n var frame = this.avQueue[0]; //console.log(\"video decode queue length: \" + this.videoSampleQueue.length + \" FPS[\" + frame.f + \"] Interval[\" + this.videoInterval + \"]\");\n //this.onProcStreamData(frame.data, frame.data.length);\n\n this.avQueue.shift();\n }\n };\n\n _proto.play = function play(url, startPlayTimeSecs) {\n //非暂停状态时, 为开始播放\n if (!this.pauseDisplay) {\n this.url = url;\n\n if (this.flvPlayer == null) {\n this.flvPlayer = new _flv_js_player_flv_player_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n type: this.streamType,\n isLive: true,\n url: url,\n // hasAudio: this.hasVideos,\n startPlaySecs: startPlayTimeSecs\n }, {\n callbackFunc: this.cbFunc,\n streamType: this.streamType,\n enableWorker: false,\n //lazyLoad: true,\n //isLive: true,\n //lazyLoad: false,\n lazyLoadMaxDuration: this.streamType === 'flv' ? 1 : 3 * 60,\n //3 * 60,\n lazyLoadRecoverDuration: this.streamType === 'flv' ? 1 : 30,\n //30,\n deferLoadAfterSourceOpen: true,\n //true,\n // autoCleanupSourceBuffer: default as false, leave unspecified\n //autoCleanupSourceBuffer: false,\n autoCleanupMaxBackwardDuration: this.streamType === 'flv' ? 120 : 3 * 60,\n //3 * 60,\n autoCleanupMinBackwardDuration: this.streamType === 'flv' ? 60 : 2 * 60,\n //2 * 60,\n //statisticsInfoReportInterval: 5,\t//600,\n //fixAudioTimestampGap: true,\t//false,\t//true,\n seekType: 'range',\n enableStashBuffer: false,\n //this.decodeType === 'soft' ? false : (this.streamType === 'flv' ? true : false),\t\t\t//启用缓存 当下面的decodeType为soft, 或流为HLS时, 此处需设置为false\n decodeType: this.decodeType //'auto',\t\t\t\t\t//解码方式: auto, soft\n\n }); //this.h5Video.url = url;\n\n if (this.streamType === 'flv') {\n _common_common__WEBPACK_IMPORTED_MODULE_1__[\"setLiveStreamType\"](true);\n }\n }\n\n this.flvPlayer.setCallback(this.callbackFunc, this.callbackPlayTimeFunc, this.callbackConnectStatusFunc, this.callbackUserPtr);\n this.flvPlayer.attachMediaElement(this.h5Video, this.canvas);\n this.flvPlayer.load();\n this.flvPlayer.play(); //this.createRenderWorker();\t\t//创建显示线程\n //this.createDownloadWorker();\t//创建拉流线程\n //this.createDecodeWorker();\n //this.createAudioWorker();\t\t//创建音频播放线程\n } else {\n this.resume();\n }\n\n return true;\n };\n\n _proto.stop = function stop() {\n this.pauseDisplay = false;\n this.closeAudio();\n\n if (this.flvPlayer) {\n this.flvPlayer.unload();\n this.flvPlayer.detachMediaElement();\n }\n\n return true;\n };\n\n _proto.isPause = function isPause() {\n return this.pauseDisplay;\n };\n\n _proto.pause = function pause() {\n this.pauseDisplay = true;\n\n if (this.flvPlayer) {\n this.flvPlayer.pause();\n }\n };\n\n _proto.resume = function resume() {\n this.pauseDisplay = false;\n\n if (this.flvPlayer) {\n this.flvPlayer.resume();\n }\n };\n\n _proto.seek = function seek(seekValue, seekType) {\n this.pauseDisplay = false;\n\n if (this.flvPlayer) {\n this.flvPlayer.seek(seekValue, seekType);\n }\n };\n\n _proto.setTrack = function setTrack(timeTrack, timeLabel) {};\n\n _proto.openAudio = function openAudio() {\n if (this.flvPlayer) {\n return this.flvPlayer.openAudio();\n }\n\n return false;\n };\n\n _proto.closeAudio = function closeAudio() {\n if (this.flvPlayer) {\n return this.flvPlayer.closeAudio();\n }\n\n return false;\n };\n\n _proto.openStatinfo = function openStatinfo() {\n this.printStatInfo = true;\n return true;\n };\n\n _proto.closeStatinfo = function closeStatinfo() {\n this.printStatInfo = false;\n return true;\n };\n\n _proto.isFullScreen = function isFullScreen() {\n return this.fullScreenFlag;\n };\n\n _proto.canvasFullscreen = function canvasFullscreen() {\n var canvas = this.canvas;\n\n if (canvas.RequestFullScreen) {\n canvas.RequestFullScreen();\n } else if (canvas.webkitRequestFullScreen) {\n canvas.webkitRequestFullScreen();\n } else if (canvas.mozRequestFullScreen) {\n canvas.mozRequestFullScreen();\n } else if (canvas.msRequestFullscreen) {\n canvas.msRequestFullscreen();\n } else {\n _common_common__WEBPACK_IMPORTED_MODULE_1__[\"MediaWorkerLog\"](\"This browser doesn't supporter fullscreen\");\n }\n };\n\n _proto.canvasExitFullscreen = function canvasExitFullscreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n _common_common__WEBPACK_IMPORTED_MODULE_1__[\"MediaWorkerLog\"](\"Exit fullscreen doesn't work\");\n }\n };\n\n _proto.fullscreen = function fullscreen(enable) {\n if (enable == 1) {\n if (!this.fullScreenFlag) {\n this.canvasFullscreen();\n this.fullScreenFlag = true;\n return true;\n }\n } else {\n if (this.fullScreenFlag) {\n this.canvasExitFullscreen();\n this.fullScreenFlag = false;\n return true;\n }\n }\n\n return false;\n };\n\n return EasyFlvPlayer;\n}();\n\n\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/EasyFlvPlayer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/TSDemuxer.js":
|
||
/*!************************************!*\
|
||
!*** ./src/FlvPlayer/TSDemuxer.js ***!
|
||
\************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _adts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adts */ \"./src/FlvPlayer/adts.js\");\n/* harmony import */ var _exp_golomb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./exp-golomb */ \"./src/FlvPlayer/exp-golomb.js\");\n/* harmony import */ var _flv_js_demux_sps_parser_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./flv.js/demux/sps-parser.js */ \"./src/FlvPlayer/flv.js/demux/sps-parser.js\");\n/* harmony import */ var _flv_js_core_media_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flv.js/core/media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _flv_js_demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./flv.js/demux/flv-demuxer.js */ \"./src/FlvPlayer/flv.js/demux/flv-demuxer.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\nvar TSDemuxer = /*#__PURE__*/function () {\n function TSDemuxer(config, callbackMediaDataFunc, callbackMediaDataUserPtr) {\n this.TAG = 'TSDemuxer';\n this._config = config;\n this._onError = null;\n this._onMediaInfo = null;\n this._onMetaDataArrived = null;\n this._onScriptDataArrived = null;\n this._onTrackMetadata = null;\n this._onDataAvailable = null;\n this._hasAudio = false;\n this._hasVideo = false;\n this._hasAudioFlagOverrided = false;\n this._hasVideoFlagOverrided = false;\n this._initVideoMetadata = false;\n this._initAudioMetadata = false;\n this._mediaInfo = new _flv_js_core_media_info_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n this._mediaInfo.hasAudio = false;\n this._mediaInfo.hasVideo = false;\n this._metadata = null;\n this._audioMetadata = null;\n this._videoMetadata = null;\n this.tagPosition = 0;\n this.filePosition = 0;\n this.isHEVC = 0;\n this.isAAC = 0;\n this.avcTrackPid = -1;\n this.audioTrackPid = -1;\n this.id3TrackPid = -1;\n this.audioSampleRate = 0;\n this.audioChannel = 2;\n this.audioBitPerSample = 16;\n this.avcTrackPesData = null;\n this.audioTrackPesData = null;\n this.id3TrackPesData = null;\n this.findKeyframe = true;\n this.syncVideoPts = 0;\n this.syncAudioPts = 0;\n this.startVideoPts = 0;\n this.startAudioPts = 0; //this.currVideoPts = 0;\n\n this.accurateTimeOffset = 0;\n this.lastVideoPts = 0;\n this.currentVideoPts = 0;\n this.seekVideoHistoryPts = 0;\n this.currentAudioPts = 0;\n this.audioFrameNum = 0;\n this.reset = 0; //===============================================\n\n this._videoTrack = {\n type: 'video',\n id: 1,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n this._audioTrack = {\n type: 'audio',\n id: 2,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n this._timestampBase = 0; // int32, in milliseconds\n\n this._timescale = 1000;\n this._duration = 0; // int32, in milliseconds\n\n this._durationOverrided = false;\n this._AVC_SPS = null;\n this._AVC_PPS = null;\n this._HEVC_VPS = null;\n this._HEVC_SPS = null;\n this._HEVC_PPS = null;\n this._StartCode = [0, 0, 0, 1];\n this._AVC_Config = null;\n this._callbackInitFlag = false;\n this._callbackMediaDataFunc = callbackMediaDataFunc;\n this._callbackMediaDataUserPtr = callbackMediaDataUserPtr;\n } //=================================================================\n\n\n var _proto = TSDemuxer.prototype;\n\n _proto.bindDataSource = function bindDataSource(loader) {\n loader.onDataArrival = this.append.bind(this);\n return this;\n } // prototype: function(type: string, metadata: any): void\n ;\n\n _proto.resetMediaInfo = function resetMediaInfo() {\n this._mediaInfo = new _flv_js_core_media_info_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n };\n\n _proto.resetMediaPts = function resetMediaPts(flag) {\n this.reset = flag;\n this.syncVideoPts = 0;\n this.syncAudioPts = 0;\n this.findKeyframe = true;\n this._videoTrack.samples = [];\n this._audioTrack.samples = [];\n return;\n this.startVideoPts = 0;\n this.startAudioPts = 0;\n this.accurateTimeOffset = 0; //this.lastVideoPts = 0;\n\n this.currentAudioPts = 0;\n this.audioFrameNum = 0;\n };\n\n _proto._onDataAvailableToSoftwareDecodeVideo = function _onDataAvailableToSoftwareDecodeVideo(codecId, videoTrack) {\n var track = videoTrack;\n var samples = track.samples;\n\n if (codecId < 1 && samples.length > 0) {\n console.log(\"EXCEPTION:: No used...\");\n return;\n }\n\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n var frameLength = 0;\n\n for (var j = 0; j < sample.units.length; j++) {\n frameLength += sample.units[j].data.length;\n }\n\n var offset = 0;\n var bufdata = new Uint8Array(frameLength); //for (let j = 0; j < sample.units.length; j++) {\n\n while (sample.units.length) {\n var unit = sample.units.shift();\n\n if (codecId == 27) {\n unit.data[0] = 0;\n unit.data[1] = 0;\n unit.data[2] = 0;\n unit.data[3] = 1;\n }\n\n bufdata.set(unit.data, offset);\n offset += unit.data.length;\n }\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode: \" + bufdata);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //console.log(\"TSDemuxer.js::callback pts: \" + sample.pts);\n //mediaType, codecId, framedata, framesize, samplerate, channels, bitPerSample) {\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, codecId, sample.isKeyframe, bufdata, frameLength, sample.pts, 0, 0);\n }\n }\n };\n\n _proto._onDataAvailableToSoftwareDecodeAudio = function _onDataAvailableToSoftwareDecodeAudio(codecId, audioTrack) {\n //console.log(\"proc audio frame....\" + codecId + \" samples: \" + audioTrack.samples.length);\n var track = audioTrack;\n var samples = track.samples;\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode audio: \" + sample.unit);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //mediaType, codecId, framedata, framesize, samplerate, channels, bitPerSample) {\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 2, codecId, 0, sample.unit, sample.length, this._SampleRate, this._ChannelNum, this._SampleRate >= 44100 ? 32 : 16);\n }\n }\n } //=================================================================\n\n /**\r\n * Creates a track model internal to demuxer used to drive remuxing input\r\n *\r\n * @param {string} type 'audio' | 'video' | 'id3' | 'text'\r\n * @param {number} duration\r\n * @return {object} TSDemuxer's internal track model\r\n */\n ;\n\n TSDemuxer.createTrack = function createTrack(type, duration) {\n return {\n container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n type: type,\n id: RemuxerTrackIdConfig[type],\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: type === 'video' ? 0 : undefined,\n isAAC: type === 'audio' ? true : undefined,\n duration: type === 'audio' ? duration : undefined,\n isHEVC: 0\n };\n };\n\n TSDemuxer._syncOffset = function _syncOffset(data) {\n // scan 1000 first bytes\n var scanwindow = Math.min(1000, data.length - 3 * 188);\n var i = 0;\n\n while (i < scanwindow) {\n // a TS fragment should contain at least 3 TS packets, a PAT, a PMT, and one PID, each starting with 0x47\n if (data[i] === 0x47 && data[i + 188] === 0x47 && data[i + 2 * 188] === 0x47) {\n return i;\n } else {\n i++;\n }\n }\n\n return -1;\n };\n\n _proto.destroy = function destroy() {\n this._initPTS = this._initDTS = undefined;\n this._duration = 0;\n };\n\n _proto.parsePAT = function parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n return (data[offset + 10] & 0x1F) << 8 | data[offset + 11]; // logger.log('PMT PID:' + this._pmtId);\n };\n\n _proto.parsePMT = function parsePMT(data, offset, mpegSupported, isSampleAes) {\n var sectionLength,\n tableEnd,\n programInfoLength,\n pid,\n result = {\n audio: -1,\n avc: -1,\n hevc: -1,\n id3: -1,\n isAAC: true\n };\n sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n tableEnd = offset + 3 + sectionLength - 4; // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n\n programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11]; // advance the offset to the first entry in the mapping table\n\n offset += 12 + programInfoLength;\n\n while (offset < tableEnd) {\n pid = (data[offset + 1] & 0x1F) << 8 | data[offset + 2];\n\n switch (data[offset]) {\n case 0xcf:\n // SAMPLE-AES AAC\n if (!isSampleAes) {\n //logger.log('unknown stream type:' + data[offset]);\n break;\n }\n\n /* falls through */\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n\n case 0x0f:\n // logger.log('AAC PID:' + pid);\n if (result.audio === -1) {\n result.audio = pid;\n }\n\n break;\n // Packetized metadata (ID3)\n\n case 0x15:\n // logger.log('ID3 PID:' + pid);\n if (result.id3 === -1) {\n result.id3 = pid;\n }\n\n break;\n\n case 0xdb:\n // SAMPLE-AES AVC\n if (!isSampleAes) {\n logger.log('unknown stream type:' + data[offset]);\n break;\n }\n\n /* falls through */\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n\n case 0x1b:\n // logger.log('AVC PID:' + pid);\n if (result.avc === -1) {\n result.avc = pid;\n }\n\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"setCodecTypeStr\"](\"H264\");\n break;\n //gavin\n\n case 0x24:\n if (result.avc === -1) {\n result.avc = pid;\n result.hevc = pid;\n }\n\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"setCodecTypeStr\"](\"H265\");\n break;\n // ISO/IEC 11172-3 (MPEG-1 audio)\n // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n\n case 0x03:\n case 0x04:\n // logger.log('MPEG PID:' + pid);\n if (!mpegSupported) {\n logger.log('MPEG audio found, not supported in this browser for now');\n } else if (result.audio === -1) {\n result.audio = pid;\n result.isAAC = false;\n }\n\n break;\n\n case 0x24:\n logger.warn('HEVC stream type found, not supported for now');\n break;\n\n default:\n //logger.log('unknown stream type:' + data[offset]);\n break;\n } // move to the next table entry\n // skip past the elementary stream descriptors, if present\n\n\n offset += ((data[offset + 3] & 0x0F) << 8 | data[offset + 4]) + 5;\n }\n\n return result;\n };\n\n _proto.parsePES = function parsePES(stream) {\n if (this.reset === 1) {\n return;\n }\n\n var i = 0,\n frag,\n pesFlags,\n pesPrefix,\n pesLen,\n pesHdrLen,\n pesData,\n pesPts,\n pesDts,\n payloadStartOffset,\n data = stream.data; // safety check\n\n if (!stream || stream.size === 0) {\n return null;\n } // we might need up to 19 bytes to read PES header\n // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n // usually only one merge is needed (and this is rare ...)\n\n\n while (data[0].length < 19 && data.length > 1) {\n var newData = new Uint8Array(data[0].length + data[1].length);\n newData.set(data[0]);\n newData.set(data[1], data[0].length);\n data[0] = newData;\n data.splice(1, 1);\n } // retrieve PTS/DTS from first fragment\n\n\n frag = data[0];\n pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5]; // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n // minus 6 : PES header size\n\n if (pesLen && pesLen > stream.size - 6) {\n return null;\n }\n\n pesFlags = frag[7];\n\n if (pesFlags & 0xC0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\r\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\r\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0E) * 536870912 + // 1 << 29\n (frag[10] & 0xFF) * 4194304 + // 1 << 22\n (frag[11] & 0xFE) * 16384 + // 1 << 14\n (frag[12] & 0xFF) * 128 + // 1 << 7\n (frag[13] & 0xFE) / 2; // check if greater than 2^32 -1\n\n if (pesPts > 4294967295) {\n // decrement 2^33\n //pesPts -= 8589934592;\n pesPts -= 4294967295; //gavin\n }\n\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0E) * 536870912 + // 1 << 29\n (frag[15] & 0xFF) * 4194304 + // 1 << 22\n (frag[16] & 0xFE) * 16384 + // 1 << 14\n (frag[17] & 0xFF) * 128 + // 1 << 7\n (frag[18] & 0xFE) / 2; // check if greater than 2^32 -1\n\n if (pesDts > 4294967295) {\n // decrement 2^33\n //pesDts -= 8589934592;\n pesDts -= 4294967295;\n }\n\n if (pesPts - pesDts > 60 * 90000) {\n logger.warn(Math.round((pesPts - pesDts) / 90000) + \"s delta between PTS and DTS, align them\");\n pesPts = pesDts;\n }\n } else {\n pesDts = pesPts;\n }\n }\n\n pesHdrLen = frag[8]; // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n\n payloadStartOffset = pesHdrLen + 9;\n\n if (stream.size <= payloadStartOffset) {\n return null;\n }\n\n stream.size -= payloadStartOffset; // reassemble PES packet\n\n pesData = new Uint8Array(stream.size);\n\n for (var j = 0, dataLen = data.length; j < dataLen; j++) {\n frag = data[j];\n var len = frag.byteLength;\n\n if (payloadStartOffset) {\n if (payloadStartOffset > len) {\n // trim full frag if PES header bigger than frag\n payloadStartOffset -= len;\n continue;\n } else {\n // trim partial frag if PES header smaller than frag\n frag = frag.subarray(payloadStartOffset);\n len -= payloadStartOffset;\n payloadStartOffset = 0;\n }\n }\n\n pesData.set(frag, i);\n i += len;\n }\n\n if (pesLen) {\n // payload size : remove PES header + PES extension\n pesLen -= pesHdrLen + 3;\n }\n\n return {\n data: pesData,\n pts: pesPts,\n dts: pesDts,\n len: pesLen\n };\n } else {\n return null;\n }\n };\n\n _proto.pushAccesUnit = function pushAccesUnit(avcSample, avcTrack) {\n if (avcSample.units.length && avcSample.frame) {\n var samples = avcTrack.samples;\n var nbSamples = samples.length; // if sample does not have PTS/DTS, patch with last sample PTS/DTS\n\n if (isNaN(avcSample.pts)) {\n if (nbSamples) {\n var lastSample = samples[nbSamples - 1];\n avcSample.pts = lastSample.pts;\n avcSample.dts = lastSample.dts;\n } else {\n // dropping samples, no timestamp found\n avcTrack.dropped++;\n return;\n }\n } // only push AVC sample if starting with a keyframe is not mandatory OR\n // if keyframe already found in this fragment OR\n // keyframe found in last fragment (track.sps) AND\n // samples already appended (we already found a keyframe in this fragment) OR fragment is contiguous\n\n\n if (!this.config.forceKeyFrameOnDiscontinuity || avcSample.key === true || avcTrack.sps && (nbSamples || this.contiguous)) {\n avcSample.id = nbSamples;\n samples.push(avcSample);\n } else {\n // dropped samples, track it\n avcTrack.dropped++;\n }\n }\n\n if (avcSample.debug.length) {\n logger.log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug);\n }\n };\n\n _proto.parseAVCPES = function parseAVCPES(pes, last, startTimeSecs) {\n var _this = this;\n\n // logger.log('parse new PES');\n\n /*\r\n var dur = 0;\r\n if (this.startVideoPts > 0) {\r\n dur = (pes.pts - this.startVideoPts) / 90000;\r\n dur += startTimeSecs;\r\n //console.log(\"dur: \" + dur);\r\n }\r\n else {\r\n this.startVideoPts = pes.pts;\r\n dur = startTimeSecs;\r\n //console.log(\"dur... pes: \" + pes.pts);\r\n }\r\n */\n var bSetInitPts = 0;\n\n if (this.startVideoPts === 0) {\n this.startVideoPts = pes.pts;\n bSetInitPts = 1;\n } else if (pes.pts < this.startVideoPts) {\n this.startVideoPts = pes.pts;\n bSetInitPts = 1;\n }\n /*\r\n else if (pes.pts > this.lastVideoPts + 1000*90) {\r\n this.startVideoPts = pes.pts;\r\n bSetInitPts = 1;\r\n }\r\n if (bSetInitPts === 1) {\r\n this.lastVideoPts = pes.pts;\r\n }\r\n */\n //var videoPts = pes.pts;\n //var oneFramePts = (pes.pts - this.startVideoPts) / 90;\n //pes.pts = oneFramePts + this.currentVideoPts;\n //this.currentVideoPts += oneFramePts;\n //this.startVideoPts = videoPts;\n\n\n this.audioFrameNum = 0; //console.log(\"AVC... pes: \" + pes.pts);\n //var objData = {\n // cmd: common.tFrameData,\n // workerId: common.DOWNLOAD_WORKER_ID,\n // mediaType: 1,\n // codecId: 27,\n // flag: last,\n // pts: pes.pts,\n // playTimeSec: dur,\n // dat: pes.data\n //};\n //self.postMessage(objData, [objData.dat.buffer]);\n\n var units = this._parseAVCNALu(pes.data);\n\n var tmpUnits = [];\n var tmpLength = 0; //return;\n //====================================================================\n\n /*\r\n let track = this._avcTrack,\r\n units = this._parseAVCNALu(pes.data),\r\n debug = false,\r\n expGolombDecoder,\r\n avcSample = this.avcSample,\r\n push,\r\n spsfound = false,\r\n i,\r\n pushAccesUnit = this.pushAccesUnit.bind(this),\r\n createAVCSample = function (key, pts, dts, debug) {\r\n return { key: key, pts: pts, dts: dts, units: [], debug: debug };\r\n };\r\n // free pes.data to save up some memory\r\n */\n\n pes.data = null; // if new NAL units found and last sample still there, let's push ...\n // this helps parsing streams with missing AUD (only do this if AUD never found)\n\n /*\r\n if (avcSample && units.length && !track.audFound) {\r\n pushAccesUnit(avcSample, track);\r\n avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, '');\r\n }\r\n */\n\n var keyframe = false;\n var push = false;\n var spsfound = false;\n units.forEach(function (unit) {\n var tmpLen = unit.data.length;\n var tmpDat = new Uint8Array(4 + tmpLen);\n tmpDat[0] = tmpLen >> 24 & 0xFF;\n tmpDat[1] = tmpLen >> 16 & 0xFF;\n tmpDat[2] = tmpLen >> 8 & 0xFF;\n tmpDat[3] = tmpLen & 0xFF;\n tmpDat.set(unit.data, 4); //console.log(\"unit.type: \" + unit.type);\n //let tmpUnit = { data: tmpDat, type: unit.type, state: 0 };\n\n var tmpUnit = {\n type: unit.type,\n data: tmpDat\n };\n tmpLength += tmpDat.length;\n tmpUnits.push(tmpUnit);\n\n switch (unit.type) {\n // NDR\n case 1:\n push = true;\n /*\r\n if (!avcSample) {\r\n avcSample = this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\r\n }\r\n if (debug) {\r\n avcSample.debug += 'NDR ';\r\n }\r\n avcSample.frame = true;\r\n */\n\n var data = unit.data; // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n\n if (spsfound && data.length > 4) {\n // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n var sliceType = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](data).readSliceType(); // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n // if (sliceType === 2 || sliceType === 7) {\n\n if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n //avcSample.key = true;\n console.log(\"key = true\");\n }\n }\n\n break;\n // IDR\n\n case 5:\n push = true;\n _this.findKeyframe = false; //<2F><><EFBFBD>ҵ<EFBFBD><D2B5>ؼ<EFBFBD>֡\n //console.log(\"found IDR\");\n\n keyframe = true; // handle PES not starting with AUD\n\n /*\r\n if (!avcSample) {\r\n avcSample = this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\r\n }\r\n if (debug) {\r\n avcSample.debug += 'IDR ';\r\n }\r\n avcSample.key = true;\r\n avcSample.frame = true;\r\n */\n\n break;\n // SEI\n\n case 6:\n push = true; //console.log(\"found SEI\");\n\n /*\r\n if (debug && avcSample) {\r\n avcSample.debug += 'SEI ';\r\n }\r\n */\n\n var expGolombDecoder = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](_this.discardEPB(unit.data)); // skip frameType\n\n expGolombDecoder.readUByte();\n var payloadType = 0;\n var payloadSize = 0;\n var endOfCaptions = false;\n var b = 0;\n\n while (!endOfCaptions && expGolombDecoder.bytesAvailable > 1) {\n payloadType = 0;\n\n do {\n b = expGolombDecoder.readUByte();\n payloadType += b;\n } while (b === 0xFF); // Parse payload size.\n\n\n payloadSize = 0;\n\n do {\n b = expGolombDecoder.readUByte();\n payloadSize += b;\n } while (b === 0xFF); // TODO: there can be more than one payload in an SEI packet...\n // TODO: need to read type and size in a while loop to get them all\n\n\n if (payloadType === 4 && expGolombDecoder.bytesAvailable !== 0) {\n endOfCaptions = true;\n var countryCode = expGolombDecoder.readUByte();\n\n if (countryCode === 181) {\n var providerCode = expGolombDecoder.readUShort();\n\n if (providerCode === 49) {\n var userStructure = expGolombDecoder.readUInt();\n\n if (userStructure === 0x47413934) {\n var userDataType = expGolombDecoder.readUByte(); // Raw CEA-608 bytes wrapped in CEA-708 packet\n\n if (userDataType === 3) {\n var firstByte = expGolombDecoder.readUByte();\n var secondByte = expGolombDecoder.readUByte();\n var totalCCs = 31 & firstByte;\n var byteArray = [firstByte, secondByte];\n\n for (i = 0; i < totalCCs; i++) {\n // 3 bytes per CC\n byteArray.push(expGolombDecoder.readUByte());\n byteArray.push(expGolombDecoder.readUByte());\n byteArray.push(expGolombDecoder.readUByte());\n }\n\n _this._insertSampleInOrder(_this._txtTrack.samples, {\n type: 3,\n pts: pes.pts,\n bytes: byteArray\n });\n }\n }\n }\n }\n } else if (payloadType === 5 && expGolombDecoder.bytesAvailable !== 0) {\n endOfCaptions = true;\n\n if (payloadSize > 16) {\n var uuidStrArray = [];\n\n for (i = 0; i < 16; i++) {\n uuidStrArray.push(expGolombDecoder.readUByte().toString(16));\n\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n uuidStrArray.push('-');\n }\n }\n\n var length = payloadSize - 16;\n var userDataPayloadBytes = new Uint8Array(length);\n\n for (i = 0; i < length; i++) {\n userDataPayloadBytes[i] = expGolombDecoder.readUByte();\n }\n\n _this._insertSampleInOrder(_this._txtTrack.samples, {\n pts: pes.pts,\n payloadType: payloadType,\n uuid: uuidStrArray.join(''),\n userDataBytes: userDataPayloadBytes,\n userData: utf8ArrayToStr(userDataPayloadBytes.buffer)\n });\n }\n } else if (payloadSize < expGolombDecoder.bytesAvailable) {\n for (i = 0; i < payloadSize; i++) {\n expGolombDecoder.readUByte();\n }\n }\n }\n\n break;\n // SPS\n\n case 7:\n push = true;\n spsfound = true;\n _this.findKeyframe = false; //<2F><><EFBFBD>ҵ<EFBFBD><D2B5>ؼ<EFBFBD>֡\n\n _this.tagPosition = _this.filePosition; //console.log(\"found SPS\");\n\n _this._AVC_Config = _flv_js_demux_sps_parser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].parseSPS(unit.data);\n var config = _this._AVC_Config;\n var codecString = 'avc1.';\n\n if (config) {\n //console.log(\"config2: \" + config);\n var codecArray = unit.data.subarray(1, 4);\n\n for (var j = 0; j < 3; j++) {\n var h = codecArray[j].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecString += h;\n } //console.log(\"codecString: \" + codecString);\n\n }\n /*\r\n expGolombDecoder = new ExpGolomb(unit.data);\r\n let config = expGolombDecoder.readSPS();\r\n let width = config.width;\r\n let height = config.height;\r\n let pixelRatio = config.pixelRatio;\r\n let sps = [unit.data];\r\n let duration = this._duration;\r\n let codecarray = unit.data.subarray(1, 4);\r\n let codecstring = 'avc1.';\r\n let i = 0;\r\n for (i = 0; i < 3; i++) {\r\n let h = codecarray[i].toString(16);\r\n if (h.length < 2) {\r\n h = '0' + h;\r\n }\r\n codecstring += h;\r\n }\r\n let codec = codecstring;\r\n console.log(\"parse sps... \" + codec);\r\n */\n //==========================================================\n\n\n if (!_this._initVideoMetadata) {\n if (_this._AVC_SPS == null) {\n _this._AVC_SPS = new Uint8Array(unit.data.length + 4);\n\n _this._AVC_SPS.set(_this._StartCode, 0);\n\n _this._AVC_SPS.set(unit.data, 4);\n }\n\n var meta = _this._videoMetadata;\n var _track = _this._videoTrack; //let le = this._littleEndian;\n //let v = new DataView(arrayBuffer, dataOffset, dataSize);\n\n if (!meta) {\n if (_this._hasVideo === false && _this._hasVideoFlagOverrided === false) {\n _this._hasVideo = true;\n _this._mediaInfo.hasVideo = true;\n }\n\n meta = _this._videoMetadata = {};\n meta.type = 'video';\n meta.id = _track.id;\n meta.timescale = _this._timescale;\n meta.duration = _this._duration;\n } else {\n if (typeof meta.avcc !== 'undefined') {\n Log.w(_this.TAG, 'Found another AVCDecoderConfigurationRecord!');\n }\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {\n meta.frameRate = _this._referenceFrameRate;\n }\n\n if (meta.frameRate !== undefined) {\n var fps_den = meta.frameRate.fps_den;\n var fps_num = meta.frameRate.fps_num;\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n }\n /*\r\n let codecArray = sps.subarray(1, 4);\r\n let codecString = 'avc1.';\r\n for (let j = 0; j < 3; j++) {\r\n let h = codecArray[j].toString(16);\r\n if (h.length < 2) {\r\n h = '0' + h;\r\n }\r\n codecString += h;\r\n }\r\n */\n\n\n meta.codec = codecString;\n var mi = _this._mediaInfo;\n mi.width = meta.codecWidth;\n mi.height = meta.codecHeight;\n\n if (meta.frameRate !== undefined) {\n mi.fps = meta.frameRate.fps;\n }\n\n mi.profile = meta.profile;\n mi.level = meta.level;\n mi.refFrames = config.ref_frames;\n mi.chromaFormat = config.chroma_format_string;\n mi.sarNum = meta.sarRatio.width;\n mi.sarDen = meta.sarRatio.height;\n mi.videoCodec = codecString;\n\n if (mi.hasAudio) {\n if (mi.audioCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + '\"';\n }\n\n if (mi.isComplete()) {\n _this._onMediaInfo(mi);\n }\n } //==========================================================\n\n /*\r\n if (debug && avcSample) {\r\n avcSample.debug += 'SPS ';\r\n }\r\n if (!track.sps) {\r\n expGolombDecoder = new ExpGolomb(unit.data);\r\n let config = expGolombDecoder.readSPS();\r\n track.width = config.width;\r\n track.height = config.height;\r\n track.pixelRatio = config.pixelRatio;\r\n track.sps = [unit.data];\r\n track.duration = this._duration;\r\n let codecarray = unit.data.subarray(1, 4);\r\n let codecstring = 'avc1.';\r\n for (i = 0; i < 3; i++) {\r\n let h = codecarray[i].toString(16);\r\n if (h.length < 2) {\r\n h = '0' + h;\r\n }\r\n codecstring += h;\r\n }\r\n track.codec = codecstring;\r\n }\r\n */\n\n\n break;\n // PPS\n\n case 8:\n push = true;\n _this.findKeyframe = false; //<2F><><EFBFBD>ҵ<EFBFBD><D2B5>ؼ<EFBFBD>֡\n //console.log(\"found PPS\");\n\n if (_this._AVC_PPS == null) {\n _this._AVC_PPS = new Uint8Array(unit.data.length + 4);\n\n _this._AVC_PPS.set(_this._StartCode, 0);\n\n _this._AVC_PPS.set(unit.data, 4);\n }\n\n if (!_this._initVideoMetadata) {\n _this._initVideoMetadata = true;\n var _meta = _this._videoMetadata;\n\n if (_meta.avcc == null) {\n /*\r\n var version = v.getUint8(0); // configurationVersion\r\n var avcProfile = v.getUint8(1); // avcProfileIndication\r\n var profileCompatibility = v.getUint8(2); // profile_compatibility\r\n var avcLevel = v.getUint8(3); // AVCLevelIndication\r\n */\n var datOffset = 0;\n var dataSize = 5 + 1 + 2 + (_this._AVC_SPS.length - 4) + 1 + 2 + (_this._AVC_PPS.length - 4);\n _meta.avcc = new Uint8Array(dataSize + 1);\n _meta.avcc[0] = 1;\n _meta.avcc[1] = _this._AVC_SPS[4 + 1];\n _meta.avcc[2] = _this._AVC_SPS[4 + 2];\n _meta.avcc[3] = _this._AVC_SPS[4 + 3];\n _meta.avcc[4] = 255; //this._AVC_SPS[4 + 4];\n\n _meta.avcc[5] = 225;\n datOffset = 6;\n var sps = new Uint8Array();\n _meta.avcc[datOffset++] = _this._AVC_SPS.length - 4 >> 8;\n _meta.avcc[datOffset++] = _this._AVC_SPS.length - 4 & 0xFF;\n\n var datSps = _this._AVC_SPS.subarray(4, _this._AVC_SPS.length);\n\n _meta.avcc.set(datSps, datOffset);\n\n datOffset += datSps.length;\n _meta.avcc[datOffset++] = 1; //pps<70><73><EFBFBD><EFBFBD>\n\n _meta.avcc[datOffset++] = _this._AVC_PPS.length - 4 >> 8;\n _meta.avcc[datOffset++] = _this._AVC_PPS.length - 4 & 0xFF;\n\n var datPps = _this._AVC_PPS.subarray(4, _this._AVC_PPS.length);\n\n _meta.avcc.set(datPps, datOffset);\n\n datOffset += datPps.length;\n _meta.avcc[dataSize] = 1;\n } //console.log(\"meta.avcc: \" + meta.avcc);\n\n\n _this._onTrackMetadata('video', _meta); //meta.avcc = new Uint8Array(dataSize);\n //meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);\n //Log.v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');\n\n /*\r\n if (this._isInitialMetadataDispatched()) {\r\n // flush parsed frames\r\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\r\n //this._onDataAvailable(this._audioTrack, this._videoTrack);\r\n }\r\n } else {\r\n this._videoInitialMetadataDispatched = true;\r\n }\r\n */\n // notify new metadata\n //this._dispatch = false;\n //this._onTrackMetadata('video', meta);\n\n }\n /*\r\n if (debug && avcSample) {\r\n avcSample.debug += 'PPS ';\r\n }\r\n if (!track.pps) {\r\n track.pps = [unit.data];\r\n }\r\n */\n\n\n break;\n // AUD\n\n case 9:\n push = false;\n /*\r\n track.audFound = true;\r\n if (avcSample) {\r\n pushAccesUnit(avcSample, track);\r\n }\r\n avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, debug ? 'AUD ' : '');\r\n */\n\n break;\n // Filler Data\n\n case 12:\n push = false;\n break;\n\n default:\n push = false;\n /*\r\n if (avcSample) {\r\n avcSample.debug += 'unknown NAL ' + unit.type + ' ';\r\n }\r\n */\n\n break;\n }\n\n if (push) {//this._videoTrack.samples.push(unit);\n //console.log(\"frame size[\" + unit.data.length + \"] :\");// + unit.data);\n //\n\n /*\r\n if (unit.data.length > 0) {\r\n var objData = {\r\n cmd: common.tFrameData,\r\n workerId: common.DOWNLOAD_WORKER_ID,\r\n mediaType: 1,\r\n codecId: 27,\r\n flag: last,\r\n pts: pes.pts,\r\n playTimeSec: dur,\r\n dat: unit.data\r\n };\r\n //self.postMessage(objData, [objData.dat.buffer]);\r\n }\r\n */\n }\n /*\r\n if (avcSample && push) {\r\n let units = avcSample.units;\r\n units.push(unit);\r\n }\r\n */\n\n }); // if last PES packet, push samples\n\n /*\r\n if (last && avcSample) {\r\n pushAccesUnit(avcSample, track);\r\n this.avcSample = null;\r\n }\r\n */\n\n var pts = (pes.pts - this.startVideoPts) / 90;\n\n if (keyframe && this.syncVideoPts < 1) {\n this.syncVideoPts = this.startVideoPts;\n }\n /*\r\n let pts = (pes.pts - this.lastVideoPts) / 90;\r\n this.currentVideoPts += pts;\r\n pts = this.currentVideoPts;\r\n //if (this.lastVideoPts == 0) this.lastVideoPts = pes.pts;\r\n */\n\n\n var track = this._videoTrack;\n var avcSample = {\n units: tmpUnits,\n length: tmpLength,\n //pes.len,//length,\n isKeyframe: keyframe,\n dts: pts,\n // / 90,// - this.lastVideoPts + this.accurateTimeOffset,\n cts: 0,\n //pes.pts,\n pts: pts // / 90)// - this.lastVideoPts + this.accurateTimeOffset)\n\n };\n\n if (keyframe) {\n avcSample.fileposition = this.tagPosition;\n } //console.log(\"tmpLength: \" + tmpLength + \" tagPosition: \" + this.tagPosition + \" pts[\" + avcSample.pts + \"] dts[\" + avcSample.dts + \"]\");\n //console.log(\"video pts: \" + pts);\n\n\n if (this.reset === 0 && !this.findKeyframe) {\n track.samples.push(avcSample);\n track.length += tmpLength; //pes.len;//length;\n }\n\n this.filePosition += tmpLength;\n this.accurateTimeOffset = avcSample.pts;\n this.lastVideoPts = pes.pts;\n\n if (bSetInitPts === 1) {\n this.seekVideoHistoryPts = pts;\n } //this._videoTrack.length = track.length;\n\n\n if (push) {//console.log(\"frame size: \" + );\n }\n\n if (last && this.reset === 0) {\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n //<2F><><EFBFBD><EFBFBD>codecIdΪ0, <20><>ʾ<EFBFBD><CABE>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ\n //this._onDataAvailableToSoftwareDecodeVideo(0, this._videoTrack);\n //<2F><>mp4-remuxer.js<6A><73><EFBFBD><EFBFBD>\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n } else {\n //console.log(\"H264: Software Decode...\");\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(27, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(86018, this._audioTrack);\n }\n } //console.log(\"pushAccessUnit....\");\n\n }\n };\n\n _proto.parseHEVCPES = function parseHEVCPES(pes, last, startTimeSecs) {\n // logger.log('parse new PES');\n //console.log(\"_parseHEVCPES flag[\" + last + \"] datasize: \" + pes.data.length);\n //decodeVideoFrame(pes.data.length, pes.data);\n //this.SoftDecodeRender.decodeTest();\n //this.wasmPlayer.wasmTest();\n //var dur = 0;\n //if (this.startVideoPts > 0) {\n // dur = (pes.pts - this.startVideoPts) / 90000;\n // dur += startTimeSecs;\n // //console.log(\"dur: \" + dur);\n //}\n //else {\n // this.startVideoPts = pes.pts;\n // dur = startTimeSecs;\n // //console.log(\"dur... pes: \" + pes.pts);\n //}\n if (this.startVideoPts === 0) {\n this.startVideoPts = pes.pts; //console.log(\"startVideoPts==0: \" + this.startVideoPts);\n } else if (pes.pts < this.startVideoPts) {\n //console.log(\"pes.pts < startVideoPts: \" + this.startVideoPts + \" --> \" + pes.pts);\n this.startVideoPts = pes.pts;\n } //console.log(\"HEVC data: \" + pes.data);\n //var objData = {\n // cmd: common.tFrameData,\n // workerId: common.DOWNLOAD_WORKER_ID,\n // mediaType: 1,\n // codecId: 173,\n // flag: last,\n // pts: pes.pts,\n // playTimeSec: dur,\n // dat: pes.data\n //};\n //self.postMessage(objData, [objData.dat.buffer]);\n //console.log(\"_parseHEVCPES: startTimeSecs[\" + startTimeSecs + \"] dur[\" + dur + \"]\");\n\n\n var tmpUnits = [];\n var tmpLength = 0;\n var tmpUnit = {\n type: 1,\n data: pes.data\n };\n tmpLength += pes.data.length;\n var keyframe = 0;\n\n if (tmpLength > 32) {\n //&& this.findKeyframe) {\n var i = 0;\n\n for (i = 0; i < 32; i++) {\n if (pes.data[i] === 0 && pes.data[i + 1] === 0 && pes.data[i + 2] === 0 && pes.data[i + 3] === 1 && pes.data[i + 4] === 0x40) {\n //console.log(\"HEVC keyframe data: \" + pes.data);\n keyframe = 1;\n this.findKeyframe = false;\n /*\r\n let KeyframeDat = pes.data.subarray(i, pes.data.length);\r\n tmpUnit.data = KeyframeDat;\r\n tmpLength -= i;\r\n console.log(\"HEVC data: \" + KeyframeDat);\r\n */\n\n break;\n }\n } //(pes.data[11] == 0x40))\n\n }\n\n tmpUnits.push(tmpUnit);\n var pts = (pes.pts - this.startVideoPts) / 90; //console.log(\"pts: \" + pts);\n\n if (keyframe && this.syncVideoPts < 1) {\n this.syncVideoPts = this.startVideoPts; //console.log(\"startVideoPts: \" + this.startVideoPts);\n }\n\n var track = this._videoTrack;\n var avcSample = {\n units: tmpUnits,\n length: tmpLength,\n //pes.len,//length,\n isKeyframe: keyframe,\n dts: pts,\n // - this.lastVideoPts + this.accurateTimeOffset,\n cts: 0,\n //pes.pts,\n pts: pts // - this.lastVideoPts + this.accurateTimeOffset)\n\n };\n\n if (keyframe) {\n avcSample.fileposition = this.tagPosition;\n } //console.log(\"tmpLength: \" + tmpLength + \" tagPosition: \" + this.tagPosition + \" pts[\" + avcSample.pts + \"] dts[\" + avcSample.dts + \"]\");\n\n\n track.samples.push(avcSample);\n track.length += tmpLength; //pes.len;//length;\n //console.log(\"add sample to videoTrack....\");\n\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(173, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(86018, this._audioTrack);\n }\n };\n\n _proto._insertSampleInOrder = function _insertSampleInOrder(arr, data) {\n var len = arr.length;\n\n if (len > 0) {\n if (data.pts >= arr[len - 1].pts) {\n arr.push(data);\n } else {\n for (var pos = len - 1; pos >= 0; pos--) {\n if (data.pts < arr[pos].pts) {\n arr.splice(pos, 0, data);\n break;\n }\n }\n }\n } else {\n arr.push(data);\n }\n };\n\n _proto._getLastNalUnit = function _getLastNalUnit() {\n var avcSample = this.avcSample,\n lastUnit; // try to fallback to previous sample if current one is empty\n\n if (!avcSample || avcSample.units.length === 0) {\n var track = this._avcTrack,\n samples = track.samples;\n avcSample = samples[samples.length - 1];\n }\n\n if (avcSample) {\n var units = avcSample.units;\n lastUnit = units[units.length - 1];\n }\n\n return lastUnit;\n };\n\n _proto._parseAVCNALu = function _parseAVCNALu(array) {\n //let i = 0, len = array.byteLength, value, overflow, track = this._avcTrack, state = track.naluState || 0, lastState = state;\n var i = 0,\n len = array.byteLength,\n value,\n overflow,\n state = 0,\n lastState = state;\n var units = [],\n unit,\n unitType,\n lastUnitStart = -1,\n lastUnitType; // logger.log('PES:' + Hex.hexDump(array));\n\n if (state === -1) {\n // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n lastUnitStart = 0; // NALu type is value read from offset 0\n\n lastUnitType = array[0] & 0x1f;\n state = 0;\n i = 1;\n }\n\n while (i < len) {\n value = array[i++]; // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n\n if (!state) {\n state = value ? 0 : 1;\n continue;\n }\n\n if (state === 1) {\n state = value ? 0 : 2;\n continue;\n } // here we have state either equal to 2 or 3\n\n\n if (!value) {\n state = 3;\n } else if (value === 1) {\n if (lastUnitStart >= 0) {\n unit = {\n data: array.subarray(lastUnitStart, i - state - 1),\n type: lastUnitType\n }; // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n\n if (unit.type != 9) //gavin 20200602\n units.push(unit);\n } else {\n // lastUnitStart is undefined => this is the first start code found in this PES packet\n // first check if start code delimiter is overlapping between 2 PES packets,\n // ie it started in last packet (lastState not zero)\n // and ended at the beginning of this PES packet (i <= 4 - lastState)\n var lastUnit = null; //this._getLastNalUnit();\n\n if (lastUnit) {\n if (lastState && i <= 4 - lastState) {\n // start delimiter overlapping between PES packets\n // strip start delimiter bytes from the end of last NAL unit\n // check if lastUnit had a state different from zero\n if (lastUnit.state) {\n // strip last bytes\n lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n }\n } // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n\n\n overflow = i - state - 1;\n\n if (overflow > 0) {\n // logger.log('first NALU found with overflow:' + overflow);\n var tmp = new Uint8Array(lastUnit.data.byteLength + overflow);\n tmp.set(lastUnit.data, 0);\n tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength);\n lastUnit.data = tmp;\n }\n }\n } // check if we can read unit type\n\n\n if (i < len) {\n unitType = array[i] & 0x1f; // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n\n lastUnitStart = i;\n lastUnitType = unitType;\n state = 0;\n } else {\n // not enough byte to read unit type. let's read it on next PES parsing\n state = -1;\n }\n } else {\n state = 0;\n }\n }\n\n if (lastUnitStart >= 0 && state >= 0) {\n unit = {\n data: array.subarray(lastUnitStart, len),\n type: lastUnitType,\n state: state\n };\n units.push(unit); // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n } // no NALu found\n\n\n if (units.length === 0) {\n // append pes.data to previous NAL unit\n var _lastUnit = this._getLastNalUnit();\n\n if (_lastUnit) {\n var _tmp = new Uint8Array(_lastUnit.data.byteLength + array.byteLength);\n\n _tmp.set(_lastUnit.data, 0);\n\n _tmp.set(array, _lastUnit.data.byteLength);\n\n _lastUnit.data = _tmp;\n }\n } //track.naluState = state;\n\n\n return units;\n }\n /**\r\n * remove Emulation Prevention bytes from a RBSP\r\n */\n ;\n\n _proto.discardEPB = function discardEPB(data) {\n var length = data.byteLength,\n EPBPositions = [],\n i = 1,\n newLength,\n newData; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (EPBPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n\n newLength = length - EPBPositions.length;\n newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n EPBPositions.shift();\n }\n\n newData[i] = data[sourceIndex];\n }\n\n return newData;\n };\n\n _proto.parseAACPES = function parseAACPES(pes, last) {\n // if (this.isHEVC === 1) return;\n //var dur = 0;\n //if (self.startAudioPts > 0) {\n // dur = (pes.pts - self.startAudioPts) / 90000;\n // //console.log(\"dur: \" + dur);\n //}\n //else {\n // self.startAudioPts = pes.pts;\n //}\n //if (this.audioSampleRate > 0) {\n // var objData = {\n // cmd: common.tFrameData,\n // workerId: common.DOWNLOAD_WORKER_ID,\n // mediaType: 2,\n // codecId: 86018, //AAC\n // flag: last,\n // pts: pes.pts,\n // samplerate: this.audioSampleRate,\n // channelNum: this.audioChannel,\n // bitPerSample: this.audioBitPerSample,\n // playTimeSec: dur,\n // dat: pes.data\n // };\n // //self.postMessage(objData, [objData.data.buffer]);\n // //return;\n //}\n //return;\n if (this.startAudioPts === 0) {\n this.startAudioPts = pes.pts; // / 90;\n } //var audioPts = pes.pts;\n //pes.pts = pes.pts - this.startAudioPts;\n //this.startAudioPts = audioPts;\n //this.audioFrameNum++;\n //((++pPushArray -> audioFrameNo)) * ((float)(1024.0f / 44100.0f * 1000.0f));\n //this.currentAudioPts = this.audioFrameNum * (1024.0 / 44100.0 * 1000.0) + this.currentVideoPts;\n //pes.pts = this.currentAudioPts;\n\n\n var track = this._audioTrack,\n data = pes.data,\n pts = pes.pts,\n startOffset = 0,\n aacOverFlow = this.aacOverFlow,\n aacLastPTS = this.aacLastPTS,\n frameDuration,\n frameIndex,\n offset,\n stamp,\n len;\n\n if (aacOverFlow) {\n var tmp = new Uint8Array(aacOverFlow.byteLength + data.byteLength);\n tmp.set(aacOverFlow, 0);\n tmp.set(data, aacOverFlow.byteLength); // logger.log(`AAC: append overflowing ${aacOverFlow.byteLength} bytes to beginning of new PES`);\n\n data = tmp;\n } // look for ADTS header (0xFFFx)\n\n\n for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_1__[\"isHeader\"](data, offset)) {\n break;\n }\n } // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n\n\n if (offset) {\n var reason, fatal;\n\n if (offset < len - 1) {\n reason = \"AAC PES did not start with ADTS header,offset:\" + offset;\n fatal = false;\n } else {\n reason = 'no ADTS header found in AAC PES';\n fatal = true;\n }\n\n logger.warn(\"parsing error:\" + reason);\n this.observer.trigger(Event.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: fatal,\n reason: reason\n });\n\n if (fatal) {\n return;\n }\n }\n\n if (this.audioSampleRate < 1) {\n var config = _adts__WEBPACK_IMPORTED_MODULE_1__[\"initTrackConfig\"](data, offset, this.audioCodec);\n\n if (config) {\n this.audioSampleRate = config.samplerate;\n this.audioChannel = config.channelCount;\n this.audioBitPerSample = 16; //==============================================\n\n if (!this._initAudioMetadata) {\n this._initAudioMetadata = true;\n var meta = this._audioMetadata;\n var _track2 = this._audioTrack;\n\n if (!meta) {\n // initial metadata\n meta = this._audioMetadata = {};\n meta.type = 'audio';\n meta.id = _track2.id;\n meta.timescale = 1000; //this._timescale;\n\n meta.duration = 0; //this._duration;\n\n meta.audioSampleRate = this.audioSampleRate;\n meta.channelCount = this.audioChannel;\n } //let aacData = FlvDemuxer._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);\n //if (aacData == undefined) {\n // return 0;\n //}\n //if (aacData.packetType === 0) { // AAC sequence header (AudioSpecificConfig)\n\n\n if (meta.config) {\n Log.w(this.TAG, 'Found another AudioSpecificConfig!');\n }\n\n var misc = config.config;\n meta.audioSampleRate = config.samplerate;\n meta.channelCount = config.channelCount;\n meta.codec = config.codec;\n meta.originalCodec = config.originalCodec;\n meta.config = config.config; // The decode result of an aac sample is 1024 PCM samples\n\n meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale; //Log.v(this.TAG, 'Parsed AudioSpecificConfig');\n //console.log(\"AAC: \" + meta.audioSampleRate + \" \" + meta.channelCount + \" \" + meta.codec + \" \" + meta.config);\n\n this._SampleRate = config.samplerate;\n this._ChannelNum = config.channelCount;\n\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n /*\r\n if (this._isInitialMetadataDispatched()) {\r\n // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer\r\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\r\n this._onDataAvailable(this._audioTrack, this._videoTrack);\r\n }\r\n } else {\r\n this._audioInitialMetadataDispatched = true;\r\n }\r\n \r\n // then notify new metadata\r\n this._dispatch = false;\r\n */\n\n\n this._onTrackMetadata('audio', meta);\n\n var mi = this._mediaInfo;\n mi.audioCodec = meta.originalCodec;\n mi.audioSampleRate = meta.audioSampleRate;\n mi.audioChannelCount = meta.channelCount;\n\n if (mi.hasVideo) {\n if (mi.videoCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.audioCodec + '\"';\n }\n\n if (mi.isComplete()) {\n this._onMediaInfo(mi);\n } //}\n\n } //==============================================\n\n }\n } //return;\n\n\n frameIndex = 0;\n frameDuration = _adts__WEBPACK_IMPORTED_MODULE_1__[\"getFrameDuration\"](this.audioSampleRate); // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n // first sample PTS should be equal to last sample PTS + frameDuration\n\n if (aacOverFlow && aacLastPTS) {\n var newPTS = aacLastPTS + frameDuration;\n\n if (Math.abs(newPTS - pts) > 1) {\n console.log(\"AAC: align PTS for overlapping frames by \" + Math.round((newPTS - pts) / 90));\n pts = newPTS;\n }\n } // scan for aac samples\n\n\n while (offset < len) {\n if (_adts__WEBPACK_IMPORTED_MODULE_1__[\"isHeader\"](data, offset) && offset + 5 < len) {\n var frame = _adts__WEBPACK_IMPORTED_MODULE_1__[\"appendFrame\"](this.audioSampleRate, data, offset, pts, frameIndex);\n\n if (frame) {\n // logger.log(`${Math.round(frame.sample.pts)} : AAC`);\n //var objData = {\n // cmd: common.tFrameData,\n // workerId: common.DOWNLOAD_WORKER_ID,\n // mediaType: 2,\n // codecId: 86018, //AAC\n // flag: last,\n // pts: pes.pts,\n // samplerate: this.audioSampleRate,\n // channelNum: this.audioChannel,\n // bitPerSample: this.audioBitPerSample,\n // playTimeSec: dur,\n // dat: frame.sample.unit\n //};\n //self.postMessage(objData, [objData.dat.buffer]);\n //this.audioFrameNum++;\n //this.currentAudioPts = Math.floor(this.audioFrameNum * (1024.0 / 44100.0 * 1000.0) + this.currentVideoPts);\n //pes.pts = this.currentAudioPts;\n //pts = pes.pts;\n //gavin\n //let dts = pes.pts;//frame.sample.pts;//this._timestampBase + tagTimestamp;\n var dts = Math.round((frame.sample.pts - this.startAudioPts) / 90); //console.log(\" audio pts: \" + dts + \" frame.sample.pts:\" + Math.round(frame.sample.pts) + \" \");\n\n var aacSample = {\n unit: frame.sample.unit,\n length: frame.length,\n dts: dts,\n pts: dts\n };\n var bProcAudio = true;\n /*\r\n if (this._config.decodeType === 'auto' ||\r\n this._config.decodeType === 'hard') {\r\n bProcAudio = true;\r\n }\r\n */\n\n if (bProcAudio && this.reset === 0 && !this.findKeyframe) {\n if (this.syncAudioPts < 1 && this.syncVideoPts > 0) {\n this.syncAudioPts = this.syncVideoPts;\n }\n\n if (this.syncAudioPts > 0) {\n track.samples.push(aacSample);\n track.length += frame.length;\n }\n }\n\n offset += frame.length;\n stamp = frame.sample.pts;\n frameIndex++;\n } else {\n // logger.log('Unable to parse AAC frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n\n if (offset < len) {\n aacOverFlow = data.subarray(offset, len); // logger.log(`AAC: overflow detected:${len-offset}`);\n } else {\n aacOverFlow = null;\n }\n\n this.aacOverFlow = aacOverFlow;\n this.aacLastPTS = stamp;\n };\n\n _proto.parseMPEGPES = function parseMPEGPES(pes) {\n var data = pes.data;\n var length = data.length;\n var frameIndex = 0;\n var offset = 0;\n var pts = pes.pts;\n\n while (offset < length) {\n if (MpegAudio.isHeader(data, offset)) {\n var frame = MpegAudio.appendFrame(this._audioTrack, data, offset, pts, frameIndex);\n\n if (frame) {\n offset += frame.length;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n } // feed incoming data to the front of the parsing pipeline\n ;\n\n _proto.append = function append(data, datasize, startTimeSecs) {\n //console.log(\"append data to demuxer.js: \" + datasize);\n if (data == null) {\n return;\n }\n\n datasize = data.length;\n\n if (this.reset === 1) {\n return;\n }\n\n var start,\n len = datasize,\n stt,\n pid,\n atf,\n offset,\n pes,\n pmtId,\n unknownPIDs = false;\n var avcId = -1,\n audioId = -1,\n id3Id = -1,\n avcData = this.avcTrackPesData,\n audioData = this.audioTrackPesData,\n id3Data = this.id3TrackPesData,\n pmtParsed = false;\n var currentPlayTimeMsec = 0;\n\n var syncOffset = TSDemuxer._syncOffset(data); // don't parse last TS packet if incomplete\n\n\n len -= (len + syncOffset) % 188; // loop through TS packets\n\n for (start = syncOffset; start < len; start += 188) {\n if (data[start] === 0x47) {\n stt = !!(data[start + 1] & 0x40); // pid is a 13-bit field starting at the last bit of TS[1]\n\n pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];\n atf = (data[start + 3] & 0x30) >> 4; // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n\n if (atf > 1) {\n offset = start + 5 + data[start + 4]; // continue if there is only adaptation field\n\n if (offset === start + 188) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n\n switch (pid) {\n case avcId:\n if (stt) {\n if (avcData && (pes = this.parsePES(avcData))) {\n //parseAVCPES(pes, false);\n if (this.isHEVC == 1) {\n currentPlayTimeMsec = this.parseHEVCPES(pes, false, startTimeSecs);\n } else {\n currentPlayTimeMsec = this.parseAVCPES(pes, false, startTimeSecs); //parseAVCPES(pes, false);\n }\n }\n\n avcData = {\n data: [],\n size: 0\n };\n }\n\n if (avcData) {\n avcData.data.push(data.subarray(offset, start + 188));\n avcData.size += start + 188 - offset;\n }\n\n break;\n\n case audioId:\n if (stt) {\n if (audioData && (pes = this.parsePES(audioData))) {\n if (this.isAAC) {\n this.parseAACPES(pes, false);\n } else {\n this.parseMPEGPES(pes);\n }\n }\n\n audioData = {\n data: [],\n size: 0\n };\n }\n\n if (audioData) {\n audioData.data.push(data.subarray(offset, start + 188));\n audioData.size += start + 188 - offset;\n }\n\n break;\n\n case id3Id:\n if (stt) {\n if (id3Data && (pes = this.parsePES(id3Data))) {\n parseID3PES(pes);\n }\n\n id3Data = {\n data: [],\n size: 0\n };\n }\n\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + 188));\n id3Data.size += start + 188 - offset;\n }\n\n break;\n\n case 0:\n if (stt) {\n offset += data[offset] + 1;\n }\n\n pmtId = this.parsePAT(data, offset);\n break;\n\n case pmtId:\n if (stt) {\n offset += data[offset] + 1;\n }\n\n var parsedPIDs = this.parsePMT(data, offset, false, false); // only update track id if track PID found while parsing PMT\n // this is to avoid resetting the PID to -1 in case\n // track PID transiently disappears from the stream\n // this could happen in case of transient missing audio samples for example\n // NOTE this is only the PID of the track as found in TS,\n // but we are not using this for MP4 track IDs.\n\n avcId = parsedPIDs.avc; //gavin\n\n if (parsedPIDs.hevc > 0) {\n avcId = parsedPIDs.hevc;\n this.isHEVC = 1; //console.log(\"parsePMT hevcId: \" + avcId);\n }\n\n if (avcId > 0) {\n this.avcTrackPid = avcId;\n } //<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ϲ<EFBFBD>, <20>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>\n\n\n if (!this._callbackInitFlag && this._callbackMediaDataFunc) {\n this._callbackInitFlag = true;\n\n if (this.isHEVC === 1) {//this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, 0, 0, null, 0, 0, 0, 0);\n } else {\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, false, 1, 0, 0, null, 0, 0, 0, 0);\n } else {//this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, 0, 0, null, 0, 0, 0, 0);\n }\n }\n }\n\n audioId = parsedPIDs.audio;\n\n if (audioId > 0) {\n this.audioTrackPid = audioId;\n this.isAAC = parsedPIDs.isAAC; //console.log(\"audioId:\" + audioId + \" aac:\" + this.isAAC);\n }\n\n id3Id = parsedPIDs.id3;\n\n if (id3Id > 0) {\n this.id3TrackPid = id3Id;\n }\n\n if (unknownPIDs && !pmtParsed) {\n logger.log('reparse from beginning');\n unknownPIDs = false; // we set it to -188, the += 188 in the for loop will reset start to 0\n\n start = syncOffset - 188;\n } //pmtParsed = this.pmtParsed = true;\n\n\n pmtParsed = true;\n break;\n\n case 17:\n case 0x1fff:\n break;\n\n default:\n unknownPIDs = true;\n break;\n }\n } else {\n console.log(\"parse error... reason: 'TS packet did not start with 0x47'\"); //this.observer.trigger(Event.ERROR, { type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: false, reason: 'TS packet did not start with 0x47' });\n }\n } // try to parse last PES packets\n\n\n if (avcData && (pes = this.parsePES(avcData))) {\n //gavin\n //parseAVCPES(pes, true);\n if (this.isHEVC == 1) {\n currentPlayTimeMsec = this.parseHEVCPES(pes, true, startTimeSecs);\n } else {\n currentPlayTimeMsec = this.parseAVCPES(pes, true, startTimeSecs); //parseAVCPES(pes, true);\n }\n\n this.avcTrackPesData = null;\n } else {\n // either avcData null or PES truncated, keep it for next frag parsing\n this.avcTrackPesData = avcData;\n }\n\n if (audioData && (pes = this.parsePES(audioData))) {\n if (this.isAAC) {\n this.parseAACPES(pes, true);\n } else {\n this.parseMPEGPES(pes);\n }\n\n this.audioTrackPesData = null;\n } else {\n if (audioData && audioData.size) {\n logger.log('last AAC PES packet truncated,might overlap between fragments');\n } // either audioData null or PES truncated, keep it for next frag parsing\n\n\n this.audioTrackPesData = audioData;\n }\n\n if (id3Data && (pes = this.parsePES(id3Data))) {\n parseID3PES(pes);\n this.id3TrackPesData = null;\n } else {\n // either id3Data null or PES truncated, keep it for next frag parsing\n this.id3TrackPesData = id3Data;\n } //console.log(\"h265VideoSamples.length: \" + h265VideoSamples.length);\n\n };\n\n _createClass(TSDemuxer, [{\n key: \"onTrackMetadata\",\n get: function get() {\n return this._onTrackMetadata;\n },\n set: function set(callback) {\n this._onTrackMetadata = callback;\n } // prototype: function(mediaInfo: MediaInfo): void\n\n }, {\n key: \"onMediaInfo\",\n get: function get() {\n return this._onMediaInfo;\n },\n set: function set(callback) {\n this._onMediaInfo = callback;\n }\n }, {\n key: \"onMetaDataArrived\",\n get: function get() {\n return this._onMetaDataArrived;\n },\n set: function set(callback) {\n this._onMetaDataArrived = callback;\n }\n }, {\n key: \"onScriptDataArrived\",\n get: function get() {\n return this._onScriptDataArrived;\n },\n set: function set(callback) {\n this._onScriptDataArrived = callback;\n } // prototype: function(type: number, info: string): void\n\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n } // prototype: function(videoTrack: any, audioTrack: any): void\n\n }, {\n key: \"onDataAvailable\",\n get: function get() {\n return this._onDataAvailable;\n },\n set: function set(callback) {\n this._onDataAvailable = callback;\n } // timestamp base for output samples, must be in milliseconds\n\n }, {\n key: \"timestampBase\",\n get: function get() {\n return this._timestampBase;\n },\n set: function set(base) {\n this._timestampBase = base;\n }\n }, {\n key: \"overridedDuration\",\n get: function get() {\n return this._duration;\n } // Force-override media duration. Must be in milliseconds, int32\n ,\n set: function set(duration) {\n this._durationOverrided = true;\n this._duration = duration;\n this._mediaInfo.duration = duration;\n } // Force-override audio track present flag, boolean\n\n }, {\n key: \"overridedHasAudio\",\n set: function set(hasAudio) {\n this._hasAudioFlagOverrided = true;\n this._hasAudio = hasAudio;\n this._mediaInfo.hasAudio = hasAudio;\n } // Force-override video track present flag, boolean\n\n }, {\n key: \"overridedHasVideo\",\n set: function set(hasVideo) {\n this._hasVideoFlagOverrided = true;\n this._hasVideo = hasVideo;\n this._mediaInfo.hasVideo = hasVideo;\n }\n }]);\n\n return TSDemuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TSDemuxer);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/TSDemuxer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/adts.js":
|
||
/*!*******************************!*\
|
||
!*** ./src/FlvPlayer/adts.js ***!
|
||
\*******************************/
|
||
/*! exports provided: getAudioConfig, isHeaderPattern, getHeaderLength, getFullFrameLength, isHeader, probe, initTrackConfig, getFrameDuration, parseFrameHeader, appendFrame */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAudioConfig\", function() { return getAudioConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeaderPattern\", function() { return isHeaderPattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHeaderLength\", function() { return getHeaderLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFullFrameLength\", function() { return getFullFrameLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeader\", function() { return isHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"probe\", function() { return probe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initTrackConfig\", function() { return initTrackConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFrameDuration\", function() { return getFrameDuration; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseFrameHeader\", function() { return parseFrameHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendFrame\", function() { return appendFrame; });\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/**\r\n * ADTS parser helper\r\n * @link https://wiki.multimedia.cx/index.php?title=ADTS\r\n */\n//import { logger } from '../utils/logger';\n//import { ErrorTypes, ErrorDetails } from '../errors';\n//import Event from '../events';\n//import { getSelfScope } from './get-self-scope';\n\nfunction getAudioConfig(data, offset, audioCodec) {\n var adtsObjectType,\n // :int\n adtsSampleingIndex,\n // :int\n adtsExtensionSampleingIndex,\n // :int\n adtsChanelConfig,\n // :int\n config,\n userAgent = navigator.userAgent.toLowerCase(),\n manifestCodec = audioCodec,\n adtsSampleingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; // byte 2\n\n adtsObjectType = ((data[offset + 2] & 0xC0) >>> 6) + 1;\n adtsSampleingIndex = (data[offset + 2] & 0x3C) >>> 2;\n\n if (adtsSampleingIndex > adtsSampleingRates.length - 1) {\n //observer.trigger(Event.ERROR, { type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: true, reason: `invalid ADTS sampling index:${adtsSampleingIndex}` });\n console.log(\"ADTS parse fail. reason: 'invalid ADTS sampling index:${adtsSampleingIndex}'\");\n return;\n }\n\n adtsChanelConfig = (data[offset + 2] & 0x01) << 2; // byte 3\n\n adtsChanelConfig |= (data[offset + 3] & 0xC0) >>> 6; //logger.log(`manifest codec:${audioCodec},ADTS data:type:${adtsObjectType},sampleingIndex:${adtsSampleingIndex}[${adtsSampleingRates[adtsSampleingIndex]}Hz],channelConfig:${adtsChanelConfig}`);\n // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n\n if (/firefox/i.test(userAgent)) {\n if (adtsSampleingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4); // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n\n adtsExtensionSampleingIndex = adtsSampleingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n } // Android : always use AAC\n\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n } else {\n /* for other browsers (Chrome/Vivaldi/Opera ...)\r\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\r\n */\n adtsObjectType = 5;\n config = new Array(4); // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n\n if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSampleingIndex >= 6) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSampleingIndex = adtsSampleingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSampleingIndex >= 6 && adtsChanelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChanelConfig === 1) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\r\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\r\n Audio Profile / Audio Object Type\r\n 0: Null\r\n 1: AAC Main\r\n 2: AAC LC (Low Complexity)\r\n 3: AAC SSR (Scalable Sample Rate)\r\n 4: AAC LTP (Long Term Prediction)\r\n 5: SBR (Spectral Band Replication)\r\n 6: AAC Scalable\r\n sampling freq\r\n 0: 96000 Hz\r\n 1: 88200 Hz\r\n 2: 64000 Hz\r\n 3: 48000 Hz\r\n 4: 44100 Hz\r\n 5: 32000 Hz\r\n 6: 24000 Hz\r\n 7: 22050 Hz\r\n 8: 16000 Hz\r\n 9: 12000 Hz\r\n 10: 11025 Hz\r\n 11: 8000 Hz\r\n 12: 7350 Hz\r\n 13: Reserved\r\n 14: Reserved\r\n 15: frequency is written explictly\r\n Channel Configurations\r\n These are the channel configurations:\r\n 0: Defined in AOT Specifc Config\r\n 1: 1 channel: front-center\r\n 2: 2 channels: front-left, front-right\r\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n\n\n config[0] = adtsObjectType << 3; // samplingFrequencyIndex\n\n config[0] |= (adtsSampleingIndex & 0x0E) >> 1;\n config[1] |= (adtsSampleingIndex & 0x01) << 7; // channelConfiguration\n\n config[1] |= adtsChanelConfig << 3;\n\n if (adtsObjectType === 5) {\n // adtsExtensionSampleingIndex\n config[1] |= (adtsExtensionSampleingIndex & 0x0E) >> 1;\n config[2] = (adtsExtensionSampleingIndex & 0x01) << 7; // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n\n return {\n config: config,\n samplerate: adtsSampleingRates[adtsSampleingIndex],\n channelCount: adtsChanelConfig,\n codec: 'mp4a.40.' + adtsObjectType,\n manifestCodec: manifestCodec\n };\n}\nfunction isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n}\nfunction getHeaderLength(data, offset) {\n return data[offset + 1] & 0x01 ? 7 : 9;\n}\nfunction getFullFrameLength(data, offset) {\n return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xE0) >>> 5;\n}\nfunction isHeader(data, offset) {\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n return true;\n }\n\n return false;\n}\nfunction probe(data, offset) {\n // same as isHeader but we also check that ADTS frame follows last ADTS frame\n // or end of data is reached\n if (isHeader(data, offset)) {\n // ADTS header Length\n var headerLength = getHeaderLength(data, offset); // ADTS frame Length\n\n var frameLength = headerLength;\n\n if (offset + 5 < data.length) {\n frameLength = getFullFrameLength(data, offset);\n }\n\n var newOffset = offset + frameLength;\n\n if (newOffset === data.length || newOffset + 1 < data.length && isHeaderPattern(data, newOffset)) {\n return true;\n }\n }\n\n return false;\n}\nfunction initTrackConfig(data, offset, audioCodec) {\n var config = getAudioConfig(data, offset, audioCodec);\n return config;\n\n if (!track.samplerate) {\n var _config = getAudioConfig(observer, data, offset, audioCodec);\n\n track.config = _config.config;\n track.samplerate = _config.samplerate;\n track.channelCount = _config.channelCount;\n track.codec = _config.codec;\n track.manifestCodec = _config.manifestCodec;\n console.log(\"parsed codec:\" + track.codec + \",rate:\" + _config.samplerate + \",nb channel:\" + _config.channelCount);\n }\n}\nfunction getFrameDuration(samplerate) {\n return 1024 * 90000 / samplerate;\n}\nfunction parseFrameHeader(data, offset, pts, frameIndex, frameDuration) {\n var headerLength, frameLength, stamp;\n var length = data.length; // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n\n headerLength = getHeaderLength(data, offset); // retrieve frame size\n\n frameLength = getFullFrameLength(data, offset);\n frameLength -= headerLength;\n\n if (frameLength > 0 && offset + headerLength + frameLength <= length) {\n stamp = pts + frameIndex * frameDuration; // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n\n return {\n headerLength: headerLength,\n frameLength: frameLength,\n stamp: stamp\n };\n }\n\n return undefined;\n}\nfunction appendFrame(samplerate, data, offset, pts, frameIndex) {\n var frameDuration = getFrameDuration(samplerate);\n var header = parseFrameHeader(data, offset, pts, frameIndex, frameDuration);\n\n if (header) {\n var stamp = header.stamp;\n var headerLength = header.headerLength;\n var frameLength = header.frameLength; // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n\n var aacSample = {\n unit: data.subarray(offset + headerLength, offset + headerLength + frameLength),\n pts: stamp,\n dts: stamp\n };\n /*\r\n var objData = {\r\n cmd: common.tFrameData,\r\n mediaType: 2,\r\n codecId: 86018, //AAC\r\n flag: 0,\r\n pts: stamp,\r\n samplerate: samplerate,\r\n channelNum: channel,\r\n bitPerSample: bitPerSample,\r\n playDur: frameDuration,\r\n data: data.subarray(offset + headerLength, offset + headerLength + frameLength)\r\n };\r\n tsDemuxerPtr.postMessage(objData, [objData.data.buffer]);\r\n */\n //console.log(\"audio frame size: \" + frameLength);\n //track.samples.push(aacSample);\n\n return {\n sample: aacSample,\n length: frameLength + headerLength\n };\n }\n\n return undefined;\n}\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/adts.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/downloadWorker.js":
|
||
/*!*****************************************!*\
|
||
!*** ./src/FlvPlayer/downloadWorker.js ***!
|
||
\*****************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _TSDemuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TSDemuxer */ \"./src/FlvPlayer/TSDemuxer.js\");\n/* harmony import */ var _m3u8parser_parse_stream__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./m3u8parser/parse-stream */ \"./src/FlvPlayer/m3u8parser/parse-stream.js\");\n/* harmony import */ var _m3u8parser_line_stream__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./m3u8parser/line-stream */ \"./src/FlvPlayer/m3u8parser/line-stream.js\");\n/* harmony import */ var _m3u8parser_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./m3u8parser/parser */ \"./src/FlvPlayer/m3u8parser/parser.js\");\n //import WebGLPlayer from './webgl';\n//import * as ffmpeg from './libffmpeg';\n\n\n\n\n\nvar memory = new WebAssembly.Memory({\n initial: 256,\n maximum: 256\n});\nvar env = {\n abortStackOverflow: function abortStackOverflow() {\n throw new Error('overflow');\n },\n table: new WebAssembly.Table({\n initial: 0,\n maximum: 0,\n element: 'anyfunc'\n }),\n tableBase: 0,\n memory: memory,\n memoryBase: 1024,\n STACKTOP: 0,\n STACK_MAX: memory.buffer.byteLength,\n abort: function abort() {}\n};\n\nvar HlsDownloaderWorker = function HlsDownloaderWorker(self) {\n self.url = \"\";\n self.canvas = null;\n self.webGLPlayer = null;\n self.videoSampleQueue = [];\n self.audioSampleQueue = [];\n self.videoInterval = 40;\n self.lastRenderTime = 0;\n self.intervalVal = 0;\n self.renderFrameCount = 0;\n self.requestAbort = false; //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>\n\n self.pause = false;\n self.cbStreamData = true;\n self.reConnect = true;\n self.isLiveStream = true;\n self.seekTime = 0;\n self.totalDuration = 0;\n self.playDuration = 0;\n self.startVideoPts = 0;\n self.startAudioPts = 0;\n self.tsFileList = [];\n self.getFileIndex = 0;\n self.lastTsFile = \"\";\n self.isFirstFile = true;\n self.lastTsFileSequence = 0;\n self.sequenceExceptNum = 0;\n self.tsDemuxer = null;\n self.getFileCount = 100;\n self.intervalHandle = -1;\n self.intervalValue = 40;\n self.startDownloadTimeSecs = 0;\n\n var resolve = function resolve(uri, baseurl) {\n var tmp = baseurl;\n var offset = 0;\n var n = 0;\n\n while (n >= 0) {\n n = tmp.indexOf(\"/\");\n\n if (n >= 0) {\n tmp = tmp.substring(n + 1);\n offset += n + 1;\n } else {\n tmp = baseurl.substring(0, offset);\n }\n }\n\n if (uri !== \"\") {\n return tmp + uri;\n }\n\n return tmp;\n };\n\n var GetProcessFlag = function GetProcessFlag() {\n return self.requestAbort;\n };\n\n var GetFileSequence = function GetFileSequence(TsFileName) {\n var arr = TsFileName.split(\"-\");\n var num = arr.length;\n\n if (num > 0) {\n var tsFilename = arr[num - 1]; //console.log(\"number: \" + tsFilename);\n\n var s = tsFilename.split(\".\");\n\n if (s.length > 0) {\n var sequence = s[0]; //console.log(\"sequence: \" + sequence);\n\n return sequence;\n }\n }\n\n return \"\";\n };\n\n var stopDownload = function stopDownload() {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData);\n self.getFileIndex = 0; //common.MediaWorkerLog(\"StopPlay[\" + self.url + \"].\");\n };\n\n var startDownload = function startDownload(url, openStreamFlag) {\n var size = 0;\n var status = 0;\n var reported = false;\n self.url = url;\n\n if (self._requestAbort == true) {\n stopDownload();\n return;\n }\n\n if (self.pause) {\n return;\n }\n\n if (self.totalDuration > 0 && !self.isLiveStream) {\n return;\n }\n\n var xhr = new XMLHttpRequest();\n xhr.open('get', url, true);\n xhr.responseType = 'text';\n\n xhr.onreadystatechange = function () {\n //var len = xhr.getResponseHeader(\"Content-Length\");\n //if (len) {\n // size = len;\n //}\n if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {\n //common.MediaWorkerLog(\"get file data: \" + xhr.responseText);\n var parser = new _m3u8parser_parser__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n parser.push(xhr.responseText);\n parser.end();\n var parsedManifest = parser.manifest; //console.log(parsedManifest);\n\n if (parser.manifest.endList !== 'undefined' && parser.manifest.endList == true) {\n self.isLiveStream = false;\n } else {\n self.isLiveStream = true;\n } //û<><C3BB>ts<74>ļ<EFBFBD>\n\n\n if (parsedManifest.segments.length < 1) {\n console.log(\"Not found ts file... waiting for reconnect...\");\n var self2 = self;\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"sleep\"](3000).then(function () {\n //console.log(\"fetch-stream-loader.js::Reopen...\");\n //console.log(\"Reconnecting...\");\n startDownload(self2.url, 1);\n }); //startDownload(self.url, 1);\n\n return;\n }\n\n var i = 0,\n j = 0; //<2F>ط<EFBFBD>\n\n if (!self.isLiveStream) {\n //console.log(\"total: \" + parsedManifest.segments.length);\n if (self.seekTime > 0) {\n self.getFileIndex = -1;\n }\n\n for (i = 0; i < parsedManifest.segments.length; i++) {\n //console.log(\"Idx[\" + i + \"] filename:\" + parsedManifest.segments[i].uri);\n var strFilename = resolve(parsedManifest.segments[i].uri, self.url);\n var exist = 0;\n\n for (j = 0; j < self.tsFileList.length; j++) {\n if (self.tsFileList[j].filename === strFilename) {\n exist = 1;\n break;\n }\n }\n\n if (exist == 0) {\n if (self.seekTime > 0 && self.totalDuration >= self.seekTime && self.getFileIndex < 0) {\n self.getFileIndex = i;\n }\n\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.totalDuration += parsedManifest.segments[i].duration;\n\n if (i === 0 && !self.isLiveStream) {\n self.tsFileList.push(fileinfo);\n }\n\n self.tsFileList.push(fileinfo); //console.log(\"FullURL: \" + fileinfo.filename);\n }\n }\n\n if (self.getFileIndex < 0) self.getFileIndex = 0;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tMediaInfo\"],\n duration: self.totalDuration,\n live: self.isLiveStream,\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData); //console.log(\"Total duration: \", self.totalDuration);\n } else {\n //ʵʱ\n if (self.lastTsFile == \"\") {\n //<2F><>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>\n for (i = 0; i < parsedManifest.segments.length; i++) {\n //console.log(\"Idx[\" + i + \"] filename:\" + parsedManifest.segments[i].uri);\n var strFilename = resolve(parsedManifest.segments[i].uri, self.url);\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.tsFileList.push(fileinfo);\n }\n\n var index = 0;\n\n if (parsedManifest.segments.length > 2) {\n index = parsedManifest.segments.length - 1 - 1;\n } //var strFilename = resolve(parsedManifest.segments[index].uri, self.url);\n //var fileinfo = {\n // filename: strFilename,\n // duration: parsedManifest.segments[index].duration\n //};\n //self.tsFileList.push(fileinfo);\n //self.getFileIndex = 0;\n //for (i = 0; i < parsedManifest.segments.length; i++) {\n //console.log(\"Idx[\" + i + \"] filename:\" + parsedManifest.segments[i].uri);\n //}\n\n\n self.getFileIndex = index; //<2F><>¼<EFBFBD><C2BC><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>\n\n self.lastTsFile = parsedManifest.segments[index].uri; //console.log(\"First FullURL: \" + fileinfo.filename);\n } else {\n var index = -1;\n var procFileRet = false;\n var getLastFileRet = false;\n\n for (i = 0; i < parsedManifest.segments.length; i++) {\n //console.log(\"Idx[\" + i + \"] filename:\" + parsedManifest.segments[i].uri);\n var strFilename = resolve(parsedManifest.segments[i].uri, self.url);\n\n if (parsedManifest.segments[i].uri === self.lastTsFile) {\n index = i; //console.log(\"find last file... clear filelist...\");\n\n self.tsFileList.length = 0;\n self.tsFileList = [];\n self.getFileIndex = 0;\n continue;\n }\n\n if (index >= 0) {\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.totalDuration += parsedManifest.segments[i].duration; //console.log(\"Add file to list:\" + strFilename);\n\n self.tsFileList.push(fileinfo); //<2F><>¼<EFBFBD><C2BC><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>\n\n if (!getLastFileRet) {\n self.lastTsFile = parsedManifest.segments[i].uri;\n getLastFileRet = true;\n }\n\n continue;\n }\n\n continue;\n /*\r\n if (index == -1) {\r\n for (j = 0; j < self.tsFileList.length; j++) {\r\n if (self.tsFileList[j].filename === strFilename) {\r\n index = j;\r\n break;\r\n }\r\n }\r\n }\r\n if (index == -1) {\r\n console.log(\"WARNING: new file:\" + strFilename);\r\n //˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>, <20><>ǰm3u8<75><38><EFBFBD><EFBFBD>û<EFBFBD><C3BB>js<6A>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>\r\n var fileinfo = {\r\n filename: strFilename,\r\n duration: parsedManifest.segments[i].duration\r\n };\r\n self.totalDuration += parsedManifest.segments[i].duration;\r\n self.tsFileList.length = 0;\r\n self.tsFileList = [];\r\n self.tsFileList.push(fileinfo);\r\n self.getFileIndex = 0;\r\n index = i;\r\n //<2F><>¼<EFBFBD><C2BC><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>\r\n self.lastTsFile = parsedManifest.segments[i].uri;\r\n procFileRet = true;\r\n }\r\n else {\r\n var exist = 0;\r\n for (j = 0; j < self.tsFileList.length; j++) {\r\n if (self.tsFileList[j].filename === strFilename) {\r\n exist = 1;\r\n break;\r\n }\r\n }\r\n if (exist == 0) {\r\n var fileinfo = {\r\n filename: strFilename,\r\n duration: parsedManifest.segments[i].duration\r\n };\r\n self.totalDuration += parsedManifest.segments[i].duration;\r\n self.tsFileList.push(fileinfo);\r\n //console.log(\"Last FullURL: \" + fileinfo.filename);\r\n //<2F><>¼<EFBFBD><C2BC><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>\r\n self.lastTsFile = parsedManifest.segments[i].uri;\r\n procFileRet = true;\r\n }\r\n }\r\n */\n }\n\n if (index < 0) {\n self.tsFileList.length = 0;\n self.tsFileList = [];\n self.getFileIndex = 0;\n\n for (i = 0; i < parsedManifest.segments.length; i++) {\n var strFilename = resolve(parsedManifest.segments[i].uri, self.url);\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.totalDuration += parsedManifest.segments[i].duration;\n self.tsFileList.push(fileinfo); //<2F><>¼<EFBFBD><C2BC><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>\n\n self.lastTsFile = parsedManifest.segments[i].uri;\n } //console.log(\"not found last file... change to next file...\" + self.tsFileList[self.getFileIndex].filename);\n\n }\n\n if (!procFileRet && openStreamFlag === 1) {\n //console.log(\"play complete...\");\n //common.sleep(3000).then(() => {\n // var objData = {\n // cmd: common.tOpenStream,\n // workerId: common.DOWNLOAD_WORKER_ID\n // };\n // self.postMessage(objData);\n //})\n return;\n }\n }\n }\n\n if (self.tsFileList.length > 0 && openStreamFlag == 1) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenStream\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData);\n }\n } else {\n if (xhr.readyState === 4 && xhr.status === 410) {\n self.postMessage({\n cmd: 410,\n code: xhr.status,\n msg: xhr.responseText\n });\n }\n }\n };\n\n xhr.send();\n };\n\n var GetTSFile = function GetTSFile() {\n //console.log(\"downloadWorker.js::GetTSFile...\")\n if (self.getFileCount++ < 1) return;\n var needUpdateList = false;\n\n if (self.pause) {\n return;\n }\n\n if (self._requestAbort == true) {\n stopDownload();\n return;\n } //<2F>ط<EFBFBD>\n\n\n if (!self.isLiveStream) {\n if (self.getFileIndex >= self.tsFileList.length) {\n //console.log(\"Get TS File Complete... \" + self.getFileIndex + \" / \" + self.tsFileList.length);\n self.getFileIndex++;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tGetTsComplete\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData);\n return;\n }\n } else {\n self.getFileCount = 0;\n\n if (self.getFileIndex >= self.tsFileList.length || self.getFileCount == 3) {\n //common.MediaWorkerLog(\"GetTsFile::StartDownload...1: \" + self.getFileIndex + \" / \" + self.tsFileList.length + \" getFileCount:\" + self.getFileCount);\n startDownload(self.url, 1);\n return;\n } else {\n //startDownload(self.url, 0);\n needUpdateList = true;\n }\n } //if (self.getFileIndex >= 1) {\n //console.log(\"Debug::Get TS File Complete...\");\n // return;\n //}\n\n\n var tsURL = self.tsFileList[self.getFileIndex].filename;\n\n if (self.isLiveStream) {\n var fileSequence = GetFileSequence(tsURL);\n var nSeq = parseInt(fileSequence);\n\n if (nSeq > 0 && nSeq > self.lastTsFileSequence + 1) {\n //<2F>м䶪ʧ<E4B6AA>ļ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MSE<53><45><EFBFBD><EFBFBD>\n self.sequenceExceptNum++; //console.log(\"downloadWorker::sequence: \" + self.lastTsFileSequence + \" --> \" + nSeq);\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tResetMSE\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"],\n fileSequence: self.sequenceExceptNum\n };\n self.postMessage(objData);\n }\n\n self.lastTsFileSequence = nSeq;\n } //common.MediaWorkerLog(\"Get TS File... \" + self.getFileIndex + \" / \" + self.tsFileList.length + \" :\" + tsURL);\n //console.log(\"Get TS Stream...\" + self.getFileIndex + \" \" + tsURL);\n //====================================================\n\n\n var xhr = new XMLHttpRequest();\n xhr.open('get', tsURL, true);\n xhr.responseType = 'arraybuffer';\n\n xhr.onreadystatechange = function () {\n //var len = xhr.getResponseHeader(\"Content-Length\");\n //if (len) {\n // size = len;\n //}\n if (xhr.status == 404) {\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"MediaWorkerLog\"](\"current file not found. refresh list...\");\n startDownload(self.url, 1);\n return;\n }\n\n if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {\n //common.MediaWorkerLog(\"get file data: \" + xhr.response.byteLength);\n var data = new Uint8Array(xhr.response);\n var startTimeSecs = 0; //if (self.seekTime > 0) {\n\n var i = 0;\n\n for (i = 0; i < self.getFileIndex; i++) {\n startTimeSecs += self.tsFileList[i].duration;\n } //self.seekTime = 0;\n //startTimeSecs = self.seekTime;\n //}\n\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"],\n mediaType: 1,\n codecId: 27,\n flag: 0,\n pts: 0,\n //pes.pts,\n playTimeSec: 0,\n //dur,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]); //==============================================================\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB>ts<74>ļ<EFBFBD><C4BC><EFBFBD>ʱ\n\n if (self.intervalHandle >= 0) {\n clearInterval(self.intervalHandle);\n self.intervalHandle = -1;\n }\n\n if (!self.pause) {\n var idx = self.getFileIndex;\n\n if (idx >= 0 && idx < self.tsFileList.length) {\n self.intervalValue = self.tsFileList[idx].duration * 1000 - 600; //console.log(\"get next file time:\" + self.intervalValue);\n } else {\n self.intervalValue = 2000; //console.log(\"set default time:\" + self.intervalValue);\n } //<2F><>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>, <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB>ts<74>ļ<EFBFBD><C4BC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>С\n\n\n if (self.isFirstFile) {\n self.isFirstFile = false;\n\n if (self.intervalValue > 900) {\n self.intervalValue -= 900;\n }\n }\n\n self.intervalHandle = setInterval(GetTSFile, self.intervalValue);\n } //==============================================================\n\n\n self.getFileCount = 100;\n self.getFileIndex++;\n\n if (self.getFileIndex >= 0 && self.getFileIndex < self.tsFileList.length) {//console.log(\"Get Next fileno: \" + self.getFileIndex + \" name:\" + self.tsFileList[self.getFileIndex].filename);\n }\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tGetTsStreamRsp\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData);\n\n if (needUpdateList) {\n //self.tsFileList = [];\n //self.getFileIndex = 0;\n startDownload(self.url, 0);\n return;\n }\n } else {//console.log(\"Get TS Fail: readyState:\" + xhr.readyState + \" status:\" + xhr.status);\n }\n };\n\n xhr.send(); //====================================================\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data; //console.log('downloadWorker.js::event:' + data);\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenStream\"]:\n //console.log(\"download-worker.js. init... \");\n self.url = data.url;\n self.seekTime = data.time; //self.canvas = data.canvas;\n\n /*\r\n if (self.webGLPlayer == null)\r\n {\r\n //console.log(\"new webglplayer\");\r\n self.webGLPlayer = new WebGLPlayer(data.canvas);\r\n self.webGLPlayer.initGL({\r\n preserveDrawingBuffer: false\r\n });\r\n }\r\n console.log(\"init webgl ok.\");\r\n */\n\n startDownload(data.url, 1);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tGetTsStream\"]:\n {\n if (data.t == 0) {\n //console.log(\"downloadWorker.js:: eventlistener:message:GetTsFile...\");\n GetTSFile();\n }\n /*\r\n else {\r\n let currentTime = new Date();\r\n var t = data.t + self.intervalValue;\r\n if (self.startDownloadTimeSecs > 0) {\r\n t -= (currentTime - self.startDownloadTimeSecs);\r\n }\r\n if (self.intervalHandle >= 0) {\r\n clearInterval(self.intervalHandle);\r\n self.intervalHandle = -1;\r\n }\r\n if (t > 1000) t -= 1000;\r\n //console.log(\"downloadWorker.js: GetNextTsFileTime: \" + t);\r\n self.intervalValue = t;\r\n self.intervalHandle = setInterval(GetTSFile, self.intervalValue);\r\n self.startDownloadTimeSecs = new Date();\r\n }\r\n */\n\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tReOpenStream\"]:\n //console.log(\"downloadWorker::ReopenStream...\");\n startDownload(self.url, 1);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tSeekStream\"]:\n var seekTimeSecs = data.time; //Ĭ<><C4AC>Ϊ<EFBFBD>ⲿ<EFBFBD><E2B2BF>ֵ(<28><>)\n\n if (data.type == 1) {\n //<2F>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Ϊ<>ٷֱ<D9B7>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA>\n seekTimeSecs = data.time / 100 * self.totalDuration;\n }\n\n var seekRet = false;\n var secs = 0,\n i = 0;\n\n for (i = 0; i < self.tsFileList.length; i++) {\n secs += self.tsFileList[i].duration;\n\n if (secs > seekTimeSecs) {\n //console.log(\"SeekTime:\" + seekTimeSecs + \" idx:\" + i + \" file:\" + self.tsFileList[i].filename);\n self.getFileIndex = i;\n GetTSFile();\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tSeekStream\"],\n type: data.type,\n time: seekTimeSecs\n };\n self.postMessage(objData);\n seekRet = true;\n break;\n }\n }\n\n if (!seekRet) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tSeekStream\"],\n type: data.type,\n time: seekTimeSecs\n };\n self.postMessage(objData);\n } //console.log(\"SeekTime: \" + seekTimeSecs);\n\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tPauseStream\"]:\n self.pause = true;\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tResumeStream\"]:\n //console.log(\"ResumtStream: startDownload(,1);\");\n self.pause = false;\n startDownload(self.url, 1);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"]:\n //console.log(\"downloadWorker:CloseStream..\");\n self._requestAbort = true;\n self.seekTime = 0;\n stopDownload();\n break;\n\n default:\n break;\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (HlsDownloaderWorker);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/downloadWorker.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/exp-golomb.js":
|
||
/*!*************************************!*\
|
||
!*** ./src/FlvPlayer/exp-golomb.js ***!
|
||
\*************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/**\r\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\r\n*/\n//import { logger } from '../utils/logger';\nvar ExpGolomb = /*#__PURE__*/function () {\n function ExpGolomb(data) {\n this.data = data; // the number of bytes left to examine in this.data\n\n this.bytesAvailable = data.byteLength; // the current word being examined\n\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n\n this.bitsAvailable = 0; // :uint\n } // ():void\n\n\n var _proto = ExpGolomb.prototype;\n\n _proto.loadWord = function loadWord() {\n var data = this.data,\n bytesAvailable = this.bytesAvailable,\n position = data.byteLength - bytesAvailable,\n workingBytes = new Uint8Array(4),\n availableBytes = Math.min(4, bytesAvailable);\n\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n\n workingBytes.set(data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0); // track the amount of this.data that has been processed\n\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n } // (count:int):void\n ;\n\n _proto.skipBits = function skipBits(count) {\n var skipBytes; // :int\n\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= skipBytes >> 3;\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n } // (size:int):uint\n ;\n\n _proto.readBits = function readBits(size) {\n var bits = Math.min(this.bitsAvailable, size),\n // :uint\n valu = this.word >>> 32 - bits; // :uint\n\n if (size > 32) {\n logger.error('Cannot read more than 32 bits at a time');\n }\n\n this.bitsAvailable -= bits;\n\n if (this.bitsAvailable > 0) {\n this.word <<= bits;\n } else if (this.bytesAvailable > 0) {\n this.loadWord();\n }\n\n bits = size - bits;\n\n if (bits > 0 && this.bitsAvailable) {\n return valu << bits | this.readBits(bits);\n } else {\n return valu;\n }\n } // ():uint\n ;\n\n _proto.skipLZ = function skipLZ() {\n var leadingZeroCount; // :uint\n\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n } // we exhausted word and still have not found a 1\n\n\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n } // ():void\n ;\n\n _proto.skipUEG = function skipUEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():void\n ;\n\n _proto.skipEG = function skipEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():uint\n ;\n\n _proto.readUEG = function readUEG() {\n var clz = this.skipLZ(); // :uint\n\n return this.readBits(clz + 1) - 1;\n } // ():int\n ;\n\n _proto.readEG = function readEG() {\n var valu = this.readUEG(); // :int\n\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n } // Some convenience functions\n // :Boolean\n ;\n\n _proto.readBoolean = function readBoolean() {\n return this.readBits(1) === 1;\n } // ():int\n ;\n\n _proto.readUByte = function readUByte() {\n return this.readBits(8);\n } // ():int\n ;\n\n _proto.readUShort = function readUShort() {\n return this.readBits(16);\n } // ():int\n ;\n\n _proto.readUInt = function readUInt() {\n return this.readBits(32);\n }\n /**\r\n * Advance the ExpGolomb decoder past a scaling list. The scaling\r\n * list is optionally transmitted as part of a sequence parameter\r\n * set and is not relevant to transmuxing.\r\n * @param count {number} the number of entries in this scaling list\r\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\r\n */\n ;\n\n _proto.skipScalingList = function skipScalingList(count) {\n var lastScale = 8,\n nextScale = 8,\n j,\n deltaScale;\n\n for (j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n }\n /**\r\n * Read a sequence parameter set and return some interesting video\r\n * properties. A sequence parameter set is the H264 metadata that\r\n * describes the properties of upcoming video frames.\r\n * @param data {Uint8Array} the bytes of a sequence parameter set\r\n * @return {object} an object with configuration parsed from the\r\n * sequence parameter set, including the dimensions of the\r\n * associated video frames.\r\n */\n ;\n\n _proto.readSPS = function readSPS() {\n var frameCropLeftOffset = 0,\n frameCropRightOffset = 0,\n frameCropTopOffset = 0,\n frameCropBottomOffset = 0,\n profileIdc,\n profileCompat,\n levelIdc,\n numRefFramesInPicOrderCntCycle,\n picWidthInMbsMinus1,\n picHeightInMapUnitsMinus1,\n frameMbsOnlyFlag,\n scalingListCount,\n i,\n readUByte = this.readUByte.bind(this),\n readBits = this.readBits.bind(this),\n readUEG = this.readUEG.bind(this),\n readBoolean = this.readBoolean.bind(this),\n skipBits = this.skipBits.bind(this),\n skipEG = this.skipEG.bind(this),\n skipUEG = this.skipUEG.bind(this),\n skipScalingList = this.skipScalingList.bind(this);\n readUByte();\n profileIdc = readUByte(); // profile_idc\n\n profileCompat = readBits(5); // constraint_set[0-4]_flag, u(5)\n\n skipBits(3); // reserved_zero_3bits u(3),\n\n levelIdc = readUByte(); // level_idc u(8)\n\n skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n\n if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n var chromaFormatIdc = readUEG();\n\n if (chromaFormatIdc === 3) {\n skipBits(1);\n } // separate_colour_plane_flag\n\n\n skipUEG(); // bit_depth_luma_minus8\n\n skipUEG(); // bit_depth_chroma_minus8\n\n skipBits(1); // qpprime_y_zero_transform_bypass_flag\n\n if (readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n\n for (i = 0; i < scalingListCount; i++) {\n if (readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n skipScalingList(16);\n } else {\n skipScalingList(64);\n }\n }\n }\n }\n }\n\n skipUEG(); // log2_max_frame_num_minus4\n\n var picOrderCntType = readUEG();\n\n if (picOrderCntType === 0) {\n readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n skipBits(1); // delta_pic_order_always_zero_flag\n\n skipEG(); // offset_for_non_ref_pic\n\n skipEG(); // offset_for_top_to_bottom_field\n\n numRefFramesInPicOrderCntCycle = readUEG();\n\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n skipEG();\n } // offset_for_ref_frame[ i ]\n\n }\n\n skipUEG(); // max_num_ref_frames\n\n skipBits(1); // gaps_in_frame_num_value_allowed_flag\n\n picWidthInMbsMinus1 = readUEG();\n picHeightInMapUnitsMinus1 = readUEG();\n frameMbsOnlyFlag = readBits(1);\n\n if (frameMbsOnlyFlag === 0) {\n skipBits(1);\n } // mb_adaptive_frame_field_flag\n\n\n skipBits(1); // direct_8x8_inference_flag\n\n if (readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = readUEG();\n frameCropRightOffset = readUEG();\n frameCropTopOffset = readUEG();\n frameCropBottomOffset = readUEG();\n }\n\n var pixelRatio = [1, 1];\n\n if (readBoolean()) {\n // vui_parameters_present_flag\n if (readBoolean()) {\n // aspect_ratio_info_present_flag\n var aspectRatioIdc = readUByte();\n\n switch (aspectRatioIdc) {\n case 1:\n pixelRatio = [1, 1];\n break;\n\n case 2:\n pixelRatio = [12, 11];\n break;\n\n case 3:\n pixelRatio = [10, 11];\n break;\n\n case 4:\n pixelRatio = [16, 11];\n break;\n\n case 5:\n pixelRatio = [40, 33];\n break;\n\n case 6:\n pixelRatio = [24, 11];\n break;\n\n case 7:\n pixelRatio = [20, 11];\n break;\n\n case 8:\n pixelRatio = [32, 11];\n break;\n\n case 9:\n pixelRatio = [80, 33];\n break;\n\n case 10:\n pixelRatio = [18, 11];\n break;\n\n case 11:\n pixelRatio = [15, 11];\n break;\n\n case 12:\n pixelRatio = [64, 33];\n break;\n\n case 13:\n pixelRatio = [160, 99];\n break;\n\n case 14:\n pixelRatio = [4, 3];\n break;\n\n case 15:\n pixelRatio = [3, 2];\n break;\n\n case 16:\n pixelRatio = [2, 1];\n break;\n\n case 255:\n {\n pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n break;\n }\n }\n }\n }\n\n return {\n width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n pixelRatio: pixelRatio\n };\n };\n\n _proto.readSliceType = function readSliceType() {\n // skip NALu type\n this.readUByte(); // discard first_mb_in_slice\n\n this.readUEG(); // return slice_type\n\n return this.readUEG();\n };\n\n return ExpGolomb;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ExpGolomb);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/exp-golomb.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/config.js":
|
||
/*!****************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/config.js ***!
|
||
\****************************************/
|
||
/*! exports provided: defaultConfig, createDefaultConfig */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultConfig\", function() { return defaultConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDefaultConfig\", function() { return createDefaultConfig; });\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar defaultConfig = {\n enableWorker: false,\n enableStashBuffer: true,\n stashInitialSize: undefined,\n isLive: false,\n lazyLoad: true,\n lazyLoadMaxDuration: 3 * 60,\n lazyLoadRecoverDuration: 30,\n deferLoadAfterSourceOpen: true,\n // autoCleanupSourceBuffer: default as false, leave unspecified\n autoCleanupMaxBackwardDuration: 3 * 60,\n autoCleanupMinBackwardDuration: 2 * 60,\n statisticsInfoReportInterval: 600,\n fixAudioTimestampGap: true,\n accurateSeek: false,\n seekType: 'range',\n // [range, param, custom]\n seekParamStart: 'bstart',\n seekParamEnd: 'bend',\n rangeLoadZeroStart: false,\n customSeekHandler: undefined,\n reuseRedirectedURL: false,\n // referrerPolicy: leave as unspecified\n headers: undefined,\n customLoader: undefined\n};\nfunction createDefaultConfig() {\n return Object.assign({}, defaultConfig);\n}\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/config.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/features.js":
|
||
/*!***********************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/features.js ***!
|
||
\***********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../io/io-controller.js */ \"./src/FlvPlayer/flv.js/io/io-controller.js\");\n/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config.js */ \"./src/FlvPlayer/flv.js/config.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\nvar Features = /*#__PURE__*/function () {\n function Features() {}\n\n Features.supportMSEH264Playback = function supportMSEH264Playback() {\n return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"');\n };\n\n Features.supportNetworkStreamIO = function supportNetworkStreamIO() {\n var ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({}, Object(_config_js__WEBPACK_IMPORTED_MODULE_1__[\"createDefaultConfig\"])());\n var loaderType = ioctl.loaderType;\n ioctl.destroy();\n return loaderType == 'fetch-stream-loader' || loaderType == 'xhr-moz-chunked-loader';\n };\n\n Features.getNetworkLoaderTypeName = function getNetworkLoaderTypeName() {\n var ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({}, Object(_config_js__WEBPACK_IMPORTED_MODULE_1__[\"createDefaultConfig\"])());\n var loaderType = ioctl.loaderType;\n ioctl.destroy();\n return loaderType;\n };\n\n Features.supportNativeMediaPlayback = function supportNativeMediaPlayback(mimeType) {\n if (Features.videoElement == undefined) {\n Features.videoElement = window.document.createElement('video');\n }\n\n var canPlay = Features.videoElement.canPlayType(mimeType);\n return canPlay === 'probably' || canPlay == 'maybe';\n };\n\n Features.getFeatureList = function getFeatureList() {\n var features = {\n mseFlvPlayback: false,\n mseLiveFlvPlayback: false,\n networkStreamIO: false,\n networkLoaderName: '',\n nativeMP4H264Playback: false,\n nativeWebmVP8Playback: false,\n nativeWebmVP9Playback: false\n };\n features.mseFlvPlayback = Features.supportMSEH264Playback();\n features.networkStreamIO = Features.supportNetworkStreamIO();\n features.networkLoaderName = Features.getNetworkLoaderTypeName();\n features.mseLiveFlvPlayback = features.mseFlvPlayback && features.networkStreamIO;\n features.nativeMP4H264Playback = Features.supportNativeMediaPlayback('video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"');\n features.nativeWebmVP8Playback = Features.supportNativeMediaPlayback('video/webm; codecs=\"vp8.0, vorbis\"');\n features.nativeWebmVP9Playback = Features.supportNativeMediaPlayback('video/webm; codecs=\"vp9\"');\n return features;\n };\n\n return Features;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Features);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/features.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/media-info.js":
|
||
/*!*************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/media-info.js ***!
|
||
\*************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar MediaInfo = /*#__PURE__*/function () {\n function MediaInfo() {\n this.mimeType = null;\n this.duration = null;\n this.hasAudio = null;\n this.hasVideo = null;\n this.audioCodec = null;\n this.videoCodec = null;\n this.audioDataRate = null;\n this.videoDataRate = null;\n this.audioSampleRate = null;\n this.audioChannelCount = null;\n this.width = null;\n this.height = null;\n this.fps = null;\n this.profile = null;\n this.level = null;\n this.refFrames = null;\n this.chromaFormat = null;\n this.sarNum = null;\n this.sarDen = null;\n this.metadata = null;\n this.segments = null; // MediaInfo[]\n\n this.segmentCount = null;\n this.hasKeyframesIndex = null;\n this.keyframesIndex = null;\n }\n\n var _proto = MediaInfo.prototype;\n\n _proto.isComplete = function isComplete() {\n var audioInfoComplete = this.hasAudio === false || this.hasAudio === true && this.audioCodec != null && this.audioSampleRate != null && this.audioChannelCount != null;\n var videoInfoComplete = this.hasVideo === false || this.hasVideo === true && this.videoCodec != null && this.width != null && this.height != null && this.fps != null && this.profile != null && this.level != null && this.refFrames != null && this.chromaFormat != null && this.sarNum != null && this.sarDen != null; // keyframesIndex may not be present\n\n return this.mimeType != null && this.duration != null && this.metadata != null && this.hasKeyframesIndex != null && audioInfoComplete && videoInfoComplete;\n };\n\n _proto.isSeekable = function isSeekable() {\n return this.hasKeyframesIndex === true;\n };\n\n _proto.getNearestKeyframe = function getNearestKeyframe(milliseconds) {\n if (this.keyframesIndex == null) {\n return null;\n }\n\n var table = this.keyframesIndex;\n\n var keyframeIdx = this._search(table.times, milliseconds);\n\n return {\n index: keyframeIdx,\n milliseconds: table.times[keyframeIdx],\n fileposition: table.filepositions[keyframeIdx]\n };\n };\n\n _proto._search = function _search(list, value) {\n var idx = 0;\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n\n if (value < list[0]) {\n idx = 0;\n lbound = ubound + 1; // skip search\n }\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || value >= list[mid] && value < list[mid + 1]) {\n idx = mid;\n break;\n } else if (list[mid] < value) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n\n return idx;\n };\n\n return MediaInfo;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MediaInfo);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/media-info.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/media-segment-info.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/media-segment-info.js ***!
|
||
\*********************************************************/
|
||
/*! exports provided: SampleInfo, MediaSegmentInfo, IDRSampleList, MediaSegmentInfoList */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SampleInfo\", function() { return SampleInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaSegmentInfo\", function() { return MediaSegmentInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IDRSampleList\", function() { return IDRSampleList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaSegmentInfoList\", function() { return MediaSegmentInfoList; });\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n// Represents an media sample (audio / video)\nvar SampleInfo = function SampleInfo(dts, pts, duration, originalDts, isSync) {\n this.dts = dts;\n this.pts = pts;\n this.duration = duration;\n this.originalDts = originalDts;\n this.isSyncPoint = isSync;\n this.fileposition = null;\n}; // Media Segment concept is defined in Media Source Extensions spec.\n// Particularly in ISO BMFF format, an Media Segment contains a moof box followed by a mdat box.\n\nvar MediaSegmentInfo = /*#__PURE__*/function () {\n function MediaSegmentInfo() {\n this.beginDts = 0;\n this.endDts = 0;\n this.beginPts = 0;\n this.endPts = 0;\n this.originalBeginDts = 0;\n this.originalEndDts = 0;\n this.syncPoints = []; // SampleInfo[n], for video IDR frames only\n\n this.firstSample = null; // SampleInfo\n\n this.lastSample = null; // SampleInfo\n }\n\n var _proto = MediaSegmentInfo.prototype;\n\n _proto.appendSyncPoint = function appendSyncPoint(sampleInfo) {\n // also called Random Access Point\n sampleInfo.isSyncPoint = true;\n this.syncPoints.push(sampleInfo);\n };\n\n return MediaSegmentInfo;\n}(); // Ordered list for recording video IDR frames, sorted by originalDts\n\nvar IDRSampleList = /*#__PURE__*/function () {\n function IDRSampleList() {\n this._list = [];\n }\n\n var _proto2 = IDRSampleList.prototype;\n\n _proto2.clear = function clear() {\n this._list = [];\n };\n\n _proto2.appendArray = function appendArray(syncPoints) {\n var list = this._list;\n\n if (syncPoints.length === 0) {\n return;\n }\n\n if (list.length > 0 && syncPoints[0].originalDts < list[list.length - 1].originalDts) {\n this.clear();\n }\n\n Array.prototype.push.apply(list, syncPoints);\n };\n\n _proto2.getLastSyncPointBeforeDts = function getLastSyncPointBeforeDts(dts) {\n if (this._list.length == 0) {\n return null;\n }\n\n var list = this._list;\n var idx = 0;\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n\n if (dts < list[0].dts) {\n idx = 0;\n lbound = ubound + 1;\n }\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || dts >= list[mid].dts && dts < list[mid + 1].dts) {\n idx = mid;\n break;\n } else if (list[mid].dts < dts) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n\n return this._list[idx];\n };\n\n return IDRSampleList;\n}(); // Data structure for recording information of media segments in single track.\n\nvar MediaSegmentInfoList = /*#__PURE__*/function () {\n function MediaSegmentInfoList(type) {\n this._type = type;\n this._list = [];\n this._lastAppendLocation = -1; // cached last insert location\n }\n\n var _proto3 = MediaSegmentInfoList.prototype;\n\n _proto3.isEmpty = function isEmpty() {\n return this._list.length === 0;\n };\n\n _proto3.clear = function clear() {\n this._list = [];\n this._lastAppendLocation = -1;\n };\n\n _proto3._searchNearestSegmentBefore = function _searchNearestSegmentBefore(originalBeginDts) {\n var list = this._list;\n\n if (list.length === 0) {\n return -2;\n }\n\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n var idx = 0;\n\n if (originalBeginDts < list[0].originalBeginDts) {\n idx = -1;\n return idx;\n }\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || originalBeginDts > list[mid].lastSample.originalDts && originalBeginDts < list[mid + 1].originalBeginDts) {\n idx = mid;\n break;\n } else if (list[mid].originalBeginDts < originalBeginDts) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n\n return idx;\n };\n\n _proto3._searchNearestSegmentAfter = function _searchNearestSegmentAfter(originalBeginDts) {\n return this._searchNearestSegmentBefore(originalBeginDts) + 1;\n };\n\n _proto3.append = function append(mediaSegmentInfo) {\n var list = this._list;\n var msi = mediaSegmentInfo;\n var lastAppendIdx = this._lastAppendLocation;\n var insertIdx = 0;\n\n if (lastAppendIdx !== -1 && lastAppendIdx < list.length && msi.originalBeginDts >= list[lastAppendIdx].lastSample.originalDts && (lastAppendIdx === list.length - 1 || lastAppendIdx < list.length - 1 && msi.originalBeginDts < list[lastAppendIdx + 1].originalBeginDts)) {\n insertIdx = lastAppendIdx + 1; // use cached location idx\n } else {\n if (list.length > 0) {\n insertIdx = this._searchNearestSegmentBefore(msi.originalBeginDts) + 1;\n }\n }\n\n this._lastAppendLocation = insertIdx;\n\n this._list.splice(insertIdx, 0, msi);\n };\n\n _proto3.getLastSegmentBefore = function getLastSegmentBefore(originalBeginDts) {\n var idx = this._searchNearestSegmentBefore(originalBeginDts);\n\n if (idx >= 0) {\n return this._list[idx];\n } else {\n // -1\n return null;\n }\n };\n\n _proto3.getLastSampleBefore = function getLastSampleBefore(originalBeginDts) {\n var segment = this.getLastSegmentBefore(originalBeginDts);\n\n if (segment != null) {\n return segment.lastSample;\n } else {\n return null;\n }\n };\n\n _proto3.getLastSyncPointBefore = function getLastSyncPointBefore(originalBeginDts) {\n var segmentIdx = this._searchNearestSegmentBefore(originalBeginDts);\n\n var syncPoints = this._list[segmentIdx].syncPoints;\n\n while (syncPoints.length === 0 && segmentIdx > 0) {\n segmentIdx--;\n syncPoints = this._list[segmentIdx].syncPoints;\n }\n\n if (syncPoints.length > 0) {\n return syncPoints[syncPoints.length - 1];\n } else {\n return null;\n }\n };\n\n _createClass(MediaSegmentInfoList, [{\n key: \"type\",\n get: function get() {\n return this._type;\n }\n }, {\n key: \"length\",\n get: function get() {\n return this._list.length;\n }\n }]);\n\n return MediaSegmentInfoList;\n}();\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/media-segment-info.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/mse-controller.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/mse-controller.js ***!
|
||
\*****************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _mse_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mse-events.js */ \"./src/FlvPlayer/flv.js/core/mse-events.js\");\n/* harmony import */ var _media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./media-segment-info.js */ \"./src/FlvPlayer/flv.js/core/media-segment-info.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n\n\n // Media Source Extensions controller\n\nvar MSEController = /*#__PURE__*/function () {\n function MSEController(config) {\n this.TAG = 'MSEController'; //console.log(\"MSEController::constructor...\");\n\n this._config = config;\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._currentPlayTime = 0;\n this._hlsSeekTime = 0;\n this._lastPlayTime = 0;\n this._pause = false;\n\n if (this._config.isLive && this._config.autoCleanupSourceBuffer == undefined) {\n // For live stream, do auto cleanup by default\n this._config.autoCleanupSourceBuffer = true;\n }\n\n this.e = {\n onSourceOpen: this._onSourceOpen.bind(this),\n onSourceEnded: this._onSourceEnded.bind(this),\n onSourceClose: this._onSourceClose.bind(this),\n onSourceBufferError: this._onSourceBufferError.bind(this),\n onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this)\n };\n this._mediaSource = null;\n this._mediaSourceObjectURL = null;\n this._mediaElement = null;\n this._isBufferFull = false;\n this._hasPendingEos = false;\n this._seek = false;\n this._requireSetMediaDuration = false;\n this._pendingMediaDuration = 0;\n this._pendingSourceBufferInit = [];\n this._mimeTypes = {\n video: null,\n audio: null\n };\n this._sourceBuffers = {\n video: null,\n audio: null\n };\n this._lastInitSegments = {\n video: null,\n audio: null\n };\n this._pendingSegments = {\n video: [],\n audio: []\n };\n this._pendingRemoveRanges = {\n video: [],\n audio: []\n };\n this._idrList = new _media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"IDRSampleList\"]();\n }\n\n var _proto = MSEController.prototype;\n\n _proto.destroy = function destroy() {\n if (this._mediaElement || this._mediaSource) {\n this.detachMediaElement();\n }\n\n this.e = null;\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n };\n\n _proto.on = function on(event, listener) {\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.setSeekPlayTime = function setSeekPlayTime(seekTimeSecs) {\n if (this._mediaElement) {\n this._lastPlayTime = Math.floor(this._mediaElement.currentTime);\n }\n\n this._hlsSeekTime = seekTimeSecs;\n };\n\n _proto.pause = function pause() {\n this._pause = true;\n };\n\n _proto.resume = function resume() {\n this._pause = false;\n };\n\n _proto.attachMediaElement = function attachMediaElement(mediaElement) {\n //console.log(\"MSEController::attachMediaElement...\");\n if (this._mediaSource) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__[\"IllegalStateException\"]('MediaSource has been attached to an HTMLMediaElement!');\n }\n\n var ms = this._mediaSource = new window.MediaSource();\n ms.addEventListener('sourceopen', this.e.onSourceOpen);\n ms.addEventListener('sourceended', this.e.onSourceEnded);\n ms.addEventListener('sourceclose', this.e.onSourceClose);\n this._mediaElement = mediaElement;\n this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource);\n mediaElement.src = this._mediaSourceObjectURL;\n var self = this;\n mediaElement.addEventListener(\"timeupdate\", function () {\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD>\n var timeDisplay = Math.floor(mediaElement.currentTime);\n\n if (self._hlsSeekTime > 0) {\n timeDisplay = timeDisplay - self._lastPlayTime + self._hlsSeekTime;\n }\n\n if (self._currentPlayTime != timeDisplay) {\n //self._currentPlayTime = Math.floor(mediaElement.currentTime);\n self._currentPlayTime = timeDisplay; //console.log(\"PlayTime: \" + Math.floor(mediaElement.currentTime) + \" duration:\" + mediaElement.duration);\n\n if (self._emitter) {\n self._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].CB_PLAY_INFO);\n }\n }\n }, false);\n mediaElement.addEventListener(\"pause\", function () {//console.log(\"mse-controller.js:: pause\");\n });\n mediaElement.addEventListener(\"play\", function () {//console.log(\"mse-controller.js:: play\");\n });\n };\n\n _proto.getCurrentPlayTime = function getCurrentPlayTime() {\n return this._currentPlayTime;\n };\n\n _proto.getTotalDuration = function getTotalDuration() {\n return this._mediaElement.duration;\n };\n\n _proto.detachMediaElement = function detachMediaElement() {\n if (this._mediaSource) {\n var ms = this._mediaSource;\n\n for (var type in this._sourceBuffers) {\n // pending segments should be discard\n var ps = this._pendingSegments[type];\n ps.splice(0, ps.length);\n this._pendingSegments[type] = null;\n this._pendingRemoveRanges[type] = null;\n this._lastInitSegments[type] = null; // remove all sourcebuffers\n\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n if (ms.readyState !== 'closed') {\n // ms edge can throw an error: Unexpected call to method or property access\n try {\n ms.removeSourceBuffer(sb);\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n }\n\n sb.removeEventListener('error', this.e.onSourceBufferError);\n sb.removeEventListener('updateend', this.e.onSourceBufferUpdateEnd);\n }\n\n this._mimeTypes[type] = null;\n this._sourceBuffers[type] = null;\n }\n }\n\n if (ms.readyState === 'open') {\n try {\n ms.endOfStream();\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n }\n }\n\n ms.removeEventListener('sourceopen', this.e.onSourceOpen);\n ms.removeEventListener('sourceended', this.e.onSourceEnded);\n ms.removeEventListener('sourceclose', this.e.onSourceClose);\n this._pendingSourceBufferInit = [];\n this._isBufferFull = false;\n\n this._idrList.clear();\n\n this._mediaSource = null;\n }\n\n if (this._mediaElement) {\n this._mediaElement.src = '';\n\n this._mediaElement.removeAttribute('src');\n\n this._mediaElement = null;\n }\n\n if (this._mediaSourceObjectURL) {\n window.URL.revokeObjectURL(this._mediaSourceObjectURL);\n this._mediaSourceObjectURL = null;\n }\n };\n\n _proto.appendInitSegment = function appendInitSegment(initSegment, deferred) {\n //console.log(\"MSEController::appendInitSegment...\");\n if (!this._mediaSource || this._mediaSource.readyState !== 'open') {\n // sourcebuffer creation requires mediaSource.readyState === 'open'\n // so we defer the sourcebuffer creation, until sourceopen event triggered\n this._pendingSourceBufferInit.push(initSegment); // make sure that this InitSegment is in the front of pending segments queue\n\n\n this._pendingSegments[initSegment.type].push(initSegment);\n\n return;\n }\n\n var is = initSegment;\n var mimeType = \"\" + is.container;\n\n if (is.codec && is.codec.length > 0) {\n mimeType += \";codecs=\" + is.codec;\n } //console.log(\"MSEController::appendInitSegment... mimeType: \" + mimeType);\n\n\n var firstInitSegment = false;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'Received Initialization Segment, mimeType: ' + mimeType);\n this._lastInitSegments[is.type] = is;\n\n if (mimeType !== this._mimeTypes[is.type]) {\n if (!this._mimeTypes[is.type]) {\n // empty, first chance create sourcebuffer\n firstInitSegment = true;\n\n try {\n var sb = this._sourceBuffers[is.type] = this._mediaSource.addSourceBuffer(mimeType);\n\n sb.addEventListener('error', this.e.onSourceBufferError);\n sb.addEventListener('updateend', this.e.onSourceBufferUpdateEnd);\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERROR, {\n code: error.code,\n msg: error.message\n });\n\n return;\n }\n } else {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, \"Notice: \" + is.type + \" mimeType changed, origin: \" + this._mimeTypes[is.type] + \", target: \" + mimeType);\n }\n\n this._mimeTypes[is.type] = mimeType;\n }\n\n if (!deferred) {\n // deferred means this InitSegment has been pushed to pendingSegments queue\n this._pendingSegments[is.type].push(is);\n }\n\n if (!firstInitSegment) {\n // append immediately only if init segment in subsequence\n if (this._sourceBuffers[is.type] && !this._sourceBuffers[is.type].updating) {\n this._doAppendSegments();\n }\n }\n\n if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari && is.container === 'audio/mpeg' && is.mediaDuration > 0) {\n // 'audio/mpeg' track under Safari may cause MediaElement's duration to be NaN\n // Manually correct MediaSource.duration to make progress bar seekable, and report right duration\n this._requireSetMediaDuration = true;\n this._pendingMediaDuration = is.mediaDuration / 1000; // in seconds\n //console.log(\"mse-controller.js::this._pendingMediaDuration: \" + this._pendingMediaDuration);\n\n this._updateMediaSourceDuration();\n }\n };\n\n _proto.appendMediaSegment = function appendMediaSegment(mediaSegment) {\n //console.log(\"MSEController::appendMediaSegment... \" + mediaSegment.type);\n var ms = mediaSegment;\n\n this._pendingSegments[ms.type].push(ms);\n\n if (this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer() || this._seek) {\n this._doCleanupSourceBuffer();\n\n this._seek = false;\n }\n\n var sb = this._sourceBuffers[ms.type];\n\n if (sb && !sb.updating && !this._hasPendingRemoveRanges()) {\n this._doAppendSegments();\n }\n };\n\n _proto.reset = function reset(callPlay) {\n //console.log(\"mse-reset...\");\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n var doRemove = false;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n /*\r\n if (start <= currentTime && currentTime < end + 3) { // padding 3 seconds\r\n if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) {\r\n doRemove = true;\r\n let removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration;\r\n this._pendingRemoveRanges[type].push({ start: start, end: removeEnd });\r\n }\r\n } else if (end < currentTime) {\r\n */\n\n doRemove = true;\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: end\n }); //}\n\n }\n\n if (doRemove && !sb.updating) {\n this._doRemoveRanges();\n }\n }\n } //let ms = this._mediaSource;\n //ms.clearLiveSeekableRange();\n\n\n this._mediaElement.currentTime = 1; //this._config.autoCleanupMinBackwardDuration;\n\n if (callPlay) {\n this._mediaElement.play();\n }\n /*\r\n if (this._mediaSource) {\r\n let ms = this._mediaSource;\r\n for (let type in this._sourceBuffers) {\r\n // pending segments should be discard\r\n let ps = this._pendingSegments[type];\r\n ps.splice(0, ps.length);\r\n //this._pendingSegments[type] = null;\r\n //this._pendingRemoveRanges[type] = null;\r\n //this._lastInitSegments[type] = null;\r\n // remove all sourcebuffers\r\n let sb = this._sourceBuffers[type];\r\n if (sb) {\r\n if (ms.readyState !== 'closed') {\r\n // ms edge can throw an error: Unexpected call to method or property access\r\n try {\r\n //ms.clearLiveSeekableRange();\r\n ms.removeSourceBuffer(sb);\r\n sb.removeEventListener('error', this.e.onSourceBufferError);\r\n sb.removeEventListener('updateend', this.e.onSourceBufferUpdateEnd);\r\n if (this._mimeTypes[type]) { // create sourcebuffer\r\n //firstInitSegment = true;\r\n try {\r\n let sb2 = this._sourceBuffers[type] = this._mediaSource.addSourceBuffer(this._mimeTypes[type]);\r\n sb2.addEventListener('error', this.e.onSourceBufferError);\r\n sb2.addEventListener('updateend', this.e.onSourceBufferUpdateEnd);\r\n this._mediaElement.currentTime = 0;\r\n } catch (error) {\r\n Log.e(this.TAG, error.message);\r\n this._emitter.emit(MSEEvents.ERROR, { code: error.code, msg: error.message });\r\n //return;\r\n }\r\n } else {\r\n Log.v(this.TAG, `Notice: ${type} mimeType changed, origin: ${this._mimeTypes[type]}, target: ${this._mimeTypes[type]}`);\r\n }\r\n } catch (error) {\r\n Log.e(this.TAG, error.message);\r\n }\r\n }\r\n //this._mimeTypes[type] = null;\r\n //this._sourceBuffers[type] = null;\r\n }\r\n }\r\n }\r\n */\n //this._doCleanupSourceBuffer();\n //this._mediaElement.currentTime = 0;\n\n };\n\n _proto.seek = function seek(seconds) {\n // remove all appended buffers\n for (var type in this._sourceBuffers) {\n if (!this._sourceBuffers[type]) {\n continue;\n } // abort current buffer append algorithm\n\n\n var sb = this._sourceBuffers[type];\n\n if (this._mediaSource.readyState === 'open') {\n try {\n // If range removal algorithm is running, InvalidStateError will be throwed\n // Ignore it.\n sb.abort();\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n }\n } // IDRList should be clear\n\n\n this._idrList.clear(); // pending segments should be discard\n\n\n var ps = this._pendingSegments[type];\n ps.splice(0, ps.length);\n\n if (this._mediaSource.readyState === 'closed') {\n // Parent MediaSource object has been detached from HTMLMediaElement\n continue;\n } // record ranges to be remove from SourceBuffer\n\n\n for (var i = 0; i < sb.buffered.length; i++) {\n var start = sb.buffered.start(i);\n var end = sb.buffered.end(i);\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: end\n });\n } // if sb is not updating, let's remove ranges now!\n\n\n if (!sb.updating) {\n this._doRemoveRanges();\n } // Safari 10 may get InvalidStateError in the later appendBuffer() after SourceBuffer.remove() call\n // Internal parser's state may be invalid at this time. Re-append last InitSegment to workaround.\n // Related issue: https://bugs.webkit.org/show_bug.cgi?id=159230\n\n\n if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari) {\n var lastInitSegment = this._lastInitSegments[type];\n\n if (lastInitSegment) {\n this._pendingSegments[type].push(lastInitSegment);\n\n if (!sb.updating) {\n this._doAppendSegments();\n }\n }\n }\n }\n };\n\n _proto.endOfStream = function endOfStream() {\n //console.log(\"MSEController::endOfStream...\");\n var ms = this._mediaSource;\n var sb = this._sourceBuffers;\n\n if (!ms || ms.readyState !== 'open') {\n if (ms && ms.readyState === 'closed' && this._hasPendingSegments()) {\n // If MediaSource hasn't turned into open state, and there're pending segments\n // Mark pending endOfStream, defer call until all pending segments appended complete\n this._hasPendingEos = true;\n }\n\n return;\n }\n\n if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {\n // If any sourcebuffer is updating, defer endOfStream operation\n // See _onSourceBufferUpdateEnd()\n this._hasPendingEos = true;\n } else {\n this._hasPendingEos = false; // Notify media data loading complete\n // This is helpful for correcting total duration to match last media segment\n // Otherwise MediaElement's ended event may not be triggered\n\n ms.endOfStream();\n }\n };\n\n _proto.getNearestKeyframe = function getNearestKeyframe(dts) {\n return this._idrList.getLastSyncPointBeforeDts(dts);\n };\n\n _proto._needCleanupSourceBuffer = function _needCleanupSourceBuffer() {\n if (!this._config.autoCleanupSourceBuffer) {\n return false;\n }\n\n var currentTime = this._mediaElement.currentTime;\n\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n\n if (buffered.length >= 1) {\n if (currentTime - buffered.start(0) >= this._config.autoCleanupMaxBackwardDuration) {\n return true;\n }\n }\n }\n }\n\n return false;\n };\n\n _proto.AdjustPlayTimeToEnd = function AdjustPlayTimeToEnd() {\n if (this._emitter == null || this._emitter == undefined) return;\n var currentTime = this._mediaElement.currentTime;\n\n for (var type in this._sourceBuffers) {\n if (type !== \"video\") continue;\n var sb = this._sourceBuffers[type];\n\n if (sb && !sb.updating) {\n var buffered = sb.buffered;\n\n if (buffered.length > 0) {\n var end = buffered.end(buffered.length - 1);\n var playTime = end; //if (end > 0) end -= 3;\n\n if (playTime - currentTime > 2) {\n this._mediaElement.pause();\n\n playTime = currentTime + (playTime - currentTime) / 2;\n\n if (playTime > 0) {\n this._mediaElement.currentTime = playTime; //console.log(\"AdjustPlayTimeToEnd: \" + currentTime + \" ----> \" + playTime + \" / \" + end);\n }\n\n this._mediaElement.play();\n }\n }\n }\n }\n };\n\n _proto.GetSourceBufferStartTime = function GetSourceBufferStartTime() {\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n return start + (end - start) / 2;\n }\n }\n }\n };\n\n _proto._doCleanupSourceBuffer = function _doCleanupSourceBuffer() {\n var currentTime = this._mediaElement.currentTime;\n\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n var doRemove = false;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n\n if (start <= currentTime && currentTime < end + 3) {\n // padding 3 seconds\n if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) {\n doRemove = true;\n var removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration;\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: removeEnd\n });\n }\n } else if (end < currentTime) {\n doRemove = true;\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: end\n });\n }\n }\n\n if (doRemove && !sb.updating) {\n this._doRemoveRanges();\n }\n }\n }\n } //add by gavin\n ;\n\n _proto.__ClearAllSourceBuffer = function __ClearAllSourceBuffer() {\n console.log(\"Clear all source buffer...\");\n\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n var doRemove = false;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n doRemove = true;\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: end\n });\n }\n\n if (doRemove && !sb.updating) {\n this._doRemoveRanges();\n }\n }\n }\n };\n\n _proto._updateMediaSourceDuration = function _updateMediaSourceDuration() {\n //console.log(\"MSEController::_updateMediaSourceDuration...\");\n var sb = this._sourceBuffers;\n\n if (this._mediaElement.readyState === 0 || this._mediaSource.readyState !== 'open') {\n return;\n }\n\n if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {\n return;\n }\n\n var current = this._mediaSource.duration;\n var target = this._pendingMediaDuration;\n\n if (target > 0 && (isNaN(current) || target > current)) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, \"Update MediaSource duration from \" + current + \" to \" + target); //console.log(\"mse-controller.js::update mediasource Duration: \" + target);\n\n this._mediaSource.duration = target;\n }\n\n this._requireSetMediaDuration = false;\n this._pendingMediaDuration = 0;\n };\n\n _proto._doRemoveRanges = function _doRemoveRanges() {\n //console.log(\"MSEController::_doRemoveRanges...\");\n for (var type in this._pendingRemoveRanges) {\n if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {\n continue;\n }\n\n var sb = this._sourceBuffers[type];\n var ranges = this._pendingRemoveRanges[type];\n\n while (ranges.length && !sb.updating) {\n var range = ranges.shift();\n sb.remove(range.start, range.end);\n }\n }\n };\n\n _proto._doAppendSegments = function _doAppendSegments() {\n //console.log(\"MSEController::_doAppendSegments...\");\n var pendingSegments = this._pendingSegments;\n\n if (_common_common__WEBPACK_IMPORTED_MODULE_6__[\"GetLiveStreamType\"]() && !this._pause) {\n this.AdjustPlayTimeToEnd();\n }\n\n for (var type in pendingSegments) {\n if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {\n continue;\n }\n\n if (pendingSegments[type].length > 0) {\n var segment = pendingSegments[type].shift();\n\n if (segment.timestampOffset) {\n // For MPEG audio stream in MSE, if unbuffered-seeking occurred\n // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.\n var currentOffset = this._sourceBuffers[type].timestampOffset;\n var targetOffset = segment.timestampOffset / 1000; // in seconds\n\n var delta = Math.abs(currentOffset - targetOffset);\n\n if (delta > 0.1) {\n // If time delta > 100ms\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, \"Update MPEG audio timestampOffset from \" + currentOffset + \" to \" + targetOffset);\n this._sourceBuffers[type].timestampOffset = targetOffset;\n }\n\n delete segment.timestampOffset;\n }\n\n if (!segment.data || segment.data.byteLength === 0) {\n // Ignore empty buffer\n continue;\n }\n\n try {\n //var data = new Uint8Array(segment.data);\n //console.log(\"mse-controller.js::segment.data: \" + data);\n this._sourceBuffers[type].appendBuffer(segment.data);\n\n this._isBufferFull = false;\n\n if (type === 'video' && segment.hasOwnProperty('info')) {\n this._idrList.appendArray(segment.info.syncPoints);\n }\n } catch (error) {\n //console.log(\"MSEController::_doAppendSegments err:\" + error);\n this._pendingSegments[type].unshift(segment);\n\n this.__ClearAllSourceBuffer();\n\n if (error.code === 22) {\n // QuotaExceededError\n\n /* Notice that FireFox may not throw QuotaExceededError if SourceBuffer is full\r\n * Currently we can only do lazy-load to avoid SourceBuffer become scattered.\r\n * SourceBuffer eviction policy may be changed in future version of FireFox.\r\n *\r\n * Related issues:\r\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1279885\r\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1280023\r\n */\n // report buffer full, abort network IO\n if (!this._isBufferFull) {\n //console.log(\"BUFFER_FULL\");\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].BUFFER_FULL);\n }\n\n this._isBufferFull = true;\n } else {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERROR, {\n code: error.code,\n msg: error.message\n });\n }\n }\n }\n }\n };\n\n _proto._onSourceOpen = function _onSourceOpen() {\n //console.log(\"MSEController::_onSourceOpen...\");\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'MediaSource onSourceOpen');\n\n this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen); // deferred sourcebuffer creation / initialization\n\n\n if (this._pendingSourceBufferInit.length > 0) {\n var pendings = this._pendingSourceBufferInit;\n\n while (pendings.length) {\n var segment = pendings.shift();\n this.appendInitSegment(segment, true);\n }\n } // there may be some pending media segments, append them\n\n\n if (this._hasPendingSegments()) {\n this._doAppendSegments();\n }\n\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].SOURCE_OPEN);\n };\n\n _proto._onSourceEnded = function _onSourceEnded() {\n // fired on endOfStream\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'MediaSource onSourceEnded'); //console.log(\"MSEController::_onSourceEnded...\");\n };\n\n _proto._onSourceClose = function _onSourceClose() {\n //console.log(\"MSEController::_onSourceClose...\");\n // fired on detaching from media element\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'MediaSource onSourceClose');\n\n if (this._mediaSource && this.e != null) {\n this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);\n\n this._mediaSource.removeEventListener('sourceended', this.e.onSourceEnded);\n\n this._mediaSource.removeEventListener('sourceclose', this.e.onSourceClose);\n }\n };\n\n _proto._hasPendingSegments = function _hasPendingSegments() {\n var ps = this._pendingSegments;\n return ps.video.length > 0 || ps.audio.length > 0;\n };\n\n _proto._hasPendingRemoveRanges = function _hasPendingRemoveRanges() {\n //console.log(\"MSEController::_hasPendingRemoveRanges...\");\n var prr = this._pendingRemoveRanges;\n return prr.video.length > 0 || prr.audio.length > 0;\n };\n\n _proto._onSourceBufferUpdateEnd = function _onSourceBufferUpdateEnd() {\n //console.log(\"MSEController::_onSourceBufferUpdateEnd...\");\n if (this._requireSetMediaDuration) {\n this._updateMediaSourceDuration();\n } else if (this._hasPendingRemoveRanges()) {\n this._doRemoveRanges();\n } else if (this._hasPendingSegments()) {\n this._doAppendSegments();\n } else if (this._hasPendingEos) {\n this.endOfStream();\n }\n\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].UPDATE_END);\n };\n\n _proto._onSourceBufferError = function _onSourceBufferError(e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, \"SourceBuffer Error: \" + e); // this error might not always be fatal, just ignore it\n };\n\n return MSEController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MSEController);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/mse-controller.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/mse-events.js":
|
||
/*!*************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/mse-events.js ***!
|
||
\*************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar MSEEvents = {\n ERROR: 'error',\n SOURCE_OPEN: 'source_open',\n UPDATE_END: 'update_end',\n BUFFER_FULL: 'buffer_full',\n CB_PLAY_INFO: 'play_info',\n CHANGE_SPEED: 'change_speed'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (MSEEvents);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/mse-events.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/transmuxer.js":
|
||
/*!*************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/transmuxer.js ***!
|
||
\*************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logging-control.js */ \"./src/FlvPlayer/flv.js/utils/logging-control.js\");\n/* harmony import */ var _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./transmuxing-controller.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-controller.js\");\n/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/* harmony import */ var _transmuxing_worker_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./transmuxing-worker.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-worker.js\");\n/* harmony import */ var _media_info_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! webworkify-webpack */ \"./node_modules/_webworkify-webpack@2.1.5@webworkify-webpack/index.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _common_webgl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/webgl */ \"./src/common/webgl.js\");\n/* harmony import */ var _common_soundPlayer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../common/soundPlayer */ \"./src/common/soundPlayer.js\");\n/* harmony import */ var _mse_events_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mse-events.js */ \"./src/FlvPlayer/flv.js/core/mse-events.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Transmuxer = /*#__PURE__*/function () {\n function Transmuxer(mediaDataSource, config, mediaCanvas, callbackUserPtr, callbackWasmTypePtr) {\n this.TAG = 'Transmuxer';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._config = config;\n this.soundPlayer = null;\n this._webGLPlayer = null;\n this._mediaCanvas = mediaCanvas;\n this.pauseDisplay = false;\n this.enableAudio = false;\n this.audioFmt = 0;\n this.audioSamplerate = 0;\n this.audioChannelNum = 2;\n this.initAudioPlayer = false;\n this.totalDuration = 0;\n this.initDuration = 0;\n this.currentPlayTime = 0;\n\n if (mediaDataSource.type === 'm3u8') {\n this.currentPlayTime = mediaDataSource.startPlaySecs;\n }\n\n var u = navigator.userAgent;\n this.isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android<69>ն<EFBFBD>\n\n this.isiOS = !!u.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios<6F>ն<EFBFBD>\n\n this.isiPad = false;\n var ua = navigator.userAgent; //.toLowerCase();\n //alert(ua);\n\n var s;\n s = ua.match(/iPad/i);\n\n if (s == \"iPad\") {\n this.isiPad = true;\n } else if (ua.indexOf('Macintosh;') > -1 && ua.indexOf('AppleWebKit/')) {\n this.isiPad = true;\n } //alert(\"iPad: \" + this.isiPad + \" iOS:\" + this.isiOS);\n //alert(this.isiOS);\n\n\n this._callbackUserPtr = callbackUserPtr;\n this._callbackWasmTypePtr = callbackWasmTypePtr;\n\n if (config.enableWorker && typeof Worker !== 'undefined') {\n try {\n var _work = __webpack_require__(/*! webworkify */ \"./node_modules/_webworkify@1.5.0@webworkify/index.js\");\n\n this._worker = _work(_transmuxing_worker_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n this._workerDestroying = false;\n\n this._worker.addEventListener('message', this._onWorkerMessage.bind(this));\n\n this._worker.postMessage({\n cmd: 'init',\n param: [mediaDataSource, config]\n });\n\n this.e = {\n onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this)\n };\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerListener(this.e.onLoggingConfigChanged);\n\n this._worker.postMessage({\n cmd: 'logging_config',\n param: _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getConfig()\n });\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, 'Error while initialize transmuxing worker, fallback to inline transmuxing');\n this._worker = null;\n this._controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](mediaDataSource, config);\n }\n } else {\n this._controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](mediaDataSource, config);\n }\n\n if (this._controller) {\n var ctl = this._controller;\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR, this._onIOError.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR, this._onDemuxError.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT, this._onInitSegment.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT, this._onMediaSegment.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE, this._onLoadingComplete.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO, this._onMediaInfo.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED, this._onMetaDataArrived.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED, this._onScriptDataArrived.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO, this._onStatisticsInfo.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_ING, this._onReconnecting.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_SUCCESS, this._onReconnectSuccess.bind(this));\n }\n }\n\n var _proto = Transmuxer.prototype;\n\n _proto.destroy = function destroy() {\n if (this._worker) {\n if (!this._workerDestroying) {\n this._workerDestroying = true;\n\n this._worker.postMessage({\n cmd: 'destroy'\n });\n\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].removeListener(this.e.onLoggingConfigChanged);\n this.e = null;\n }\n } else {\n this._controller.destroy();\n\n this._controller = null;\n }\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n\n if (this.soundPlayer) {\n this.soundPlayer.destroy();\n delete this.soundPlayer;\n this.soundPlayer = null;\n }\n };\n\n _proto.on = function on(event, listener) {\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.hasWorker = function hasWorker() {\n return this._worker != null;\n } //=============================================================================\n ;\n\n _proto.OpenAudioPlayer = function OpenAudioPlayer(sampleFmt, channels, sampleRate) {\n if (this.soundPlayer == null) {\n sampleFmt = 1;\n var encoding = \"16bitInt\";\n\n switch (sampleFmt) {\n case 0:\n encoding = \"8bitInt\";\n break;\n\n case 1:\n encoding = \"16bitInt\";\n break;\n\n case 2:\n encoding = \"32bitInt\";\n break;\n\n case 3:\n encoding = \"32bitFloat\";\n break;\n\n default:\n console.log(\"Unsupported audio sampleFmt \" + sampleFmt + \"!\");\n } //alert(\"encoding: \" + encoding);\n\n\n this.soundPlayer = new _common_soundPlayer__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n this.soundPlayer.init({\n encoding: encoding,\n channels: channels,\n sampleRate: sampleRate,\n flushingTime: 1000\n });\n this.initAudioPlayer = true;\n }\n };\n\n _proto.createDecodeWorker = function createDecodeWorker() {\n //console.log(\"create decode worker...\");\n this.decodeWorker = null; //if (config.enableWorker && (typeof (Worker) !== 'undefined')) {\n\n if (typeof Worker !== 'undefined') {\n var w;\n\n try {\n w = this.decodeWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_8__(/*require.resolve*/(/*! ../../../common/DecodeWorker.js */ \"./src/common/DecodeWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tOpenStream\"],\n url: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"getFullURL\"](),\n isFlv: this._controller._isM3u8 ? false : true\n };\n w.postMessage(objData);\n w.addEventListener('message', this.onwmsg);\n\n w.onerror = function (event) {};\n } catch (err) {\n //logger.warn('Error in worker:', err);\n //logger.error('Error while initializing DemuxerWorker, fallback on DemuxerInline');\n console.log(\"Create Decode Worker fail: \" + err);\n\n if (w) {// revoke the Object URL that was used to create demuxer worker, so as not to leak it\n //global.URL.revokeObjectURL(w.objectURL);\n }\n\n this.w = undefined;\n }\n } else {\n this.decodeWorker = null;\n }\n\n if (this.decodeWorker) {\n if (this._webGLPlayer == null) {\n this._webGLPlayer = new _common_webgl__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this._mediaCanvas);\n\n this._webGLPlayer.initGL({\n preserveDrawingBuffer: false\n });\n }\n }\n };\n\n _proto.getCurrentPlayTime = function getCurrentPlayTime() {\n return this.currentPlayTime;\n };\n\n _proto.getTotalDuration = function getTotalDuration() {\n if (this._controller) {\n return this._controller._GetM3u8TotalDuration();\n }\n\n return this.totalDuration;\n } //<2F><><EFBFBD><EFBFBD>: <20><>TsDemuxer<65>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>\n ;\n\n _proto._onMediaDataCallback = function _onMediaDataCallback(_this, isWasm, mediaType, codecId, frametype, framedata, framesize, samplerateOrPts, channels, bitPerSample) {\n //console.log(\"_onMediaDataCallback mediaType\" + mediaType + \" CodecId[\" + codecId + \"]\");\n //samplerateOrPts <20><>ֵ<EFBFBD><D6B5>mediaTypeΪ1ʱ, Ϊpts, <20><>mediaTypeΪ2ʱ, Ϊsamplerate\n if (codecId < 1 && !isWasm && framesize === 1) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB>TS<54>ļ<EFBFBD><C4BC><EFBFBD>ʱ<EFBFBD><CAB1>\n console.log(\"_onMediaDataCallback... Exception...\");\n /*\r\n _this.GetNextTsFile(samplerateOrPts);\r\n if (this.initDuration > 0) {\r\n _this.totalDuration += (samplerateOrPts - this.initDuration); //ms\r\n }\r\n this.initDuration = samplerateOrPts;\r\n */\n\n return;\n }\n\n if (!isWasm) {\n if (_this._callbackWasmTypePtr) {\n _this._callbackWasmTypePtr(_this._callbackUserPtr, false);\n }\n\n return;\n }\n\n if (_this.decodeWorker == null) {\n _this.createDecodeWorker();\n\n if (_this._callbackWasmTypePtr) {\n _this._callbackWasmTypePtr(_this._callbackUserPtr, true);\n }\n }\n\n var bufdata = new Uint8Array(framedata);\n\n if (_this.decodeWorker) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tFrameData\"],\n mediaType: mediaType,\n codecId: codecId,\n frameType: frametype,\n samplerate: samplerateOrPts,\n channelNum: channels,\n bitPerSample: bitPerSample,\n playTimeSec: samplerateOrPts,\n dat: bufdata\n };\n\n _this.decodeWorker.postMessage(objData, [objData.dat.buffer]);\n }\n };\n\n _proto.onWorkerMessage = function onWorkerMessage(ev) {\n var data = ev.data; //console.log(\"FlvPlayer::MainThread: recv data.\");\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tDisconnect\"]:\n {\n //console.log(\"disconnect..\");\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tReOpenStream\"]\n };\n this.downloadWorker.postMessage(objData);\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tCloseStream\"]:\n if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"DOWNLOAD_WORKER_ID\"]) {\n this.downloadWorker.terminate();\n this.downloadWorker = null; //console.log(\"download worker terminate\");\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"DECODE_WORKER_ID\"]) {\n this.decodeWorker.terminate();\n this.decodeWorker = null;\n\n if (this.soundPlayer) {\n this.soundPlayer.destroy();\n delete this.soundPlayer;\n this.soundPlayer = null;\n }\n\n if (this._webGLPlayer) {\n this._webGLPlayer.renderVideoFrame(null, 0, 0);\n } //console.log(\"Decode thread terminate...\");\n\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"RENDER_WORKER_ID\"]) {\n this.renderWorker.terminate();\n this.renderWorker = null;\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tDecoderWorkerStartup\"]:\n {\n if (this.enableAudio) {\n this.openAudio();\n }\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tFrameData\"]:\n if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"DOWNLOAD_WORKER_ID\"]) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>\n if (this.decodeWorker) {//var bufdata = new Uint8Array(data.dat);\n //var objData = {\n //\tcmd: common.tFrameData,\n //\tmediaType: 0,\n //\tcodecId: 0,\n //\tsamplerate: 0,\n //\tchannelNum: 0,\n //\tbitPerSample: 0,\n //\tdat: bufdata\n //};\n //this.decodeWorker.postMessage(objData, [objData.dat.buffer]);\n //this.decodeWorker.postMessage(data);\n }\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"DECODE_WORKER_ID\"]) {\n if (this.pauseDisplay) break; //<2F><><EFBFBD><EFBFBD><EFBFBD>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ\n\n if (data.mediaType == 1) {\n //VIDEO\n this._mediaCanvas.width = data.width;\n this._mediaCanvas.height = data.height; //console.log(\" Render: \" + data.framesize);\n //HLS<4C>е<EFBFBD>data.playTimeSec > 0\n\n if (data.playTimeSec > 0) {\n //console.log(\"render.. pts: \" + data.playTimeSec);\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD>\n var timeDisplay = Math.floor((data.playTimeSec + 1000) / 1000);\n\n if (this.currentPlayTime !== timeDisplay) {\n if (this.initDuration > 0) {\n this.currentPlayTime += timeDisplay - this.initDuration; //ms\n }\n\n if (this.initDuration !== timeDisplay) {\n this.initDuration = timeDisplay; //this.currentPlayTime = timeDisplay;\n\n if (this._emitter) {\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"].CB_PLAY_INFO);\n }\n }\n }\n } //var videoData = new Uint8Array(data.dat);\n\n\n this._webGLPlayer.renderVideoFrame(data.dat, data.width, data.height);\n } else if (data.mediaType == 2) {\n //AUDIO\n if (this.soundPlayer == null) {\n //ƻ<><C6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD><EFBFBD>\n if (this.soundPlayer == null && !this.isiOS && !this.isiPad) {\n this.OpenAudioPlayer(data.fmt, data.samplerate >= 16000 ? 2 : data.ch, data.samplerate);\n } else {\n this.audioFmt = data.fmt;\n this.audioSamplerate = data.samplerate;\n this.audioChannelNum = data.ch;\n if (this.audioSamplerate == 44100) this.audioFmt = 1;\n }\n }\n\n if (this.enableAudio && this.soundPlayer && this.initAudioPlayer) {\n //console.log(\"Play audio...\");\n this.soundPlayer.play(data.dat);\n }\n }\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tDecode\"]:\n if (this.avQueue.length > 0 && !this.pauseDisplay) {//this.decodeAndDisplayLoop();\n }\n\n break;\n\n default:\n break;\n }\n };\n\n _proto.openAudio = function openAudio() {\n //ִ<>е<EFBFBD><D0B5>˴<EFBFBD><CBB4><EFBFBD>˵<EFBFBD><CBB5>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tOpenAudio\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n } //if (this.enableAudio) return true;\n\n\n this.enableAudio = true; //<2F>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>, <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>\n //<2F><><EFBFBD><EFBFBD><EFBFBD>iPad<61><64>iPhone, <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\n if (this.soundPlayer == null && (this.isiOS || this.isiPad)) {\n //this.audioFmt = 1;\n //this.audioSamplerate = 44100;\n //this.audioChannelNum = 2;\n if (this.audioSamplerate > 0) {\n this.OpenAudioPlayer(this.audioFmt, this.audioSamplerate >= 16000 ? 2 : this.audioChannelNum, this.audioSamplerate);\n } else {\n //<2F><>ʱ<EFBFBD><EFBFBD><DEB2><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>ʧ<EFBFBD><CAA7>, <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֶ<EFBFBD><D6B6>㿪\n return false;\n }\n }\n\n return true;\n };\n\n _proto.closeAudio = function closeAudio() {\n //ִ<>е<EFBFBD><D0B5>˴<EFBFBD><CBB4><EFBFBD>˵<EFBFBD><CBB5>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tCloseAudio\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n if (this.soundPlayer && this.initAudioPlayer) {\n //this.soundPlayer.pause();\n this.soundPlayer.clearAudioBuffer();\n }\n\n this.enableAudio = false;\n return true;\n } //=============================================================================\n ;\n\n _proto.open = function open() {\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'start'\n });\n } else {\n this._controller.setMediaSourceCallback(this._onMediaDataCallback, this);\n\n this._controller.start();\n }\n };\n\n _proto.close = function close() {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tCloseStream\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n if (this._webGLPlayer) {\n this._webGLPlayer.renderVideoFrame(null, 0, 0);\n }\n\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'stop'\n });\n } else {\n this._controller.stop();\n }\n };\n\n _proto.changeSpeed = function changeSpeed(speedValue) {\n if (this._controller) {\n this._controller.changeSpeed(speedValue);\n }\n };\n\n _proto.seekToSecs = function seekToSecs(seekValue, seekType) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tSeekStream\"],\n type: seekType,\n time: seekValue\n }; //console.log(\"transmuxer.js::SeekToSecs... val[\" + seekValue + \"] type[\" + seekType + \"]\");\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n this._controller.seekToSecs(seekValue, seekType);\n };\n\n _proto.seek = function seek(milliseconds) {\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'seek',\n param: milliseconds\n });\n } else {\n this._controller.seek(milliseconds);\n }\n };\n\n _proto.isPaused = function isPaused() {\n return this.pauseDisplay;\n };\n\n _proto.pause = function pause() {\n this.pauseDisplay = true;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tPauseStream\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n if (this._controller) {\n var p = this._controller._GetM3u8Loader();\n\n if (p) {\n p.pause();\n } else {\n this._controller.pauseOrResume(true);\n }\n }\n\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'pause'\n });\n } else {//this._controller.pause();\n }\n };\n\n _proto.resume = function resume() {\n this.pauseDisplay = false;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tResumeStream\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n if (this._controller) {\n var p = this._controller._GetM3u8Loader();\n\n if (p) {\n p.resume();\n } else {\n this._controller.pauseOrResume(false);\n }\n }\n\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'resume'\n });\n } else {\n this._controller.resume();\n }\n };\n\n _proto._onReconnecting = function _onReconnecting(reconnectTimes) {\n var _this2 = this;\n\n Promise.resolve().then(function () {\n _this2._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_ING, reconnectTimes);\n });\n };\n\n _proto._onReconnectSuccess = function _onReconnectSuccess(reconnectTimes) {\n var _this3 = this;\n\n Promise.resolve().then(function () {\n _this3._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_SUCCESS, reconnectTimes);\n });\n };\n\n _proto._onInitSegment = function _onInitSegment(type, initSegment) {\n var _this4 = this;\n\n // do async invoke\n Promise.resolve().then(function () {\n _this4._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT, type, initSegment);\n });\n };\n\n _proto._onMediaSegment = function _onMediaSegment(type, mediaSegment) {\n var _this5 = this;\n\n Promise.resolve().then(function () {\n _this5._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT, type, mediaSegment);\n });\n };\n\n _proto._onLoadingComplete = function _onLoadingComplete() {\n var _this6 = this;\n\n Promise.resolve().then(function () {\n _this6._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE);\n });\n };\n\n _proto._onRecoveredEarlyEof = function _onRecoveredEarlyEof() {\n var _this7 = this;\n\n Promise.resolve().then(function () {\n _this7._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF);\n });\n };\n\n _proto._onMediaInfo = function _onMediaInfo(mediaInfo) {\n var _this8 = this;\n\n Promise.resolve().then(function () {\n _this8._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO, mediaInfo);\n });\n };\n\n _proto._onMetaDataArrived = function _onMetaDataArrived(metadata) {\n var _this9 = this;\n\n Promise.resolve().then(function () {\n _this9._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED, metadata);\n });\n };\n\n _proto._onScriptDataArrived = function _onScriptDataArrived(data) {\n var _this10 = this;\n\n Promise.resolve().then(function () {\n _this10._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED, data);\n });\n };\n\n _proto._onStatisticsInfo = function _onStatisticsInfo(statisticsInfo) {\n var _this11 = this;\n\n Promise.resolve().then(function () {\n _this11._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO, statisticsInfo);\n });\n };\n\n _proto._onIOError = function _onIOError(type, info) {\n var _this12 = this;\n\n Promise.resolve().then(function () {\n _this12._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR, type, info);\n });\n };\n\n _proto._onDemuxError = function _onDemuxError(type, info) {\n var _this13 = this;\n\n Promise.resolve().then(function () {\n _this13._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR, type, info);\n });\n };\n\n _proto._onRecommendSeekpoint = function _onRecommendSeekpoint(milliseconds) {\n var _this14 = this;\n\n Promise.resolve().then(function () {\n _this14._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT, milliseconds);\n });\n };\n\n _proto._onLoggingConfigChanged = function _onLoggingConfigChanged(config) {\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'logging_config',\n param: config\n });\n }\n };\n\n _proto._onWorkerMessage = function _onWorkerMessage(e) {\n var message = e.data;\n var data = message.data;\n\n if (message.msg === 'destroyed' || this._workerDestroying) {\n this._workerDestroying = false;\n\n this._worker.terminate();\n\n this._worker = null;\n return;\n }\n\n switch (message.msg) {\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT:\n this._emitter.emit(message.msg, data.type, data.data);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF:\n this._emitter.emit(message.msg);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO:\n Object.setPrototypeOf(data, _media_info_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].prototype);\n\n this._emitter.emit(message.msg, data);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO:\n this._emitter.emit(message.msg, data);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR:\n this._emitter.emit(message.msg, data.type, data.info);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT:\n this._emitter.emit(message.msg, data);\n\n break;\n\n case 'logcat_callback':\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.emit('log', data.type, data.logcat);\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_ING:\n console.log(\"no process... reconnectSuccess\");\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_SUCCESS:\n console.log(\"no process... reconnectSuccess\");\n break;\n\n default:\n break;\n }\n };\n\n return Transmuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Transmuxer);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/transmuxer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/transmuxing-controller.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/transmuxing-controller.js ***!
|
||
\*************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _media_info_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../demux/flv-demuxer.js */ \"./src/FlvPlayer/flv.js/demux/flv-demuxer.js\");\n/* harmony import */ var _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../remux/mp4-remuxer.js */ \"./src/FlvPlayer/flv.js/remux/mp4-remuxer.js\");\n/* harmony import */ var _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../demux/demux-errors.js */ \"./src/FlvPlayer/flv.js/demux/demux-errors.js\");\n/* harmony import */ var _io_io_controller_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../io/io-controller.js */ \"./src/FlvPlayer/flv.js/io/io-controller.js\");\n/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/* harmony import */ var _io_loader_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../io/loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _TSDemuxer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../TSDemuxer */ \"./src/FlvPlayer/TSDemuxer.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n\n\n\n\n\n\n // Transmuxing (IO, Demuxing, Remuxing) controller, with multipart support\n\nvar TransmuxingController = /*#__PURE__*/function () {\n function TransmuxingController(mediaDataSource, config) {\n this.TAG = 'TransmuxingController';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._config = config; // treat single part media as multipart media, which has only one segment\n\n if (!mediaDataSource.segments) {\n mediaDataSource.segments = [{\n duration: mediaDataSource.duration,\n filesize: mediaDataSource.filesize,\n url: mediaDataSource.url\n }];\n } // fill in default IO params if not exists\n\n\n if (typeof mediaDataSource.cors !== 'boolean') {\n mediaDataSource.cors = true;\n }\n\n if (typeof mediaDataSource.withCredentials !== 'boolean') {\n mediaDataSource.withCredentials = false;\n }\n\n this._mediaDataSource = mediaDataSource;\n this._currentSegmentIndex = 0;\n var totalDuration = 0;\n\n this._mediaDataSource.segments.forEach(function (segment) {\n // timestampBase for each segment, and calculate total duration\n segment.timestampBase = totalDuration;\n totalDuration += segment.duration; // params needed by IOController\n\n segment.cors = mediaDataSource.cors;\n segment.withCredentials = mediaDataSource.withCredentials; // referrer policy control, if exist\n\n if (config.referrerPolicy) {\n segment.referrerPolicy = config.referrerPolicy;\n }\n });\n\n if (!isNaN(totalDuration) && this._mediaDataSource.duration !== totalDuration) {\n this._mediaDataSource.duration = totalDuration;\n }\n\n this._mediaInfo = null;\n this._demuxer = null;\n this._remuxer = null;\n this._ioctl = null;\n this._pendingSeekTime = null;\n this._pendingResolveSeekPoint = null;\n this._statisticsReporter = null;\n this._callbackMediaData = null;\n this._callbackUserPtr = null;\n this._isM3u8 = false;\n this._reconnectTimes = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n }\n\n var _proto = TransmuxingController.prototype;\n\n _proto.destroy = function destroy() {\n this._mediaInfo = null;\n this._mediaDataSource = null;\n\n if (this._statisticsReporter) {\n this._disableStatisticsReporter();\n }\n\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n }\n\n if (this._demuxer) {\n this._demuxer.destroy();\n\n this._demuxer = null;\n }\n\n if (this._remuxer) {\n this._remuxer.destroy();\n\n this._remuxer = null;\n }\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n };\n\n _proto.on = function on(event, listener) {\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.setMediaSourceCallback = function setMediaSourceCallback(cbPtr, userPtr) {\n this._callbackMediaData = cbPtr;\n this._callbackUserPtr = userPtr;\n };\n\n _proto.start = function start() {\n this._loadSegment(0);\n\n this._enableStatisticsReporter();\n };\n\n _proto._loadSegment = function _loadSegment(segmentIndex, optionalFrom) {\n this._currentSegmentIndex = segmentIndex;\n var dataSource = this._mediaDataSource.segments[segmentIndex];\n var ioctl = this._ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"](dataSource, this._config, segmentIndex, this._mediaDataSource.startPlaySecs);\n ioctl.onError = this._onIOException.bind(this);\n ioctl.onSeeked = this._onIOSeeked.bind(this);\n ioctl.onComplete = this._onIOComplete.bind(this);\n ioctl.onRedirect = this._onIORedirect.bind(this);\n ioctl.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this);\n\n if (optionalFrom) {\n this._demuxer.bindDataSource(this._ioctl);\n } else {\n ioctl.onDataArrival = this._onInitChunkArrival.bind(this);\n }\n\n ioctl.open(optionalFrom);\n this._isM3u8 = ioctl._IsM3u8Loader();\n };\n\n _proto.stop = function stop() {\n this._internalAbort();\n\n this._disableStatisticsReporter();\n };\n\n _proto._internalAbort = function _internalAbort() {\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n }\n };\n\n _proto.pauseOrResume = function pauseOrResume(b) {\n if (this._demuxer == null) return;\n if (this._isM3u8) return;\n\n if (b) {\n this._demuxer.pause();\n } else {\n this._remuxer.seek(0);\n\n this._demuxer.resume();\n }\n };\n\n _proto.pause = function pause() {\n // take a rest\n if (this._ioctl && this._ioctl.isWorking()) {\n this._ioctl.pause();\n\n this._disableStatisticsReporter();\n }\n };\n\n _proto.resume = function resume() {\n if (this._ioctl && this._ioctl.isPaused()) {\n this._ioctl.resume();\n\n this._enableStatisticsReporter();\n }\n };\n\n _proto.changeSpeed = function changeSpeed(speedValue) {\n if (this._remuxer) {\n this._remuxer.changeSpeed(speedValue);\n }\n };\n\n _proto.seekToSecs = function seekToSecs(seekValue, seekType) {\n var p = this._ioctl._GetM3u8Loader();\n\n if (p) {\n p.seek(seekValue, seekType);\n\n if (this._demuxer) {\n this._demuxer.resetMediaPts(1); //this._demuxer.resetMediaInfo();\n\n }\n }\n\n if (this._remuxer) {\n this._remuxer.seek(0); //this._remuxer.insertDiscontinuity();\n\n }\n\n if (p && this._demuxer) {\n this._demuxer.resetMediaPts(0);\n }\n };\n\n _proto.seek = function seek(milliseconds) {\n if (this._mediaInfo == null || !this._mediaInfo.isSeekable()) {\n return;\n }\n\n var targetSegmentIndex = this._searchSegmentIndexContains(milliseconds);\n\n if (targetSegmentIndex === this._currentSegmentIndex) {\n // intra-segment seeking\n var segmentInfo = this._mediaInfo.segments[targetSegmentIndex];\n\n if (segmentInfo == undefined) {\n // current segment loading started, but mediainfo hasn't received yet\n // wait for the metadata loaded, then seek to expected position\n this._pendingSeekTime = milliseconds;\n } else {\n var keyframe = segmentInfo.getNearestKeyframe(milliseconds);\n\n this._remuxer.seek(keyframe.milliseconds);\n\n this._ioctl.seek(keyframe.fileposition); // Will be resolved in _onRemuxerMediaSegmentArrival()\n\n\n this._pendingResolveSeekPoint = keyframe.milliseconds;\n }\n } else {\n // cross-segment seeking\n var targetSegmentInfo = this._mediaInfo.segments[targetSegmentIndex];\n\n if (targetSegmentInfo == undefined) {\n // target segment hasn't been loaded. We need metadata then seek to expected time\n this._pendingSeekTime = milliseconds;\n\n this._internalAbort();\n\n this._remuxer.seek();\n\n this._remuxer.insertDiscontinuity();\n\n this._loadSegment(targetSegmentIndex); // Here we wait for the metadata loaded, then seek to expected position\n\n } else {\n // We have target segment's metadata, direct seek to target position\n var _keyframe = targetSegmentInfo.getNearestKeyframe(milliseconds);\n\n this._internalAbort();\n\n this._remuxer.seek(milliseconds);\n\n this._remuxer.insertDiscontinuity();\n\n this._demuxer.resetMediaInfo();\n\n this._demuxer.timestampBase = this._mediaDataSource.segments[targetSegmentIndex].timestampBase;\n\n this._loadSegment(targetSegmentIndex, _keyframe.fileposition);\n\n this._pendingResolveSeekPoint = _keyframe.milliseconds;\n\n this._reportSegmentMediaInfo(targetSegmentIndex);\n }\n }\n\n this._enableStatisticsReporter();\n };\n\n _proto._searchSegmentIndexContains = function _searchSegmentIndexContains(milliseconds) {\n var segments = this._mediaDataSource.segments;\n var idx = segments.length - 1;\n\n for (var i = 0; i < segments.length; i++) {\n if (milliseconds < segments[i].timestampBase) {\n idx = i - 1;\n break;\n }\n }\n\n return idx;\n };\n\n _proto._onInitChunkArrival = function _onInitChunkArrival(data, byteStart) {\n var _this = this;\n\n if (!this._isM3u8) {\n var probeData = null;\n var consumed = 0;\n\n if (data == null && byteStart < 0) {\n //console.log(\"Reconnecting [\" + byteStart + \"]\");\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_ING, byteStart);\n\n return;\n } else if (data == null && byteStart > 0) {\n /*\r\n console.log(\"Reconnected [\" + byteStart + \"]\");\r\n this._reconnectTimes++;\r\n if (this._reconnectTimes > 0) {\r\n //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>\r\n this._emitter.emit(TransmuxingEvents.RECONNECT_SUCCESS, this._reconnectTimes);\r\n }\r\n */\n return;\n }\n\n if (byteStart > 0) {\n // IOController seeked immediately after opened, byteStart > 0 callback may received\n this._demuxer.bindDataSource(this._ioctl);\n\n this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;\n consumed = this._demuxer.parseChunks(data, byteStart);\n } else if ((probeData = _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].probe(data)).match) {\n // Always create new FLVDemuxer\n this._demuxer = new _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](probeData, this._config, this._callbackMediaData, this._callbackUserPtr);\n\n if (!this._remuxer) {\n this._remuxer = new _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this._config);\n }\n\n var mds = this._mediaDataSource;\n\n if (mds.duration != undefined && !isNaN(mds.duration)) {\n this._demuxer.overridedDuration = mds.duration;\n }\n\n if (typeof mds.hasAudio === 'boolean') {\n this._demuxer.overridedHasAudio = mds.hasAudio;\n }\n\n if (typeof mds.hasVideo === 'boolean') {\n this._demuxer.overridedHasVideo = mds.hasVideo;\n }\n\n this._demuxer.timestampBase = mds.segments[this._currentSegmentIndex].timestampBase;\n this._demuxer.onError = this._onDemuxException.bind(this);\n this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);\n this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this);\n this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this);\n\n this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl));\n\n this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);\n this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this);\n consumed = this._demuxer.parseChunks(data, byteStart); //gavin\n\n this._reconnectTimes++;\n\n if (this._reconnectTimes > 0) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_SUCCESS, this._reconnectTimes);\n }\n } else {\n probeData = null;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, 'Non-FLV, Unsupported media type!');\n Promise.resolve().then(function () {\n _this._internalAbort();\n });\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].DEMUX_ERROR, _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].FORMAT_UNSUPPORTED, 'Non-FLV, Unsupported media type');\n\n consumed = 0;\n }\n\n return consumed;\n } else {\n //console.log(\"parse m3u8 data...\");\n //==================================================================================\n //==================================================================================\n //=======================M3U8=======================================================\n //==================================================================================\n //==================================================================================\n if (data == null && byteStart < 0) {\n //console.log(\"Reconnecting [\" + byteStart + \"]\");\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_ING, byteStart);\n\n return;\n } else if (data == null && byteStart > 0) {\n //console.log(\"Reconnected [\" + byteStart + \"]\");\n //this._reconnectTimes++;\n //if (this._reconnectTimes > 0) {\n // //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>\n // this._emitter.emit(TransmuxingEvents.RECONNECT_SUCCESS, this._reconnectTimes);\n //}\n return;\n }\n\n var _probeData = null;\n var _consumed = 0;\n\n if (byteStart > 0) {\n // IOController seeked immediately after opened, byteStart > 0 callback may received\n this._demuxer.bindDataSource(this._ioctl);\n\n this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;\n\n this._demuxer.append(data, byteStart, 0);\n\n _consumed = data.length;\n } else {\n this._demuxer = new _TSDemuxer__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this._config, this._callbackMediaData, this._callbackUserPtr);\n\n if (!this._remuxer) {\n this._remuxer = new _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this._config);\n }\n\n var _mds = this._mediaDataSource;\n\n if (_mds.duration != undefined && !isNaN(_mds.duration)) {\n this._demuxer.overridedDuration = _mds.duration;\n }\n\n if (typeof _mds.hasAudio === 'boolean') {\n this._demuxer.overridedHasAudio = _mds.hasAudio;\n }\n\n if (typeof _mds.hasVideo === 'boolean') {\n this._demuxer.overridedHasVideo = _mds.hasVideo;\n }\n\n this._demuxer.timestampBase = _mds.segments[this._currentSegmentIndex].timestampBase;\n this._demuxer.onError = this._onDemuxException.bind(this);\n this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);\n this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this);\n this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this);\n\n this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl));\n\n this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);\n this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this);\n\n this._demuxer.append(data, byteStart, 0);\n\n _consumed = data.length; //ts<74><73><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>\n }\n\n return _consumed;\n }\n };\n\n _proto._GetM3u8Loader = function _GetM3u8Loader() {\n if (this._ioctl == null) return null;\n\n var p = this._ioctl._GetM3u8Loader();\n\n if (p) {\n return p;\n }\n\n return null;\n };\n\n _proto._GetM3u8TotalDuration = function _GetM3u8TotalDuration() {\n if (this._ioctl == null) return 0;\n\n var p = this._ioctl._GetM3u8Loader();\n\n if (p) {\n return p.GetM3u8TotalDuration();\n }\n\n return 0;\n };\n\n _proto._onMediaInfo = function _onMediaInfo(mediaInfo) {\n var _this2 = this;\n\n //console.log(\"transmuxing-controller.js::_onMediaInfo\");\n if (this._mediaInfo == null) {\n // Store first segment's mediainfo as global mediaInfo\n this._mediaInfo = Object.assign({}, mediaInfo);\n this._mediaInfo.keyframesIndex = null;\n this._mediaInfo.segments = [];\n this._mediaInfo.segmentCount = this._mediaDataSource.segments.length;\n Object.setPrototypeOf(this._mediaInfo, _media_info_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].prototype);\n }\n\n var segmentInfo = Object.assign({}, mediaInfo);\n Object.setPrototypeOf(segmentInfo, _media_info_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].prototype);\n this._mediaInfo.segments[this._currentSegmentIndex] = segmentInfo; // notify mediaInfo update\n\n this._reportSegmentMediaInfo(this._currentSegmentIndex);\n\n if (this._pendingSeekTime != null) {\n Promise.resolve().then(function () {\n var target = _this2._pendingSeekTime;\n _this2._pendingSeekTime = null;\n\n _this2.seek(target);\n });\n }\n };\n\n _proto._onMetaDataArrived = function _onMetaDataArrived(metadata) {\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].METADATA_ARRIVED, metadata);\n };\n\n _proto._onScriptDataArrived = function _onScriptDataArrived(data) {\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SCRIPTDATA_ARRIVED, data);\n };\n\n _proto._onIOSeeked = function _onIOSeeked() {\n this._remuxer.insertDiscontinuity();\n };\n\n _proto._onIOComplete = function _onIOComplete(extraData) {\n var segmentIndex = extraData;\n var nextSegmentIndex = segmentIndex + 1; //console.log(\"extraData: \" + extraData);\n //let ioCtlIsM3u8Loader = false;\n\n if (this._ioctl && this._ioctl._IsM3u8Loader()) {\n //ioCtlIsM3u8Loader = true;\n var m3u8Loader = this._ioctl._GetM3u8Loader(); //if (m3u8Loader.)\n\n\n if (_common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetLiveStreamType\"]()) {\n console.log(\"M3u8: Reconnect Success\"); //<2F><><EFBFBD><EFBFBD>MSE\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_SUCCESS, 2); //<2F><><EFBFBD>ٽ⸴<D9BD><E2B8B4>ģ<EFBFBD><C4A3>\n\n\n if (this._demuxer) {\n this._demuxer.destroy();\n\n this._demuxer = null;\n } //<2F><><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD>ģ<EFBFBD><C4A3>\n\n\n if (this._remuxer) {\n this._remuxer.destroy();\n\n this._remuxer = null;\n } //<2F><><EFBFBD><EFBFBD>ioctl\n\n\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n } //<2F><><EFBFBD>´<EFBFBD><C2B4><EFBFBD>ioctl\n\n\n this.start();\n } else {\n /*\r\n //<2F><><EFBFBD><EFBFBD>MSE\r\n this._emitter.emit(TransmuxingEvents.RECONNECT_SUCCESS, 2);\r\n //<2F><><EFBFBD>ٽ⸴<D9BD><E2B8B4>ģ<EFBFBD><C4A3>\r\n if (this._demuxer) {\r\n this._demuxer.destroy();\r\n this._demuxer = null;\r\n }\r\n //<2F><><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD>ģ<EFBFBD><C4A3>\r\n if (this._remuxer) {\r\n this._remuxer.destroy();\r\n this._remuxer = null;\r\n }\r\n */\n }\n\n return;\n }\n\n if (nextSegmentIndex < this._mediaDataSource.segments.length) {\n //console.log(\"transmuxing-controller.js::_onIOComplete: nextSegmentIndex < this._mediaDataSource.segments.length: \" + nextSegmentIndex + \" < \" + this._mediaDataSource.segments.length);\n this._internalAbort();\n\n if (this._remuxer) {\n this._remuxer.flushStashedSamples();\n } //this._loadSegment(nextSegmentIndex);\n //gavin\n\n\n if (extraData === -1) {\n if (this._demuxer) {\n this._demuxer.destroy();\n\n this._demuxer = null;\n }\n\n if (this._remuxer) {\n this._remuxer.destroy();\n\n this._remuxer = null;\n }\n\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n }\n\n var _self = this;\n\n _common_common__WEBPACK_IMPORTED_MODULE_11__[\"sleep\"](3000).then(function () {\n //console.log(\"Reopen...\");\n _self.start();\n });\n }\n } else {\n //console.log(\"transmuxing-controller.js::_onIOComplete: nextSegmentIndex >= this._mediaDataSource.segments.length: \" + nextSegmentIndex + \" >= \" + this._mediaDataSource.segments.length);\n if (this._remuxer) {\n this._remuxer.flushStashedSamples();\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].LOADING_COMPLETE);\n\n this._disableStatisticsReporter();\n } //gavin\n\n\n if (extraData === -1) {\n if (this._demuxer) {\n this._demuxer.destroy();\n\n this._demuxer = null;\n }\n\n if (this._remuxer) {\n this._remuxer.destroy();\n\n this._remuxer = null;\n }\n\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n } //console.log(\"Destroy..... demuxer... remuxer... ioctl...\");\n\n\n var _self2 = this;\n\n _common_common__WEBPACK_IMPORTED_MODULE_11__[\"sleep\"](3000).then(function () {\n //console.log(\"Reopen...\");\n _self2.start();\n });\n }\n }\n };\n\n _proto._onIORedirect = function _onIORedirect(redirectedURL) {\n var segmentIndex = this._ioctl.extraData;\n this._mediaDataSource.segments[segmentIndex].redirectedURL = redirectedURL;\n };\n\n _proto._onIORecoveredEarlyEof = function _onIORecoveredEarlyEof() {\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECOVERED_EARLY_EOF);\n };\n\n _proto._onIOException = function _onIOException(type, info) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, \"IOException: type = \" + type + \", code = \" + info.code + \", msg = \" + info.msg);\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].IO_ERROR, type, info);\n\n this._disableStatisticsReporter();\n };\n\n _proto._onDemuxException = function _onDemuxException(type, info) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, \"DemuxException: type = \" + type + \", info = \" + info);\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].DEMUX_ERROR, type, info);\n };\n\n _proto._onRemuxerInitSegmentArrival = function _onRemuxerInitSegmentArrival(type, initSegment) {\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].INIT_SEGMENT, type, initSegment);\n };\n\n _proto._onRemuxerMediaSegmentArrival = function _onRemuxerMediaSegmentArrival(type, mediaSegment) {\n if (this._pendingSeekTime != null) {\n // Media segments after new-segment cross-seeking should be dropped.\n return;\n }\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].MEDIA_SEGMENT, type, mediaSegment); // Resolve pending seekPoint\n\n\n if (this._pendingResolveSeekPoint != null && type === 'video') {\n var syncPoints = mediaSegment.info.syncPoints;\n var seekpoint = this._pendingResolveSeekPoint;\n this._pendingResolveSeekPoint = null; // Safari: Pass PTS for recommend_seekpoint\n\n if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari && syncPoints.length > 0 && syncPoints[0].originalDts === seekpoint) {\n seekpoint = syncPoints[0].pts;\n } // else: use original DTS (keyframe.milliseconds)\n\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECOMMEND_SEEKPOINT, seekpoint);\n }\n };\n\n _proto._enableStatisticsReporter = function _enableStatisticsReporter() {\n if (this._statisticsReporter == null) {\n this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);\n }\n };\n\n _proto._disableStatisticsReporter = function _disableStatisticsReporter() {\n if (this._statisticsReporter) {\n self.clearInterval(this._statisticsReporter);\n this._statisticsReporter = null;\n }\n };\n\n _proto._reportSegmentMediaInfo = function _reportSegmentMediaInfo(segmentIndex) {\n var segmentInfo = this._mediaInfo.segments[segmentIndex];\n var exportInfo = Object.assign({}, segmentInfo);\n exportInfo.duration = this._mediaInfo.duration;\n exportInfo.segmentCount = this._mediaInfo.segmentCount;\n delete exportInfo.segments;\n delete exportInfo.keyframesIndex;\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].MEDIA_INFO, exportInfo);\n };\n\n _proto._reportStatisticsInfo = function _reportStatisticsInfo() {\n var info = {};\n if (this._ioctl == null) return;\n info.url = this._ioctl.currentURL;\n info.hasRedirect = this._ioctl.hasRedirect;\n\n if (info.hasRedirect) {\n info.redirectedURL = this._ioctl.currentRedirectedURL;\n }\n\n info.speed = this._ioctl.currentSpeed;\n info.loaderType = this._ioctl.loaderType;\n info.currentSegmentIndex = this._currentSegmentIndex;\n info.totalSegmentCount = this._mediaDataSource.segments.length;\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].STATISTICS_INFO, info);\n };\n\n return TransmuxingController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransmuxingController);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/transmuxing-controller.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/transmuxing-events.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/transmuxing-events.js ***!
|
||
\*********************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar TransmuxingEvents = {\n IO_ERROR: 'io_error',\n DEMUX_ERROR: 'demux_error',\n INIT_SEGMENT: 'init_segment',\n MEDIA_SEGMENT: 'media_segment',\n LOADING_COMPLETE: 'loading_complete',\n RECOVERED_EARLY_EOF: 'recovered_early_eof',\n MEDIA_INFO: 'media_info',\n METADATA_ARRIVED: 'metadata_arrived',\n SCRIPTDATA_ARRIVED: 'scriptdata_arrived',\n STATISTICS_INFO: 'statistics_info',\n RECOMMEND_SEEKPOINT: 'recommend_seekpoint',\n RECONNECT_ING: 'reconnect_ing',\n RECONNECT_SUCCESS: 'reconnect_success'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransmuxingEvents);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/transmuxing-events.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/core/transmuxing-worker.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/core/transmuxing-worker.js ***!
|
||
\*********************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logging-control.js */ \"./src/FlvPlayer/flv.js/utils/logging-control.js\");\n/* harmony import */ var _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/polyfill.js */ \"./src/FlvPlayer/flv.js/utils/polyfill.js\");\n/* harmony import */ var _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./transmuxing-controller.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-controller.js\");\n/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n/* post message to worker:\r\n data: {\r\n cmd: string\r\n param: any\r\n }\r\n\r\n receive message from worker:\r\n data: {\r\n msg: string,\r\n data: any\r\n }\r\n */\n\nvar TransmuxingWorker = function TransmuxingWorker(self) {\n var TAG = 'TransmuxingWorker';\n var controller = null;\n var logcatListener = onLogcatCallback.bind(this);\n _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].install();\n self.addEventListener('message', function (e) {\n switch (e.data.cmd) {\n case 'init':\n controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](e.data.param[0], e.data.param[1]);\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR, onIOError.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR, onDemuxError.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT, onInitSegment.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT, onMediaSegment.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE, onLoadingComplete.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF, onRecoveredEarlyEof.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO, onMediaInfo.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED, onMetaDataArrived.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED, onScriptDataArrived.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO, onStatisticsInfo.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT, onRecommendSeekpoint.bind(this));\n break;\n\n case 'destroy':\n if (controller) {\n controller.destroy();\n controller = null;\n }\n\n self.postMessage({\n msg: 'destroyed'\n });\n break;\n\n case 'start':\n controller.start();\n break;\n\n case 'stop':\n controller.stop();\n break;\n\n case 'seek':\n controller.seek(e.data.param);\n break;\n\n case 'pause':\n controller.pause();\n break;\n\n case 'resume':\n controller.resume();\n break;\n\n case 'logging_config':\n {\n var config = e.data.param;\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].applyConfig(config);\n\n if (config.enableCallback === true) {\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].addLogListener(logcatListener);\n } else {\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeLogListener(logcatListener);\n }\n\n break;\n }\n }\n });\n\n function onInitSegment(type, initSegment) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT,\n data: {\n type: type,\n data: initSegment\n }\n };\n self.postMessage(obj, [initSegment.data]); // data: ArrayBuffer\n }\n\n function onMediaSegment(type, mediaSegment) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT,\n data: {\n type: type,\n data: mediaSegment\n }\n };\n self.postMessage(obj, [mediaSegment.data]); // data: ArrayBuffer\n }\n\n function onLoadingComplete() {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE\n };\n self.postMessage(obj);\n }\n\n function onRecoveredEarlyEof() {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF\n };\n self.postMessage(obj);\n }\n\n function onMediaInfo(mediaInfo) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO,\n data: mediaInfo\n };\n self.postMessage(obj);\n }\n\n function onMetaDataArrived(metadata) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED,\n data: metadata\n };\n self.postMessage(obj);\n }\n\n function onScriptDataArrived(data) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED,\n data: data\n };\n self.postMessage(obj);\n }\n\n function onStatisticsInfo(statInfo) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO,\n data: statInfo\n };\n self.postMessage(obj);\n }\n\n function onIOError(type, info) {\n self.postMessage({\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR,\n data: {\n type: type,\n info: info\n }\n });\n }\n\n function onDemuxError(type, info) {\n self.postMessage({\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR,\n data: {\n type: type,\n info: info\n }\n });\n }\n\n function onRecommendSeekpoint(milliseconds) {\n self.postMessage({\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT,\n data: milliseconds\n });\n }\n\n function onLogcatCallback(type, str) {\n self.postMessage({\n msg: 'logcat_callback',\n data: {\n type: type,\n logcat: str\n }\n });\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransmuxingWorker);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/core/transmuxing-worker.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/demux/amf-parser.js":
|
||
/*!**************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/demux/amf-parser.js ***!
|
||
\**************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/utf8-conv.js */ \"./src/FlvPlayer/flv.js/utils/utf8-conv.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\nvar le = function () {\n var buf = new ArrayBuffer(2);\n new DataView(buf).setInt16(0, 256, true); // little-endian write\n\n return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE\n}();\n\nvar AMF = /*#__PURE__*/function () {\n function AMF() {}\n\n AMF.parseScriptData = function parseScriptData(arrayBuffer, dataOffset, dataSize) {\n var data = {};\n\n try {\n var name = AMF.parseValue(arrayBuffer, dataOffset, dataSize);\n if (dataSize - name.size < 1) return data;\n var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);\n data[name.data] = value.data;\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e('AMF', e.toString());\n }\n\n return data;\n };\n\n AMF.parseObject = function parseObject(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 3) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data not enough when parse ScriptDataObject');\n }\n\n var name = AMF.parseString(arrayBuffer, dataOffset, dataSize);\n var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);\n var isObjectEnd = value.objectEnd;\n return {\n data: {\n name: name.data,\n value: value.data\n },\n size: name.size + value.size,\n objectEnd: isObjectEnd\n };\n };\n\n AMF.parseVariable = function parseVariable(arrayBuffer, dataOffset, dataSize) {\n return AMF.parseObject(arrayBuffer, dataOffset, dataSize);\n };\n\n AMF.parseString = function parseString(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 2) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data not enough when parse String');\n }\n\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var length = v.getUint16(0, !le);\n var str;\n\n if (length > 0) {\n str = Object(_utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new Uint8Array(arrayBuffer, dataOffset + 2, length));\n } else {\n str = '';\n }\n\n return {\n data: str,\n size: 2 + length\n };\n };\n\n AMF.parseLongString = function parseLongString(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 4) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data not enough when parse LongString');\n }\n\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var length = v.getUint32(0, !le);\n var str;\n\n if (length > 0) {\n str = Object(_utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new Uint8Array(arrayBuffer, dataOffset + 4, length));\n } else {\n str = '';\n }\n\n return {\n data: str,\n size: 4 + length\n };\n };\n\n AMF.parseDate = function parseDate(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 10) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data size invalid when parse Date');\n }\n\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var timestamp = v.getFloat64(0, !le);\n var localTimeOffset = v.getInt16(8, !le);\n timestamp += localTimeOffset * 60 * 1000; // get UTC time\n\n return {\n data: new Date(timestamp),\n size: 8 + 2\n };\n };\n\n AMF.parseValue = function parseValue(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 1) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data not enough when parse Value');\n }\n\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var offset = 1;\n var type = v.getUint8(0);\n var value;\n var objectEnd = false;\n\n try {\n switch (type) {\n case 0:\n // Number(Double) type\n value = v.getFloat64(1, !le);\n offset += 8;\n break;\n\n case 1:\n {\n // Boolean type\n var b = v.getUint8(1);\n value = b ? true : false;\n offset += 1;\n break;\n }\n\n case 2:\n {\n // String type\n var amfstr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);\n value = amfstr.data;\n offset += amfstr.size;\n break;\n }\n\n case 3:\n {\n // Object(s) type\n value = {};\n var terminal = 0; // workaround for malformed Objects which has missing ScriptDataObjectEnd\n\n if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {\n terminal = 3;\n }\n\n while (offset < dataSize - 4) {\n // 4 === type(UI8) + ScriptDataObjectEnd(UI24)\n var amfobj = AMF.parseObject(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);\n if (amfobj.objectEnd) break;\n value[amfobj.data.name] = amfobj.data.value;\n offset += amfobj.size;\n }\n\n if (offset <= dataSize - 3) {\n var marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;\n\n if (marker === 9) {\n offset += 3;\n }\n }\n\n break;\n }\n\n case 8:\n {\n // ECMA array type (Mixed array)\n value = {};\n offset += 4; // ECMAArrayLength(UI32)\n\n var _terminal = 0; // workaround for malformed MixedArrays which has missing ScriptDataObjectEnd\n\n if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {\n _terminal = 3;\n }\n\n while (offset < dataSize - 8) {\n // 8 === type(UI8) + ECMAArrayLength(UI32) + ScriptDataVariableEnd(UI24)\n var amfvar = AMF.parseVariable(arrayBuffer, dataOffset + offset, dataSize - offset - _terminal);\n if (amfvar.objectEnd) break;\n value[amfvar.data.name] = amfvar.data.value;\n offset += amfvar.size;\n }\n\n if (offset <= dataSize - 3) {\n var _marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;\n\n if (_marker === 9) {\n offset += 3;\n }\n }\n\n break;\n }\n\n case 9:\n // ScriptDataObjectEnd\n value = undefined;\n offset = 1;\n objectEnd = true;\n break;\n\n case 10:\n {\n // Strict array type\n // ScriptDataValue[n]. NOTE: according to video_file_format_spec_v10_1.pdf\n value = [];\n var strictArrayLength = v.getUint32(1, !le);\n offset += 4;\n\n for (var i = 0; i < strictArrayLength; i++) {\n var val = AMF.parseValue(arrayBuffer, dataOffset + offset, dataSize - offset);\n value.push(val.data);\n offset += val.size;\n }\n\n break;\n }\n\n case 11:\n {\n // Date type\n var date = AMF.parseDate(arrayBuffer, dataOffset + 1, dataSize - 1);\n value = date.data;\n offset += date.size;\n break;\n }\n\n case 12:\n {\n // Long string type\n var amfLongStr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);\n value = amfLongStr.data;\n offset += amfLongStr.size;\n break;\n }\n\n default:\n // ignore and skip\n offset = dataSize;\n //Log.w('AMF', 'Unsupported AMF value type ' + type);\n }\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e('AMF', e.toString());\n }\n\n return {\n data: value,\n size: offset,\n objectEnd: objectEnd\n };\n };\n\n return AMF;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AMF);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/demux/amf-parser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/demux/demux-errors.js":
|
||
/*!****************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/demux/demux-errors.js ***!
|
||
\****************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar DemuxErrors = {\n OK: 'OK',\n FORMAT_ERROR: 'FormatError',\n FORMAT_UNSUPPORTED: 'FormatUnsupported',\n CODEC_UNSUPPORTED: 'CodecUnsupported'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (DemuxErrors);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/demux/demux-errors.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/demux/exp-golomb.js":
|
||
/*!**************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/demux/exp-golomb.js ***!
|
||
\**************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n // Exponential-Golomb buffer decoder\n\nvar ExpGolomb = /*#__PURE__*/function () {\n function ExpGolomb(uint8array) {\n this.TAG = 'ExpGolomb';\n this._buffer = uint8array;\n this._buffer_index = 0;\n this._total_bytes = uint8array.byteLength;\n this._total_bits = uint8array.byteLength * 8;\n this._current_word = 0;\n this._current_word_bits_left = 0;\n }\n\n var _proto = ExpGolomb.prototype;\n\n _proto.destroy = function destroy() {\n this._buffer = null;\n };\n\n _proto._fillCurrentWord = function _fillCurrentWord() {\n var buffer_bytes_left = this._total_bytes - this._buffer_index;\n if (buffer_bytes_left <= 0) throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__[\"IllegalStateException\"]('ExpGolomb: _fillCurrentWord() but no bytes available');\n var bytes_read = Math.min(4, buffer_bytes_left);\n var word = new Uint8Array(4);\n word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n this._current_word = new DataView(word.buffer).getUint32(0, false);\n this._buffer_index += bytes_read;\n this._current_word_bits_left = bytes_read * 8;\n };\n\n _proto.readBits = function readBits(bits) {\n if (bits > 32) throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__[\"InvalidArgumentException\"]('ExpGolomb: readBits() bits exceeded max 32bits!');\n\n if (bits <= this._current_word_bits_left) {\n var _result = this._current_word >>> 32 - bits;\n\n this._current_word <<= bits;\n this._current_word_bits_left -= bits;\n return _result;\n }\n\n var result = this._current_word_bits_left ? this._current_word : 0;\n result = result >>> 32 - this._current_word_bits_left;\n var bits_need_left = bits - this._current_word_bits_left;\n\n this._fillCurrentWord();\n\n var bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n var result2 = this._current_word >>> 32 - bits_read_next;\n this._current_word <<= bits_read_next;\n this._current_word_bits_left -= bits_read_next;\n result = result << bits_read_next | result2;\n return result;\n };\n\n _proto.readBool = function readBool() {\n return this.readBits(1) === 1;\n };\n\n _proto.readByte = function readByte() {\n return this.readBits(8);\n };\n\n _proto._skipLeadingZero = function _skipLeadingZero() {\n var zero_count;\n\n for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n if (0 !== (this._current_word & 0x80000000 >>> zero_count)) {\n this._current_word <<= zero_count;\n this._current_word_bits_left -= zero_count;\n return zero_count;\n }\n }\n\n this._fillCurrentWord();\n\n return zero_count + this._skipLeadingZero();\n };\n\n _proto.readUEG = function readUEG() {\n // unsigned exponential golomb\n var leading_zeros = this._skipLeadingZero();\n\n return this.readBits(leading_zeros + 1) - 1;\n };\n\n _proto.readSEG = function readSEG() {\n // signed exponential golomb\n var value = this.readUEG();\n\n if (value & 0x01) {\n return value + 1 >>> 1;\n } else {\n return -1 * (value >>> 1);\n }\n };\n\n return ExpGolomb;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ExpGolomb);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/demux/exp-golomb.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/demux/flv-demuxer.js":
|
||
/*!***************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/demux/flv-demuxer.js ***!
|
||
\***************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _amf_parser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./amf-parser.js */ \"./src/FlvPlayer/flv.js/demux/amf-parser.js\");\n/* harmony import */ var _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sps-parser.js */ \"./src/FlvPlayer/flv.js/demux/sps-parser.js\");\n/* harmony import */ var _demux_errors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./demux-errors.js */ \"./src/FlvPlayer/flv.js/demux/demux-errors.js\");\n/* harmony import */ var _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n\n\n\nfunction Swap16(src) {\n return src >>> 8 & 0xFF | (src & 0xFF) << 8;\n}\n\nfunction Swap32(src) {\n return (src & 0xFF000000) >>> 24 | (src & 0x00FF0000) >>> 8 | (src & 0x0000FF00) << 8 | (src & 0x000000FF) << 24;\n}\n\nfunction ReadBig32(array, index) {\n return array[index] << 24 | array[index + 1] << 16 | array[index + 2] << 8 | array[index + 3];\n}\n\nvar FLVDemuxer = /*#__PURE__*/function () {\n function FLVDemuxer(probeData, config, callbackMediaDataFunc, callbackMediaDataUserPtr) {\n this.TAG = 'FLVDemuxer';\n this._config = config;\n this._onError = null;\n this._onMediaInfo = null;\n this._onMetaDataArrived = null;\n this._onScriptDataArrived = null;\n this._onTrackMetadata = null;\n this._onDataAvailable = null; //this._onDataAvailableToSoftwareDecode = null;\n\n this._dataOffset = probeData.dataOffset;\n this._firstParse = true;\n this._dispatch = false;\n this._hasAudio = probeData.hasAudioTrack;\n this._hasVideo = probeData.hasVideoTrack;\n this._hasAudioFlagOverrided = false;\n this._hasVideoFlagOverrided = false;\n this._audioInitialMetadataDispatched = false;\n this._videoInitialMetadataDispatched = false;\n this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n this._mediaInfo.hasAudio = this._hasAudio;\n this._mediaInfo.hasVideo = this._hasVideo;\n this._metadata = null;\n this._audioMetadata = null;\n this._videoMetadata = null;\n this._naluLengthSize = 4;\n this._timestampBase = 0; // int32, in milliseconds\n\n this._timescale = 1000;\n this._duration = 0; // int32, in milliseconds\n\n this._durationOverrided = false;\n this._referenceFrameRate = {\n fixed: true,\n fps: 23.976,\n fps_num: 23976,\n fps_den: 1000\n };\n this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48000];\n this._mpegSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n this._mpegAudioV10SampleRateTable = [44100, 48000, 32000, 0];\n this._mpegAudioV20SampleRateTable = [22050, 24000, 16000, 0];\n this._mpegAudioV25SampleRateTable = [11025, 12000, 8000, 0];\n this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1];\n this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1];\n this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1];\n this._videoTrack = {\n type: 'video',\n id: 1,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n this._audioTrack = {\n type: 'audio',\n id: 2,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n\n this._littleEndian = function () {\n var buf = new ArrayBuffer(2);\n new DataView(buf).setInt16(0, 256, true); // little-endian write\n\n return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE\n }();\n\n this.videoCodecId = 0;\n this.audioCodecId = 0;\n this._AVC_SPS = null;\n this._AVC_PPS = null;\n this._HEVC_VPS = null;\n this._HEVC_SPS = null;\n this._HEVC_PPS = null;\n this._StartCode = [0, 0, 0, 1];\n this._SampleRate = 8000;\n this._ChannelNum = 1;\n this._pause = false;\n this._callbackInitFlag = false;\n this._callbackMediaDataFunc = callbackMediaDataFunc;\n this._callbackMediaDataUserPtr = callbackMediaDataUserPtr;\n this._debugProcCount = 0;\n this._DebugBuf = null; //new Uint8Array(1024 * 1024 * 2);\n\n this._DebugBufPos = 0;\n }\n\n var _proto = FLVDemuxer.prototype;\n\n _proto.destroy = function destroy() {\n this._mediaInfo = null;\n this._metadata = null;\n this._audioMetadata = null;\n this._videoMetadata = null;\n this._videoTrack = null;\n this._audioTrack = null;\n this._onError = null;\n this._onMediaInfo = null;\n this._onMetaDataArrived = null;\n this._onScriptDataArrived = null;\n this._onTrackMetadata = null;\n this._onDataAvailable = null;\n };\n\n FLVDemuxer.probe = function probe(buffer) {\n var data = new Uint8Array(buffer);\n var mismatch = {\n match: false\n };\n\n if (data[0] !== 0x46 || data[1] !== 0x4C || data[2] !== 0x56 || data[3] !== 0x01) {\n return mismatch;\n }\n\n var hasAudio = (data[4] & 4) >>> 2 !== 0;\n var hasVideo = (data[4] & 1) !== 0;\n var offset = ReadBig32(data, 5);\n\n if (offset < 9) {\n return mismatch;\n }\n\n return {\n match: true,\n consumed: offset,\n dataOffset: offset,\n hasAudioTrack: hasAudio,\n hasVideoTrack: hasVideo\n };\n };\n\n _proto.bindDataSource = function bindDataSource(loader) {\n loader.onDataArrival = this.parseChunks.bind(this);\n return this;\n } // prototype: function(type: string, metadata: any): void\n ;\n\n _proto.resetMediaInfo = function resetMediaInfo() {\n this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n } //==================================================================================================\n ;\n\n _proto.pause = function pause() {\n this._pause = true;\n };\n\n _proto.resume = function resume() {\n this._pause = false;\n };\n\n _proto._onDataAvailableToSoftwareDecodeVideo = function _onDataAvailableToSoftwareDecodeVideo(codecId, videoTrack) {\n var track = videoTrack;\n var samples = track.samples;\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n var frameLength = 0;\n\n for (var j = 0; j < sample.units.length; j++) {\n frameLength += sample.units[j].data.length;\n }\n\n var offset = 0;\n var bufdata = new Uint8Array(frameLength); //for (let j = 0; j < sample.units.length; j++) {\n\n while (sample.units.length) {\n var unit = sample.units.shift();\n\n if (codecId == 27) {\n unit.data[0] = 0;\n unit.data[1] = 0;\n unit.data[2] = 0;\n unit.data[3] = 1;\n }\n\n bufdata.set(unit.data, offset);\n offset += unit.data.length;\n } //isKeyframe\n\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode: \" + bufdata);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //console.log(\"Flv-Demuxer.js:: callback pts: \" + sample.pts);\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, codecId, sample.isKeyframe, bufdata, frameLength, sample.pts, 0, 0);\n }\n }\n };\n\n _proto._onDataAvailableToSoftwareDecodeAudio = function _onDataAvailableToSoftwareDecodeAudio(codecId, audioTrack) {\n //console.log(\"proc audio frame....\" + codecId + \" samples: \" + audioTrack.samples.length);\n var track = audioTrack;\n var samples = track.samples;\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode audio: \" + sample.unit);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //mediaType, codecId, framedata, framesize, samplerate, channels, bitPerSample) {\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 2, codecId, 0, sample.unit, sample.length, this._SampleRate, this._ChannelNum, this._SampleRate >= 44100 ? 32 : 16);\n }\n }\n } //==================================================================================================\n ;\n\n _proto._isInitialMetadataDispatched = function _isInitialMetadataDispatched() {\n if (this._hasAudio && this._hasVideo) {\n // both audio & video\n return this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched;\n }\n\n if (this._hasAudio && !this._hasVideo) {\n // audio only\n return this._audioInitialMetadataDispatched;\n }\n\n if (!this._hasAudio && this._hasVideo) {\n // video only\n return this._videoInitialMetadataDispatched;\n }\n\n return false;\n } // function parseChunks(chunk: ArrayBuffer, byteStart: number): number;\n ;\n\n _proto.parseChunks = function parseChunks(chunk, byteStart) {\n if (chunk === null) return;\n\n if (!this._onError || !this._onMediaInfo || !this._onTrackMetadata || !this._onDataAvailable) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__[\"IllegalStateException\"]('Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified');\n }\n\n var offset = 0;\n var le = this._littleEndian;\n\n if (byteStart === 0) {\n // buffer with FLV header\n if (chunk.byteLength > 13) {\n var probeData = FLVDemuxer.probe(chunk);\n offset = probeData.dataOffset;\n } else {\n return 0;\n }\n }\n\n if (this._firstParse) {\n // handle PreviousTagSize0 before Tag1\n this._firstParse = false;\n\n if (byteStart + offset !== this._dataOffset) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'First time parsing but chunk byteStart invalid!');\n }\n\n var v = new DataView(chunk, offset);\n var prevTagSize0 = v.getUint32(0, !le);\n\n if (prevTagSize0 !== 0) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'PrevTagSize0 !== 0 !!!');\n }\n\n offset += 4;\n } //console.log(\"flv-demuxer.js::parseChunks: while...\" + chunk.byteLength);\n\n\n while (offset < chunk.byteLength) {\n this._dispatch = true;\n\n var _v = new DataView(chunk, offset);\n\n if (offset + 11 + 4 > chunk.byteLength) {\n // data not enough for parsing an flv tag\n break;\n }\n\n var tagType = _v.getUint8(0);\n\n var dataSize = _v.getUint32(0, !le) & 0x00FFFFFF;\n\n if (offset + 11 + dataSize + 4 > chunk.byteLength) {\n // data not enough for parsing actual data body\n break;\n }\n\n if (tagType !== 8 && tagType !== 9 && tagType !== 18) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Unsupported tag type \" + tagType + \", skipped\"); // consume the whole tag (skip it)\n\n offset += 11 + dataSize + 4;\n continue;\n }\n\n var ts2 = _v.getUint8(4);\n\n var ts1 = _v.getUint8(5);\n\n var ts0 = _v.getUint8(6);\n\n var ts3 = _v.getUint8(7);\n\n var timestamp = ts0 | ts1 << 8 | ts2 << 16 | ts3 << 24;\n var streamId = _v.getUint32(7, !le) & 0x00FFFFFF;\n\n if (streamId !== 0) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Meet tag which has StreamID != 0!');\n }\n\n var dataOffset = offset + 11;\n\n if (!this._pause) {\n switch (tagType) {\n case 8:\n // Audio\n this.audioCodecId = this._parseAudioData(chunk, dataOffset, dataSize, timestamp);\n break;\n\n case 9:\n // Video\n //console.log(\"flv::timestamp: \" + timestamp);\n this.videoCodecId = this._parseVideoData(chunk, dataOffset, dataSize, timestamp, byteStart + offset);\n break;\n\n case 18:\n // ScriptDataObject\n this._parseScriptData(chunk, dataOffset, dataSize);\n\n break;\n }\n }\n\n var prevTagSize = _v.getUint32(11 + dataSize, !le);\n\n if (prevTagSize !== 11 + dataSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Invalid PrevTagSize \" + prevTagSize);\n }\n\n offset += 11 + dataSize + 4; // tagBody + dataSize + prevTagSize\n } // dispatch parsed frames to consumer (typically, the remuxer)\n\n\n if (this._isInitialMetadataDispatched()) {\n //console.log(\"flv-demuxer.js::parseChunks: _isInitialMetadataDispatched\");\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n //Video H264\n if (this.videoCodecId == 7) {\n //H264\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n\n if (!this._callbackInitFlag) {\n this._callbackInitFlag = true;\n\n if (this._callbackMediaDataFunc) {\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, false, 1, 0, 0, null, 0, 0, 0, 0);\n }\n }\n } else {\n //console.log(\"H264: Software Decode...\");\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(27, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(this.audioCodecId == 10 ? 86018 : 0, this._audioTrack);\n }\n }\n } else if (this.videoCodecId == 12) {\n //H265\n //console.log(\"H265: Software Decode...\");\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(173, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(this.audioCodecId == 10 ? 86018 : 0, this._audioTrack);\n }\n }\n }\n } else {\n //console.log(\"flv-demuxer.js::parseChunks: ! _isInitialMetadataDispatched\");\n this._debugProcCount++;\n\n if (this._debugProcCount >= 60) {\n console.log(\"InitialMetadataDispatched fail.\");\n this._debugProcCount = 0;\n }\n } //console.log(\"flv-demuxer.js::parseChunks: offset: \" + offset);\n\n\n return offset; // consumed bytes, just equals latest offset index\n };\n\n _proto._parseScriptData = function _parseScriptData(arrayBuffer, dataOffset, dataSize) {\n var scriptData = _amf_parser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].parseScriptData(arrayBuffer, dataOffset, dataSize);\n\n if (scriptData.hasOwnProperty('onMetaData')) {\n if (scriptData.onMetaData == null || typeof scriptData.onMetaData !== 'object') {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Invalid onMetaData structure!');\n return;\n }\n\n if (this._metadata) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another onMetaData tag!');\n }\n\n this._metadata = scriptData;\n var onMetaData = this._metadata.onMetaData;\n\n if (this._onMetaDataArrived) {\n this._onMetaDataArrived(Object.assign({}, onMetaData));\n }\n\n if (typeof onMetaData.hasAudio === 'boolean') {\n // hasAudio\n if (this._hasAudioFlagOverrided === false) {\n this._hasAudio = onMetaData.hasAudio;\n this._mediaInfo.hasAudio = this._hasAudio;\n }\n }\n\n if (typeof onMetaData.hasVideo === 'boolean') {\n // hasVideo\n if (this._hasVideoFlagOverrided === false) {\n this._hasVideo = onMetaData.hasVideo;\n this._mediaInfo.hasVideo = this._hasVideo;\n }\n }\n\n if (typeof onMetaData.audiodatarate === 'number') {\n // audiodatarate\n this._mediaInfo.audioDataRate = onMetaData.audiodatarate;\n }\n\n if (typeof onMetaData.videodatarate === 'number') {\n // videodatarate\n this._mediaInfo.videoDataRate = onMetaData.videodatarate;\n }\n\n if (typeof onMetaData.width === 'number') {\n // width\n this._mediaInfo.width = onMetaData.width;\n }\n\n if (typeof onMetaData.height === 'number') {\n // height\n this._mediaInfo.height = onMetaData.height;\n }\n\n if (typeof onMetaData.duration === 'number') {\n // duration\n if (!this._durationOverrided) {\n var duration = Math.floor(onMetaData.duration * this._timescale);\n this._duration = duration;\n this._mediaInfo.duration = duration;\n }\n } else {\n this._mediaInfo.duration = 0;\n }\n\n if (typeof onMetaData.framerate === 'number') {\n // framerate\n var fps_num = Math.floor(onMetaData.framerate * 1000);\n\n if (fps_num > 0) {\n var fps = fps_num / 1000;\n this._referenceFrameRate.fixed = true;\n this._referenceFrameRate.fps = fps;\n this._referenceFrameRate.fps_num = fps_num;\n this._referenceFrameRate.fps_den = 1000;\n this._mediaInfo.fps = fps;\n }\n }\n\n if (typeof onMetaData.keyframes === 'object') {\n // keyframes\n this._mediaInfo.hasKeyframesIndex = true;\n var keyframes = onMetaData.keyframes;\n this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(keyframes);\n onMetaData.keyframes = null; // keyframes has been extracted, remove it\n } else {\n this._mediaInfo.hasKeyframesIndex = false;\n }\n\n this._dispatch = false;\n this._mediaInfo.metadata = onMetaData;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed onMetaData');\n\n if (this._mediaInfo.isComplete()) {\n this._onMediaInfo(this._mediaInfo);\n }\n }\n\n if (Object.keys(scriptData).length > 0) {\n if (this._onScriptDataArrived) {\n this._onScriptDataArrived(Object.assign({}, scriptData));\n }\n }\n };\n\n _proto._parseKeyframesIndex = function _parseKeyframesIndex(keyframes) {\n var times = [];\n var filepositions = []; // ignore first keyframe which is actually AVC Sequence Header (AVCDecoderConfigurationRecord)\n\n for (var i = 1; i < keyframes.times.length; i++) {\n var time = this._timestampBase + Math.floor(keyframes.times[i] * 1000);\n times.push(time);\n filepositions.push(keyframes.filepositions[i]);\n }\n\n return {\n times: times,\n filepositions: filepositions\n };\n };\n\n _proto._parseAudioData = function _parseAudioData(arrayBuffer, dataOffset, dataSize, tagTimestamp) {\n if (dataSize <= 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid audio packet, missing SoundData payload!');\n return 0;\n }\n\n if (this._hasAudioFlagOverrided === true && this._hasAudio === false) {\n // If hasAudio: false indicated explicitly in MediaDataSource,\n // Ignore all the audio packets\n return 0;\n }\n\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var soundSpec = v.getUint8(0);\n var soundFormat = soundSpec >>> 4;\n\n if (soundFormat !== 2 && soundFormat !== 10) {\n // MP3 or AAC\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].CODEC_UNSUPPORTED, 'Flv: Unsupported audio codec idx: ' + soundFormat);\n\n return 0;\n }\n\n var soundRate = 0;\n var soundRateIndex = (soundSpec & 12) >>> 2;\n\n if (soundRateIndex >= 0 && soundRateIndex <= 4) {\n soundRate = this._flvSoundRateTable[soundRateIndex];\n } else {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid audio sample rate idx: ' + soundRateIndex);\n\n return 0;\n }\n\n var soundSize = (soundSpec & 2) >>> 1; // unused\n\n var soundType = soundSpec & 1; //console.log(\"soundSize: \" + soundSize);\n\n var meta = this._audioMetadata;\n var track = this._audioTrack;\n\n if (!meta) {\n if (this._hasAudio === false && this._hasAudioFlagOverrided === false) {\n this._hasAudio = true;\n this._mediaInfo.hasAudio = true;\n } // initial metadata\n\n\n meta = this._audioMetadata = {};\n meta.type = 'audio';\n meta.id = track.id;\n meta.timescale = this._timescale;\n meta.duration = this._duration;\n meta.audioSampleRate = soundRate;\n meta.channelCount = soundType === 0 ? 1 : 2;\n }\n\n if (soundFormat === 10) {\n // AAC\n var aacData = this._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);\n\n if (aacData == undefined) {\n return 0;\n }\n\n if (aacData.packetType === 0) {\n // AAC sequence header (AudioSpecificConfig)\n if (meta.config) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another AudioSpecificConfig!');\n }\n\n var misc = aacData.data;\n meta.audioSampleRate = misc.samplingRate;\n meta.channelCount = misc.channelCount;\n meta.codec = misc.codec;\n meta.originalCodec = misc.originalCodec;\n meta.config = misc.config; // The decode result of an aac sample is 1024 PCM samples\n\n meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed AudioSpecificConfig'); //console.log(\"AAC: \" + misc.samplingRate + \" \" + misc.channelCount + \" \" + misc.codec + \" \" + misc.conf);\n\n this._SampleRate = misc.samplingRate;\n this._ChannelNum = misc.channelCount;\n\n if (this._isInitialMetadataDispatched()) {\n // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._audioInitialMetadataDispatched = true;\n } // then notify new metadata\n\n\n this._dispatch = false;\n\n this._onTrackMetadata('audio', meta);\n\n var mi = this._mediaInfo;\n mi.audioCodec = meta.originalCodec;\n mi.audioSampleRate = meta.audioSampleRate;\n mi.audioChannelCount = meta.channelCount;\n\n if (mi.hasVideo) {\n if (mi.videoCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.audioCodec + '\"';\n }\n\n if (mi.isComplete()) {\n this._onMediaInfo(mi);\n }\n } else if (aacData.packetType === 1) {\n // AAC raw frame data\n var dts = this._timestampBase + tagTimestamp;\n var aacSample = {\n unit: aacData.data,\n length: aacData.data.byteLength,\n dts: dts,\n pts: dts\n };\n track.samples.push(aacSample);\n track.length += aacData.data.length; //console.log(\"flv-demuxer.js:: audio pts: \" + dts);\n } else {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, \"Flv: Unsupported AAC data type \" + aacData.packetType);\n }\n } else if (soundFormat === 2) {\n // MP3\n if (!meta.codec) {\n // We need metadata for mp3 audio track, extract info from frame header\n var _misc = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, true);\n\n if (_misc == undefined) {\n return 0;\n }\n\n meta.audioSampleRate = _misc.samplingRate;\n meta.channelCount = _misc.channelCount;\n meta.codec = _misc.codec;\n meta.originalCodec = _misc.originalCodec; // The decode result of an mp3 sample is 1152 PCM samples\n\n meta.refSampleDuration = 1152 / meta.audioSampleRate * meta.timescale;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed MPEG Audio Frame Header');\n this._audioInitialMetadataDispatched = true;\n\n this._onTrackMetadata('audio', meta);\n\n var _mi = this._mediaInfo;\n _mi.audioCodec = meta.codec;\n _mi.audioSampleRate = meta.audioSampleRate;\n _mi.audioChannelCount = meta.channelCount;\n _mi.audioDataRate = _misc.bitRate;\n\n if (_mi.hasVideo) {\n if (_mi.videoCodec != null) {\n _mi.mimeType = 'video/x-flv; codecs=\"' + _mi.videoCodec + ',' + _mi.audioCodec + '\"';\n }\n } else {\n _mi.mimeType = 'video/x-flv; codecs=\"' + _mi.audioCodec + '\"';\n }\n\n if (_mi.isComplete()) {\n this._onMediaInfo(_mi);\n }\n } // This packet is always a valid audio packet, extract it\n\n\n var data = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, false);\n\n if (data == undefined) {\n return 0;\n }\n\n var _dts = this._timestampBase + tagTimestamp;\n\n var mp3Sample = {\n unit: data,\n length: data.byteLength,\n dts: _dts,\n pts: _dts\n };\n track.samples.push(mp3Sample);\n track.length += data.length;\n }\n\n return soundFormat;\n };\n\n _proto._parseAACAudioData = function _parseAACAudioData(arrayBuffer, dataOffset, dataSize) {\n if (dataSize <= 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid AAC packet, missing AACPacketType or/and Data!');\n return;\n }\n\n var result = {};\n var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n result.packetType = array[0];\n\n if (array[0] === 0) {\n result.data = this._parseAACAudioSpecificConfig(arrayBuffer, dataOffset + 1, dataSize - 1);\n } else {\n result.data = array.subarray(1);\n }\n\n return result;\n };\n\n _proto._parseAACAudioSpecificConfig = function _parseAACAudioSpecificConfig(arrayBuffer, dataOffset, dataSize) {\n var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n var config = null;\n /* Audio Object Type:\r\n 0: Null\r\n 1: AAC Main\r\n 2: AAC LC\r\n 3: AAC SSR (Scalable Sample Rate)\r\n 4: AAC LTP (Long Term Prediction)\r\n 5: HE-AAC / SBR (Spectral Band Replication)\r\n 6: AAC Scalable\r\n */\n\n var audioObjectType = 0;\n var originalAudioObjectType = 0;\n var audioExtensionObjectType = null;\n var samplingIndex = 0;\n var extensionSamplingIndex = null; // 5 bits\n\n audioObjectType = originalAudioObjectType = array[0] >>> 3; // 4 bits\n\n samplingIndex = (array[0] & 0x07) << 1 | array[1] >>> 7;\n\n if (samplingIndex < 0 || samplingIndex >= this._mpegSamplingRates.length) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: AAC invalid sampling frequency index!');\n\n return;\n }\n\n var samplingFrequence = this._mpegSamplingRates[samplingIndex]; // 4 bits\n\n var channelConfig = (array[1] & 0x78) >>> 3;\n\n if (channelConfig < 0 || channelConfig >= 8) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: AAC invalid channel configuration');\n\n return;\n }\n\n if (audioObjectType === 5) {\n // HE-AAC?\n // 4 bits\n extensionSamplingIndex = (array[1] & 0x07) << 1 | array[2] >>> 7; // 5 bits\n\n audioExtensionObjectType = (array[2] & 0x7C) >>> 2;\n } // workarounds for various browsers\n\n\n var userAgent = self.navigator.userAgent.toLowerCase();\n\n if (userAgent.indexOf('firefox') !== -1) {\n // firefox: use SBR (HE-AAC) if freq less than 24kHz\n if (samplingIndex >= 6) {\n audioObjectType = 5;\n config = new Array(4);\n extensionSamplingIndex = samplingIndex - 3;\n } else {\n // use LC-AAC\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n }\n } else if (userAgent.indexOf('android') !== -1) {\n // android: always use LC-AAC\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n } else {\n // for other browsers, e.g. chrome...\n // Always use HE-AAC to make it easier to switch aac codec profile\n audioObjectType = 5;\n extensionSamplingIndex = samplingIndex;\n config = new Array(4);\n\n if (samplingIndex >= 6) {\n extensionSamplingIndex = samplingIndex - 3;\n } else if (channelConfig === 1) {\n // Mono channel\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n }\n }\n\n config[0] = audioObjectType << 3;\n config[0] |= (samplingIndex & 0x0F) >>> 1;\n config[1] = (samplingIndex & 0x0F) << 7;\n config[1] |= (channelConfig & 0x0F) << 3;\n\n if (audioObjectType === 5) {\n config[1] |= (extensionSamplingIndex & 0x0F) >>> 1;\n config[2] = (extensionSamplingIndex & 0x01) << 7; // extended audio object type: force to 2 (LC-AAC)\n\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n\n return {\n config: config,\n samplingRate: samplingFrequence,\n channelCount: channelConfig,\n codec: 'mp4a.40.' + audioObjectType,\n originalCodec: 'mp4a.40.' + originalAudioObjectType\n };\n };\n\n _proto._parseMP3AudioData = function _parseMP3AudioData(arrayBuffer, dataOffset, dataSize, requestHeader) {\n if (dataSize < 4) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid MP3 packet, header missing!');\n return;\n }\n\n var le = this._littleEndian;\n var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n var result = null;\n\n if (requestHeader) {\n if (array[0] !== 0xFF) {\n return;\n }\n\n var ver = array[1] >>> 3 & 0x03;\n var layer = (array[1] & 0x06) >> 1;\n var bitrate_index = (array[2] & 0xF0) >>> 4;\n var sampling_freq_index = (array[2] & 0x0C) >>> 2;\n var channel_mode = array[3] >>> 6 & 0x03;\n var channel_count = channel_mode !== 3 ? 2 : 1;\n var sample_rate = 0;\n var bit_rate = 0;\n var object_type = 34; // Layer-3, listed in MPEG-4 Audio Object Types\n\n var codec = 'mp3';\n\n switch (ver) {\n case 0:\n // MPEG 2.5\n sample_rate = this._mpegAudioV25SampleRateTable[sampling_freq_index];\n break;\n\n case 2:\n // MPEG 2\n sample_rate = this._mpegAudioV20SampleRateTable[sampling_freq_index];\n break;\n\n case 3:\n // MPEG 1\n sample_rate = this._mpegAudioV10SampleRateTable[sampling_freq_index];\n break;\n }\n\n switch (layer) {\n case 1:\n // Layer 3\n object_type = 34;\n\n if (bitrate_index < this._mpegAudioL3BitRateTable.length) {\n bit_rate = this._mpegAudioL3BitRateTable[bitrate_index];\n }\n\n break;\n\n case 2:\n // Layer 2\n object_type = 33;\n\n if (bitrate_index < this._mpegAudioL2BitRateTable.length) {\n bit_rate = this._mpegAudioL2BitRateTable[bitrate_index];\n }\n\n break;\n\n case 3:\n // Layer 1\n object_type = 32;\n\n if (bitrate_index < this._mpegAudioL1BitRateTable.length) {\n bit_rate = this._mpegAudioL1BitRateTable[bitrate_index];\n }\n\n break;\n }\n\n result = {\n bitRate: bit_rate,\n samplingRate: sample_rate,\n channelCount: channel_count,\n codec: codec,\n originalCodec: codec\n };\n } else {\n result = array;\n }\n\n return result;\n };\n\n _proto._parseVideoData = function _parseVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition) {\n if (dataSize <= 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid video packet, missing VideoData payload!');\n return;\n }\n\n if (this._hasVideoFlagOverrided === true && this._hasVideo === false) {\n // If hasVideo: false indicated explicitly in MediaDataSource,\n // Ignore all the video packets\n return;\n }\n\n var spec = new Uint8Array(arrayBuffer, dataOffset, dataSize)[0];\n var frameType = (spec & 240) >>> 4;\n var codecId = spec & 15; //7:H264 12:HEVC\n\n if (codecId !== 7 && codecId !== 12) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].CODEC_UNSUPPORTED, \"Flv: Unsupported codec in video frame: \" + codecId);\n\n return;\n }\n\n this._parseAVCAndHEVCVideoPacket(codecId, arrayBuffer, dataOffset + 1, dataSize - 1, tagTimestamp, tagPosition, frameType);\n\n return codecId;\n };\n\n _proto._parseAVCAndHEVCVideoPacket = function _parseAVCAndHEVCVideoPacket(codecId, arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType) {\n if (dataSize < 4) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime');\n return;\n }\n\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var packetType = v.getUint8(0);\n var cts_unsigned = v.getUint32(0, !le) & 0x00FFFFFF;\n var cts = cts_unsigned << 8 >> 8; // convert to 24-bit signed int\n\n if (packetType === 0) {\n // AVCDecoderConfigurationRecord\n if (codecId == 7) //H264\n {\n _common_common__WEBPACK_IMPORTED_MODULE_6__[\"setCodecTypeStr\"](\"H264\");\n\n this._parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4);\n } else {\n //H265\n _common_common__WEBPACK_IMPORTED_MODULE_6__[\"setCodecTypeStr\"](\"H265\");\n\n this._parseHEVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4);\n }\n } else if (packetType === 1) {\n // One or more Nalus\n if (codecId == 7) {\n //H264\n this._parseAVCVideoData(arrayBuffer, dataOffset + 4, dataSize - 4, tagTimestamp, tagPosition, frameType, cts);\n } else {\n //H265\n this._parseHEVCVideoData(arrayBuffer, dataOffset + 4, dataSize - 4, tagTimestamp, tagPosition, frameType, cts);\n }\n } else if (packetType === 2) {// empty, AVC end of sequence\n } else {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, \"Flv: Invalid video packet type \" + packetType);\n\n return;\n }\n };\n\n _proto._parseAVCDecoderConfigurationRecord = function _parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 7) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!');\n return;\n }\n\n var meta = this._videoMetadata;\n var track = this._videoTrack;\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n\n if (!meta) {\n if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {\n this._hasVideo = true;\n this._mediaInfo.hasVideo = true;\n }\n\n meta = this._videoMetadata = {};\n meta.type = 'video';\n meta.id = track.id;\n meta.timescale = this._timescale;\n meta.duration = this._duration;\n } else {\n if (typeof meta.avcc !== 'undefined') {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');\n }\n }\n\n var version = v.getUint8(0); // configurationVersion\n\n var avcProfile = v.getUint8(1); // avcProfileIndication\n\n var profileCompatibility = v.getUint8(2); // profile_compatibility\n\n var avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return;\n }\n\n this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) {\n // holy shit!!!\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, \"Flv: Strange NaluLengthSizeMinusOne: \" + (this._naluLengthSize - 1));\n\n return;\n }\n\n var spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n\n return;\n } else if (spsCount > 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = \" + spsCount);\n }\n\n var offset = 6;\n\n for (var i = 0; i < spsCount; i++) {\n var len = v.getUint16(offset, !le); // sequenceParameterSetLength\n\n offset += 2;\n\n if (len === 0) {\n continue;\n } // Notice: Nalu without startcode header (00 00 00 01)\n\n\n var sps = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n this._AVC_SPS = new Uint8Array(len + 4);\n offset += len;\n\n this._AVC_SPS.set(this._StartCode, 0);\n\n this._AVC_SPS.set(sps, 4); //console.log(\"SPS: \" + this._AVC_SPS);\n\n\n var config = _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseSPS(sps);\n\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {\n meta.frameRate = this._referenceFrameRate;\n }\n\n var fps_den = meta.frameRate.fps_den;\n var fps_num = meta.frameRate.fps_num;\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n var codecArray = sps.subarray(1, 4);\n var codecString = 'avc1.';\n\n for (var j = 0; j < 3; j++) {\n var h = codecArray[j].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecString += h;\n }\n\n meta.codec = codecString;\n var mi = this._mediaInfo;\n mi.width = meta.codecWidth;\n mi.height = meta.codecHeight;\n mi.fps = meta.frameRate.fps;\n mi.profile = meta.profile;\n mi.level = meta.level;\n mi.refFrames = config.ref_frames;\n mi.chromaFormat = config.chroma_format_string;\n mi.sarNum = meta.sarRatio.width;\n mi.sarDen = meta.sarRatio.height;\n mi.videoCodec = codecString;\n\n if (mi.hasAudio) {\n if (mi.audioCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + '\"';\n }\n\n if (mi.isComplete()) {\n this._onMediaInfo(mi);\n }\n }\n\n var ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n\n if (ppsCount === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n\n return;\n } else if (ppsCount > 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = \" + ppsCount);\n }\n\n offset++;\n\n for (var _i = 0; _i < ppsCount; _i++) {\n var _len = v.getUint16(offset, !le); // pictureParameterSetLength\n\n\n offset += 2;\n\n if (_len === 0) {\n continue;\n }\n\n var pps = new Uint8Array(arrayBuffer, dataOffset + offset, _len);\n this._AVC_PPS = new Uint8Array(_len + 4);\n\n this._AVC_PPS.set(this._StartCode, 0);\n\n this._AVC_PPS.set(pps, 4); //console.log(\"PPS: \" + this._AVC_PPS);\n // pps is useless for extracting video information\n\n\n offset += _len;\n }\n\n meta.avcc = new Uint8Array(dataSize);\n meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');\n\n if (this._isInitialMetadataDispatched()) {\n // flush parsed frames\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._videoInitialMetadataDispatched = true;\n } // notify new metadata\n\n\n this._dispatch = false;\n\n this._onTrackMetadata('video', meta);\n\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].i(this.TAG, \"Video resolution: \" + meta.codecWidth + \" x \" + meta.codecHeight);\n };\n\n _proto._parseAVCVideoData = function _parseAVCVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) {\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var units = [],\n length = 0; //console.log(\"_parseAVCVideoData timestampBase:\" + this._timestampBase + \" tagTimestamp:\" + tagTimestamp);\n\n var offset = 0;\n var lengthSize = this._naluLengthSize;\n var dts = this._timestampBase + tagTimestamp;\n var keyframe = frameType === 1; // from FLV Frame Type constants\n\n var bAddStart = true;\n\n if (this.videoCodecId == 7) {\n //H264\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n bAddStart = false;\n }\n }\n\n while (offset < dataSize) {\n if (offset + 4 >= dataSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Malformed Nalu near timestamp \" + dts + \", offset = \" + offset + \", dataSize = \" + dataSize);\n break; // data not enough for next Nalu\n } // Nalu with length-header (AVC1)\n\n\n var naluSize = v.getUint32(offset, !le); // Big-Endian read\n\n if (lengthSize === 3) {\n naluSize >>>= 8;\n }\n\n if (naluSize > dataSize - lengthSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Malformed Nalus near timestamp \" + dts + \", NaluSize > DataSize!\");\n return;\n }\n\n var unitType = v.getUint8(offset + lengthSize) & 0x1F;\n\n if (unitType === 5) {\n // IDR\n keyframe = true; //<2F><><EFBFBD>û<EFBFBD><C3BB>sps & pps\n\n if (units.length < 1 && this._AVC_SPS && this._AVC_SPS.length > 0) {\n if (bAddStart) {\n //<2F><><EFBFBD><EFBFBD>\n var unitSps = {\n type: 7,\n data: this._AVC_SPS\n };\n units.push(unitSps);\n length += unitSps.data.length;\n var unitPps = {\n type: 8,\n data: this._AVC_PPS\n };\n units.push(unitPps);\n length += unitPps.data.length;\n } else {\n //Ӳ<><D3B2>\n //ǰ4<C7B0><34><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>\n var datSps = this._AVC_SPS.subarray(0, this._AVC_SPS.length);\n\n var datSpsSize = datSps.length - 4;\n datSps[0] = datSpsSize >> 24;\n datSps[1] = datSpsSize >> 16;\n datSps[2] = datSpsSize >> 8;\n datSps[3] = datSpsSize & 255;\n var _unitSps = {\n type: 7,\n data: datSps\n };\n units.push(_unitSps);\n length += _unitSps.data.length; //ǰ4<C7B0><34><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>\n\n var datPps = this._AVC_PPS.subarray(0, this._AVC_PPS.length);\n\n var datPpsSize = datPps.length - 4;\n datPps[0] = datPpsSize >> 24;\n datPps[1] = datPpsSize >> 16;\n datPps[2] = datPpsSize >> 8;\n datPps[3] = datPpsSize & 255;\n var _unitPps = {\n type: 8,\n data: datPps\n };\n units.push(_unitPps);\n length += _unitPps.data.length;\n } //console.log(\"add sps & pps...\");\n\n }\n }\n\n var data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize);\n var unit = {\n type: unitType,\n data: data\n };\n units.push(unit);\n length += data.byteLength;\n offset += lengthSize + naluSize;\n }\n\n if (units.length) {\n //\n var track = this._videoTrack;\n var avcSample = {\n units: units,\n length: length,\n isKeyframe: keyframe,\n dts: dts,\n cts: cts,\n pts: dts + cts\n };\n\n if (keyframe) {\n avcSample.fileposition = tagPosition;\n } //console.log(\"flv-demuer.js::_parseAVCVideoData:\" + keyframe + \" tagPosition: \" + tagPosition + \" length:\" + length + \" dts:\" + dts + \" cts:\" + cts);\n\n\n track.samples.push(avcSample);\n track.length += length; //console.log(\"flv-demuer.js::_parseAVCVideoData: \" + track.samples.length);\n }\n } //==================================================================\n ;\n\n _proto._parseHEVCDecoderConfigurationRecord = function _parseHEVCDecoderConfigurationRecord(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 7) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!');\n return;\n }\n\n var meta = this._videoMetadata;\n var track = this._videoTrack;\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n\n if (!meta) {\n if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {\n this._hasVideo = true;\n this._mediaInfo.hasVideo = true;\n }\n\n meta = this._videoMetadata = {};\n meta.type = 'video';\n meta.id = track.id;\n meta.timescale = this._timescale;\n meta.duration = this._duration;\n } else {\n if (typeof meta.avcc !== 'undefined') {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');\n }\n }\n\n var startCode1 = v.getUint8(0);\n var startCode2 = v.getUint8(1);\n var startCode3 = v.getUint8(2);\n var startCode4 = v.getUint8(3);\n\n if (startCode1 === 0 && startCode2 === 0 && startCode3 === 0 && startCode4 === 1) {\n console.log(\"H265 1\");\n } else {\n var _offset = 22;\n var num = v.getUint8(_offset);\n _offset += 1; //console.log(\"num: \" + num);\n\n for (var idx = 0; idx < num; idx++) {\n var ucTmp = v.getUint8(_offset);\n _offset += 1;\n var number = v.getUint16(_offset, !le);\n _offset += 2;\n var len = v.getUint16(_offset, !le);\n _offset += 2;\n\n if (ucTmp === 32) {\n //VPS\n // Notice: Nalu without startcode header (00 00 00 01)\n var vps = new Uint8Array(arrayBuffer, dataOffset + _offset, len);\n this._HEVC_VPS = new Uint8Array(len + 4);\n\n this._HEVC_VPS.set(this._StartCode, 0);\n\n this._HEVC_VPS.set(vps, 4); //this._HEVC_VPS = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n //console.log(\"VPS[\" + len + \"] : \" + this._HEVC_VPS);\n\n } else if (ucTmp === 33) {\n //SPS\n var sps = new Uint8Array(arrayBuffer, dataOffset + _offset, len);\n this._HEVC_SPS = new Uint8Array(len + 4);\n\n this._HEVC_SPS.set(this._StartCode, 0);\n\n this._HEVC_SPS.set(sps, 4); //this._HEVC_SPS = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n //console.log(\"SPS[\" + len + \"] : \" + this._HEVC_SPS);\n\n } else if (ucTmp === 34) {\n //PPS\n var pps = new Uint8Array(arrayBuffer, dataOffset + _offset, len);\n this._HEVC_PPS = new Uint8Array(len + 4);\n\n this._HEVC_PPS.set(this._StartCode, 0);\n\n this._HEVC_PPS.set(pps, 4); //this._HEVC_PPS = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n //console.log(\"PPS[\" + len + \"] : \" + this._HEVC_PPS);\n\n }\n\n _offset += len;\n }\n }\n\n if (this._isInitialMetadataDispatched()) {\n // flush parsed frames\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._videoInitialMetadataDispatched = true;\n } // notify new metadata\n\n\n this._dispatch = false;\n return;\n var version = v.getUint8(0); // configurationVersion\n\n var avcProfile = v.getUint8(1); // avcProfileIndication\n\n var profileCompatibility = v.getUint8(2); // profile_compatibility\n\n var avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return;\n }\n\n this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) {\n // holy shit!!!\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, \"Flv: Strange NaluLengthSizeMinusOne: \" + (this._naluLengthSize - 1));\n\n return;\n }\n\n var spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n\n return;\n } else if (spsCount > 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = \" + spsCount);\n }\n\n var offset = 6;\n\n for (var i = 0; i < spsCount; i++) {\n var _len2 = v.getUint16(offset, !le); // sequenceParameterSetLength\n\n\n offset += 2;\n\n if (_len2 === 0) {\n continue;\n } // Notice: Nalu without startcode header (00 00 00 01)\n\n\n var _sps = new Uint8Array(arrayBuffer, dataOffset + offset, _len2);\n\n offset += _len2;\n var config = _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseSPS(_sps);\n\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {\n meta.frameRate = this._referenceFrameRate;\n }\n\n var fps_den = meta.frameRate.fps_den;\n var fps_num = meta.frameRate.fps_num;\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n\n var codecArray = _sps.subarray(1, 4);\n\n var codecString = 'avc1.';\n\n for (var j = 0; j < 3; j++) {\n var h = codecArray[j].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecString += h;\n }\n\n meta.codec = codecString;\n var mi = this._mediaInfo;\n mi.width = meta.codecWidth;\n mi.height = meta.codecHeight;\n mi.fps = meta.frameRate.fps;\n mi.profile = meta.profile;\n mi.level = meta.level;\n mi.refFrames = config.ref_frames;\n mi.chromaFormat = config.chroma_format_string;\n mi.sarNum = meta.sarRatio.width;\n mi.sarDen = meta.sarRatio.height;\n mi.videoCodec = codecString;\n\n if (mi.hasAudio) {\n if (mi.audioCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + '\"';\n }\n\n if (mi.isComplete()) {\n this._onMediaInfo(mi);\n }\n }\n\n var ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n\n if (ppsCount === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n\n return;\n } else if (ppsCount > 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = \" + ppsCount);\n }\n\n offset++;\n\n for (var _i2 = 0; _i2 < ppsCount; _i2++) {\n var _len3 = v.getUint16(offset, !le); // pictureParameterSetLength\n\n\n offset += 2;\n\n if (_len3 === 0) {\n continue;\n } // pps is useless for extracting video information\n\n\n offset += _len3;\n }\n\n meta.avcc = new Uint8Array(dataSize);\n meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');\n\n if (this._isInitialMetadataDispatched()) {\n // flush parsed frames\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._videoInitialMetadataDispatched = true;\n } // notify new metadata\n\n\n this._dispatch = false;\n\n this._onTrackMetadata('video', meta);\n } //#define H265_Get_NalType(c)\t (((c) & 0x7E) >> 1);\n ;\n\n _proto._makeH265Header = function _makeH265Header(buf) {\n var frameType = 0x02;\n\n switch (buf) {\n case 0x4E:\n //Prefix SEI\n {\n frameType = 0x01;\n }\n break;\n\n case 0x50:\n //Suffix SEI\n {\n frameType = 0x01;\n }\n break;\n\n case 0x40: //VPS\n\n case 0x42: //SPS\n\n case 0x20: //I frame 16\n\n case 0x22: //I frame 17\n\n case 0x24: //I frame 18\n\n case 0x26: //I frame 19\n\n case 0x28: //I frame 20\n\n case 0x2A:\n //I frame 21(acturally we should find naltype 16-21)\n {\n frameType = 0x01;\n }\n break;\n\n case 0x44:\n //PPS\n break;\n\n default:\n break;\n }\n\n return frameType;\n };\n\n _proto._parseHEVCVideoData = function _parseHEVCVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) {\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize); //console.log(\"Parse HEVC Video data... \" + dataSize);\n\n var dts = this._timestampBase + tagTimestamp;\n var keyframe = frameType === 1; // from FLV Frame Type constants\n\n var units = [];\n var framePos = 0;\n var offset = 0;\n\n while (offset < dataSize) {\n if (offset + 4 >= dataSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Malformed Nalu near timestamp \" + dts + \", offset = \" + offset + \", dataSize = \" + dataSize);\n break; // data not enough for next Nalu\n }\n\n var startCode1 = v.getUint8(offset);\n var startCode2 = v.getUint8(offset + 1);\n var startCode3 = v.getUint8(offset + 2);\n var startCode4 = v.getUint8(offset + 3);\n\n if (startCode1 === 0 && startCode2 === 0 && startCode3 === 0 && startCode4 === 1) {\n console.log(\"memcpy.....\"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n } else {\n // Nalu with length-header (AVC1)\n //let naluSize = v.getUint32(offset, !le); // Big-Endian read\n //if (lengthSize === 3) {\n // naluSize >>>= 8;\n //}\n //if (naluSize > dataSize - lengthSize) {\n // Log.w(this.TAG, `Malformed Nalus near timestamp ${dts}, NaluSize > DataSize!`);\n // return;\n //}\n var naluDataSize = v.getUint32(offset, !le);\n offset += 4;\n var ucTmp = v.getUint8(offset);\n offset += 1;\n\n if (naluDataSize > dataSize - 4) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Malformed Nalus near timestamp \" + dts + \", NaluSize > DataSize!\");\n return;\n }\n\n var codecId = ucTmp & 15; //console.log(\"NaluDataSize: \" + naluDataSize);\n\n if (naluDataSize + offset - 1 > dataSize) {\n //console.log(\" > dataSize... need more data... \" + dataSize + \" / \" + naluDataSize);\n break;\n }\n\n var byte1 = v.getUint8(offset - 1);\n\n var _frameType = this._makeH265Header(byte1);\n\n var unitType = 0;\n\n if (byte1 === 0x20 || byte1 === 0x22 || byte1 === 0x24 || byte1 === 0x26 || byte1 === 0x28 || byte1 === 0x2A) {\n if (units.length < 1) {\n if (this._HEVC_VPS) {\n var unitVps = {\n type: 5,\n data: this._HEVC_VPS\n };\n units.push(unitVps);\n framePos += this._HEVC_VPS.length;\n }\n\n if (this._HEVC_SPS) {\n var unitSps = {\n type: 6,\n data: this._HEVC_SPS\n };\n units.push(unitSps);\n framePos += this._HEVC_SPS.length;\n }\n\n if (this._HEVC_PPS) {\n var unitPps = {\n type: 7,\n data: this._HEVC_PPS\n };\n units.push(unitPps);\n framePos += this._HEVC_PPS.length;\n }\n }\n }\n\n if (_frameType === 1 && this._HEVC_VPS && byte1 !== this._HEVC_VPS[0]) {//console.log(\"memcpy vps sps pps...\");\n } //console.log(\"naluDataSize: \" + naluDataSize);\n\n\n if (dataOffset + offset - 1 - 4 >= 0 && naluDataSize > 0) {\n var data = new Uint8Array(arrayBuffer, dataOffset + offset - 1 - 4, naluDataSize + 4);\n data[0] = 0;\n data[1] = 0;\n data[2] = 0;\n data[3] = 1;\n var unit = {\n type: 5,\n data: data\n };\n units.push(unit);\n framePos += data.length;\n }\n\n offset += naluDataSize - 1;\n }\n } //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>\n\n\n if (this._DebugBuf) {\n if (this._DebugBufPos < 1024 * 1024) {\n this._DebugBuf.set(data2, this._DebugBufPos);\n\n this._DebugBufPos += data2.length;\n } else {\n console.log(\"DebugBuf: \" + this._DebugBuf);\n this._DebugBufPos = 0;\n }\n }\n /*\r\n if (bRet) {\r\n console.log(\"Frame data I[\" + framePos + \"]: \");// + data2);\r\n }\r\n else {\r\n console.log(\" Frame data P[\" + framePos + \"]: \");// + data2);\r\n }\r\n */\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\n\n if (units.length) {\n var track = this._videoTrack;\n var avcSample = {\n units: units,\n length: framePos,\n isKeyframe: keyframe,\n dts: dts,\n cts: cts,\n pts: dts + cts\n };\n\n if (keyframe) {\n avcSample.fileposition = tagPosition;\n }\n\n track.samples.push(avcSample);\n track.length += framePos; //console.log(\"flv-demuer.js::_parseAVCVideoData: \" + track.samples.length);\n }\n\n return;\n /*\r\n let units = [], length = 0;\r\n \r\n //let offset = 0;\r\n const lengthSize = this._naluLengthSize;\r\n let dts = this._timestampBase + tagTimestamp;\r\n let keyframe = (frameType === 1); // from FLV Frame Type constants\r\n \r\n while (offset < dataSize) {\r\n if (offset + 4 >= dataSize) {\r\n Log.w(this.TAG, `Malformed Nalu near timestamp ${dts}, offset = ${offset}, dataSize = ${dataSize}`);\r\n break; // data not enough for next Nalu\r\n }\r\n // Nalu with length-header (AVC1)\r\n let naluSize = v.getUint32(offset, !le); // Big-Endian read\r\n if (lengthSize === 3) {\r\n naluSize >>>= 8;\r\n }\r\n if (naluSize > dataSize - lengthSize) {\r\n Log.w(this.TAG, `Malformed Nalus near timestamp ${dts}, NaluSize > DataSize!`);\r\n return;\r\n }\r\n \r\n let unitType = v.getUint8(offset + lengthSize) & 0x1F;\r\n \r\n if (unitType === 5) { // IDR\r\n keyframe = true;\r\n }\r\n \r\n let data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize);\r\n let unit = { type: unitType, data: data };\r\n units.push(unit);\r\n length += data.byteLength;\r\n \r\n offset += lengthSize + naluSize;\r\n }\r\n \r\n if (units.length) {\r\n let track = this._videoTrack;\r\n let avcSample = {\r\n units: units,\r\n length: length,\r\n isKeyframe: keyframe,\r\n dts: dts,\r\n cts: cts,\r\n pts: (dts + cts)\r\n };\r\n if (keyframe) {\r\n avcSample.fileposition = tagPosition;\r\n }\r\n track.samples.push(avcSample);\r\n track.length += length;\r\n \r\n //console.log(\"flv-demuer.js::_parseAVCVideoData: \" + track.samples.length);\r\n }\r\n */\n };\n\n _createClass(FLVDemuxer, [{\n key: \"onTrackMetadata\",\n get: function get() {\n return this._onTrackMetadata;\n },\n set: function set(callback) {\n this._onTrackMetadata = callback;\n } // prototype: function(mediaInfo: MediaInfo): void\n\n }, {\n key: \"onMediaInfo\",\n get: function get() {\n return this._onMediaInfo;\n },\n set: function set(callback) {\n this._onMediaInfo = callback;\n }\n }, {\n key: \"onMetaDataArrived\",\n get: function get() {\n return this._onMetaDataArrived;\n },\n set: function set(callback) {\n this._onMetaDataArrived = callback;\n }\n }, {\n key: \"onScriptDataArrived\",\n get: function get() {\n return this._onScriptDataArrived;\n },\n set: function set(callback) {\n this._onScriptDataArrived = callback;\n } // prototype: function(type: number, info: string): void\n\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n } // prototype: function(videoTrack: any, audioTrack: any): void\n\n }, {\n key: \"onDataAvailable\",\n get: function get() {\n return this._onDataAvailable;\n },\n set: function set(callback) {\n this._onDataAvailable = callback;\n } // timestamp base for output samples, must be in milliseconds\n\n }, {\n key: \"timestampBase\",\n get: function get() {\n return this._timestampBase;\n },\n set: function set(base) {\n this._timestampBase = base;\n }\n }, {\n key: \"overridedDuration\",\n get: function get() {\n return this._duration;\n } // Force-override media duration. Must be in milliseconds, int32\n ,\n set: function set(duration) {\n this._durationOverrided = true;\n this._duration = duration;\n this._mediaInfo.duration = duration;\n } // Force-override audio track present flag, boolean\n\n }, {\n key: \"overridedHasAudio\",\n set: function set(hasAudio) {\n this._hasAudioFlagOverrided = true;\n this._hasAudio = hasAudio;\n this._mediaInfo.hasAudio = hasAudio;\n } // Force-override video track present flag, boolean\n\n }, {\n key: \"overridedHasVideo\",\n set: function set(hasVideo) {\n this._hasVideoFlagOverrided = true;\n this._hasVideo = hasVideo;\n this._mediaInfo.hasVideo = hasVideo;\n }\n }]);\n\n return FLVDemuxer;\n}(); //==================================================================\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FLVDemuxer);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/demux/flv-demuxer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/demux/sps-parser.js":
|
||
/*!**************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/demux/sps-parser.js ***!
|
||
\**************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exp_golomb_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exp-golomb.js */ \"./src/FlvPlayer/flv.js/demux/exp-golomb.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar SPSParser = /*#__PURE__*/function () {\n function SPSParser() {}\n\n SPSParser._ebsp2rbsp = function _ebsp2rbsp(uint8array) {\n var src = uint8array;\n var src_length = src.byteLength;\n var dst = new Uint8Array(src_length);\n var dst_idx = 0;\n\n for (var i = 0; i < src_length; i++) {\n if (i >= 2) {\n // Unescape: Skip 0x03 after 00 00\n if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n continue;\n }\n }\n\n dst[dst_idx] = src[i];\n dst_idx++;\n }\n\n return new Uint8Array(dst.buffer, 0, dst_idx);\n };\n\n SPSParser.parseSPS = function parseSPS(uint8array) {\n var rbsp = SPSParser._ebsp2rbsp(uint8array);\n\n var gb = new _exp_golomb_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](rbsp);\n gb.readByte();\n var profile_idc = gb.readByte(); // profile_idc\n\n gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n\n var level_idc = gb.readByte(); // level_idc\n\n gb.readUEG(); // seq_parameter_set_id\n\n var profile_string = SPSParser.getProfileString(profile_idc);\n var level_string = SPSParser.getLevelString(level_idc);\n var chroma_format_idc = 1;\n var chroma_format = 420;\n var chroma_format_table = [0, 420, 422, 444];\n var bit_depth = 8;\n\n if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 || profile_idc === 244 || profile_idc === 44 || profile_idc === 83 || profile_idc === 86 || profile_idc === 118 || profile_idc === 128 || profile_idc === 138 || profile_idc === 144) {\n chroma_format_idc = gb.readUEG();\n\n if (chroma_format_idc === 3) {\n gb.readBits(1); // separate_colour_plane_flag\n }\n\n if (chroma_format_idc <= 3) {\n chroma_format = chroma_format_table[chroma_format_idc];\n }\n\n bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n\n gb.readUEG(); // bit_depth_chroma_minus8\n\n gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n\n if (gb.readBool()) {\n // seq_scaling_matrix_present_flag\n var scaling_list_count = chroma_format_idc !== 3 ? 8 : 12;\n\n for (var i = 0; i < scaling_list_count; i++) {\n if (gb.readBool()) {\n // seq_scaling_list_present_flag\n if (i < 6) {\n SPSParser._skipScalingList(gb, 16);\n } else {\n SPSParser._skipScalingList(gb, 64);\n }\n }\n }\n }\n }\n\n gb.readUEG(); // log2_max_frame_num_minus4\n\n var pic_order_cnt_type = gb.readUEG();\n\n if (pic_order_cnt_type === 0) {\n gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n } else if (pic_order_cnt_type === 1) {\n gb.readBits(1); // delta_pic_order_always_zero_flag\n\n gb.readSEG(); // offset_for_non_ref_pic\n\n gb.readSEG(); // offset_for_top_to_bottom_field\n\n var num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n\n for (var _i = 0; _i < num_ref_frames_in_pic_order_cnt_cycle; _i++) {\n gb.readSEG(); // offset_for_ref_frame\n }\n }\n\n var ref_frames = gb.readUEG(); // max_num_ref_frames\n\n gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n\n var pic_width_in_mbs_minus1 = gb.readUEG();\n var pic_height_in_map_units_minus1 = gb.readUEG();\n var frame_mbs_only_flag = gb.readBits(1);\n\n if (frame_mbs_only_flag === 0) {\n gb.readBits(1); // mb_adaptive_frame_field_flag\n }\n\n gb.readBits(1); // direct_8x8_inference_flag\n\n var frame_crop_left_offset = 0;\n var frame_crop_right_offset = 0;\n var frame_crop_top_offset = 0;\n var frame_crop_bottom_offset = 0;\n var frame_cropping_flag = gb.readBool();\n\n if (frame_cropping_flag) {\n frame_crop_left_offset = gb.readUEG();\n frame_crop_right_offset = gb.readUEG();\n frame_crop_top_offset = gb.readUEG();\n frame_crop_bottom_offset = gb.readUEG();\n }\n\n var sar_width = 1,\n sar_height = 1;\n var fps = 0,\n fps_fixed = true,\n fps_num = 0,\n fps_den = 0;\n var vui_parameters_present_flag = gb.readBool();\n\n if (vui_parameters_present_flag) {\n if (gb.readBool()) {\n // aspect_ratio_info_present_flag\n var aspect_ratio_idc = gb.readByte();\n var sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n var sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n\n if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n sar_width = sar_w_table[aspect_ratio_idc - 1];\n sar_height = sar_h_table[aspect_ratio_idc - 1];\n } else if (aspect_ratio_idc === 255) {\n sar_width = gb.readByte() << 8 | gb.readByte();\n sar_height = gb.readByte() << 8 | gb.readByte();\n }\n }\n\n if (gb.readBool()) {\n // overscan_info_present_flag\n gb.readBool(); // overscan_appropriate_flag\n }\n\n if (gb.readBool()) {\n // video_signal_type_present_flag\n gb.readBits(4); // video_format & video_full_range_flag\n\n if (gb.readBool()) {\n // colour_description_present_flag\n gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n }\n }\n\n if (gb.readBool()) {\n // chroma_loc_info_present_flag\n gb.readUEG(); // chroma_sample_loc_type_top_field\n\n gb.readUEG(); // chroma_sample_loc_type_bottom_field\n }\n\n if (gb.readBool()) {\n // timing_info_present_flag\n var num_units_in_tick = gb.readBits(32);\n var time_scale = gb.readBits(32);\n fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n\n fps_num = time_scale;\n fps_den = num_units_in_tick * 2;\n fps = fps_num / fps_den;\n }\n }\n\n var sarScale = 1;\n\n if (sar_width !== 1 || sar_height !== 1) {\n sarScale = sar_width / sar_height;\n }\n\n var crop_unit_x = 0,\n crop_unit_y = 0;\n\n if (chroma_format_idc === 0) {\n crop_unit_x = 1;\n crop_unit_y = 2 - frame_mbs_only_flag;\n } else {\n var sub_wc = chroma_format_idc === 3 ? 1 : 2;\n var sub_hc = chroma_format_idc === 1 ? 2 : 1;\n crop_unit_x = sub_wc;\n crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n }\n\n var codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n var codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n var present_width = Math.ceil(codec_width * sarScale);\n gb.destroy();\n gb = null;\n return {\n avc_profile: profile_idc,\n profile_string: profile_string,\n // baseline, high, high10, ...\n avc_level: level_idc,\n level_string: level_string,\n // 3, 3.1, 4, 4.1, 5, 5.1, ...\n bit_depth: bit_depth,\n // 8bit, 10bit, ...\n ref_frames: ref_frames,\n chroma_format: chroma_format,\n // 4:2:0, 4:2:2, ...\n chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n frame_rate: {\n fixed: fps_fixed,\n fps: fps,\n fps_den: fps_den,\n fps_num: fps_num\n },\n sar_ratio: {\n width: sar_width,\n height: sar_height\n },\n codec_size: {\n width: codec_width,\n height: codec_height\n },\n present_size: {\n width: present_width,\n height: codec_height\n }\n };\n };\n\n SPSParser._skipScalingList = function _skipScalingList(gb, count) {\n var last_scale = 8,\n next_scale = 8;\n var delta_scale = 0;\n\n for (var i = 0; i < count; i++) {\n if (next_scale !== 0) {\n delta_scale = gb.readSEG();\n next_scale = (last_scale + delta_scale + 256) % 256;\n }\n\n last_scale = next_scale === 0 ? last_scale : next_scale;\n }\n };\n\n SPSParser.getProfileString = function getProfileString(profile_idc) {\n switch (profile_idc) {\n case 66:\n return 'Baseline';\n\n case 77:\n return 'Main';\n\n case 88:\n return 'Extended';\n\n case 100:\n return 'High';\n\n case 110:\n return 'High10';\n\n case 122:\n return 'High422';\n\n case 244:\n return 'High444';\n\n default:\n return 'Unknown';\n }\n };\n\n SPSParser.getLevelString = function getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n };\n\n SPSParser.getChromaFormatString = function getChromaFormatString(chroma) {\n switch (chroma) {\n case 420:\n return '4:2:0';\n\n case 422:\n return '4:2:2';\n\n case 444:\n return '4:4:4';\n\n default:\n return 'Unknown';\n }\n };\n\n return SPSParser;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SPSParser);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/demux/sps-parser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/fetch-stream-loader.js":
|
||
/*!********************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/fetch-stream-loader.js ***!
|
||
\********************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n/* fetch + stream IO loader. Currently working on chrome 43+.\r\n * fetch provides a better alternative http API to XMLHttpRequest\r\n *\r\n * fetch spec https://fetch.spec.whatwg.org/\r\n * stream spec https://streams.spec.whatwg.org/\r\n */\n\nvar FetchStreamLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(FetchStreamLoader, _BaseLoader);\n\n FetchStreamLoader.isSupported = function isSupported() {\n try {\n // fetch + stream is broken on Microsoft Edge. Disable before build 15048.\n // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8196907/\n // Fixed in Jan 10, 2017. Build 15048+ removed from blacklist.\n var isWorkWellEdge = _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].msedge && _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].version.minor >= 15048;\n var browserNotBlacklisted = _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].msedge ? isWorkWellEdge : true;\n return self.fetch && self.ReadableStream && browserNotBlacklisted;\n } catch (e) {\n return false;\n }\n };\n\n function FetchStreamLoader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'fetch-stream-loader') || this;\n _this.TAG = 'FetchStreamLoader';\n _this._seekHandler = seekHandler;\n _this._config = config;\n _this._needStash = true;\n _this._isError = true;\n _this._callbackFunc = config.callbackFunc;\n _this._requestAbort = false;\n _this._contentLength = null;\n _this._receivedLength = 0;\n _this._retryConnectTimes = 0;\n _this._fetchUrl = null;\n _this._fetchParam = null;\n _this._triggerReconnectingNotify = true;\n _this._triggerReconnectSuccessNotify = true;\n return _this;\n }\n\n var _proto = FetchStreamLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.isWorking()) {\n this.abort();\n }\n\n this._isError = false;\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.fetchStream = function fetchStream() {\n var _this2 = this;\n\n var params = this._fetchParam;\n this._retryConnectTimes++; //֪ͨ<CDA8>ϲ<EFBFBD>, <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1Ϊ<31><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>еķ<D0B5><C4B7><EFBFBD>_onDataArrival\n\n if (this._triggerReconnectingNotify) {\n this._triggerReconnectingNotify = false;\n\n if (this._onDataArrival) {\n this._onDataArrival(null, -this._retryConnectTimes, 0);\n }\n }\n\n this._triggerReconnectSuccessNotify = true;\n self.fetch(this._fetchUrl, params).then(function (res) {\n if (_this2._requestAbort) {\n _this2._requestAbort = false;\n _this2._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kIdle;\n return;\n }\n\n if (res.ok && res.status >= 200 && res.status <= 299) {\n if (res.url !== _this2._fetchUrl) {\n if (_this2._onURLRedirect) {\n var redirectedURL = _this2._seekHandler.removeURLParameters(res.url);\n\n _this2._onURLRedirect(redirectedURL);\n }\n }\n\n var lengthHeader = res.headers.get('Content-Length');\n\n if (lengthHeader != null) {\n _this2._contentLength = parseInt(lengthHeader);\n\n if (_this2._contentLength !== 0) {\n if (_this2._onContentLengthKnown) {\n _this2._onContentLengthKnown(_this2._contentLength);\n }\n }\n }\n\n _this2._triggerReconnectingNotify = true;\n return _this2._pump.call(_this2, res.body.getReader());\n } else {\n _this2._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n\n if (_this2._onError) {//this._onError(LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: res.status, msg: res.statusText });\n } else {//throw new RuntimeException('FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText);\n }\n\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"MediaWorkerLog\"](\"fetch-stream: code:\" + res.status + \" msg:\" + res.statusText);\n\n _this2._callbackFunc({\n code: res.status,\n msg: res.statusText\n });\n\n var _self = _this2;\n\n if (_self._isError) {\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"sleep\"](3000).then(function () {\n //console.log(\"fetch-stream-loader.js::Reopen...\");\n console.log(\"Reconnecting...\");\n\n _self.fetchStream();\n });\n }\n\n return;\n }\n }).catch(function (e) {\n _this2._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n\n if (_this2._onError) {\n _this2._onError(_loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EXCEPTION, {\n code: -1,\n msg: e.message\n });\n } else {\n throw e;\n }\n\n var self = _this2;\n\n if (self._isError) {\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"sleep\"](3000).then(function () {\n //console.log(\"fetch-stream-loader.js::Reopen...\");\n self.fetchStream();\n });\n }\n\n return;\n });\n };\n\n _proto.open = function open(dataSource, range) {\n /*\r\n if (this._fetchUrl != null &&\r\n this._fetchParam != null) {\r\n this.fetchStream();\r\n return;\r\n }\r\n */\n this._dataSource = dataSource;\n this._range = range;\n var sourceURL = dataSource.url;\n\n if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {\n sourceURL = dataSource.redirectedURL;\n }\n\n var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n\n var headers = new self.Headers();\n\n if (typeof seekConfig.headers === 'object') {\n var configHeaders = seekConfig.headers;\n\n for (var key in configHeaders) {\n if (configHeaders.hasOwnProperty(key)) {\n headers.append(key, configHeaders[key]);\n }\n }\n }\n\n var params = {\n method: 'GET',\n headers: headers,\n mode: 'cors',\n cache: 'default',\n // The default policy of Fetch API in the whatwg standard\n // Safari incorrectly indicates 'no-referrer' as default policy, fuck it\n referrerPolicy: 'no-referrer-when-downgrade'\n }; // add additional headers\n\n if (typeof this._config.headers === 'object') {\n for (var _key in this._config.headers) {\n headers.append(_key, this._config.headers[_key]);\n }\n } // cors is enabled by default\n\n\n if (dataSource.cors === false) {\n // no-cors means 'disregard cors policy', which can only be used in ServiceWorker\n params.mode = 'same-origin';\n } // withCredentials is disabled by default\n\n\n if (dataSource.withCredentials) {\n params.credentials = 'include';\n } // referrerPolicy from config\n\n\n if (dataSource.referrerPolicy) {\n params.referrerPolicy = dataSource.referrerPolicy;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kConnecting;\n this._fetchUrl = seekConfig.url;\n this._fetchParam = params;\n this.fetchStream();\n /*\r\n self.fetch(seekConfig.url, params).then((res) => {\r\n if (this._requestAbort) {\r\n this._requestAbort = false;\r\n this._status = LoaderStatus.kIdle;\r\n return;\r\n }\r\n if (res.ok && (res.status >= 200 && res.status <= 299)) {\r\n if (res.url !== seekConfig.url) {\r\n if (this._onURLRedirect) {\r\n let redirectedURL = this._seekHandler.removeURLParameters(res.url);\r\n this._onURLRedirect(redirectedURL);\r\n }\r\n }\r\n let lengthHeader = res.headers.get('Content-Length');\r\n if (lengthHeader != null) {\r\n this._contentLength = parseInt(lengthHeader);\r\n if (this._contentLength !== 0) {\r\n if (this._onContentLengthKnown) {\r\n this._onContentLengthKnown(this._contentLength);\r\n }\r\n }\r\n }\r\n return this._pump.call(this, res.body.getReader());\r\n } else {\r\n this._status = LoaderStatus.kError;\r\n if (this._onError) {\r\n this._onError(LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: res.status, msg: res.statusText });\r\n } else {\r\n throw new RuntimeException('FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText);\r\n }\r\n }\r\n }).catch((e) => {\r\n this._status = LoaderStatus.kError;\r\n if (this._onError) {\r\n this._onError(LoaderErrors.EXCEPTION, { code: -1, msg: e.message });\r\n } else {\r\n throw e;\r\n }\r\n });\r\n */\n };\n\n _proto.abort = function abort() {\n this._requestAbort = true;\n };\n\n _proto._pump = function _pump(reader) {\n var _this3 = this;\n\n // ReadableStreamReader\n return reader.read().then(function (result) {\n if (result.done) {\n // First check received length\n if (_this3._contentLength !== null && _this3._receivedLength < _this3._contentLength) {\n // Report Early-EOF\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n var type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EARLY_EOF;\n var info = {\n code: -1,\n msg: 'Fetch stream meet Early-EOF'\n };\n\n if (_this3._onError) {\n _this3._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"RuntimeException\"](info.msg);\n } //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>\n\n\n if (_this3._contentLength !== null && _this3._receivedLength === _this3._contentLength && _this3._receivedLength > 0) {\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"setLiveStreamType\"](false);\n\n _this3._onComplete(_this3._range.from, _this3._range.from + _this3._receivedLength - 1);\n } else {\n _this3._onComplete(-1, -1);\n }\n } else {\n // OK. Download complete\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kComplete;\n\n if (_this3._onComplete) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>\n if (_this3._contentLength !== null && _this3._receivedLength === _this3._contentLength && _this3._receivedLength > 0) {\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"setLiveStreamType\"](false);\n\n _this3._onComplete(_this3._range.from, _this3._range.from + _this3._receivedLength - 1);\n } else {\n _this3._onComplete(-1, -1);\n }\n }\n }\n } else {\n if (_this3._requestAbort === true) {\n _this3._requestAbort = false;\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kComplete;\n return reader.cancel();\n }\n\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kBuffering;\n var chunk = result.value.buffer;\n var byteStart = _this3._range.from + _this3._receivedLength;\n _this3._receivedLength += chunk.byteLength;\n\n if (_this3._onDataArrival) {\n _this3._onDataArrival(chunk, byteStart, _this3._receivedLength);\n } //֪ͨ<CDA8>ϲ<EFBFBD>, <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1Ϊ<31><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>еķ<D0B5><C4B7><EFBFBD>_onDataArrival\n\n\n if (_this3._triggerReconnectSuccessNotify) {\n _this3._triggerReconnectSuccessNotify = false;\n\n if (_this3._onDataArrival) {\n //console.log(\"fetch-stream-loader.js::Connected:\" + this._retryConnectTimes);\n _this3._onDataArrival(null, _this3._retryConnectTimes, 0);\n\n _this3._retryConnectTimes++;\n }\n }\n\n _this3._pump(reader);\n }\n }).catch(function (e) {\n console.log(\"fetch-stream-loader:: errCode:\" + e.code + \" msg:\" + e.message);\n\n _this3._onComplete(-1, -1);\n\n return;\n\n if (e.code === 11 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].msedge) {\n // InvalidStateError on Microsoft Edge\n // Workaround: Edge may throw InvalidStateError after ReadableStreamReader.cancel() call\n // Ignore the unknown exception.\n // Related issue: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11265202/\n return;\n }\n\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n var type = 0;\n var info = null;\n\n if ((e.code === 19 || e.message === 'network error') && ( // NETWORK_ERR\n _this3._contentLength === null || _this3._contentLength !== null && _this3._receivedLength < _this3._contentLength)) {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: e.code,\n msg: 'Fetch stream meet Early-EOF'\n };\n } else {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EXCEPTION;\n info = {\n code: e.code,\n msg: e.message\n };\n }\n\n if (_this3._onError) {\n _this3._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"RuntimeException\"](info.msg);\n }\n });\n };\n\n return FetchStreamLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_2__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FetchStreamLoader);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/fetch-stream-loader.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/io-controller.js":
|
||
/*!**************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/io-controller.js ***!
|
||
\**************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./speed-sampler.js */ \"./src/FlvPlayer/flv.js/io/speed-sampler.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fetch-stream-loader.js */ \"./src/FlvPlayer/flv.js/io/fetch-stream-loader.js\");\n/* harmony import */ var _xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./xhr-moz-chunked-loader.js */ \"./src/FlvPlayer/flv.js/io/xhr-moz-chunked-loader.js\");\n/* harmony import */ var _xhr_msstream_loader_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./xhr-msstream-loader.js */ \"./src/FlvPlayer/flv.js/io/xhr-msstream-loader.js\");\n/* harmony import */ var _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./xhr-range-loader.js */ \"./src/FlvPlayer/flv.js/io/xhr-range-loader.js\");\n/* harmony import */ var _websocket_loader_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./websocket-loader.js */ \"./src/FlvPlayer/flv.js/io/websocket-loader.js\");\n/* harmony import */ var _range_seek_handler_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./range-seek-handler.js */ \"./src/FlvPlayer/flv.js/io/range-seek-handler.js\");\n/* harmony import */ var _param_seek_handler_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./param-seek-handler.js */ \"./src/FlvPlayer/flv.js/io/param-seek-handler.js\");\n/* harmony import */ var _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./m3u8-loader.js */ \"./src/FlvPlayer/flv.js/io/m3u8-loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\r\n * DataSource: {\r\n * url: string,\r\n * filesize: number,\r\n * cors: boolean,\r\n * withCredentials: boolean\r\n * }\r\n * \r\n */\n// Manage IO Loaders\n\nvar IOController = /*#__PURE__*/function () {\n function IOController(dataSource, config, extraData, startPlaySecs) {\n this.TAG = 'IOController';\n this._config = config;\n this._extraData = extraData;\n this._stashInitialSize = 1024 * 384; // default initial size: 384KB\n\n if (config.stashInitialSize != undefined && config.stashInitialSize > 0) {\n // apply from config\n this._stashInitialSize = config.stashInitialSize;\n }\n\n this._stashUsed = 0;\n this._stashSize = this._stashInitialSize;\n this._bufferSize = 1024 * 1024 * 3; // initial size: 3MB\n\n this._stashBuffer = new ArrayBuffer(this._bufferSize);\n this._stashByteStart = 0;\n this._enableStash = true;\n\n if (config.enableStashBuffer === false) {\n this._enableStash = false;\n } //add by gavin 2020.05.06 \n //<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD> <20><>decodeTypeΪ'soft'ʱ, <20>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊfalse\n\n\n if (config.decodeType === 'soft') {\n this._enableStash = false;\n }\n\n this._loader = null;\n this._loaderClass = null;\n this._seekHandler = null;\n this._dataSource = dataSource;\n this._isWebSocketURL = /wss?:\\/\\/(.+?)/.test(dataSource.url);\n this._refTotalLength = dataSource.filesize ? dataSource.filesize : null;\n this._totalLength = this._refTotalLength;\n this._fullRequestFlag = false;\n this._currentRange = null;\n this._redirectedURL = null;\n this._speedNormalized = 0;\n this._speedSampler = new _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096];\n this._isEarlyEofReconnecting = false;\n this._paused = false;\n this._resumeFrom = 0;\n this._onDataArrival = null;\n this._onSeeked = null;\n this._onError = null;\n this._onComplete = null;\n this._onRedirect = null;\n this._onRecoveredEarlyEof = null;\n\n this._selectSeekHandler();\n\n this._selectLoader();\n\n this._createLoader(startPlaySecs);\n }\n\n var _proto = IOController.prototype;\n\n _proto.destroy = function destroy() {\n if (this._loader.isWorking()) {\n this._loader.abort();\n }\n\n this._loader.destroy();\n\n this._loader = null;\n this._loaderClass = null;\n this._dataSource = null;\n this._stashBuffer = null;\n this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0;\n this._currentRange = null;\n this._speedSampler = null;\n this._isEarlyEofReconnecting = false;\n this._onDataArrival = null;\n this._onSeeked = null;\n this._onError = null;\n this._onComplete = null;\n this._onRedirect = null;\n this._onRecoveredEarlyEof = null;\n this._extraData = null;\n };\n\n _proto.isWorking = function isWorking() {\n return this._loader && this._loader.isWorking() && !this._paused;\n };\n\n _proto.isPaused = function isPaused() {\n return this._paused;\n };\n\n _proto._selectSeekHandler = function _selectSeekHandler() {\n var config = this._config;\n\n if (config.seekType === 'range') {\n this._seekHandler = new _range_seek_handler_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._config.rangeLoadZeroStart);\n } else if (config.seekType === 'param') {\n var paramStart = config.seekParamStart || 'bstart';\n var paramEnd = config.seekParamEnd || 'bend';\n this._seekHandler = new _param_seek_handler_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"](paramStart, paramEnd);\n } else if (config.seekType === 'custom') {\n if (typeof config.customSeekHandler !== 'function') {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_11__[\"InvalidArgumentException\"]('Custom seekType specified in config but invalid customSeekHandler!');\n }\n\n this._seekHandler = new config.customSeekHandler();\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_11__[\"InvalidArgumentException\"](\"Invalid seekType in config: \" + config.seekType);\n }\n };\n\n _proto._selectLoader = function _selectLoader() {\n if (this._config.customLoader != null) {\n this._loaderClass = this._config.customLoader;\n } else if (this._config.streamType === 'm3u8') {\n this._loaderClass = _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\n } else if (this._isWebSocketURL) {\n this._loaderClass = _websocket_loader_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n } else if (_fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isSupported()) {\n this._loaderClass = _fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n } else if (_xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isSupported()) {\n this._loaderClass = _xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n } else if (_xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].isSupported()) {\n this._loaderClass = _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_11__[\"RuntimeException\"]('Your browser doesn\\'t support xhr with arraybuffer responseType!');\n }\n };\n\n _proto._IsM3u8Loader = function _IsM3u8Loader() {\n return this._loaderClass == _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"] ? true : false;\n };\n\n _proto._GetM3u8Loader = function _GetM3u8Loader() {\n if (this._loaderClass == _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]) return this._loader;\n return null;\n };\n\n _proto._createLoader = function _createLoader(startPlaySecs) {\n this._loader = new this._loaderClass(this._seekHandler, this._config);\n\n if (this._loader.needStashBuffer === false) {\n this._enableStash = false;\n }\n\n if (this._loaderClass == _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]) {\n this._loader.setStartPlaySecs(startPlaySecs);\n }\n\n this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this);\n this._loader.onURLRedirect = this._onURLRedirect.bind(this);\n this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this);\n this._loader.onComplete = this._onLoaderComplete.bind(this);\n this._loader.onError = this._onLoaderError.bind(this);\n };\n\n _proto.open = function open(optionalFrom) {\n this._currentRange = {\n from: 0,\n to: -1\n };\n\n if (optionalFrom) {\n this._currentRange.from = optionalFrom;\n }\n\n this._speedSampler.reset();\n\n if (!optionalFrom) {\n this._fullRequestFlag = true;\n }\n\n this._loader.open(this._dataSource, Object.assign({}, this._currentRange));\n };\n\n _proto.abort = function abort() {\n this._loader.abort();\n\n if (this._paused) {\n this._paused = false;\n this._resumeFrom = 0;\n }\n };\n\n _proto.pause = function pause() {\n if (this.isWorking()) {\n this._loader.abort();\n\n if (this._stashUsed !== 0) {\n this._resumeFrom = this._stashByteStart;\n this._currentRange.to = this._stashByteStart - 1;\n } else {\n this._resumeFrom = this._currentRange.to + 1;\n }\n\n this._stashUsed = 0;\n this._stashByteStart = 0;\n this._paused = true;\n }\n };\n\n _proto.resume = function resume() {\n if (this._paused) {\n this._paused = false;\n var bytes = this._resumeFrom;\n this._resumeFrom = 0;\n\n this._internalSeek(bytes, true);\n }\n };\n\n _proto.seek = function seek(bytes) {\n //console.log(\"io-controller.js::seek(bytes):\" + bytes);\n this._paused = false;\n this._stashUsed = 0;\n this._stashByteStart = 0;\n\n this._internalSeek(bytes, true);\n }\n /**\r\n * When seeking request is from media seeking, unconsumed stash data should be dropped\r\n * However, stash data shouldn't be dropped if seeking requested from http reconnection\r\n *\r\n * @dropUnconsumed: Ignore and discard all unconsumed data in stash buffer\r\n */\n ;\n\n _proto._internalSeek = function _internalSeek(bytes, dropUnconsumed) {\n if (this._loader.isWorking()) {\n this._loader.abort();\n } // dispatch & flush stash buffer before seek\n\n\n this._flushStashBuffer(dropUnconsumed);\n\n this._loader.destroy();\n\n this._loader = null;\n var requestRange = {\n from: bytes,\n to: -1\n };\n this._currentRange = {\n from: requestRange.from,\n to: -1\n };\n\n this._speedSampler.reset();\n\n this._stashSize = this._stashInitialSize;\n\n this._createLoader();\n\n this._loader.open(this._dataSource, requestRange);\n\n if (this._onSeeked) {\n this._onSeeked();\n }\n };\n\n _proto.updateUrl = function updateUrl(url) {\n if (!url || typeof url !== 'string' || url.length === 0) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_11__[\"InvalidArgumentException\"]('Url must be a non-empty string!');\n }\n\n this._dataSource.url = url; // TODO: replace with new url\n };\n\n _proto._expandBuffer = function _expandBuffer(expectedBytes) {\n var bufferNewSize = this._stashSize;\n\n while (bufferNewSize + 1024 * 1024 * 1 < expectedBytes) {\n bufferNewSize *= 2;\n }\n\n bufferNewSize += 1024 * 1024 * 1; // bufferSize = stashSize + 1MB\n\n if (bufferNewSize === this._bufferSize) {\n return;\n }\n\n var newBuffer = new ArrayBuffer(bufferNewSize);\n\n if (this._stashUsed > 0) {\n // copy existing data into new buffer\n var stashOldArray = new Uint8Array(this._stashBuffer, 0, this._stashUsed);\n var stashNewArray = new Uint8Array(newBuffer, 0, bufferNewSize);\n stashNewArray.set(stashOldArray, 0);\n }\n\n this._stashBuffer = newBuffer;\n this._bufferSize = bufferNewSize;\n };\n\n _proto._normalizeSpeed = function _normalizeSpeed(input) {\n var list = this._speedNormalizeList;\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n\n if (input < list[0]) {\n return list[0];\n } // binary search\n\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || input >= list[mid] && input < list[mid + 1]) {\n return list[mid];\n } else if (list[mid] < input) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n };\n\n _proto._adjustStashSize = function _adjustStashSize(normalized) {\n var stashSizeKB = 0;\n\n if (this._config.isLive) {\n // live stream: always use single normalized speed for size of stashSizeKB\n stashSizeKB = normalized;\n } else {\n if (normalized < 512) {\n stashSizeKB = normalized;\n } else if (normalized >= 512 && normalized <= 1024) {\n stashSizeKB = Math.floor(normalized * 1.5);\n } else {\n stashSizeKB = normalized * 2;\n }\n }\n\n if (stashSizeKB > 8192) {\n stashSizeKB = 8192;\n }\n\n var bufferSize = stashSizeKB * 1024 + 1024 * 1024 * 1; // stashSize + 1MB\n\n if (this._bufferSize < bufferSize) {\n this._expandBuffer(bufferSize);\n }\n\n this._stashSize = stashSizeKB * 1024;\n };\n\n _proto._dispatchChunks = function _dispatchChunks(chunks, byteStart) {\n // console.log(self, this.currentSpeed);\n if (chunks === null) {\n if (this._IsM3u8Loader()) {\n if (byteStart > 1 && this._onComplete) {\n this._onComplete(-1);\n }\n\n return;\n }\n\n return this._onDataArrival(chunks, byteStart);\n }\n\n this._currentRange.to = byteStart + chunks.byteLength - 1;\n return this._onDataArrival(chunks, byteStart);\n };\n\n _proto._onURLRedirect = function _onURLRedirect(redirectedURL) {\n this._redirectedURL = redirectedURL;\n\n if (this._onRedirect) {\n this._onRedirect(redirectedURL);\n }\n };\n\n _proto._onContentLengthKnown = function _onContentLengthKnown(contentLength) {\n if (contentLength && this._fullRequestFlag) {\n this._totalLength = contentLength;\n this._fullRequestFlag = false;\n }\n };\n\n _proto._onLoaderChunkArrival = function _onLoaderChunkArrival(chunk, byteStart, receivedLength) {\n if (!this._onDataArrival) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_11__[\"IllegalStateException\"]('IOController: No existing consumer (onDataArrival) callback!');\n }\n\n if (this._paused) {\n return;\n }\n\n if (this._isEarlyEofReconnecting) {\n // Auto-reconnect for EarlyEof succeed, notify to upper-layer by callback\n this._isEarlyEofReconnecting = false;\n\n if (this._onRecoveredEarlyEof) {\n this._onRecoveredEarlyEof();\n }\n }\n\n if (chunk === null && receivedLength < 1) {\n this._dispatchChunks(chunk, byteStart);\n\n return;\n }\n\n this._speedSampler.addBytes(chunk.byteLength); // adjust stash buffer size according to network speed dynamically\n\n\n var KBps = this._speedSampler.lastSecondKBps;\n\n if (KBps !== 0) {\n var normalized = this._normalizeSpeed(KBps);\n\n if (this._speedNormalized !== normalized) {\n this._speedNormalized = normalized;\n\n this._adjustStashSize(normalized);\n }\n }\n\n if (!this._enableStash) {\n // disable stash\n if (this._stashUsed === 0) {\n // dispatch chunk directly to consumer;\n // check ret value (consumed bytes) and stash unconsumed to stashBuffer\n var consumed = this._dispatchChunks(chunk, byteStart);\n\n if (consumed < chunk.byteLength) {\n // unconsumed data remain.\n var remain = chunk.byteLength - consumed;\n\n if (remain > this._bufferSize) {\n this._expandBuffer(remain);\n }\n\n var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n stashArray.set(new Uint8Array(chunk, consumed), 0);\n this._stashUsed += remain;\n this._stashByteStart = byteStart + consumed;\n }\n } else {\n // else: Merge chunk into stashBuffer, and dispatch stashBuffer to consumer.\n if (this._stashUsed + chunk.byteLength > this._bufferSize) {\n this._expandBuffer(this._stashUsed + chunk.byteLength);\n }\n\n var _stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n\n _stashArray.set(new Uint8Array(chunk), this._stashUsed);\n\n this._stashUsed += chunk.byteLength;\n\n var _consumed = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart);\n\n if (_consumed < this._stashUsed && _consumed > 0) {\n // unconsumed data remain\n var remainArray = new Uint8Array(this._stashBuffer, _consumed);\n\n _stashArray.set(remainArray, 0);\n }\n\n this._stashUsed -= _consumed;\n this._stashByteStart += _consumed;\n }\n } else {\n // enable stash\n if (this._stashUsed === 0 && this._stashByteStart === 0) {\n // seeked? or init chunk?\n // This is the first chunk after seek action\n this._stashByteStart = byteStart;\n }\n\n if (this._stashUsed + chunk.byteLength <= this._stashSize) {\n // just stash\n var _stashArray2 = new Uint8Array(this._stashBuffer, 0, this._stashSize);\n\n _stashArray2.set(new Uint8Array(chunk), this._stashUsed);\n\n this._stashUsed += chunk.byteLength;\n } else {\n // stashUsed + chunkSize > stashSize, size limit exceeded\n var _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n\n if (this._stashUsed > 0) {\n // There're stash datas in buffer\n // dispatch the whole stashBuffer, and stash remain data\n // then append chunk to stashBuffer (stash)\n var buffer = this._stashBuffer.slice(0, this._stashUsed);\n\n var _consumed2 = this._dispatchChunks(buffer, this._stashByteStart);\n\n if (_consumed2 < buffer.byteLength) {\n if (_consumed2 > 0) {\n var _remainArray = new Uint8Array(buffer, _consumed2);\n\n _stashArray3.set(_remainArray, 0);\n\n this._stashUsed = _remainArray.byteLength;\n this._stashByteStart += _consumed2;\n }\n } else {\n this._stashUsed = 0;\n this._stashByteStart += _consumed2;\n }\n\n if (this._stashUsed + chunk.byteLength > this._bufferSize) {\n this._expandBuffer(this._stashUsed + chunk.byteLength);\n\n _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n }\n\n _stashArray3.set(new Uint8Array(chunk), this._stashUsed);\n\n this._stashUsed += chunk.byteLength;\n } else {\n // stash buffer empty, but chunkSize > stashSize (oh, holy shit)\n // dispatch chunk directly and stash remain data\n var _consumed3 = this._dispatchChunks(chunk, byteStart);\n\n if (_consumed3 < chunk.byteLength) {\n var _remain = chunk.byteLength - _consumed3;\n\n if (_remain > this._bufferSize) {\n this._expandBuffer(_remain);\n\n _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n }\n\n _stashArray3.set(new Uint8Array(chunk, _consumed3), 0);\n\n this._stashUsed += _remain;\n this._stashByteStart = byteStart + _consumed3;\n }\n }\n }\n }\n };\n\n _proto._flushStashBuffer = function _flushStashBuffer(dropUnconsumed) {\n if (this._stashUsed > 0) {\n var buffer = this._stashBuffer.slice(0, this._stashUsed);\n\n var consumed = this._dispatchChunks(buffer, this._stashByteStart);\n\n var remain = buffer.byteLength - consumed;\n\n if (consumed < buffer.byteLength) {\n if (dropUnconsumed) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, remain + \" bytes unconsumed data remain when flush buffer, dropped\");\n } else {\n if (consumed > 0) {\n var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n var remainArray = new Uint8Array(buffer, consumed);\n stashArray.set(remainArray, 0);\n this._stashUsed = remainArray.byteLength;\n this._stashByteStart += consumed;\n }\n\n return 0;\n }\n }\n\n this._stashUsed = 0;\n this._stashByteStart = 0;\n return remain;\n }\n\n return 0;\n };\n\n _proto._onLoaderComplete = function _onLoaderComplete(from, to) {\n // Force-flush stash buffer, and drop unconsumed data\n this._flushStashBuffer(true);\n\n if (from == to && to == -1) {\n if (this._onComplete) {\n this._onComplete(-1);\n }\n\n return;\n }\n\n if (this._onComplete) {\n this._onComplete(this._extraData);\n }\n };\n\n _proto._onLoaderError = function _onLoaderError(type, data) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, \"Loader error, code = \" + data.code + \", msg = \" + data.msg);\n\n this._flushStashBuffer(false);\n\n if (this._isEarlyEofReconnecting) {\n // Auto-reconnect for EarlyEof failed, throw UnrecoverableEarlyEof error to upper-layer\n this._isEarlyEofReconnecting = false;\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].UNRECOVERABLE_EARLY_EOF;\n }\n\n switch (type) {\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EARLY_EOF:\n {\n if (!this._config.isLive) {\n // Do internal http reconnect if not live stream\n if (this._totalLength) {\n var nextFrom = this._currentRange.to + 1;\n\n if (nextFrom < this._totalLength) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Connection lost, trying reconnect...');\n this._isEarlyEofReconnecting = true;\n\n this._internalSeek(nextFrom, false);\n }\n\n return;\n } // else: We don't know totalLength, throw UnrecoverableEarlyEof\n\n } // live stream: throw UnrecoverableEarlyEof error to upper-layer\n\n\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].UNRECOVERABLE_EARLY_EOF;\n break;\n }\n\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].UNRECOVERABLE_EARLY_EOF:\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].CONNECTING_TIMEOUT:\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID:\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EXCEPTION:\n break;\n }\n\n if (this._onError) {\n this._onError(type, data);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_11__[\"RuntimeException\"]('IOException: ' + data.msg);\n }\n };\n\n _createClass(IOController, [{\n key: \"status\",\n get: function get() {\n return this._loader.status;\n }\n }, {\n key: \"extraData\",\n get: function get() {\n return this._extraData;\n },\n set: function set(data) {\n this._extraData = data;\n } // prototype: function onDataArrival(chunks: ArrayBuffer, byteStart: number): number\n\n }, {\n key: \"onDataArrival\",\n get: function get() {\n return this._onDataArrival;\n },\n set: function set(callback) {\n this._onDataArrival = callback;\n }\n }, {\n key: \"onSeeked\",\n get: function get() {\n return this._onSeeked;\n },\n set: function set(callback) {\n this._onSeeked = callback;\n } // prototype: function onError(type: number, info: {code: number, msg: string}): void\n\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n }\n }, {\n key: \"onComplete\",\n get: function get() {\n return this._onComplete;\n },\n set: function set(callback) {\n this._onComplete = callback;\n }\n }, {\n key: \"onRedirect\",\n get: function get() {\n return this._onRedirect;\n },\n set: function set(callback) {\n this._onRedirect = callback;\n }\n }, {\n key: \"onRecoveredEarlyEof\",\n get: function get() {\n return this._onRecoveredEarlyEof;\n },\n set: function set(callback) {\n this._onRecoveredEarlyEof = callback;\n }\n }, {\n key: \"currentURL\",\n get: function get() {\n return this._dataSource.url;\n }\n }, {\n key: \"hasRedirect\",\n get: function get() {\n return this._redirectedURL != null || this._dataSource.redirectedURL != undefined;\n }\n }, {\n key: \"currentRedirectedURL\",\n get: function get() {\n return this._redirectedURL || this._dataSource.redirectedURL;\n } // in KB/s\n\n }, {\n key: \"currentSpeed\",\n get: function get() {\n if (this._loaderClass === _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]) {\n // SpeedSampler is inaccuracy if loader is RangeLoader\n return this._loader.currentSpeed;\n }\n\n return this._speedSampler.lastSecondKBps;\n }\n }, {\n key: \"averageKBps\",\n get: function get() {\n return this._speedSampler.averageKBps;\n }\n }, {\n key: \"loaderType\",\n get: function get() {\n return this._loader.type;\n }\n }]);\n\n return IOController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (IOController);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/io-controller.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/loader.js":
|
||
/*!*******************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/loader.js ***!
|
||
\*******************************************/
|
||
/*! exports provided: LoaderStatus, LoaderErrors, BaseLoader */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoaderStatus\", function() { return LoaderStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoaderErrors\", function() { return LoaderErrors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseLoader\", function() { return BaseLoader; });\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar LoaderStatus = {\n kIdle: 0,\n kConnecting: 1,\n kBuffering: 2,\n kError: 3,\n kComplete: 4\n};\nvar LoaderErrors = {\n OK: 'OK',\n EXCEPTION: 'Exception',\n HTTP_STATUS_CODE_INVALID: 'HttpStatusCodeInvalid',\n CONNECTING_TIMEOUT: 'ConnectingTimeout',\n EARLY_EOF: 'EarlyEof',\n UNRECOVERABLE_EARLY_EOF: 'UnrecoverableEarlyEof'\n};\n/* Loader has callbacks which have following prototypes:\r\n * function onContentLengthKnown(contentLength: number): void\r\n * function onURLRedirect(url: string): void\r\n * function onDataArrival(chunk: ArrayBuffer, byteStart: number, receivedLength: number): void\r\n * function onError(errorType: number, errorInfo: {code: number, msg: string}): void\r\n * function onComplete(rangeFrom: number, rangeTo: number): void\r\n */\n\nvar BaseLoader = /*#__PURE__*/function () {\n function BaseLoader(typeName) {\n this._type = typeName || 'undefined';\n this._status = LoaderStatus.kIdle;\n this._needStash = false; // callbacks\n\n this._onContentLengthKnown = null;\n this._onURLRedirect = null;\n this._onDataArrival = null;\n this._onError = null;\n this._onComplete = null;\n }\n\n var _proto = BaseLoader.prototype;\n\n _proto.destroy = function destroy() {\n this._status = LoaderStatus.kIdle;\n this._onContentLengthKnown = null;\n this._onURLRedirect = null;\n this._onDataArrival = null;\n this._onError = null;\n this._onComplete = null;\n };\n\n _proto.isWorking = function isWorking() {\n return this._status === LoaderStatus.kConnecting || this._status === LoaderStatus.kBuffering;\n };\n\n // pure virtual\n _proto.open = function open(dataSource, range) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__[\"NotImplementedException\"]('Unimplemented abstract function!');\n };\n\n _proto.abort = function abort() {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__[\"NotImplementedException\"]('Unimplemented abstract function!');\n };\n\n _createClass(BaseLoader, [{\n key: \"type\",\n get: function get() {\n return this._type;\n }\n }, {\n key: \"status\",\n get: function get() {\n return this._status;\n }\n }, {\n key: \"needStashBuffer\",\n get: function get() {\n return this._needStash;\n }\n }, {\n key: \"onContentLengthKnown\",\n get: function get() {\n return this._onContentLengthKnown;\n },\n set: function set(callback) {\n this._onContentLengthKnown = callback;\n }\n }, {\n key: \"onURLRedirect\",\n get: function get() {\n return this._onURLRedirect;\n },\n set: function set(callback) {\n this._onURLRedirect = callback;\n }\n }, {\n key: \"onDataArrival\",\n get: function get() {\n return this._onDataArrival;\n },\n set: function set(callback) {\n this._onDataArrival = callback;\n }\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n }\n }, {\n key: \"onComplete\",\n get: function get() {\n return this._onComplete;\n },\n set: function set(callback) {\n this._onComplete = callback;\n }\n }]);\n\n return BaseLoader;\n}();\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/loader.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/m3u8-loader.js":
|
||
/*!************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/m3u8-loader.js ***!
|
||
\************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! webworkify-webpack */ \"./node_modules/_webworkify-webpack@2.1.5@webworkify-webpack/index.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_4__);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\nvar M3U8Loader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(M3U8Loader, _BaseLoader);\n\n M3U8Loader.isSupported = function isSupported() {\n return true;\n };\n\n function M3U8Loader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'm3u8-loader') || this;\n _this.TAG = 'M3U8Loader';\n _this._needStash = true;\n _this.url = \"\";\n _this.startPlayTime = 0;\n _this._requestAbort = false;\n _this._receivedLength = 0;\n _this._callbackFunc = config.callbackFunc;\n _this.getNextFileFlag = true;\n _this.pauseDisplay = false;\n _this.totalDuration = 0;\n _this.seeking = false;\n return _this;\n }\n\n var _proto = M3U8Loader.prototype;\n\n _proto.destroy = function destroy() {\n this.abort();\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.GetM3u8TotalDuration = function GetM3u8TotalDuration() {\n return this.totalDuration;\n };\n\n _proto.createDownloadWorker = function createDownloadWorker() {\n if (this.downloadWorker) return;\n\n if (typeof Worker !== 'undefined') {\n var w;\n\n try {\n w = this.downloadWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_4__(/*require.resolve*/(/*! ../../downloadWorker.js */ \"./src/FlvPlayer/downloadWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tOpenStream\"],\n url: this.url,\n time: this.startPlayTime\n };\n w.postMessage(objData); //, [objData.canvas]);\n\n w.addEventListener('message', this.onwmsg);\n\n w.onerror = function (event) {// console.log(event);\n };\n } catch (err) {\n console.log(\"Create download Worker fail: \" + err);\n\n if (w) {// revoke the Object URL that was used to create demuxer worker, so as not to leak it\n //global.URL.revokeObjectURL(w.objectURL);\n }\n\n this.downloadWorker = undefined;\n }\n } else {\n console.log(\"Unsupport worker...\");\n }\n };\n\n _proto.setStartPlaySecs = function setStartPlaySecs(secs) {\n this.startPlayTime = secs;\n };\n\n _proto.open = function open(dataSource) {\n try {\n this.url = dataSource.url; //this.startPlayTime = dataSource.startPlaySecs;\n\n this.createDownloadWorker();\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n } catch (e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto.abort = function abort() {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tCloseStream\"]\n };\n\n if (this.downloadWorker && this.downloadWorker !== undefined) {\n this.downloadWorker.postMessage(objData);\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._onWebSocketOpen = function _onWebSocketOpen(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n };\n\n _proto._onWebSocketClose = function _onWebSocketClose(e) {\n if (this._requestAbort === true) {\n this._requestAbort = false;\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n this._onComplete(0, this._receivedLength - 1);\n }\n };\n\n _proto.seek = function seek(seekValue, seekType) {\n this.pauseDisplay = false;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tSeekStream\"],\n type: seekType,\n time: seekValue\n };\n\n if (this.downloadWorker && this.downloadWorker !== undefined) {\n this.downloadWorker.postMessage(objData);\n this.seeking = true; //console.log(\"seeking...\");\n } else {}\n };\n\n _proto.pause = function pause() {\n this.pauseDisplay = true;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tPauseStream\"]\n };\n\n if (this.downloadWorker && this.downloadWorker !== undefined) {\n this.downloadWorker.postMessage(objData);\n }\n };\n\n _proto.resume = function resume() {\n this.pauseDisplay = false;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tResumeStream\"]\n };\n\n if (this.downloadWorker && this.downloadWorker !== undefined) {\n this.downloadWorker.postMessage(objData);\n }\n };\n\n _proto.onWorkerMessage = function onWorkerMessage(ev) {\n var data = ev.data; // console.log(\"FlvPlayer::MainThread: recv data.\", data);\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tOpenStream\"]:\n //case common.tGetTsStreamRsp:\n {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsStream\"],\n t: 0\n };\n this.downloadWorker.postMessage(objData);\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsStreamRsp\"]:\n //<2F><>һ<EFBFBD><D2BB>ts<74>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>ᴫ<EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>Ϣ\n this.getNextFileFlag = true;\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsComplete\"]:\n this.playComplete = true; //<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD>\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tDisconnect\"]:\n {\n console.log(\"disconnect..\");\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tReOpenStream\"]\n };\n this.downloadWorker.postMessage(objData);\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tCloseStream\"]:\n if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"DOWNLOAD_WORKER_ID\"]) {\n this.downloadWorker.terminate();\n this.downloadWorker = null; //console.log(\"download worker terminate\");\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"DECODE_WORKER_ID\"]) {\n this.decodeWorker.terminate();\n this.decodeWorker = null; //console.log(\"Decode worker terminate.\");\n\n if (this.soundPlayer) {\n this.soundPlayer.destroy();\n delete this.soundPlayer;\n this.soundPlayer = null;\n }\n\n if (this.webGLPlayer) {\n this.webGLPlayer.renderVideoFrame(null, 0, 0);\n }\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"RENDER_WORKER_ID\"]) {\n this.renderWorker.terminate();\n this.renderWorker = null; //console.log(\"Render worker terminate.\");\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tFrameData\"]:\n if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"DOWNLOAD_WORKER_ID\"]) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HLS, <20><><EFBFBD>Դ˴<D4B4><CBB4><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ڻ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD>, <20>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB>洦<EFBFBD><E6B4A6>\n //console.log(\"ts frame...\");\n var chunk = data.dat;\n var byteStart = this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n } //console.log(\"Get Next ts file...\");\n\n /*\r\n if (!this.pauseDisplay) {\r\n \tif (this.getNextFileFlag) {\r\n \t\t\t\tvar objData = {\r\n \t\t\tcmd: common.tGetTsStream\r\n \t\t};\r\n \t\t\t\tthis.downloadWorker.postMessage(objData);\r\n \t\tthis.getNextFileFlag = false;\r\n \t}\r\n }\r\n */\n\n\n break;\n\n if (this.decodeWorker) {\n console.log(\"send to decode worker...\");\n\n if (this.lastPTS > 0) {\n var n = (data.pts - this.lastPTS) / 90;\n\n if (n != this.intervalMs) {\n this.intervalMs = n;\n\n if (n >= 2) {\n n *= 0.9;\n }\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tVidInterval\"],\n interval: n\n };\n this.decodeWorker.postMessage(objData);\n }\n }\n\n this.lastPTS = data.pts; //var bufdata = new Uint8Array(data.dat);\n //var objData = {\n //\tcmd: common.tFrameData,\n //\tmediaType: data.mediaType,\n //\tcodecId: data.codecId,\n //\tplayTimeSec: data.playTimeSec,\n //\tsamplerate: data.samplerate,\n //\tchannelNum: data.channelNum,\n //\tbitPerSample: data.bitPerSample,\n //\tdat: bufdata\n //};\n //this.decodeWorker.postMessage(objData, [objData.dat.buffer]);\n\n this.decodeWorker.postMessage(data);\n }\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"DECODE_WORKER_ID\"]) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ͣ, <20><><EFBFBD><EFBFBD>ʾ\n if (this.pauseDisplay) break; //<2F><><EFBFBD><EFBFBD><EFBFBD>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ\n\n if (data.mediaType == 1) {\n //VIDEO\n this.canvas.width = data.width;\n this.canvas.height = data.height;\n this.webGLPlayer.renderVideoFrame(data.dat, data.width, data.height);\n this.OnUpdatePlayInfo(data.playTimeSec, data.frameNum);\n } else if (data.mediaType == 2) {\n //AUDIO\n if (this.soundPlayer == null) {\n this.OpenAudioPlayer(data.fmt, data.ch, data.samplerate);\n }\n\n if (this.soundPlayer != null) {\n this.soundPlayer.play(data.dat);\n }\n }\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tMediaInfo\"]:\n this.totalDuration = data.duration;\n _common_common__WEBPACK_IMPORTED_MODULE_3__[\"setLiveStreamType\"](data.live);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsStream\"]:\n if (!this.pauseDisplay) {\n if (this.getNextFileFlag) {\n this.downloadWorker.postMessage(data);\n this.getNextFileFlag = false;\n }\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tSeekStream\"]:\n this.seeking = false; //console.log(\"seek ok.\");\n //data.type\n\n break;\n\n case 410:\n this._callbackFunc(data);\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tResetMSE\"]:\n //data.fileSequence;\n if (this._onDataArrival) {\n this._receivedLength = 0;\n\n this._onDataArrival(null, data.fileSequence, 0);\n }\n\n break;\n\n default:\n break;\n }\n };\n\n _proto._dispatchArrayBuffer = function _dispatchArrayBuffer(arraybuffer) {\n var chunk = arraybuffer;\n var byteStart = this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n }\n };\n\n _proto._onWebSocketError = function _onWebSocketError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return M3U8Loader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (M3U8Loader);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/m3u8-loader.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/param-seek-handler.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/param-seek-handler.js ***!
|
||
\*******************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar ParamSeekHandler = /*#__PURE__*/function () {\n function ParamSeekHandler(paramStart, paramEnd) {\n this._startName = paramStart;\n this._endName = paramEnd;\n }\n\n var _proto = ParamSeekHandler.prototype;\n\n _proto.getConfig = function getConfig(baseUrl, range) {\n var url = baseUrl;\n\n if (range.from !== 0 || range.to !== -1) {\n var needAnd = true;\n\n if (url.indexOf('?') === -1) {\n url += '?';\n needAnd = false;\n }\n\n if (needAnd) {\n url += '&';\n }\n\n url += this._startName + \"=\" + range.from.toString();\n\n if (range.to !== -1) {\n url += \"&\" + this._endName + \"=\" + range.to.toString();\n }\n }\n\n return {\n url: url,\n headers: {}\n };\n };\n\n _proto.removeURLParameters = function removeURLParameters(seekedURL) {\n var baseURL = seekedURL.split('?')[0];\n var params = undefined;\n var queryIndex = seekedURL.indexOf('?');\n\n if (queryIndex !== -1) {\n params = seekedURL.substring(queryIndex + 1);\n }\n\n var resultParams = '';\n\n if (params != undefined && params.length > 0) {\n var pairs = params.split('&');\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i].split('=');\n var requireAnd = i > 0;\n\n if (pair[0] !== this._startName && pair[0] !== this._endName) {\n if (requireAnd) {\n resultParams += '&';\n }\n\n resultParams += pairs[i];\n }\n }\n }\n\n return resultParams.length === 0 ? baseURL : baseURL + '?' + resultParams;\n };\n\n return ParamSeekHandler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ParamSeekHandler);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/param-seek-handler.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/range-seek-handler.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/range-seek-handler.js ***!
|
||
\*******************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar RangeSeekHandler = /*#__PURE__*/function () {\n function RangeSeekHandler(zeroStart) {\n this._zeroStart = zeroStart || false;\n }\n\n var _proto = RangeSeekHandler.prototype;\n\n _proto.getConfig = function getConfig(url, range) {\n var headers = {};\n\n if (range.from !== 0 || range.to !== -1) {\n var param;\n\n if (range.to !== -1) {\n param = \"bytes=\" + range.from.toString() + \"-\" + range.to.toString();\n } else {\n param = \"bytes=\" + range.from.toString() + \"-\";\n }\n\n headers['Range'] = param;\n } else if (this._zeroStart) {\n headers['Range'] = 'bytes=0-';\n }\n\n return {\n url: url,\n headers: headers\n };\n };\n\n _proto.removeURLParameters = function removeURLParameters(seekedURL) {\n return seekedURL;\n };\n\n return RangeSeekHandler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RangeSeekHandler);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/range-seek-handler.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/speed-sampler.js":
|
||
/*!**************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/speed-sampler.js ***!
|
||
\**************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n// Utility class to calculate realtime network I/O speed\nvar SpeedSampler = /*#__PURE__*/function () {\n function SpeedSampler() {\n // milliseconds\n this._firstCheckpoint = 0;\n this._lastCheckpoint = 0;\n this._intervalBytes = 0;\n this._totalBytes = 0;\n this._lastSecondBytes = 0; // compatibility detection\n\n if (self.performance && self.performance.now) {\n this._now = self.performance.now.bind(self.performance);\n } else {\n this._now = Date.now;\n }\n }\n\n var _proto = SpeedSampler.prototype;\n\n _proto.reset = function reset() {\n this._firstCheckpoint = this._lastCheckpoint = 0;\n this._totalBytes = this._intervalBytes = 0;\n this._lastSecondBytes = 0;\n };\n\n _proto.addBytes = function addBytes(bytes) {\n if (this._firstCheckpoint === 0) {\n this._firstCheckpoint = this._now();\n this._lastCheckpoint = this._firstCheckpoint;\n this._intervalBytes += bytes;\n this._totalBytes += bytes;\n } else if (this._now() - this._lastCheckpoint < 1000) {\n this._intervalBytes += bytes;\n this._totalBytes += bytes;\n } else {\n // duration >= 1000\n this._lastSecondBytes = this._intervalBytes;\n this._intervalBytes = bytes;\n this._totalBytes += bytes;\n this._lastCheckpoint = this._now();\n }\n };\n\n _createClass(SpeedSampler, [{\n key: \"currentKBps\",\n get: function get() {\n this.addBytes(0);\n var durationSeconds = (this._now() - this._lastCheckpoint) / 1000;\n if (durationSeconds == 0) durationSeconds = 1;\n return this._intervalBytes / durationSeconds / 1024;\n }\n }, {\n key: \"lastSecondKBps\",\n get: function get() {\n this.addBytes(0);\n\n if (this._lastSecondBytes !== 0) {\n return this._lastSecondBytes / 1024;\n } else {\n // lastSecondBytes === 0\n if (this._now() - this._lastCheckpoint >= 500) {\n // if time interval since last checkpoint has exceeded 500ms\n // the speed is nearly accurate\n return this.currentKBps;\n } else {\n // We don't know\n return 0;\n }\n }\n }\n }, {\n key: \"averageKBps\",\n get: function get() {\n var durationSeconds = (this._now() - this._firstCheckpoint) / 1000;\n return this._totalBytes / durationSeconds / 1024;\n }\n }]);\n\n return SpeedSampler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SpeedSampler);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/speed-sampler.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/websocket-loader.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/websocket-loader.js ***!
|
||
\*****************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n // For FLV over WebSocket live stream\n\nvar WebSocketLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(WebSocketLoader, _BaseLoader);\n\n WebSocketLoader.isSupported = function isSupported() {\n try {\n return typeof self.WebSocket !== 'undefined';\n } catch (e) {\n return false;\n }\n };\n\n function WebSocketLoader(dataSource, config) {\n var _this2;\n\n _this2 = _BaseLoader.call(this, 'websocket-loader') || this;\n _this2.TAG = 'WebSocketLoader';\n _this2._needStash = true;\n _this2._ws = null;\n _this2._requestAbort = false;\n _this2._callbackFunc = config.callbackFunc;\n _this2._receivedLength = 0;\n _this2._retryConnectTimes = 0;\n _this2._triggerReconnectingNotify = true;\n _this2._triggerReconnectSuccessNotify = true;\n return _this2;\n }\n\n var _proto = WebSocketLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this._ws) {\n this.abort();\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.open = function open(dataSource) {\n try {\n this._retryConnectTimes++; //֪ͨ<CDA8>ϲ<EFBFBD>, <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1Ϊ<31><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>еķ<D0B5><C4B7><EFBFBD>_onDataArrival\n\n if (this._triggerReconnectingNotify) {\n this._triggerReconnectingNotify = false;\n\n if (this._onDataArrival) {\n this._onDataArrival(null, -this._retryConnectTimes, 0);\n }\n }\n\n this._triggerReconnectSuccessNotify = true;\n var ws = this._ws = new self.WebSocket(dataSource.url);\n ws.binaryType = 'arraybuffer';\n ws.onopen = this._onWebSocketOpen.bind(this);\n ws.onclose = this._onWebSocketClose.bind(this);\n ws.onmessage = this._onWebSocketMessage.bind(this);\n ws.onerror = this._onWebSocketError.bind(this);\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n } catch (e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto.abort = function abort() {\n var ws = this._ws;\n\n if (ws && (ws.readyState === 0 || ws.readyState === 1)) {\n // CONNECTING || OPEN\n this._requestAbort = true;\n ws.close();\n }\n\n this._ws = null;\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._onWebSocketOpen = function _onWebSocketOpen(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n };\n\n _proto._onWebSocketClose = function _onWebSocketClose(e) {\n if (this._requestAbort === true) {\n this._requestAbort = false;\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n //this._onComplete(0, this._receivedLength - 1);\n this._onComplete(-1, -1); //this._receivedLength - 1);\n\n }\n };\n\n _proto._ab2str = function _ab2str(u, f) {\n var b = new Blob([u]);\n var r = new FileReader();\n r.readAsText(b, 'utf-8');\n\n r.onload = function () {\n if (f) f.call(null, r.result);\n };\n };\n\n _proto._onWebSocketMessage = function _onWebSocketMessage(e) {\n var _this3 = this;\n\n var _this = this;\n\n this._ab2str(e.data, function (str) {\n if (str === 'Unauthorized') {\n _this._callbackFunc({\n code: 410,\n msg: 'Unauthorized'\n });\n }\n });\n\n if (e.data instanceof ArrayBuffer) {\n this._dispatchArrayBuffer(e.data);\n } else if (e.data instanceof Blob) {\n var reader = new FileReader();\n\n reader.onload = function () {\n _this3._dispatchArrayBuffer(reader.result);\n };\n\n reader.readAsArrayBuffer(e.data);\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: -1,\n msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto._dispatchArrayBuffer = function _dispatchArrayBuffer(arraybuffer) {\n var chunk = arraybuffer;\n var byteStart = this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n } //֪ͨ<CDA8>ϲ<EFBFBD>, <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1Ϊ<31><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>еķ<D0B5><C4B7><EFBFBD>_onDataArrival\n\n\n if (this._triggerReconnectSuccessNotify) {\n this._triggerReconnectSuccessNotify = false;\n\n if (this._onDataArrival) {\n //console.log(\"fetch-stream-loader.js::Connected:\" + this._retryConnectTimes);\n this._onDataArrival(null, this._retryConnectTimes, 0);\n\n this._retryConnectTimes++;\n }\n }\n };\n\n _proto._onWebSocketError = function _onWebSocketError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return WebSocketLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebSocketLoader);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/websocket-loader.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/xhr-moz-chunked-loader.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/xhr-moz-chunked-loader.js ***!
|
||
\***********************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n // For FireFox browser which supports `xhr.responseType = 'moz-chunked-arraybuffer'`\n\nvar MozChunkedLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(MozChunkedLoader, _BaseLoader);\n\n MozChunkedLoader.isSupported = function isSupported() {\n try {\n var xhr = new XMLHttpRequest(); // Firefox 37- requires .open() to be called before setting responseType\n\n xhr.open('GET', 'https://example.com', true);\n xhr.responseType = 'moz-chunked-arraybuffer';\n return xhr.responseType === 'moz-chunked-arraybuffer';\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w('MozChunkedLoader', e.message);\n return false;\n }\n };\n\n function MozChunkedLoader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'xhr-moz-chunked-loader') || this;\n _this.TAG = 'MozChunkedLoader';\n _this._seekHandler = seekHandler;\n _this._config = config;\n _this._needStash = true;\n _this._xhr = null;\n _this._requestAbort = false;\n _this._contentLength = null;\n _this._receivedLength = 0;\n return _this;\n }\n\n var _proto = MozChunkedLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.isWorking()) {\n this.abort();\n }\n\n if (this._xhr) {\n this._xhr.onreadystatechange = null;\n this._xhr.onprogress = null;\n this._xhr.onloadend = null;\n this._xhr.onerror = null;\n this._xhr = null;\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.open = function open(dataSource, range) {\n this._dataSource = dataSource;\n this._range = range;\n var sourceURL = dataSource.url;\n\n if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {\n sourceURL = dataSource.redirectedURL;\n }\n\n var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n\n this._requestURL = seekConfig.url;\n var xhr = this._xhr = new XMLHttpRequest();\n xhr.open('GET', seekConfig.url, true);\n xhr.responseType = 'moz-chunked-arraybuffer';\n xhr.onreadystatechange = this._onReadyStateChange.bind(this);\n xhr.onprogress = this._onProgress.bind(this);\n xhr.onloadend = this._onLoadEnd.bind(this);\n xhr.onerror = this._onXhrError.bind(this); // cors is auto detected and enabled by xhr\n // withCredentials is disabled by default\n\n if (dataSource.withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (typeof seekConfig.headers === 'object') {\n var headers = seekConfig.headers;\n\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } // add additional headers\n\n\n if (typeof this._config.headers === 'object') {\n var _headers = this._config.headers;\n\n for (var _key in _headers) {\n if (_headers.hasOwnProperty(_key)) {\n xhr.setRequestHeader(_key, _headers[_key]);\n }\n }\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n xhr.send();\n };\n\n _proto.abort = function abort() {\n this._requestAbort = true;\n\n if (this._xhr) {\n this._xhr.abort();\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._onReadyStateChange = function _onReadyStateChange(e) {\n var xhr = e.target;\n\n if (xhr.readyState === 2) {\n // HEADERS_RECEIVED\n if (xhr.responseURL != undefined && xhr.responseURL !== this._requestURL) {\n if (this._onURLRedirect) {\n var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);\n\n this._onURLRedirect(redirectedURL);\n }\n }\n\n if (xhr.status !== 0 && (xhr.status < 200 || xhr.status > 299)) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID, {\n code: xhr.status,\n msg: xhr.statusText\n });\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"]('MozChunkedLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);\n }\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n }\n }\n };\n\n _proto._onProgress = function _onProgress(e) {\n if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError) {\n // Ignore error response\n return;\n }\n\n if (this._contentLength === null) {\n if (e.total !== null && e.total !== 0) {\n this._contentLength = e.total;\n\n if (this._onContentLengthKnown) {\n this._onContentLengthKnown(this._contentLength);\n }\n }\n }\n\n var chunk = e.target.response;\n var byteStart = this._range.from + this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n }\n };\n\n _proto._onLoadEnd = function _onLoadEnd(e) {\n if (this._requestAbort === true) {\n this._requestAbort = false;\n return;\n } else if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError) {\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);\n }\n };\n\n _proto._onXhrError = function _onXhrError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var type = 0;\n var info = null;\n\n if (this._contentLength && e.loaded < this._contentLength) {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: -1,\n msg: 'Moz-Chunked stream meet Early-Eof'\n };\n } else {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION;\n info = {\n code: -1,\n msg: e.constructor.name + ' ' + e.type\n };\n }\n\n if (this._onError) {\n this._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return MozChunkedLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MozChunkedLoader);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/xhr-moz-chunked-loader.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/xhr-msstream-loader.js":
|
||
/*!********************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/xhr-msstream-loader.js ***!
|
||
\********************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n/* Notice: ms-stream may cause IE/Edge browser crash if seek too frequently!!!\r\n * The browser may crash in wininet.dll. Disable for now.\r\n *\r\n * For IE11/Edge browser by microsoft which supports `xhr.responseType = 'ms-stream'`\r\n * Notice that ms-stream API sucks. The buffer is always expanding along with downloading.\r\n *\r\n * We need to abort the xhr if buffer size exceeded limit size (e.g. 16 MiB), then do reconnect.\r\n * in order to release previous ArrayBuffer to avoid memory leak\r\n *\r\n * Otherwise, the ArrayBuffer will increase to a terrible size that equals final file size.\r\n */\n\nvar MSStreamLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(MSStreamLoader, _BaseLoader);\n\n MSStreamLoader.isSupported = function isSupported() {\n try {\n if (typeof self.MSStream === 'undefined' || typeof self.MSStreamReader === 'undefined') {\n return false;\n }\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', 'https://example.com', true);\n xhr.responseType = 'ms-stream';\n return xhr.responseType === 'ms-stream';\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w('MSStreamLoader', e.message);\n return false;\n }\n };\n\n function MSStreamLoader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'xhr-msstream-loader') || this;\n _this.TAG = 'MSStreamLoader';\n _this._seekHandler = seekHandler;\n _this._config = config;\n _this._needStash = true;\n _this._xhr = null;\n _this._reader = null; // MSStreamReader\n\n _this._totalRange = null;\n _this._currentRange = null;\n _this._currentRequestURL = null;\n _this._currentRedirectedURL = null;\n _this._contentLength = null;\n _this._receivedLength = 0;\n _this._bufferLimit = 16 * 1024 * 1024; // 16MB\n\n _this._lastTimeBufferSize = 0;\n _this._isReconnecting = false;\n return _this;\n }\n\n var _proto = MSStreamLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.isWorking()) {\n this.abort();\n }\n\n if (this._reader) {\n this._reader.onprogress = null;\n this._reader.onload = null;\n this._reader.onerror = null;\n this._reader = null;\n }\n\n if (this._xhr) {\n this._xhr.onreadystatechange = null;\n this._xhr = null;\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.open = function open(dataSource, range) {\n this._internalOpen(dataSource, range, false);\n };\n\n _proto._internalOpen = function _internalOpen(dataSource, range, isSubrange) {\n this._dataSource = dataSource;\n\n if (!isSubrange) {\n this._totalRange = range;\n } else {\n this._currentRange = range;\n }\n\n var sourceURL = dataSource.url;\n\n if (this._config.reuseRedirectedURL) {\n if (this._currentRedirectedURL != undefined) {\n sourceURL = this._currentRedirectedURL;\n } else if (dataSource.redirectedURL != undefined) {\n sourceURL = dataSource.redirectedURL;\n }\n }\n\n var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n\n this._currentRequestURL = seekConfig.url;\n var reader = this._reader = new self.MSStreamReader();\n reader.onprogress = this._msrOnProgress.bind(this);\n reader.onload = this._msrOnLoad.bind(this);\n reader.onerror = this._msrOnError.bind(this);\n var xhr = this._xhr = new XMLHttpRequest();\n xhr.open('GET', seekConfig.url, true);\n xhr.responseType = 'ms-stream';\n xhr.onreadystatechange = this._xhrOnReadyStateChange.bind(this);\n xhr.onerror = this._xhrOnError.bind(this);\n\n if (dataSource.withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (typeof seekConfig.headers === 'object') {\n var headers = seekConfig.headers;\n\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } // add additional headers\n\n\n if (typeof this._config.headers === 'object') {\n var _headers = this._config.headers;\n\n for (var _key in _headers) {\n if (_headers.hasOwnProperty(_key)) {\n xhr.setRequestHeader(_key, _headers[_key]);\n }\n }\n }\n\n if (this._isReconnecting) {\n this._isReconnecting = false;\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n }\n\n xhr.send();\n };\n\n _proto.abort = function abort() {\n this._internalAbort();\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._internalAbort = function _internalAbort() {\n if (this._reader) {\n if (this._reader.readyState === 1) {\n // LOADING\n this._reader.abort();\n }\n\n this._reader.onprogress = null;\n this._reader.onload = null;\n this._reader.onerror = null;\n this._reader = null;\n }\n\n if (this._xhr) {\n this._xhr.abort();\n\n this._xhr.onreadystatechange = null;\n this._xhr = null;\n }\n };\n\n _proto._xhrOnReadyStateChange = function _xhrOnReadyStateChange(e) {\n var xhr = e.target;\n\n if (xhr.readyState === 2) {\n // HEADERS_RECEIVED\n if (xhr.status >= 200 && xhr.status <= 299) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n\n if (xhr.responseURL != undefined) {\n var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);\n\n if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {\n this._currentRedirectedURL = redirectedURL;\n\n if (this._onURLRedirect) {\n this._onURLRedirect(redirectedURL);\n }\n }\n }\n\n var lengthHeader = xhr.getResponseHeader('Content-Length');\n\n if (lengthHeader != null && this._contentLength == null) {\n var length = parseInt(lengthHeader);\n\n if (length > 0) {\n this._contentLength = length;\n\n if (this._onContentLengthKnown) {\n this._onContentLengthKnown(this._contentLength);\n }\n }\n }\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID, {\n code: xhr.status,\n msg: xhr.statusText\n });\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"]('MSStreamLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);\n }\n }\n } else if (xhr.readyState === 3) {\n // LOADING\n if (xhr.status >= 200 && xhr.status <= 299) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n var msstream = xhr.response;\n\n this._reader.readAsArrayBuffer(msstream);\n }\n }\n };\n\n _proto._xhrOnError = function _xhrOnError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION;\n var info = {\n code: -1,\n msg: e.constructor.name + ' ' + e.type\n };\n\n if (this._onError) {\n this._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n _proto._msrOnProgress = function _msrOnProgress(e) {\n var reader = e.target;\n var bigbuffer = reader.result;\n\n if (bigbuffer == null) {\n // result may be null, workaround for buggy M$\n this._doReconnectIfNeeded();\n\n return;\n }\n\n var slice = bigbuffer.slice(this._lastTimeBufferSize);\n this._lastTimeBufferSize = bigbuffer.byteLength;\n var byteStart = this._totalRange.from + this._receivedLength;\n this._receivedLength += slice.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(slice, byteStart, this._receivedLength);\n }\n\n if (bigbuffer.byteLength >= this._bufferLimit) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, \"MSStream buffer exceeded max size near \" + (byteStart + slice.byteLength) + \", reconnecting...\");\n\n this._doReconnectIfNeeded();\n }\n };\n\n _proto._doReconnectIfNeeded = function _doReconnectIfNeeded() {\n if (this._contentLength == null || this._receivedLength < this._contentLength) {\n this._isReconnecting = true;\n this._lastTimeBufferSize = 0;\n\n this._internalAbort();\n\n var range = {\n from: this._totalRange.from + this._receivedLength,\n to: -1\n };\n\n this._internalOpen(this._dataSource, range, true);\n }\n };\n\n _proto._msrOnLoad = function _msrOnLoad(e) {\n // actually it is onComplete event\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n this._onComplete(this._totalRange.from, this._totalRange.from + this._receivedLength - 1);\n }\n };\n\n _proto._msrOnError = function _msrOnError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var type = 0;\n var info = null;\n\n if (this._contentLength && this._receivedLength < this._contentLength) {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: -1,\n msg: 'MSStream meet Early-Eof'\n };\n } else {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: -1,\n msg: e.constructor.name + ' ' + e.type\n };\n }\n\n if (this._onError) {\n this._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return MSStreamLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MSStreamLoader);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/xhr-msstream-loader.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/io/xhr-range-loader.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/io/xhr-range-loader.js ***!
|
||
\*****************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./speed-sampler.js */ \"./src/FlvPlayer/flv.js/io/speed-sampler.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n // Universal IO Loader, implemented by adding Range header in xhr's request header\n\nvar RangeLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(RangeLoader, _BaseLoader);\n\n RangeLoader.isSupported = function isSupported() {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', 'https://example.com', true);\n xhr.responseType = 'arraybuffer';\n return xhr.responseType === 'arraybuffer';\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w('RangeLoader', e.message);\n return false;\n }\n };\n\n function RangeLoader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'xhr-range-loader') || this;\n _this.TAG = 'RangeLoader';\n _this._seekHandler = seekHandler;\n _this._config = config;\n _this._needStash = false;\n _this._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192];\n _this._currentChunkSizeKB = 384;\n _this._currentSpeedNormalized = 0;\n _this._zeroSpeedChunkCount = 0;\n _this._xhr = null;\n _this._speedSampler = new _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n _this._requestAbort = false;\n _this._waitForTotalLength = false;\n _this._totalLengthReceived = false;\n _this._currentRequestURL = null;\n _this._currentRedirectedURL = null;\n _this._currentRequestRange = null;\n _this._totalLength = null; // size of the entire file\n\n _this._contentLength = null; // Content-Length of entire request range\n\n _this._receivedLength = 0; // total received bytes\n\n _this._lastTimeLoaded = 0; // received bytes of current request sub-range\n\n return _this;\n }\n\n var _proto = RangeLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.isWorking()) {\n this.abort();\n }\n\n if (this._xhr) {\n this._xhr.onreadystatechange = null;\n this._xhr.onprogress = null;\n this._xhr.onload = null;\n this._xhr.onerror = null;\n this._xhr = null;\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.open = function open(dataSource, range) {\n this._dataSource = dataSource;\n this._range = range;\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kConnecting;\n var useRefTotalLength = false;\n\n if (this._dataSource.filesize != undefined && this._dataSource.filesize !== 0) {\n useRefTotalLength = true;\n this._totalLength = this._dataSource.filesize;\n }\n\n if (!this._totalLengthReceived && !useRefTotalLength) {\n // We need total filesize\n this._waitForTotalLength = true;\n\n this._internalOpen(this._dataSource, {\n from: 0,\n to: -1\n });\n } else {\n // We have filesize, start loading\n this._openSubRange();\n }\n };\n\n _proto._openSubRange = function _openSubRange() {\n var chunkSize = this._currentChunkSizeKB * 1024;\n var from = this._range.from + this._receivedLength;\n var to = from + chunkSize;\n\n if (this._contentLength != null) {\n if (to - this._range.from >= this._contentLength) {\n to = this._range.from + this._contentLength - 1;\n }\n }\n\n this._currentRequestRange = {\n from: from,\n to: to\n };\n\n this._internalOpen(this._dataSource, this._currentRequestRange);\n };\n\n _proto._internalOpen = function _internalOpen(dataSource, range) {\n this._lastTimeLoaded = 0;\n var sourceURL = dataSource.url;\n\n if (this._config.reuseRedirectedURL) {\n if (this._currentRedirectedURL != undefined) {\n sourceURL = this._currentRedirectedURL;\n } else if (dataSource.redirectedURL != undefined) {\n sourceURL = dataSource.redirectedURL;\n }\n }\n\n var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n\n this._currentRequestURL = seekConfig.url;\n var xhr = this._xhr = new XMLHttpRequest();\n xhr.open('GET', seekConfig.url, true);\n xhr.responseType = 'arraybuffer';\n xhr.onreadystatechange = this._onReadyStateChange.bind(this);\n xhr.onprogress = this._onProgress.bind(this);\n xhr.onload = this._onLoad.bind(this);\n xhr.onerror = this._onXhrError.bind(this);\n\n if (dataSource.withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (typeof seekConfig.headers === 'object') {\n var headers = seekConfig.headers;\n\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } // add additional headers\n\n\n if (typeof this._config.headers === 'object') {\n var _headers = this._config.headers;\n\n for (var _key in _headers) {\n if (_headers.hasOwnProperty(_key)) {\n xhr.setRequestHeader(_key, _headers[_key]);\n }\n }\n }\n\n xhr.send();\n };\n\n _proto.abort = function abort() {\n this._requestAbort = true;\n\n this._internalAbort();\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._internalAbort = function _internalAbort() {\n if (this._xhr) {\n this._xhr.onreadystatechange = null;\n this._xhr.onprogress = null;\n this._xhr.onload = null;\n this._xhr.onerror = null;\n\n this._xhr.abort();\n\n this._xhr = null;\n }\n };\n\n _proto._onReadyStateChange = function _onReadyStateChange(e) {\n var xhr = e.target;\n\n if (xhr.readyState === 2) {\n // HEADERS_RECEIVED\n if (xhr.responseURL != undefined) {\n // if the browser support this property\n var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);\n\n if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {\n this._currentRedirectedURL = redirectedURL;\n\n if (this._onURLRedirect) {\n this._onURLRedirect(redirectedURL);\n }\n }\n }\n\n if (xhr.status >= 200 && xhr.status <= 299) {\n if (this._waitForTotalLength) {\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kBuffering;\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID, {\n code: xhr.status,\n msg: xhr.statusText\n });\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"RuntimeException\"]('RangeLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);\n }\n }\n }\n };\n\n _proto._onProgress = function _onProgress(e) {\n if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError) {\n // Ignore error response\n return;\n }\n\n if (this._contentLength === null) {\n var openNextRange = false;\n\n if (this._waitForTotalLength) {\n this._waitForTotalLength = false;\n this._totalLengthReceived = true;\n openNextRange = true;\n var total = e.total;\n\n this._internalAbort();\n\n if (total != null & total !== 0) {\n this._totalLength = total;\n }\n } // calculate currrent request range's contentLength\n\n\n if (this._range.to === -1) {\n this._contentLength = this._totalLength - this._range.from;\n } else {\n // to !== -1\n this._contentLength = this._range.to - this._range.from + 1;\n }\n\n if (openNextRange) {\n this._openSubRange();\n\n return;\n }\n\n if (this._onContentLengthKnown) {\n this._onContentLengthKnown(this._contentLength);\n }\n }\n\n var delta = e.loaded - this._lastTimeLoaded;\n this._lastTimeLoaded = e.loaded;\n\n this._speedSampler.addBytes(delta);\n };\n\n _proto._normalizeSpeed = function _normalizeSpeed(input) {\n var list = this._chunkSizeKBList;\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n\n if (input < list[0]) {\n return list[0];\n }\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || input >= list[mid] && input < list[mid + 1]) {\n return list[mid];\n } else if (list[mid] < input) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n };\n\n _proto._onLoad = function _onLoad(e) {\n if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError) {\n // Ignore error response\n return;\n }\n\n if (this._waitForTotalLength) {\n this._waitForTotalLength = false;\n return;\n }\n\n this._lastTimeLoaded = 0;\n var KBps = this._speedSampler.lastSecondKBps;\n\n if (KBps === 0) {\n this._zeroSpeedChunkCount++;\n\n if (this._zeroSpeedChunkCount >= 3) {\n // Try get currentKBps after 3 chunks\n KBps = this._speedSampler.currentKBps;\n }\n }\n\n if (KBps !== 0) {\n var normalized = this._normalizeSpeed(KBps);\n\n if (this._currentSpeedNormalized !== normalized) {\n this._currentSpeedNormalized = normalized;\n this._currentChunkSizeKB = normalized;\n }\n }\n\n var chunk = e.target.response;\n var byteStart = this._range.from + this._receivedLength;\n this._receivedLength += chunk.byteLength;\n var reportComplete = false;\n\n if (this._contentLength != null && this._receivedLength < this._contentLength) {\n // continue load next chunk\n this._openSubRange();\n } else {\n reportComplete = true;\n } // dispatch received chunk\n\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n }\n\n if (reportComplete) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);\n }\n }\n };\n\n _proto._onXhrError = function _onXhrError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n var type = 0;\n var info = null;\n\n if (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength) {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: -1,\n msg: 'RangeLoader meet Early-Eof'\n };\n } else {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EXCEPTION;\n info = {\n code: -1,\n msg: e.constructor.name + ' ' + e.type\n };\n }\n\n if (this._onError) {\n this._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"RuntimeException\"](info.msg);\n }\n };\n\n _createClass(RangeLoader, [{\n key: \"currentSpeed\",\n get: function get() {\n return this._speedSampler.lastSecondKBps;\n }\n }]);\n\n return RangeLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_2__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RangeLoader);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/io/xhr-range-loader.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/player/flv-player.js":
|
||
/*!***************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/player/flv-player.js ***!
|
||
\***************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _player_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./player-events.js */ \"./src/FlvPlayer/flv.js/player/player-events.js\");\n/* harmony import */ var _core_transmuxer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/transmuxer.js */ \"./src/FlvPlayer/flv.js/core/transmuxer.js\");\n/* harmony import */ var _core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/* harmony import */ var _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/mse-controller.js */ \"./src/FlvPlayer/flv.js/core/mse-controller.js\");\n/* harmony import */ var _core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/mse-events.js */ \"./src/FlvPlayer/flv.js/core/mse-events.js\");\n/* harmony import */ var _player_errors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./player-errors.js */ \"./src/FlvPlayer/flv.js/player/player-errors.js\");\n/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../config.js */ \"./src/FlvPlayer/flv.js/config.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar FlvPlayer = /*#__PURE__*/function () {\n function FlvPlayer(mediaDataSource, config) {\n this.TAG = 'FlvPlayer';\n this._type = 'FlvPlayer';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._IsWasm = false;\n this.callbackFunc = null;\n this.callbackPlayTimeFunc = null;\n this.callbackConnectStatusFunc = null;\n this.callbackUserPtr = null;\n this.needCallPlay = false;\n this.waitingForData = false;\n this.playTally = 0;\n this._config = Object(_config_js__WEBPACK_IMPORTED_MODULE_9__[\"createDefaultConfig\"])();\n\n if (typeof config === 'object') {\n Object.assign(this._config, config);\n }\n\n if (config.decodeType === 'soft') {\n this._IsWasm = true;\n }\n\n if (mediaDataSource.type.toLowerCase() !== 'flv' && mediaDataSource.type.toLowerCase() !== 'm3u8') {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__[\"InvalidArgumentException\"]('FlvPlayer requires an flv MediaDataSource input!');\n }\n\n this.isFlv = true;\n\n if (mediaDataSource.type.toLowerCase() === 'm3u8') {\n this.isFlv = false;\n }\n\n if (mediaDataSource.isLive === true) {\n this._config.isLive = true;\n }\n\n this.e = {\n onvLoadedMetadata: this._onvLoadedMetadata.bind(this),\n onvSeeking: this._onvSeeking.bind(this),\n onvCanPlay: this._onvCanPlay.bind(this),\n onvStalled: this._onvStalled.bind(this),\n onvProgress: this._onvProgress.bind(this),\n onvWaiting: this._onvWaiting.bind(this),\n onvPlaying: this._onvPlaying.bind(this)\n };\n\n if (self.performance && self.performance.now) {\n this._now = self.performance.now.bind(self.performance);\n } else {\n this._now = Date.now;\n }\n\n this._pendingSeekTime = null; // in seconds\n\n this._requestSetTime = false;\n this._seekpointRecord = null;\n this._progressChecker = null;\n this._mediaDataSource = mediaDataSource;\n this._mediaCanvas = null;\n this._mediaElement = null;\n this._msectl = null;\n this._transmuxer = null;\n this._initFlag = false;\n this._msectlInitSegmentVideoParams = null;\n this._msectlInitSegmentAudioParams = null;\n this._msectlResetComplete = true;\n this._mseSourceOpened = false;\n this._hasPendingLoad = false;\n this._receivedCanPlay = false;\n this._mediaInfo = null;\n this._statisticsInfo = null;\n var chromeNeedIDRFix = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].chrome && (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].version.major < 50 || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].version.major === 50 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].version.build < 2661);\n this._alwaysSeekKeyframe = chromeNeedIDRFix || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].msedge || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].msie ? true : false;\n\n if (this._alwaysSeekKeyframe) {\n this._config.accurateSeek = false;\n }\n }\n\n var _proto = FlvPlayer.prototype;\n\n _proto.destroy = function destroy() {\n if (this._progressChecker != null) {\n window.clearInterval(this._progressChecker);\n this._progressChecker = null;\n }\n\n if (this._transmuxer) {\n this.unload();\n }\n\n if (this._mediaElement) {\n this.detachMediaElement();\n }\n\n this.e = null;\n this._mediaDataSource = null;\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n };\n\n _proto.on = function on(event, listener) {\n var _this2 = this;\n\n if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].MEDIA_INFO) {\n if (this._mediaInfo != null) {\n Promise.resolve().then(function () {\n _this2._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].MEDIA_INFO, _this2.mediaInfo);\n });\n }\n } else if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].STATISTICS_INFO) {\n if (this._statisticsInfo != null) {\n Promise.resolve().then(function () {\n _this2._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].STATISTICS_INFO, _this2.statisticsInfo);\n });\n }\n }\n\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.attachMediaElement = function attachMediaElement(mediaElement, mediaCanvas) {\n var _this3 = this;\n\n this._mediaCanvas = mediaCanvas;\n\n if (!this._IsWasm) {\n this._mediaElement = mediaElement;\n mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n mediaElement.addEventListener('seeking', this.e.onvSeeking);\n mediaElement.addEventListener('canplay', this.e.onvCanPlay);\n mediaElement.addEventListener('stalled', this.e.onvStalled);\n mediaElement.addEventListener('progress', this.e.onvProgress);\n mediaElement.addEventListener('waiting', this.e.onvWaiting);\n mediaElement.addEventListener('playing', this.e.onvPlaying);\n this._msectl = new _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._config);\n\n this._msectl.setSeekPlayTime(this._mediaDataSource.startPlaySecs);\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CB_PLAY_INFO, this._onmseCbPlayInfo.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].UPDATE_END, this._onmseUpdateEnd.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].BUFFER_FULL, this._onmseBufferFull.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].SOURCE_OPEN, function () {\n _this3._mseSourceOpened = true;\n\n if (_this3._hasPendingLoad) {\n _this3._hasPendingLoad = false;\n\n _this3.load();\n }\n });\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERROR, function (info) {\n _this3.ReCreateMSECtl();\n /*\r\n this._emitter.emit(PlayerEvents.ERROR,\r\n ErrorTypes.MEDIA_ERROR,\r\n ErrorDetails.MEDIA_MSE_ERROR,\r\n info\r\n );\r\n */\n\n });\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CHANGE_SPEED, function (info) {\n //console.log(\"ChangeSpeed: \" + info.speed);\n if (_this3._transmuxer) {\n _this3._transmuxer.changeSpeed(info.speed);\n }\n });\n\n this._msectl.attachMediaElement(mediaElement);\n\n if (this._pendingSeekTime != null) {\n try {\n mediaElement.currentTime = this._pendingSeekTime;\n this._pendingSeekTime = null;\n } catch (e) {// IE11 may throw InvalidStateError if readyState === 0\n // We can defer set currentTime operation after loadedmetadata\n }\n }\n } else {//alert(\"apple browse\");\n }\n };\n\n _proto.detachMediaElement = function detachMediaElement() {\n if (!this._IsWasm) {\n if (this._mediaElement) {\n this._msectl.detachMediaElement();\n\n this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n\n this._mediaElement.removeEventListener('seeking', this.e.onvSeeking);\n\n this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);\n\n this._mediaElement.removeEventListener('stalled', this.e.onvStalled);\n\n this._mediaElement.removeEventListener('progress', this.e.onvProgress);\n\n this._mediaElement = null;\n }\n\n if (this._msectl) {\n this._msectl.destroy();\n\n this._msectl = null;\n }\n }\n };\n\n _proto.ReCreateMSECtl = function ReCreateMSECtl() {\n var _this4 = this;\n\n this._msectlResetComplete = false;\n console.log(\"ReCreateMSECtl...\");\n\n if (this._msectl) {\n if (this._mediaElement) {\n this._msectl.detachMediaElement();\n }\n\n this._msectl.destroy();\n\n this._msectl = null;\n }\n\n this._msectl = new _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._config);\n\n this._msectl.setSeekPlayTime(this._mediaDataSource.startPlaySecs);\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CB_PLAY_INFO, this._onmseCbPlayInfo.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].UPDATE_END, this._onmseUpdateEnd.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].BUFFER_FULL, this._onmseBufferFull.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].SOURCE_OPEN, function () {\n _this4._mseSourceOpened = true; //if (this._hasPendingLoad) {\n //this._hasPendingLoad = false;\n //this.load();\n //}\n\n if (_this4._msectlInitSegmentVideoParams) {\n _this4._msectl.appendInitSegment(_this4._msectlInitSegmentVideoParams);\n }\n\n if (_this4._msectlInitSegmentAudioParams) {\n _this4._msectl.appendInitSegment(_this4._msectlInitSegmentAudioParams);\n }\n\n _this4._msectlResetComplete = true;\n });\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERROR, function (info) {\n //console.log(\"FLV-Player.js::MSEEvents.ERROR ReCreateMSECtl\");\n _this4.ReCreateMSECtl();\n /*\r\n this._emitter.emit(PlayerEvents.ERROR,\r\n ErrorTypes.MEDIA_ERROR,\r\n ErrorDetails.MEDIA_MSE_ERROR,\r\n info\r\n );\r\n */\n\n });\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CHANGE_SPEED, function (info) {\n //console.log(\"ChangeSpeed: \" + info.speed);\n if (_this4._transmuxer) {\n _this4._transmuxer.changeSpeed(info.speed);\n }\n });\n\n this._msectl.attachMediaElement(this._mediaElement);\n\n if (this._transmuxer) {\n this._transmuxer.seekToSecs(0, 0);\n }\n } //<2F><>transmuxer.js <20>лص<D0BB><D8B5><EFBFBD><EFBFBD><EFBFBD>, <20>Ƿ<EFBFBD>Ϊwasm<73><6D><EFBFBD><EFBFBD>, <20><><EFBFBD>ݸñ<DDB8>ʶ<EFBFBD><CAB6>ȷ<EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n ;\n\n _proto.callbackWasmType = function callbackWasmType(_this, isWasm) {\n _this._IsWasm = isWasm;\n\n _this.callbackToParent();\n\n if (_this.needCallPlay) {\n _this.needCallPlay = false;\n\n if (!isWasm) {\n _this.play();\n }\n }\n };\n\n _proto.callbackToParent = function callbackToParent() {\n if (this.callbackFunc) {\n this.callbackFunc(this.callbackUserPtr, this.isFlv ? 'flv' : 'm3u8', this._IsWasm);\n }\n };\n\n _proto.setCallback = function setCallback(func, cbPlayTimeFunc, cbConnectStatusFunc, userPtr) {\n this.callbackFunc = func;\n this.callbackPlayTimeFunc = cbPlayTimeFunc;\n this.callbackConnectStatusFunc = cbConnectStatusFunc;\n this.callbackUserPtr = userPtr;\n };\n\n _proto.load = function load() {\n var _this5 = this;\n\n if (!this._IsWasm) {\n if (!this._mediaElement) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__[\"IllegalStateException\"]('HTMLMediaElement must be attached before load()!');\n }\n\n if (this._transmuxer) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__[\"IllegalStateException\"]('FlvPlayer.load() has been called, please call unload() first!');\n }\n\n if (this._hasPendingLoad) {\n return;\n }\n\n if (this._config.deferLoadAfterSourceOpen && this._mseSourceOpened === false) {\n this._hasPendingLoad = true;\n return;\n }\n\n if (this._mediaElement.readyState > 0) {\n this._requestSetTime = true; // IE11 may throw InvalidStateError if readyState === 0\n\n this._mediaElement.currentTime = 0;\n }\n }\n\n this._transmuxer = new _core_transmuxer_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this._mediaDataSource, this._config, this._mediaCanvas, this, this.callbackWasmType);\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].INIT_SEGMENT, function (type, is) {\n if (!_this5._IsWasm) {\n // && !this._initFlag) {\n _this5._initFlag = true;\n\n _this5._msectl.appendInitSegment(is);\n\n if (type === 'video') {\n _this5._msectlInitSegmentVideoParams = is;\n } else if (type === 'audio') {\n _this5._msectlInitSegmentAudioParams = is;\n } //let p = new Uint8Array(is.data);\n //console.log(\"mp4 header:\" + p);\n\n }\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].MEDIA_SEGMENT, function (type, ms) {\n if (!_this5._IsWasm) {\n if (_this5._msectlResetComplete) {\n _this5._msectl.appendMediaSegment(ms);\n }\n } // lazyLoad check\n\n\n if (_this5._config.lazyLoad && !_this5._config.isLive) {\n var currentTime = _this5._mediaElement.currentTime;\n\n if (ms.info.endDts >= (currentTime + _this5._config.lazyLoadMaxDuration) * 1000) {\n if (_this5._progressChecker == null) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(_this5.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');\n\n _this5._suspendTransmuxer();\n }\n }\n }\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LOADING_COMPLETE, function () {\n if (!_this5._IsWasm) {\n _this5._msectl.endOfStream();\n }\n\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].LOADING_COMPLETE);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].RECOVERED_EARLY_EOF, function () {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].RECOVERED_EARLY_EOF);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].IO_ERROR, function (detail, info) {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__[\"ErrorTypes\"].NETWORK_ERROR, detail, info);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].DEMUX_ERROR, function (detail, info) {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__[\"ErrorTypes\"].MEDIA_ERROR, detail, {\n code: -1,\n msg: info\n });\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].MEDIA_INFO, function (mediaInfo) {\n _this5._mediaInfo = mediaInfo;\n\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].MEDIA_INFO, Object.assign({}, mediaInfo));\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].METADATA_ARRIVED, function (metadata) {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].METADATA_ARRIVED, metadata);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].SCRIPTDATA_ARRIVED, function (data) {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].SCRIPTDATA_ARRIVED, data);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].STATISTICS_INFO, function (statInfo) {\n _this5._statisticsInfo = _this5._fillStatisticsInfo(statInfo);\n\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].STATISTICS_INFO, Object.assign({}, _this5._statisticsInfo));\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].RECOMMEND_SEEKPOINT, function (milliseconds) {\n if (_this5._mediaElement && !_this5._config.accurateSeek) {\n _this5._requestSetTime = true;\n _this5._mediaElement.currentTime = milliseconds / 1000;\n }\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].RECONNECT_ING, function (reconnectTimes) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n if (_this5.callbackConnectStatusFunc) {\n _this5.callbackConnectStatusFunc(_this5.callbackUserPtr, 0);\n }\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].RECONNECT_SUCCESS, function (reconnectTimes) {\n if (!_this5._IsWasm) {\n //console.log(\"Get Reconnect times...\" + reconnectTimes + \" play...\");\n if (reconnectTimes > 1 && _this5._msectl) {\n _this5._transmuxer.seekToSecs(0, 0);\n\n console.log(\"msectl.reset...\");\n\n _this5._msectl.reset(true); //\n\n } //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ, <20><><EFBFBD><EFBFBD>play\n\n\n if (_this5._mediaElement && reconnectTimes == 1) {//this._mediaElement.play();\n }\n } //<2F><><EFBFBD>ӳɹ<D3B3>\n\n\n if (_this5.callbackConnectStatusFunc) {\n _this5.callbackConnectStatusFunc(_this5.callbackUserPtr, 1);\n }\n });\n\n this._transmuxer.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CB_PLAY_INFO, this._onmseCbPlayInfo.bind(this));\n\n this._transmuxer.open();\n };\n\n _proto.unload = function unload() {\n if (!this._IsWasm) {\n if (this._mediaElement) {\n this._mediaElement.pause();\n }\n\n if (this._msectl) {\n this._msectl.seek(0);\n }\n }\n\n if (this._transmuxer) {\n this._transmuxer.close();\n\n this._transmuxer.destroy();\n\n this._transmuxer = null;\n }\n\n this._initFlag = false;\n };\n\n _proto.play = function play() {\n if (this._transmuxer == null) {\n this.needCallPlay = true;\n\n if (this._mediaElement) {\n this._mediaElement.volume = 0;\n }\n\n return false;\n }\n\n if (this._mediaElement) {\n this.needCallPlay = false; //this._mediaElement.volume = 0;\n\n return this._mediaElement.play();\n }\n };\n\n _proto.pause = function pause() {\n //if (this._IsWasm) {\n if (this._transmuxer) {\n this._transmuxer.pause();\n } //}\n //else \n\n\n if (this._mediaElement) {\n this._mediaElement.pause();\n }\n\n if (this._msectl) {\n this._msectl.pause();\n }\n };\n\n _proto.resume = function resume() {\n //if (this._IsWasm) {\n if (this._transmuxer) {\n this._transmuxer.resume();\n } //}\n //else\n\n\n if (this._msectl) {\n if (_common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetLiveStreamType\"]()) {\n this._msectl.reset(false);\n }\n\n this._msectl.resume();\n }\n\n if (this._mediaElement) {\n this._mediaElement.play();\n }\n };\n\n //===================\n _proto.openAudio = function openAudio() {\n if (this._IsWasm) {\n if (this._transmuxer) {\n return this._transmuxer.openAudio();\n }\n } else if (this._mediaElement) {\n this._mediaElement.volume = 1;\n return true;\n }\n\n return false;\n };\n\n _proto.closeAudio = function closeAudio() {\n if (this._IsWasm) {\n if (this._transmuxer) {\n return this._transmuxer.closeAudio();\n }\n } else if (this._mediaElement) {\n this._mediaElement.volume = 0;\n return true;\n }\n\n return false;\n };\n\n _proto.seek = function seek(seekValue, seekType) {\n //Ӳ<><D3B2> && FLV\n if (!this._IsWasm && this.isFlv && this._mediaElement && this._mediaElement.duration > 0) {\n var secs = Math.floor(seekValue / 100 * this._mediaElement.duration);\n\n if (this._mediaElement) {\n this._internalSeek(secs);\n } else {\n this._pendingSeekTime = secs;\n }\n\n return true;\n }\n\n if (this._transmuxer) {\n var secs = Math.floor(seekValue / 100 * this._transmuxer.getTotalDuration());\n\n if (this._msectl) {\n if (this._msectl.getCurrentPlayTime() == secs) {\n //console.log(\"this._msectl.getCurrentPlayTime() == secs: \" + this._msectl.getCurrentPlayTime());\n return true;\n } //this._msectl._doCleanupSourceBuffer(); //gavin\n //this._msectl.reset(true);\n //if (this._mediaElement) this._mediaElement.play();\n\n }\n\n this._transmuxer.seekToSecs(seekValue, seekType);\n\n if (this._msectl) {\n this._msectl.setSeekPlayTime(secs); //this._msectl._doCleanupSourceBuffer(); //gavin\n\n\n this._msectl.reset(true); //if (this._mediaElement) this._mediaElement.play();\n //this._mediaElement.currentTime = 0;\n\n }\n\n if (this._mediaElement) {\n //this._internalSeek(secs);\n //this._mediaElement.pause();\n //console.log(\"Media duration: \" + this._mediaElement.duration);\n //this._requestSetTime = true;\n if (Math.floor(this._mediaElement.currentTime) !== Math.floor(secs)) {//console.log(\"Seek[\" + seekValue + \"%] Set CurrentTime: \" + this._mediaElement.currentTime + \" --> \" + secs);\n //this._mediaElement.currentTime = Math.floor(secs);\n } else {//console.log(\"Seek time: \" + Math.floor(this._mediaElement.currentTime) + \" === \" + Math.floor(secs));\n } //this._mediaElement.fastSeek(secs); //chrome<6D><65>֧<EFBFBD><D6A7>\n //this._mediaElement.play();\n\n\n if (this._progressChecker != null) {//this._checkProgressAndResume();\n }\n } else {\n this._pendingSeekTime = secs; //console.log(\"this._mediaElement == null... seekTime:\" + secs);\n } //console.log(\"flv-player.js::Seek: \" + secs);\n\n\n return true;\n }\n } //===================\n ;\n\n _proto._fillStatisticsInfo = function _fillStatisticsInfo(statInfo) {\n statInfo.playerType = this._type;\n\n if (!(this._mediaElement instanceof HTMLVideoElement)) {\n return statInfo;\n }\n\n var hasQualityInfo = true;\n var decoded = 0;\n var dropped = 0;\n\n if (this._mediaElement.getVideoPlaybackQuality) {\n var quality = this._mediaElement.getVideoPlaybackQuality();\n\n decoded = quality.totalVideoFrames;\n dropped = quality.droppedVideoFrames;\n } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {\n decoded = this._mediaElement.webkitDecodedFrameCount;\n dropped = this._mediaElement.webkitDroppedFrameCount;\n } else {\n hasQualityInfo = false;\n }\n\n if (hasQualityInfo) {\n statInfo.decodedFrames = decoded;\n statInfo.droppedFrames = dropped;\n }\n\n return statInfo;\n } //<2F>ص<EFBFBD><D8B5><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>\n ;\n\n _proto._onmseCbPlayInfo = function _onmseCbPlayInfo() {\n if (this._transmuxer) {\n var currentTime = 0;\n var duration = 0;\n\n if (!this._IsWasm && this._msectl) {\n currentTime = this._msectl.getCurrentPlayTime();\n duration = this._msectl.getTotalDuration(); // / 1000;\n\n if (duration == Infinity && !_common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetLiveStreamType\"]()) {\n //H264<36>Ļط<C4BB>, msectl<74><6C>duration<6F><6E>ΪInfinity, <20><><EFBFBD>Դ˴<D4B4><CBB4><EFBFBD>ȡtransmuxer<65><72><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>\n duration = this._transmuxer.getTotalDuration(); // / 1000;\n }\n } else {\n currentTime = this._transmuxer.getCurrentPlayTime();\n if (currentTime < 0) currentTime = 0;\n duration = this._transmuxer.getTotalDuration(); // / 1000;\n } //duration = this._transmuxer.getTotalDuration();// / 1000;\n //console.log(\"Callback play info...\" + currentTime + \" / \" + duration);\n\n\n if (this.callbackPlayTimeFunc) {\n //_this, streamType, currentTime, totalDuration\n this.callbackPlayTimeFunc(this.callbackUserPtr, this.isFlv ? 'flv' : 'm3u8', currentTime, duration);\n }\n }\n };\n\n _proto._onmseUpdateEnd = function _onmseUpdateEnd() {\n if (!this._config.lazyLoad || this._config.isLive) {\n return;\n }\n\n var buffered = this._mediaElement.buffered;\n var currentTime = this._mediaElement.currentTime;\n var currentRangeStart = 0;\n var currentRangeEnd = 0;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n\n if (start <= currentTime && currentTime < end) {\n currentRangeStart = start;\n currentRangeEnd = end;\n break;\n }\n }\n\n if (currentRangeEnd >= currentTime + this._config.lazyLoadMaxDuration && this._progressChecker == null) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'onmseUpdateEnd::Maximum buffering duration exceeded, suspend transmuxing task');\n\n this._suspendTransmuxer();\n }\n };\n\n _proto._onmseBufferFull = function _onmseBufferFull() {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'MSE SourceBuffer is full, suspend transmuxing task');\n\n if (this._progressChecker == null) {\n this._suspendTransmuxer();\n }\n };\n\n _proto._suspendTransmuxer = function _suspendTransmuxer() {\n if (this._transmuxer) {\n this._transmuxer.pause();\n\n if (this._progressChecker == null) {\n this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1000);\n }\n }\n };\n\n _proto._checkProgressAndResume = function _checkProgressAndResume() {\n if (this._mediaElement == null) return;\n var currentTime = this._mediaElement.currentTime;\n var buffered = this._mediaElement.buffered;\n var needResume = false;\n\n for (var i = 0; i < buffered.length; i++) {\n var from = buffered.start(i);\n var to = buffered.end(i);\n\n if (currentTime >= from && currentTime < to) {\n if (currentTime >= to - this._config.lazyLoadRecoverDuration) {\n needResume = true;\n }\n\n break;\n }\n }\n\n if (needResume) {\n window.clearInterval(this._progressChecker);\n this._progressChecker = null;\n\n if (needResume) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'Continue loading from paused position');\n\n this._transmuxer.resume();\n }\n }\n };\n\n _proto._isTimepointBuffered = function _isTimepointBuffered(seconds) {\n var buffered = this._mediaElement.buffered;\n\n for (var i = 0; i < buffered.length; i++) {\n var from = buffered.start(i);\n var to = buffered.end(i);\n\n if (seconds >= from && seconds < to) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._internalSeek = function _internalSeek(seconds) {\n var directSeek = this._isTimepointBuffered(seconds);\n\n var directSeekBegin = false;\n var directSeekBeginTime = 0;\n\n if (seconds < 1.0 && this._mediaElement.buffered.length > 0) {\n var videoBeginTime = this._mediaElement.buffered.start(0);\n\n if (videoBeginTime < 1.0 && seconds < videoBeginTime || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari) {\n directSeekBegin = true; // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid\n\n directSeekBeginTime = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari ? 0.1 : videoBeginTime;\n }\n }\n\n if (directSeekBegin) {\n // seek to video begin, set currentTime directly if beginPTS buffered\n this._requestSetTime = true;\n this._mediaElement.currentTime = directSeekBeginTime;\n } else if (directSeek) {\n // buffered position\n if (!this._alwaysSeekKeyframe) {\n this._requestSetTime = true;\n this._mediaElement.currentTime = seconds;\n } else {\n var idr = this._msectl.getNearestKeyframe(Math.floor(seconds * 1000));\n\n this._requestSetTime = true;\n\n if (idr != null) {\n this._mediaElement.currentTime = idr.dts / 1000;\n } else {\n this._mediaElement.currentTime = seconds;\n }\n }\n\n if (this._progressChecker != null) {\n this._checkProgressAndResume();\n }\n } else {\n if (this._progressChecker != null) {\n window.clearInterval(this._progressChecker);\n this._progressChecker = null;\n }\n\n this._msectl.seek(seconds);\n\n this._transmuxer.seek(Math.floor(seconds * 1000)); // in milliseconds\n // no need to set mediaElement.currentTime if non-accurateSeek,\n // just wait for the recommend_seekpoint callback\n\n\n if (this._config.accurateSeek) {\n this._requestSetTime = true;\n this._mediaElement.currentTime = seconds;\n }\n }\n };\n\n _proto._checkAndApplyUnbufferedSeekpoint = function _checkAndApplyUnbufferedSeekpoint() {\n if (this.isFlv && this.playTally > 0 && _common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetLiveStreamType\"]()) {\n console.log(\"_checkAndApplyUnbufferedSeekpoint. RETURN...\");\n\n if (this._progressChecker != null) {\n window.clearTimeout(this._progressChecker);\n this._progressChecker = null;\n }\n\n var paused = false;\n\n if (this._transmuxer) {\n paused = this._transmuxer.isPaused();\n }\n\n if (this._mediaElement && !paused) {\n this._mediaElement.play();\n }\n\n return;\n }\n\n if (this._seekpointRecord) {\n if (this._seekpointRecord.recordTime <= this._now() - 100) {\n var target = this._mediaElement.currentTime;\n this._seekpointRecord = null;\n\n if (!this._isTimepointBuffered(target)) {\n if (this._progressChecker != null) {\n window.clearTimeout(this._progressChecker);\n this._progressChecker = null;\n } // .currentTime is consists with .buffered timestamp\n // Chrome/Edge use DTS, while FireFox/Safari use PTS\n\n\n this._msectl.seek(target);\n\n this._transmuxer.seek(Math.floor(target * 1000)); // set currentTime if accurateSeek, or wait for recommend_seekpoint callback\n\n\n if (this._config.accurateSeek) {\n this._requestSetTime = true;\n this._mediaElement.currentTime = target;\n }\n }\n } else {\n window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);\n }\n }\n };\n\n _proto._checkAndResumeStuckPlayback = function _checkAndResumeStuckPlayback(stalled) {\n var media = this._mediaElement;\n\n if (stalled || !this._receivedCanPlay || media.readyState < 2) {\n // HAVE_CURRENT_DATA\n var buffered = media.buffered;\n\n if (buffered.length > 0 && media.currentTime < buffered.start(0)) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].w(this.TAG, \"Playback seems stuck at \" + media.currentTime + \", seek to \" + buffered.start(0));\n this._requestSetTime = true;\n this._mediaElement.currentTime = buffered.start(0);\n\n this._mediaElement.removeEventListener('progress', this.e.onvProgress);\n }\n } else {\n // Playback didn't stuck, remove progress event listener\n this._mediaElement.removeEventListener('progress', this.e.onvProgress);\n }\n };\n\n _proto._onvLoadedMetadata = function _onvLoadedMetadata(e) {\n if (this._pendingSeekTime != null) {\n this._mediaElement.currentTime = this._pendingSeekTime;\n this._pendingSeekTime = null;\n }\n };\n\n _proto._onvSeeking = function _onvSeeking(e) {\n // handle seeking request from browser's progress bar\n var target = this._mediaElement.currentTime;\n var buffered = this._mediaElement.buffered;\n\n if (this._requestSetTime) {\n this._requestSetTime = false;\n return;\n }\n\n if (target < 1.0 && buffered.length > 0) {\n // seek to video begin, set currentTime directly if beginPTS buffered\n var videoBeginTime = buffered.start(0);\n\n if (videoBeginTime < 1.0 && target < videoBeginTime || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari) {\n this._requestSetTime = true; // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid\n\n this._mediaElement.currentTime = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari ? 0.1 : videoBeginTime;\n return;\n }\n }\n\n if (this._isTimepointBuffered(target)) {\n if (this._alwaysSeekKeyframe) {\n var idr = this._msectl.getNearestKeyframe(Math.floor(target * 1000));\n\n if (idr != null) {\n this._requestSetTime = true;\n this._mediaElement.currentTime = idr.dts / 1000;\n }\n }\n\n if (this._progressChecker != null) {\n this._checkProgressAndResume();\n }\n\n return;\n }\n\n this._seekpointRecord = {\n seekPoint: target,\n recordTime: this._now()\n };\n window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);\n };\n\n _proto._onvCanPlay = function _onvCanPlay(e) {\n this._receivedCanPlay = true;\n\n this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);\n };\n\n _proto._onvStalled = function _onvStalled(e) {\n this._checkAndResumeStuckPlayback(true);\n };\n\n _proto._onvProgress = function _onvProgress(e) {\n this._checkAndResumeStuckPlayback();\n };\n\n _proto._onvWaiting = function _onvWaiting(e) {\n //console.log(\"wait for data....\");\n return;\n this.waitingForData = true;\n\n if (this.playTally >= 1) {\n //this._checkAndResumeStuckPlayback(true);\n var media = this._mediaElement;\n var buffered = media.buffered;\n\n if (buffered.length > 0) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].w(this.TAG, \"waiting... Playback seems stuck at \" + media.currentTime + \", seek to \" + buffered.start(0));\n this._requestSetTime = true;\n var end = buffered.end(buffered.length - 1);\n this._mediaElement.currentTime = end - 1; // buffered.start(0) + (buffered.end(0) - buffered.start(0) / 2);\n\n console.log(\"waiting... set currentTime: \" + (end - 1)); //buffered.end(0));\n } else {\n console.log(\"waiting... no buffer\"); //this._transmuxer.seekToSecs(0, 0);\n //this._msectl._doAppendSegments();\n //this._mediaElement.play();\n //this._mediaElement.currentTime += 3;\n } //this._mediaElement.currentTime = this._msectl.GetSourceBufferStartTime();\n //this._mediaElement.currentTime = 0;\n //this._msectl.reset(true);\n\n }\n };\n\n _proto._onvPlaying = function _onvPlaying(e) {\n //console.log(\"Playing...\");\n this.waitingForData = false;\n this.playTally++;\n };\n\n _createClass(FlvPlayer, [{\n key: \"type\",\n get: function get() {\n return this._type;\n }\n }, {\n key: \"buffered\",\n get: function get() {\n return this._mediaElement.buffered;\n }\n }, {\n key: \"duration\",\n get: function get() {\n return this._mediaElement.duration;\n }\n }, {\n key: \"volume\",\n get: function get() {\n return this._mediaElement.volume;\n },\n set: function set(value) {\n this._mediaElement.volume = value;\n }\n }, {\n key: \"muted\",\n get: function get() {\n return this._mediaElement.muted;\n },\n set: function set(muted) {\n this._mediaElement.muted = muted;\n }\n }, {\n key: \"currentTime\",\n get: function get() {\n if (this._mediaElement) {\n return this._mediaElement.currentTime;\n }\n\n return 0;\n },\n set: function set(seconds) {\n if (this._mediaElement) {\n this._internalSeek(seconds);\n } else {\n this._pendingSeekTime = seconds;\n }\n }\n }, {\n key: \"mediaInfo\",\n get: function get() {\n return Object.assign({}, this._mediaInfo);\n }\n }, {\n key: \"statisticsInfo\",\n get: function get() {\n if (this._statisticsInfo == null) {\n this._statisticsInfo = {};\n }\n\n this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo);\n return Object.assign({}, this._statisticsInfo);\n }\n }]);\n\n return FlvPlayer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FlvPlayer);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/player/flv-player.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/player/native-player.js":
|
||
/*!******************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/player/native-player.js ***!
|
||
\******************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _player_events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./player-events.js */ \"./src/FlvPlayer/flv.js/player/player-events.js\");\n/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config.js */ \"./src/FlvPlayer/flv.js/config.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n // Player wrapper for browser's native player (HTMLVideoElement) without MediaSource src. \n\nvar NativePlayer = /*#__PURE__*/function () {\n function NativePlayer(mediaDataSource, h5Video, callbackPlayTimeFunc, callbackUserPtr, config) {\n this.TAG = 'NativePlayer';\n this._type = 'NativePlayer';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._config = Object(_config_js__WEBPACK_IMPORTED_MODULE_2__[\"createDefaultConfig\"])();\n\n if (typeof config === 'object') {\n Object.assign(this._config, config);\n }\n\n if (mediaDataSource.type.toLowerCase() === 'flv') {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"InvalidArgumentException\"]('NativePlayer does\\'t support flv MediaDataSource input!');\n }\n\n if (mediaDataSource.hasOwnProperty('segments')) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"InvalidArgumentException\"](\"NativePlayer(\" + mediaDataSource.type + \") doesn't support multipart playback!\");\n }\n\n this.e = {\n onvLoadedMetadata: this._onvLoadedMetadata.bind(this)\n };\n this._pendingSeekTime = null;\n this._statisticsReporter = null;\n this._mediaDataSource = mediaDataSource;\n this._mediaElement = null;\n this.pauseDisplay = false;\n this.h5Video = h5Video;\n this.callbackPlayTimeFunc = callbackPlayTimeFunc;\n this.callbackUserPtr = callbackUserPtr;\n }\n\n var _proto = NativePlayer.prototype;\n\n _proto.destroy = function destroy() {\n if (this._mediaElement) {\n this.unload();\n this.detachMediaElement();\n }\n\n this.e = null;\n this._mediaDataSource = null;\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n };\n\n _proto.on = function on(event, listener) {\n var _this = this;\n\n if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].MEDIA_INFO) {\n if (this._mediaElement != null && this._mediaElement.readyState !== 0) {\n // HAVE_NOTHING\n Promise.resolve().then(function () {\n _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].MEDIA_INFO, _this.mediaInfo);\n });\n }\n } else if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].STATISTICS_INFO) {\n if (this._mediaElement != null && this._mediaElement.readyState !== 0) {\n Promise.resolve().then(function () {\n _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].STATISTICS_INFO, _this.statisticsInfo);\n });\n }\n }\n\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.attachMediaElement = function attachMediaElement(mediaElement) {\n this._mediaElement = mediaElement;\n mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n\n if (this._pendingSeekTime != null) {\n try {\n mediaElement.currentTime = this._pendingSeekTime;\n this._pendingSeekTime = null;\n } catch (e) {// IE11 may throw InvalidStateError if readyState === 0\n // Defer set currentTime operation after loadedmetadata\n }\n }\n };\n\n _proto.detachMediaElement = function detachMediaElement() {\n if (this._mediaElement) {\n this._mediaElement.src = '';\n\n this._mediaElement.removeAttribute('src');\n\n this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n\n this._mediaElement = null;\n }\n\n if (this._statisticsReporter != null) {\n window.clearInterval(this._statisticsReporter);\n this._statisticsReporter = null;\n }\n };\n\n _proto.load = function load() {\n if (!this._mediaElement) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"IllegalStateException\"]('HTMLMediaElement must be attached before load()!');\n }\n\n this._mediaElement.src = this._mediaDataSource.url;\n\n if (this._mediaElement.readyState > 0) {\n this._mediaElement.currentTime = 0;\n }\n\n this._mediaElement.preload = 'auto';\n\n this._mediaElement.load();\n\n this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);\n };\n\n _proto.unload = function unload() {\n if (this._mediaElement) {\n this._mediaElement.src = '';\n\n this._mediaElement.removeAttribute('src');\n }\n\n if (this._statisticsReporter != null) {\n window.clearInterval(this._statisticsReporter);\n this._statisticsReporter = null;\n }\n };\n\n _proto.play = function play() {\n if (!this.pauseDisplay) {\n this.attachMediaElement(this.h5Video);\n this.load();\n }\n\n this.pauseDisplay = false;\n return this._mediaElement.play();\n };\n\n _proto.stop = function stop() {\n this.unload();\n this.detachMediaElement();\n };\n\n _proto.pause = function pause() {\n this._mediaElement.pause();\n\n this.pauseDisplay = true;\n };\n\n _proto.isPause = function isPause() {\n return this.pauseDisplay;\n };\n\n _proto.openAudio = function openAudio() {\n this._mediaElement.volume = 1;\n return true;\n };\n\n _proto.closeAudio = function closeAudio() {\n this._mediaElement.volume = 0;\n return true;\n };\n\n _proto.seek = function seek(seekValue, seekType) {\n var seekTimeSecs = seekValue; //Ĭ<><C4AC>Ϊ<EFBFBD>ⲿ<EFBFBD><E2B2BF>ֵ(<28><>)\n\n if (seekType == 1) {\n //<2F>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Ϊ<>ٷֱ<D9B7>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA>\n seekTimeSecs = seekValue / 100 * this._mediaElement.duration;\n }\n\n if (this._mediaElement) {\n this._mediaElement.currentTime = seekTimeSecs;\n } else {\n this._pendingSeekTime = seekTimeSecs;\n }\n };\n\n _proto._onvLoadedMetadata = function _onvLoadedMetadata(e) {\n if (this._pendingSeekTime != null) {\n this._mediaElement.currentTime = this._pendingSeekTime;\n this._pendingSeekTime = null;\n }\n\n this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].MEDIA_INFO, this.mediaInfo);\n };\n\n _proto._reportStatisticsInfo = function _reportStatisticsInfo() {\n this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].STATISTICS_INFO, this.statisticsInfo);\n };\n\n _createClass(NativePlayer, [{\n key: \"type\",\n get: function get() {\n return this._type;\n }\n }, {\n key: \"buffered\",\n get: function get() {\n return this._mediaElement.buffered;\n }\n }, {\n key: \"duration\",\n get: function get() {\n return this._mediaElement.duration;\n }\n }, {\n key: \"volume\",\n get: function get() {\n return this._mediaElement.volume;\n },\n set: function set(value) {\n this._mediaElement.volume = value;\n }\n }, {\n key: \"muted\",\n get: function get() {\n return this._mediaElement.muted;\n },\n set: function set(muted) {\n this._mediaElement.muted = muted;\n }\n }, {\n key: \"currentTime\",\n get: function get() {\n if (this._mediaElement) {\n return this._mediaElement.currentTime;\n }\n\n return 0;\n },\n set: function set(seconds) {\n if (this._mediaElement) {\n this._mediaElement.currentTime = seconds;\n } else {\n this._pendingSeekTime = seconds;\n }\n }\n }, {\n key: \"mediaInfo\",\n get: function get() {\n var mediaPrefix = this._mediaElement instanceof HTMLAudioElement ? 'audio/' : 'video/';\n var info = {\n mimeType: mediaPrefix + this._mediaDataSource.type\n };\n\n if (this._mediaElement) {\n info.duration = Math.floor(this._mediaElement.duration * 1000);\n\n if (this._mediaElement instanceof HTMLVideoElement) {\n info.width = this._mediaElement.videoWidth;\n info.height = this._mediaElement.videoHeight;\n }\n\n if (this.callbackPlayTimeFunc) {\n this.callbackPlayTimeFunc(this.callbackUserPtr, 'mp4', this._mediaElement.currentTime, info.duration / 1000);\n }\n\n var self = this;\n var currentPlayTime = 0;\n var totalDuration = info.duration / 1000;\n\n this._mediaElement.addEventListener(\"timeupdate\", function () {\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD>\n if (self._mediaElement) {\n var t = self._mediaElement.currentTime;\n\n if (t != null) {\n var timeDisplay = Math.floor(t);\n\n if (currentPlayTime != timeDisplay) {\n //self._currentPlayTime = Math.floor(mediaElement.currentTime);\n currentPlayTime = timeDisplay;\n self.callbackPlayTimeFunc(self.callbackUserPtr, 'mp4', currentPlayTime, totalDuration);\n }\n }\n }\n }, false);\n }\n\n return info;\n }\n }, {\n key: \"statisticsInfo\",\n get: function get() {\n var info = {\n playerType: this._type,\n url: this._mediaDataSource.url\n };\n\n if (!(this._mediaElement instanceof HTMLVideoElement)) {\n return info;\n }\n\n var hasQualityInfo = true;\n var decoded = 0;\n var dropped = 0;\n\n if (this._mediaElement.getVideoPlaybackQuality) {\n var quality = this._mediaElement.getVideoPlaybackQuality();\n\n decoded = quality.totalVideoFrames;\n dropped = quality.droppedVideoFrames;\n } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {\n decoded = this._mediaElement.webkitDecodedFrameCount;\n dropped = this._mediaElement.webkitDroppedFrameCount;\n } else {\n hasQualityInfo = false;\n }\n\n if (hasQualityInfo) {\n info.decodedFrames = decoded;\n info.droppedFrames = dropped;\n }\n\n return info;\n }\n }]);\n\n return NativePlayer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (NativePlayer);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/player/native-player.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/player/player-errors.js":
|
||
/*!******************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/player/player-errors.js ***!
|
||
\******************************************************/
|
||
/*! exports provided: ErrorTypes, ErrorDetails */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorTypes\", function() { return ErrorTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorDetails\", function() { return ErrorDetails; });\n/* harmony import */ var _io_loader_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../io/loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../demux/demux-errors.js */ \"./src/FlvPlayer/flv.js/demux/demux-errors.js\");\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar ErrorTypes = {\n NETWORK_ERROR: 'NetworkError',\n MEDIA_ERROR: 'MediaError',\n OTHER_ERROR: 'OtherError'\n};\nvar ErrorDetails = {\n NETWORK_EXCEPTION: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__[\"LoaderErrors\"].EXCEPTION,\n NETWORK_STATUS_CODE_INVALID: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID,\n NETWORK_TIMEOUT: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__[\"LoaderErrors\"].CONNECTING_TIMEOUT,\n NETWORK_UNRECOVERABLE_EARLY_EOF: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__[\"LoaderErrors\"].UNRECOVERABLE_EARLY_EOF,\n MEDIA_MSE_ERROR: 'MediaMSEError',\n MEDIA_FORMAT_ERROR: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORMAT_ERROR,\n MEDIA_FORMAT_UNSUPPORTED: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORMAT_UNSUPPORTED,\n MEDIA_CODEC_UNSUPPORTED: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].CODEC_UNSUPPORTED\n};\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/player/player-errors.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/player/player-events.js":
|
||
/*!******************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/player/player-events.js ***!
|
||
\******************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar PlayerEvents = {\n ERROR: 'error',\n LOADING_COMPLETE: 'loading_complete',\n RECOVERED_EARLY_EOF: 'recovered_early_eof',\n MEDIA_INFO: 'media_info',\n METADATA_ARRIVED: 'metadata_arrived',\n SCRIPTDATA_ARRIVED: 'scriptdata_arrived',\n STATISTICS_INFO: 'statistics_info'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PlayerEvents);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/player/player-events.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/remux/aac-silent.js":
|
||
/*!**************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/remux/aac-silent.js ***!
|
||
\**************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * This file is modified from dailymotion's hls.js library (hls.js/src/helper/aac.js)\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar AAC = /*#__PURE__*/function () {\n function AAC() {}\n\n AAC.getSilentFrame = function getSilentFrame(codec, channelCount) {\n if (codec === 'mp4a.40.2') {\n // handle LC-AAC\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n } else if (channelCount === 2) {\n return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);\n } else if (channelCount === 3) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);\n } else if (channelCount === 4) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);\n } else if (channelCount === 5) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);\n } else if (channelCount === 6) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n }\n } else {\n // handle HE-AAC (mp4a.40.5 / mp4a.40.29)\n if (channelCount === 1) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 2) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 3) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n }\n }\n\n return null;\n };\n\n return AAC;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AAC);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/remux/aac-silent.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/remux/mp4-generator.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/remux/mp4-generator.js ***!
|
||
\*****************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * This file is derived from dailymotion's hls.js library (hls.js/src/remux/mp4-generator.js)\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n// MP4 boxes generator for ISO BMFF (ISO Base Media File Format, defined in ISO/IEC 14496-12)\nvar MP4 = /*#__PURE__*/function () {\n function MP4() {}\n\n MP4.init = function init() {\n MP4.types = {\n avc1: [],\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: [],\n '.mp3': []\n };\n\n for (var name in MP4.types) {\n if (MP4.types.hasOwnProperty(name)) {\n MP4.types[name] = [name.charCodeAt(0), name.charCodeAt(1), name.charCodeAt(2), name.charCodeAt(3)];\n }\n }\n\n var constants = MP4.constants = {};\n constants.FTYP = new Uint8Array([0x69, 0x73, 0x6F, 0x6D, // major_brand: isom\n 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]);\n constants.STSD_PREFIX = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]);\n constants.STTS = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n constants.STSC = constants.STCO = constants.STTS;\n constants.STSZ = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n constants.HDLR_VIDEO = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x64, 0x65, 0x6F, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n ]);\n constants.HDLR_AUDIO = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n ]);\n constants.DREF = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0C, // entry_size\n 0x75, 0x72, 0x6C, 0x20, // type 'url '\n 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n ]); // Sound media header\n\n constants.SMHD = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n ]); // video media header\n\n constants.VMHD = new Uint8Array([0x00, 0x00, 0x00, 0x01, // version(0) + flags\n 0x00, 0x00, // graphicsmode: 2 bytes\n 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes\n 0x00, 0x00]);\n } // Generate a box\n ;\n\n MP4.box = function box(type) {\n var size = 8;\n var result = null;\n var datas = Array.prototype.slice.call(arguments, 1);\n var arrayCount = datas.length;\n\n for (var i = 0; i < arrayCount; i++) {\n size += datas[i].byteLength;\n }\n\n result = new Uint8Array(size);\n result[0] = size >>> 24 & 0xFF; // size\n\n result[1] = size >>> 16 & 0xFF;\n result[2] = size >>> 8 & 0xFF;\n result[3] = size & 0xFF;\n result.set(type, 4); // type\n\n var offset = 8;\n\n for (var _i = 0; _i < arrayCount; _i++) {\n // data body\n result.set(datas[_i], offset);\n offset += datas[_i].byteLength;\n }\n\n return result;\n } // emit ftyp & moov\n ;\n\n MP4.generateInitSegment = function generateInitSegment(meta) {\n var ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n var moov = MP4.moov(meta);\n var result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n result.set(ftyp, 0);\n result.set(moov, ftyp.byteLength);\n return result;\n } // Movie metadata box\n ;\n\n MP4.moov = function moov(meta) {\n var mvhd = MP4.mvhd(meta.timescale, meta.duration);\n var trak = MP4.trak(meta);\n var mvex = MP4.mvex(meta);\n return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n } // Movie header box\n ;\n\n MP4.mvhd = function mvhd(timescale, duration) {\n return MP4.box(MP4.types.mvhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n timescale >>> 24 & 0xFF, // timescale: 4 bytes\n timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, // duration: 4 bytes\n duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0\n 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----\n 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n ]));\n } // Track box\n ;\n\n MP4.trak = function trak(meta) {\n return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n } // Track header box\n ;\n\n MP4.tkhd = function tkhd(meta) {\n var trackId = meta.id,\n duration = meta.duration;\n var width = meta.presentWidth,\n height = meta.presentHeight;\n return MP4.box(MP4.types.tkhd, new Uint8Array([0x00, 0x00, 0x00, 0x07, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n trackId >>> 24 & 0xFF, // track_ID: 4 bytes\n trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n duration >>> 24 & 0xFF, // duration: 4 bytes\n duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)\n 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n width >>> 8 & 0xFF, // width and height\n width & 0xFF, 0x00, 0x00, height >>> 8 & 0xFF, height & 0xFF, 0x00, 0x00]));\n } // Media Box\n ;\n\n MP4.mdia = function mdia(meta) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta));\n } // Media header box\n ;\n\n MP4.mdhd = function mdhd(meta) {\n var timescale = meta.timescale;\n var duration = meta.duration;\n return MP4.box(MP4.types.mdhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n timescale >>> 24 & 0xFF, // timescale: 4 bytes\n timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, // duration: 4 bytes\n duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x55, 0xC4, // language: und (undetermined)\n 0x00, 0x00 // pre_defined = 0\n ]));\n } // Media handler reference box\n ;\n\n MP4.hdlr = function hdlr(meta) {\n var data = null;\n\n if (meta.type === 'audio') {\n data = MP4.constants.HDLR_AUDIO;\n } else {\n data = MP4.constants.HDLR_VIDEO;\n }\n\n return MP4.box(MP4.types.hdlr, data);\n } // Media infomation box\n ;\n\n MP4.minf = function minf(meta) {\n var xmhd = null;\n\n if (meta.type === 'audio') {\n xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n } else {\n xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n }\n\n return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n } // Data infomation box\n ;\n\n MP4.dinf = function dinf() {\n var result = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.constants.DREF));\n return result;\n } // Sample table box\n ;\n\n MP4.stbl = function stbl(meta) {\n var result = MP4.box(MP4.types.stbl, // type: stbl\n MP4.stsd(meta), // Sample Description Table\n MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample\n MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk\n MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size\n MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n );\n return result;\n } // Sample description box\n ;\n\n MP4.stsd = function stsd(meta) {\n if (meta.type === 'audio') {\n if (meta.codec === 'mp3') {\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp3(meta));\n } // else: aac -> mp4a\n\n\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n } else {\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n }\n };\n\n MP4.mp3 = function mp3(meta) {\n var channelCount = meta.channelCount;\n var sampleRate = meta.audioSampleRate;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n sampleRate >>> 8 & 0xFF, // Audio sample rate\n sampleRate & 0xFF, 0x00, 0x00]);\n return MP4.box(MP4.types['.mp3'], data);\n };\n\n MP4.mp4a = function mp4a(meta) {\n var channelCount = meta.channelCount;\n var sampleRate = meta.audioSampleRate;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n sampleRate >>> 8 & 0xFF, // Audio sample rate\n sampleRate & 0xFF, 0x00, 0x00]);\n return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n };\n\n MP4.esds = function esds(meta) {\n var config = meta.config || [];\n var configSize = config.length;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version 0 + flags\n 0x03, // descriptor_type\n 0x17 + configSize, // length3\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n 0x04, // descriptor_type\n 0x0F + configSize, // length\n 0x40, // codec: mpeg4_audio\n 0x15, // stream_type: Audio\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n 0x05 // descriptor_type\n ].concat([configSize]).concat(config).concat([0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n return MP4.box(MP4.types.esds, data);\n };\n\n MP4.avc1 = function avc1(meta) {\n var avcc = meta.avcc;\n var width = meta.codecWidth,\n height = meta.codecHeight;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // pre_defined(2) + reserved(2)\n 0x00, 0x00, 0x00, 0x00, // pre_defined: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, width >>> 8 & 0xFF, // width: 2 bytes\n width & 0xFF, height >>> 8 & 0xFF, // height: 2 bytes\n height & 0xFF, 0x00, 0x48, 0x00, 0x00, // horizresolution: 4 bytes\n 0x00, 0x48, 0x00, 0x00, // vertresolution: 4 bytes\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n 0x00, 0x01, // frame_count\n 0x0A, // strlen\n 0x78, 0x71, 0x71, 0x2F, // compressorname: 32 bytes\n 0x66, 0x6C, 0x76, 0x2E, 0x6A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, // depth\n 0xFF, 0xFF // pre_defined = -1\n ]);\n return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc));\n } // Movie Extends box\n ;\n\n MP4.mvex = function mvex(meta) {\n return MP4.box(MP4.types.mvex, MP4.trex(meta));\n } // Track Extends box\n ;\n\n MP4.trex = function trex(meta) {\n var trackId = meta.id;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n trackId >>> 24 & 0xFF, // track_ID\n trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]);\n return MP4.box(MP4.types.trex, data);\n } // Movie fragment box\n ;\n\n MP4.moof = function moof(track, baseMediaDecodeTime) {\n return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime));\n };\n\n MP4.mfhd = function mfhd(sequenceNumber) {\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, sequenceNumber >>> 24 & 0xFF, // sequence_number: int32\n sequenceNumber >>> 16 & 0xFF, sequenceNumber >>> 8 & 0xFF, sequenceNumber & 0xFF]);\n return MP4.box(MP4.types.mfhd, data);\n } // Track fragment box\n ;\n\n MP4.traf = function traf(track, baseMediaDecodeTime) {\n var trackId = track.id; // Track fragment header box\n\n var tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) & flags\n trackId >>> 24 & 0xFF, // track_ID\n trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF])); // Track Fragment Decode Time\n\n var tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) & flags\n baseMediaDecodeTime >>> 24 & 0xFF, // baseMediaDecodeTime: int32\n baseMediaDecodeTime >>> 16 & 0xFF, baseMediaDecodeTime >>> 8 & 0xFF, baseMediaDecodeTime & 0xFF]));\n var sdtp = MP4.sdtp(track);\n var trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n } // Sample Dependency Type box\n ;\n\n MP4.sdtp = function sdtp(track) {\n var samples = track.samples || [];\n var sampleCount = samples.length;\n var data = new Uint8Array(4 + sampleCount); // 0~4 bytes: version(0) & flags\n\n for (var i = 0; i < sampleCount; i++) {\n var flags = samples[i].flags;\n data[i + 4] = flags.isLeading << 6 | // is_leading: 2 (bit)\n flags.dependsOn << 4 // sample_depends_on\n | flags.isDependedOn << 2 // sample_is_depended_on\n | flags.hasRedundancy; // sample_has_redundancy\n }\n\n return MP4.box(MP4.types.sdtp, data);\n } // Track fragment run box\n ;\n\n MP4.trun = function trun(track, offset) {\n var samples = track.samples || [];\n var sampleCount = samples.length;\n var dataSize = 12 + 16 * sampleCount;\n var data = new Uint8Array(dataSize);\n offset += 8 + dataSize;\n data.set([0x00, 0x00, 0x0F, 0x01, // version(0) & flags\n sampleCount >>> 24 & 0xFF, // sample_count\n sampleCount >>> 16 & 0xFF, sampleCount >>> 8 & 0xFF, sampleCount & 0xFF, offset >>> 24 & 0xFF, // data_offset\n offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF], 0);\n\n for (var i = 0; i < sampleCount; i++) {\n var duration = samples[i].duration;\n var size = samples[i].size;\n var flags = samples[i].flags;\n var cts = samples[i].cts;\n data.set([duration >>> 24 & 0xFF, // sample_duration\n duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, size >>> 24 & 0xFF, // sample_size\n size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, flags.isLeading << 2 | flags.dependsOn, // sample_flags\n flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.isNonSync, 0x00, 0x00, // sample_degradation_priority\n cts >>> 24 & 0xFF, // sample_composition_time_offset\n cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF], 12 + 16 * i);\n }\n\n return MP4.box(MP4.types.trun, data);\n };\n\n MP4.mdat = function mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n };\n\n return MP4;\n}();\n\nMP4.init();\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP4);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/remux/mp4-generator.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/remux/mp4-remuxer.js":
|
||
/*!***************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/remux/mp4-remuxer.js ***!
|
||
\***************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mp4-generator.js */ \"./src/FlvPlayer/flv.js/remux/mp4-generator.js\");\n/* harmony import */ var _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./aac-silent.js */ \"./src/FlvPlayer/flv.js/remux/aac-silent.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/media-segment-info.js */ \"./src/FlvPlayer/flv.js/core/media-segment-info.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\n\n\n // Fragmented mp4 remuxer\n\nvar MP4Remuxer = /*#__PURE__*/function () {\n function MP4Remuxer(config) {\n this.TAG = 'MP4Remuxer';\n this._config = config;\n this._isLive = config.isLive === true ? true : false;\n this._dtsBase = -1;\n this._dtsBaseInited = false;\n this._audioDtsBase = Infinity;\n this._videoDtsBase = Infinity;\n this._audioNextDts = undefined;\n this._videoNextDts = undefined;\n this._audioStashedLastSample = null;\n this._videoStashedLastSample = null;\n this._audioMeta = null;\n this._videoMeta = null;\n this._adjustPts = 0; //gavin\n\n this._lastAdjustVideoPts = 0;\n this._lastVideoPts = 0;\n this._audioSegmentInfoList = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"MediaSegmentInfoList\"]('audio');\n this._videoSegmentInfoList = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"MediaSegmentInfoList\"]('video');\n this._onInitSegment = null;\n this._onMediaSegment = null; // Workaround for chrome < 50: Always force first sample as a Random Access Point in media segment\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412\n\n this._forceFirstIDR = _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chrome && (_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version.major < 50 || _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version.major === 50 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version.build < 2661) ? true : false; // Workaround for IE11/Edge: Fill silent aac frame after keyframe-seeking\n // Make audio beginDts equals with video beginDts, in order to fix seek freeze\n\n this._fillSilentAfterSeek = _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].msedge || _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].msie; // While only FireFox supports 'audio/mp4, codecs=\"mp3\"', use 'audio/mpeg' for chrome, safari, ...\n\n this._mp3UseMpegAudio = !_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].firefox;\n this._fillAudioTimestampGap = this._config.fixAudioTimestampGap;\n }\n\n var _proto = MP4Remuxer.prototype;\n\n _proto.destroy = function destroy() {\n this._dtsBase = -1;\n this._dtsBaseInited = false;\n this._audioMeta = null;\n this._videoMeta = null;\n\n this._audioSegmentInfoList.clear();\n\n this._audioSegmentInfoList = null;\n\n this._videoSegmentInfoList.clear();\n\n this._videoSegmentInfoList = null;\n this._onInitSegment = null;\n this._onMediaSegment = null;\n };\n\n _proto.bindDataSource = function bindDataSource(producer) {\n producer.onDataAvailable = this.remux.bind(this);\n producer.onTrackMetadata = this._onTrackMetadataReceived.bind(this);\n return this;\n }\n /* prototype: function onInitSegment(type: string, initSegment: ArrayBuffer): void\r\n InitSegment: {\r\n type: string,\r\n data: ArrayBuffer,\r\n codec: string,\r\n container: string\r\n }\r\n */\n ;\n\n _proto.insertDiscontinuity = function insertDiscontinuity() {\n this._audioNextDts = this._videoNextDts = undefined;\n };\n\n _proto.changeSpeed = function changeSpeed(speedValue) {\n this._adjustPts = speedValue;\n console.log(\"ChangeSpeed: \" + speedValue);\n };\n\n _proto.seek = function seek(originalDts) {\n this._audioStashedLastSample = null;\n this._videoStashedLastSample = null;\n\n this._videoSegmentInfoList.clear();\n\n this._audioSegmentInfoList.clear();\n\n this._dtsBase = -1;\n this._dtsBaseInited = false; //gavin\n\n this._audioDtsBase = Infinity;\n this._videoDtsBase = Infinity;\n this._audioNextDts = undefined;\n this._videoNextDts = undefined;\n this._audioStashedLastSample = null;\n this._videoStashedLastSample = null;\n this._adjustPts = 0; //gavin\n\n this._lastAdjustVideoPts = 0;\n this._lastVideoPts = 0;\n };\n\n _proto.remux = function remux(audioTrack, videoTrack) {\n if (!this._onMediaSegment) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__[\"IllegalStateException\"]('MP4Remuxer: onMediaSegment callback must be specificed!');\n }\n\n if (!this._dtsBaseInited) {\n if (!this._calculateDtsBase(audioTrack, videoTrack)) {\n videoTrack.samples = [];\n audioTrack.samples = [];\n return;\n }\n } //console.log(\"Enter remux video...\");\n\n\n this._remuxVideo(videoTrack); //console.log(\" Leave remux video...\");\n\n\n this._remuxAudio(audioTrack);\n };\n\n _proto._onTrackMetadataReceived = function _onTrackMetadataReceived(type, metadata) {\n var metabox = null; //console.log(\"mp4-remuxer.js::_onTrackMetadataReceived... type[\" + type + \"] metadata:\" + metadata);\n\n var container = 'mp4';\n var codec = metadata.codec;\n\n if (type === 'audio') {\n this._audioMeta = metadata;\n\n if (metadata.codec === 'mp3' && this._mp3UseMpegAudio) {\n // 'audio/mpeg' for MP3 audio track\n container = 'mpeg';\n codec = '';\n metabox = new Uint8Array();\n } else {\n // 'audio/mp4, codecs=\"codec\"'\n metabox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generateInitSegment(metadata);\n }\n } else if (type === 'video') {\n this._videoMeta = metadata;\n metabox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generateInitSegment(metadata);\n } else {\n return;\n } // dispatch metabox (Initialization Segment)\n\n\n if (!this._onInitSegment) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__[\"IllegalStateException\"]('MP4Remuxer: onInitSegment callback must be specified!');\n }\n\n this._onInitSegment(type, {\n type: type,\n data: metabox.buffer,\n codec: codec,\n container: type + \"/\" + container,\n mediaDuration: metadata.duration // in timescale 1000 (milliseconds)\n\n });\n };\n\n _proto._calculateDtsBase = function _calculateDtsBase(audioTrack, videoTrack) {\n if (this._dtsBaseInited) {\n return;\n }\n\n if (audioTrack.samples && audioTrack.samples.length) {\n this._audioDtsBase = audioTrack.samples[0].dts;\n }\n\n if (videoTrack.samples && videoTrack.samples.length) {\n this._videoDtsBase = videoTrack.samples[0].dts;\n }\n\n this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase);\n this._dtsBaseInited = true;\n if (this._dtsBase < 0) return false; //console.log(\"mp4-remuxer.js::set dtsbase: \" + this._dtsBase);\n\n return true;\n };\n\n _proto.flushStashedSamples = function flushStashedSamples() {\n var videoSample = this._videoStashedLastSample;\n var audioSample = this._audioStashedLastSample; //console.log(\"flushStashedSamples...\");\n\n var videoTrack = {\n type: 'video',\n id: 1,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n\n if (videoSample != null) {\n videoTrack.samples.push(videoSample);\n videoTrack.length = videoSample.length;\n }\n\n var audioTrack = {\n type: 'audio',\n id: 2,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n\n if (audioSample != null) {\n audioTrack.samples.push(audioSample);\n audioTrack.length = audioSample.length;\n }\n\n this._videoStashedLastSample = null;\n this._audioStashedLastSample = null;\n\n this._remuxVideo(videoTrack, true);\n\n this._remuxAudio(audioTrack, true);\n };\n\n _proto._remuxAudio = function _remuxAudio(audioTrack, force) {\n if (this._audioMeta == null) {\n return;\n }\n\n var track = audioTrack;\n var samples = track.samples;\n var dtsCorrection = undefined;\n var firstDts = -1,\n lastDts = -1,\n lastPts = -1;\n var refSampleDuration = this._audioMeta.refSampleDuration;\n var mpegRawTrack = this._audioMeta.codec === 'mp3' && this._mp3UseMpegAudio;\n var firstSegmentAfterSeek = this._dtsBaseInited && this._audioNextDts === undefined;\n var insertPrefixSilentFrame = false;\n\n if (!samples || samples.length === 0) {\n return;\n }\n\n if (samples.length === 1 && !force) {\n // If [sample count in current batch] === 1 && (force != true)\n // Ignore and keep in demuxer's queue\n return;\n } // else if (force === true) do remux\n\n\n var offset = 0;\n var mdatbox = null;\n var mdatBytes = 0; // calculate initial mdat size\n\n if (mpegRawTrack) {\n // for raw mpeg buffer\n offset = 0;\n mdatBytes = track.length;\n } else {\n // for fmp4 mdat box\n offset = 8; // size + type\n\n mdatBytes = 8 + track.length;\n }\n\n var lastSample = null; // Pop the lastSample and waiting for stash\n\n if (samples.length > 1) {\n lastSample = samples.pop();\n mdatBytes -= lastSample.length;\n } // Insert [stashed lastSample in the previous batch] to the front\n\n\n if (this._audioStashedLastSample != null) {\n var sample = this._audioStashedLastSample;\n this._audioStashedLastSample = null;\n samples.unshift(sample);\n mdatBytes += sample.length;\n } // Stash the lastSample of current batch, waiting for next batch\n\n\n if (lastSample != null) {\n this._audioStashedLastSample = lastSample;\n }\n\n var firstSampleOriginalDts = samples[0].dts - this._dtsBase; // calculate dtsCorrection\n\n if (this._audioNextDts) {\n dtsCorrection = firstSampleOriginalDts - this._audioNextDts;\n } else {\n // this._audioNextDts == undefined\n if (this._audioSegmentInfoList.isEmpty()) {\n dtsCorrection = 0;\n\n if (this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty()) {\n if (this._audioMeta.originalCodec !== 'mp3') {\n insertPrefixSilentFrame = true;\n }\n }\n } else {\n var _lastSample = this._audioSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);\n\n if (_lastSample != null) {\n var distance = firstSampleOriginalDts - (_lastSample.originalDts + _lastSample.duration);\n\n if (distance <= 3) {\n distance = 0;\n }\n\n var expectedDts = _lastSample.dts + _lastSample.duration + distance;\n dtsCorrection = firstSampleOriginalDts - expectedDts;\n } else {\n // lastSample == null, cannot found\n dtsCorrection = 0;\n }\n }\n }\n\n if (insertPrefixSilentFrame) {\n // align audio segment beginDts to match with current video segment's beginDts\n var firstSampleDts = firstSampleOriginalDts - dtsCorrection;\n\n var videoSegment = this._videoSegmentInfoList.getLastSegmentBefore(firstSampleOriginalDts);\n\n if (videoSegment != null && videoSegment.beginDts < firstSampleDts) {\n var silentUnit = _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);\n\n if (silentUnit) {\n var dts = videoSegment.beginDts;\n var silentFrameDuration = firstSampleDts - videoSegment.beginDts;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, \"InsertPrefixSilentAudio: dts: \" + dts + \", duration: \" + silentFrameDuration);\n samples.unshift({\n unit: silentUnit,\n dts: dts,\n pts: dts\n });\n mdatBytes += silentUnit.byteLength;\n } // silentUnit == null: Cannot generate, skip\n\n } else {\n insertPrefixSilentFrame = false;\n }\n }\n\n var mp4Samples = []; // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples\n\n for (var i = 0; i < samples.length; i++) {\n var _sample = samples[i];\n var unit = _sample.unit;\n var originalDts = _sample.dts - this._dtsBase;\n\n var _dts = originalDts - dtsCorrection;\n\n if (firstDts === -1) {\n firstDts = _dts;\n }\n\n var sampleDuration = 0;\n\n if (i !== samples.length - 1) {\n var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;\n sampleDuration = nextDts - _dts;\n } else {\n // the last sample\n if (lastSample != null) {\n // use stashed sample's dts to calculate sample duration\n var _nextDts = lastSample.dts - this._dtsBase - dtsCorrection;\n\n sampleDuration = _nextDts - _dts;\n } else if (mp4Samples.length >= 1) {\n // use second last sample duration\n sampleDuration = mp4Samples[mp4Samples.length - 1].duration;\n } else {\n // the only one sample, use reference sample duration\n sampleDuration = Math.floor(refSampleDuration);\n }\n }\n\n var needFillSilentFrames = false;\n var silentFrames = null; // Silent frame generation, if large timestamp gap detected && config.fixAudioTimestampGap\n\n if (sampleDuration > refSampleDuration * 1.5 && this._audioMeta.codec !== 'mp3' && this._fillAudioTimestampGap && !_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].safari) {\n // We need to insert silent frames to fill timestamp gap\n needFillSilentFrames = true;\n var delta = Math.abs(sampleDuration - refSampleDuration);\n var frameCount = Math.ceil(delta / refSampleDuration);\n var currentDts = _dts + refSampleDuration; // Notice: in float\n\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Large audio timestamp gap detected, may cause AV sync to drift. ' + 'Silent frames will be generated to avoid unsync.\\n' + (\"dts: \" + (_dts + sampleDuration) + \" ms, expected: \" + (_dts + Math.round(refSampleDuration)) + \" ms, \") + (\"delta: \" + Math.round(delta) + \" ms, generate: \" + frameCount + \" frames\") + (\"sampleDuration: \" + sampleDuration + \" ms, refSampleDuration: \" + refSampleDuration));\n\n var _silentUnit = _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);\n\n if (_silentUnit == null) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Unable to generate silent frame for ' + (this._audioMeta.originalCodec + \" with \" + this._audioMeta.channelCount + \" channels, repeat last frame\")); // Repeat last frame\n\n _silentUnit = unit;\n }\n\n silentFrames = [];\n\n for (var j = 0; j < frameCount; j++) {\n var intDts = Math.round(currentDts); // round to integer\n\n if (silentFrames.length > 0) {\n // Set previous frame sample duration\n var previousFrame = silentFrames[silentFrames.length - 1];\n previousFrame.duration = intDts - previousFrame.dts;\n }\n\n var frame = {\n dts: intDts,\n pts: intDts,\n cts: 0,\n unit: _silentUnit,\n size: _silentUnit.byteLength,\n duration: 0,\n // wait for next sample\n originalDts: originalDts,\n flags: {\n isLeading: 0,\n dependsOn: 1,\n isDependedOn: 0,\n hasRedundancy: 0\n }\n };\n silentFrames.push(frame);\n mdatBytes += frame.size;\n currentDts += refSampleDuration;\n } // last frame: align end time to next frame dts\n\n\n var lastFrame = silentFrames[silentFrames.length - 1];\n lastFrame.duration = _dts + sampleDuration - lastFrame.dts; // silentFrames.forEach((frame) => {\n // Log.w(this.TAG, `SilentAudio: dts: ${frame.dts}, duration: ${frame.duration}`);\n // });\n // Set correct sample duration for current frame\n\n sampleDuration = Math.round(refSampleDuration);\n } //console.log(\"mp4-remuxer.js:: audio sampleDuration[\" + sampleDuration + \"]\");\n //console.log(\"mp4-remuxer.js:: audio length: \" + sample.unit.byteLength + \" sample.pts[\" + dts + \"]\");\n\n\n mp4Samples.push({\n dts: _dts,\n pts: _dts,\n cts: 0,\n unit: _sample.unit,\n size: _sample.unit.byteLength,\n duration: sampleDuration,\n originalDts: originalDts,\n flags: {\n isLeading: 0,\n dependsOn: 1,\n isDependedOn: 0,\n hasRedundancy: 0\n }\n });\n\n if (needFillSilentFrames) {\n // Silent frames should be inserted after wrong-duration frame\n mp4Samples.push.apply(mp4Samples, silentFrames);\n }\n } // allocate mdatbox\n\n\n if (mpegRawTrack) {\n // allocate for raw mpeg buffer\n mdatbox = new Uint8Array(mdatBytes);\n } else {\n // allocate for fmp4 mdat box\n mdatbox = new Uint8Array(mdatBytes); // size field\n\n mdatbox[0] = mdatBytes >>> 24 & 0xFF;\n mdatbox[1] = mdatBytes >>> 16 & 0xFF;\n mdatbox[2] = mdatBytes >>> 8 & 0xFF;\n mdatbox[3] = mdatBytes & 0xFF; // type field (fourCC)\n\n mdatbox.set(_mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].types.mdat, 4);\n } // Write samples into mdatbox\n\n\n for (var _i = 0; _i < mp4Samples.length; _i++) {\n var _unit = mp4Samples[_i].unit;\n mdatbox.set(_unit, offset);\n offset += _unit.byteLength;\n }\n\n var latest = mp4Samples[mp4Samples.length - 1];\n lastDts = latest.dts + latest.duration;\n this._audioNextDts = lastDts; // fill media segment info & add to info list\n\n var info = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"MediaSegmentInfo\"]();\n info.beginDts = firstDts;\n info.endDts = lastDts;\n info.beginPts = firstDts;\n info.endPts = lastDts;\n info.originalBeginDts = mp4Samples[0].originalDts;\n info.originalEndDts = latest.originalDts + latest.duration;\n info.firstSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, false);\n info.lastSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](latest.dts, latest.pts, latest.duration, latest.originalDts, false);\n\n if (!this._isLive) {\n this._audioSegmentInfoList.append(info);\n }\n\n track.samples = mp4Samples;\n track.sequenceNumber++;\n var moofbox = null;\n\n if (mpegRawTrack) {\n // Generate empty buffer, because useless for raw mpeg\n moofbox = new Uint8Array();\n } else {\n // Generate moof for fmp4 segment\n moofbox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].moof(track, firstDts);\n }\n\n track.samples = [];\n track.length = 0;\n var segment = {\n type: 'audio',\n data: this._mergeBoxes(moofbox, mdatbox).buffer,\n sampleCount: mp4Samples.length,\n info: info\n };\n\n if (mpegRawTrack && firstSegmentAfterSeek) {\n // For MPEG audio stream in MSE, if seeking occurred, before appending new buffer\n // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.\n segment.timestampOffset = firstDts;\n }\n\n this._onMediaSegment('audio', segment);\n };\n\n _proto._remuxVideo = function _remuxVideo(videoTrack, force) {\n if (this._videoMeta == null) {\n return;\n }\n\n var track = videoTrack;\n var samples = track.samples;\n var dtsCorrection = undefined;\n var firstDts = -1,\n lastDts = -1;\n var firstPts = -1,\n lastPts = -1;\n\n if (!samples || samples.length === 0) {\n return;\n } //console.log(\"mp4-remuxer.js::remuxVideo: \" + samples.length);\n\n\n if (samples.length === 1 && !force) {\n // If [sample count in current batch] === 1 && (force != true)\n // Ignore and keep in demuxer's queue\n return;\n } // else if (force === true) do remux\n\n\n var offset = 8;\n var mdatbox = null;\n var mdatBytes = 8 + videoTrack.length; //console.log(\"mdatBytes: videoTrack.length: 8+\" + videoTrack.length + \" = \" + mdatBytes);\n\n var lastSample = null; // Pop the lastSample and waiting for stash\n\n if (samples.length > 1) {\n lastSample = samples.pop();\n mdatBytes -= lastSample.length; //console.log(\" mdatBytes-: \" + lastSample.length + \" = \" + mdatBytes);\n } // Insert [stashed lastSample in the previous batch] to the front\n\n\n if (this._videoStashedLastSample != null) {\n var sample = this._videoStashedLastSample;\n this._videoStashedLastSample = null;\n samples.unshift(sample);\n mdatBytes += sample.length; //console.log(\" mdatBytes+ \" + sample.length + \" = \" + mdatBytes);\n } // Stash the lastSample of current batch, waiting for next batch\n\n\n if (lastSample != null) {\n this._videoStashedLastSample = lastSample;\n }\n\n var firstSampleOriginalDts = samples[0].dts - this._dtsBase; // calculate dtsCorrection\n\n if (this._videoNextDts) {\n dtsCorrection = firstSampleOriginalDts - this._videoNextDts;\n } else {\n // this._videoNextDts == undefined\n if (this._videoSegmentInfoList.isEmpty()) {\n dtsCorrection = 0;\n } else {\n var _lastSample2 = this._videoSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);\n\n if (_lastSample2 != null) {\n var distance = firstSampleOriginalDts - (_lastSample2.originalDts + _lastSample2.duration);\n\n if (distance <= 3) {\n distance = 0;\n }\n\n var expectedDts = _lastSample2.dts + _lastSample2.duration + distance;\n dtsCorrection = firstSampleOriginalDts - expectedDts;\n } else {\n // lastSample == null, cannot found\n dtsCorrection = 0;\n }\n }\n }\n\n var info = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"MediaSegmentInfo\"]();\n var mp4Samples = []; //console.log(\"samples.length: \" + samples.length);\n // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples\n\n for (var i = 0; i < samples.length; i++) {\n var _sample2 = samples[i];\n var originalDts = _sample2.dts - this._dtsBase;\n\n if (originalDts < 0) {//console.log(\"ERROR: originalDts<0: \" + originalDts);\n }\n\n var isKeyframe = _sample2.isKeyframe;\n var dts = originalDts - dtsCorrection;\n var cts = _sample2.cts;\n var pts = dts + cts;\n\n if (firstDts === -1) {\n firstDts = dts;\n firstPts = pts;\n }\n\n var sampleDuration = 0;\n\n if (i !== samples.length - 1) {\n var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;\n sampleDuration = nextDts - dts;\n } else {\n // the last sample\n if (lastSample != null) {\n // use stashed sample's dts to calculate sample duration\n var _nextDts2 = lastSample.dts - this._dtsBase - dtsCorrection;\n\n sampleDuration = _nextDts2 - dts;\n } else if (mp4Samples.length >= 1) {\n // use second last sample duration\n sampleDuration = mp4Samples[mp4Samples.length - 1].duration;\n } else {\n // the only one sample, use reference sample duration\n sampleDuration = Math.floor(this._videoMeta.refSampleDuration);\n }\n }\n\n if (isKeyframe) {\n var syncPoint = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](dts, pts, sampleDuration, _sample2.dts, true);\n syncPoint.fileposition = _sample2.fileposition;\n info.appendSyncPoint(syncPoint);\n } //if (sample.units.length > 1) {\n //let idx = 0;\n //for (idx = 0; idx < sample.units.length; idx++) {\n // console.log(\"mp4-remuxer.js:: video sampleDuration[\" + sampleDuration + \"] fileposition[\" + sample.fileposition + \"]\");\n // console.log(\"mp4-remuxer.js:: \" + (idx + 1) + \"/\" + sample.units.length + \" sample.length[\" + sample.units[idx].data.length + \"/\" + sample.length + \"] pts[\" + pts + \"] cts[\" + cts + \"]\");//: \" + sample.units[idx].data);\n //}\n //}\n\n\n mp4Samples.push({\n dts: dts,\n pts: pts,\n cts: cts,\n units: _sample2.units,\n size: _sample2.length,\n isKeyframe: isKeyframe,\n duration: sampleDuration,\n originalDts: originalDts,\n flags: {\n isLeading: 0,\n dependsOn: isKeyframe ? 2 : 1,\n isDependedOn: isKeyframe ? 1 : 0,\n hasRedundancy: 0,\n isNonSync: isKeyframe ? 0 : 1\n }\n });\n } //console.log(\"new mdatbox size: \" + mdatBytes);\n //let newMdatBytes = 8;\n //for (let i = 0; i < mp4Samples.length; i++) {\n // let units = mp4Samples[i].units;\n // for (let j = 0; j < units.length; j++) {\n // let unit = units[j];\n // let data = unit.data;\n // newMdatBytes += data.byteLength;\n // }\n //}\n //console.log(\"newMdatBytes: \" + newMdatBytes);\n // allocate mdatbox\n\n\n mdatbox = new Uint8Array(mdatBytes); //mdatbox = new Uint8Array(newMdatBytes);\n\n mdatbox[0] = mdatBytes >>> 24 & 0xFF;\n mdatbox[1] = mdatBytes >>> 16 & 0xFF;\n mdatbox[2] = mdatBytes >>> 8 & 0xFF;\n mdatbox[3] = mdatBytes & 0xFF;\n mdatbox.set(_mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].types.mdat, 4); // Write samples into mdatbox\n\n for (var _i2 = 0; _i2 < mp4Samples.length; _i2++) {\n var units = mp4Samples[_i2].units;\n\n while (units.length) {\n var unit = units.shift();\n var data = unit.data; //console.log(\"mdatbox.set offset: \" + offset + \" data size:\" + data.byteLength);\n\n mdatbox.set(data, offset);\n offset += data.byteLength;\n }\n }\n\n var latest = mp4Samples[mp4Samples.length - 1];\n lastDts = latest.dts + latest.duration;\n lastPts = latest.pts + latest.duration;\n this._videoNextDts = lastDts; // fill media segment info & add to info list\n\n info.beginDts = firstDts;\n info.endDts = lastDts;\n info.beginPts = firstPts;\n info.endPts = lastPts;\n info.originalBeginDts = mp4Samples[0].originalDts;\n info.originalEndDts = latest.originalDts + latest.duration;\n info.firstSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, mp4Samples[0].isKeyframe);\n info.lastSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](latest.dts, latest.pts, latest.duration, latest.originalDts, latest.isKeyframe);\n\n if (!this._isLive) {\n this._videoSegmentInfoList.append(info);\n }\n\n track.samples = mp4Samples;\n track.sequenceNumber++; // workaround for chrome < 50: force first sample as a random access point\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412\n\n if (this._forceFirstIDR) {\n var flags = mp4Samples[0].flags;\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n }\n\n var moofbox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].moof(track, firstDts);\n track.samples = [];\n track.length = 0;\n\n this._onMediaSegment('video', {\n type: 'video',\n data: this._mergeBoxes(moofbox, mdatbox).buffer,\n sampleCount: mp4Samples.length,\n info: info\n });\n };\n\n _proto._mergeBoxes = function _mergeBoxes(moof, mdat) {\n var result = new Uint8Array(moof.byteLength + mdat.byteLength);\n result.set(moof, 0);\n result.set(mdat, moof.byteLength);\n return result;\n };\n\n _createClass(MP4Remuxer, [{\n key: \"onInitSegment\",\n get: function get() {\n return this._onInitSegment;\n },\n set: function set(callback) {\n this._onInitSegment = callback;\n }\n /* prototype: function onMediaSegment(type: string, mediaSegment: MediaSegment): void\r\n MediaSegment: {\r\n type: string,\r\n data: ArrayBuffer,\r\n sampleCount: int32\r\n info: MediaSegmentInfo\r\n }\r\n */\n\n }, {\n key: \"onMediaSegment\",\n get: function get() {\n return this._onMediaSegment;\n },\n set: function set(callback) {\n this._onMediaSegment = callback;\n }\n }]);\n\n return MP4Remuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP4Remuxer);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/remux/mp4-remuxer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/utils/browser.js":
|
||
/*!***********************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/utils/browser.js ***!
|
||
\***********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar Browser = {};\n\nfunction detect() {\n // modified from jquery-browser-plugin\n var ua = self.navigator.userAgent.toLowerCase();\n var match = /(edge)\\/([\\w.]+)/.exec(ua) || /(opr)[\\/]([\\w.]+)/.exec(ua) || /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(iemobile)[\\/]([\\w.]+)/.exec(ua) || /(version)(applewebkit)[ \\/]([\\w.]+).*(safari)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+).*(version)[ \\/]([\\w.]+).*(safari)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || ua.indexOf('trident') >= 0 && /(rv)(?::| )([\\w.]+)/.exec(ua) || ua.indexOf('compatible') < 0 && /(firefox)[ \\/]([\\w.]+)/.exec(ua) || [];\n var platform_match = /(ipad)/.exec(ua) || /(ipod)/.exec(ua) || /(windows phone)/.exec(ua) || /(iphone)/.exec(ua) || /(kindle)/.exec(ua) || /(android)/.exec(ua) || /(windows)/.exec(ua) || /(mac)/.exec(ua) || /(linux)/.exec(ua) || /(cros)/.exec(ua) || [];\n var matched = {\n browser: match[5] || match[3] || match[1] || '',\n version: match[2] || match[4] || '0',\n majorVersion: match[4] || match[2] || '0',\n platform: platform_match[0] || ''\n };\n var browser = {};\n\n if (matched.browser) {\n browser[matched.browser] = true;\n var versionArray = matched.majorVersion.split('.');\n browser.version = {\n major: parseInt(matched.majorVersion, 10),\n string: matched.version\n };\n\n if (versionArray.length > 1) {\n browser.version.minor = parseInt(versionArray[1], 10);\n }\n\n if (versionArray.length > 2) {\n browser.version.build = parseInt(versionArray[2], 10);\n }\n }\n\n if (matched.platform) {\n browser[matched.platform] = true;\n }\n\n if (browser.chrome || browser.opr || browser.safari) {\n browser.webkit = true;\n } // MSIE. IE11 has 'rv' identifer\n\n\n if (browser.rv || browser.iemobile) {\n if (browser.rv) {\n delete browser.rv;\n }\n\n var msie = 'msie';\n matched.browser = msie;\n browser[msie] = true;\n } // Microsoft Edge\n\n\n if (browser.edge) {\n delete browser.edge;\n var msedge = 'msedge';\n matched.browser = msedge;\n browser[msedge] = true;\n } // Opera 15+\n\n\n if (browser.opr) {\n var opera = 'opera';\n matched.browser = opera;\n browser[opera] = true;\n } // Stock android browsers are marked as Safari\n\n\n if (browser.safari && browser.android) {\n var android = 'android';\n matched.browser = android;\n browser[android] = true;\n }\n\n browser.name = matched.browser;\n browser.platform = matched.platform;\n\n for (var key in Browser) {\n if (Browser.hasOwnProperty(key)) {\n delete Browser[key];\n }\n }\n\n Object.assign(Browser, browser);\n}\n\ndetect();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Browser);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/utils/browser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/utils/exception.js":
|
||
/*!*************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/utils/exception.js ***!
|
||
\*************************************************/
|
||
/*! exports provided: RuntimeException, IllegalStateException, InvalidArgumentException, NotImplementedException */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RuntimeException\", function() { return RuntimeException; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IllegalStateException\", function() { return IllegalStateException; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InvalidArgumentException\", function() { return InvalidArgumentException; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NotImplementedException\", function() { return NotImplementedException; });\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar RuntimeException = /*#__PURE__*/function () {\n function RuntimeException(message) {\n this._message = message;\n }\n\n var _proto = RuntimeException.prototype;\n\n _proto.toString = function toString() {\n return this.name + ': ' + this.message;\n };\n\n _createClass(RuntimeException, [{\n key: \"name\",\n get: function get() {\n return 'RuntimeException';\n }\n }, {\n key: \"message\",\n get: function get() {\n return this._message;\n }\n }]);\n\n return RuntimeException;\n}();\nvar IllegalStateException = /*#__PURE__*/function (_RuntimeException) {\n _inheritsLoose(IllegalStateException, _RuntimeException);\n\n function IllegalStateException(message) {\n return _RuntimeException.call(this, message) || this;\n }\n\n _createClass(IllegalStateException, [{\n key: \"name\",\n get: function get() {\n return 'IllegalStateException';\n }\n }]);\n\n return IllegalStateException;\n}(RuntimeException);\nvar InvalidArgumentException = /*#__PURE__*/function (_RuntimeException2) {\n _inheritsLoose(InvalidArgumentException, _RuntimeException2);\n\n function InvalidArgumentException(message) {\n return _RuntimeException2.call(this, message) || this;\n }\n\n _createClass(InvalidArgumentException, [{\n key: \"name\",\n get: function get() {\n return 'InvalidArgumentException';\n }\n }]);\n\n return InvalidArgumentException;\n}(RuntimeException);\nvar NotImplementedException = /*#__PURE__*/function (_RuntimeException3) {\n _inheritsLoose(NotImplementedException, _RuntimeException3);\n\n function NotImplementedException(message) {\n return _RuntimeException3.call(this, message) || this;\n }\n\n _createClass(NotImplementedException, [{\n key: \"name\",\n get: function get() {\n return 'NotImplementedException';\n }\n }]);\n\n return NotImplementedException;\n}(RuntimeException);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/utils/exception.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/utils/logger.js":
|
||
/*!**********************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/utils/logger.js ***!
|
||
\**********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar Log = /*#__PURE__*/function () {\n function Log() {}\n\n Log.e = function e(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'error', str);\n }\n\n if (!Log.ENABLE_ERROR) {\n return;\n }\n\n if (console.error) {\n console.error(str);\n } else if (console.warn) {\n console.warn(str);\n } else {\n console.log(str);\n }\n };\n\n Log.i = function i(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'info', str);\n }\n\n if (!Log.ENABLE_INFO) {\n return;\n }\n\n if (console.info) {\n console.info(str);\n } else {\n console.log(str);\n }\n };\n\n Log.w = function w(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'warn', str);\n }\n\n if (!Log.ENABLE_WARN) {\n return;\n }\n\n if (console.warn) {\n console.warn(str);\n } else {\n console.log(str);\n }\n };\n\n Log.d = function d(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'debug', str);\n }\n\n if (!Log.ENABLE_DEBUG) {\n return;\n }\n\n if (console.debug) {\n console.debug(str);\n } else {\n console.log(str);\n }\n };\n\n Log.v = function v(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'verbose', str);\n }\n\n if (!Log.ENABLE_VERBOSE) {\n return;\n }\n\n console.log(str);\n };\n\n return Log;\n}();\n\nLog.GLOBAL_TAG = 'EasyPlayer.js';\nLog.FORCE_GLOBAL_TAG = false;\nLog.ENABLE_ERROR = true;\nLog.ENABLE_INFO = true;\nLog.ENABLE_WARN = true;\nLog.ENABLE_DEBUG = true;\nLog.ENABLE_VERBOSE = true;\nLog.ENABLE_CALLBACK = false;\nLog.emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Log);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/utils/logger.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/utils/logging-control.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/utils/logging-control.js ***!
|
||
\*******************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/_events@3.2.0@events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\n\nvar LoggingControl = /*#__PURE__*/function () {\n function LoggingControl() {}\n\n LoggingControl.getConfig = function getConfig() {\n return {\n globalTag: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].GLOBAL_TAG,\n forceGlobalTag: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORCE_GLOBAL_TAG,\n enableVerbose: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE,\n enableDebug: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG,\n enableInfo: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO,\n enableWarn: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN,\n enableError: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR,\n enableCallback: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_CALLBACK\n };\n };\n\n LoggingControl.applyConfig = function applyConfig(config) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].GLOBAL_TAG = config.globalTag;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORCE_GLOBAL_TAG = config.forceGlobalTag;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE = config.enableVerbose;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG = config.enableDebug;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO = config.enableInfo;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN = config.enableWarn;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR = config.enableError;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_CALLBACK = config.enableCallback;\n };\n\n LoggingControl._notifyChange = function _notifyChange() {\n var emitter = LoggingControl.emitter;\n\n if (emitter.listenerCount('change') > 0) {\n var config = LoggingControl.getConfig();\n emitter.emit('change', config);\n }\n };\n\n LoggingControl.registerListener = function registerListener(listener) {\n LoggingControl.emitter.addListener('change', listener);\n };\n\n LoggingControl.removeListener = function removeListener(listener) {\n LoggingControl.emitter.removeListener('change', listener);\n };\n\n LoggingControl.addLogListener = function addLogListener(listener) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.addListener('log', listener);\n\n if (_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.listenerCount('log') > 0) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_CALLBACK = true;\n\n LoggingControl._notifyChange();\n }\n };\n\n LoggingControl.removeLogListener = function removeLogListener(listener) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.removeListener('log', listener);\n\n if (_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.listenerCount('log') === 0) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_CALLBACK = false;\n\n LoggingControl._notifyChange();\n }\n };\n\n _createClass(LoggingControl, null, [{\n key: \"forceGlobalTag\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORCE_GLOBAL_TAG;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORCE_GLOBAL_TAG = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"globalTag\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].GLOBAL_TAG;\n },\n set: function set(tag) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].GLOBAL_TAG = tag;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableAll\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE && _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG && _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO && _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN && _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE = enable;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG = enable;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO = enable;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN = enable;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableDebug\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableVerbose\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableInfo\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableWarn\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableError\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR = enable;\n\n LoggingControl._notifyChange();\n }\n }]);\n\n return LoggingControl;\n}();\n\nLoggingControl.emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n/* harmony default export */ __webpack_exports__[\"default\"] = (LoggingControl);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/utils/logging-control.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/utils/polyfill.js":
|
||
/*!************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/utils/polyfill.js ***!
|
||
\************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nvar Polyfill = /*#__PURE__*/function () {\n function Polyfill() {}\n\n Polyfill.install = function install() {\n // ES6 Object.setPrototypeOf\n Object.setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n }; // ES6 Object.assign\n\n\n Object.assign = Object.assign || function (target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n\n return output;\n }; // ES6 Promise (missing support in IE11)\n\n\n if (typeof self.Promise !== 'function') {\n __webpack_require__(/*! es6-promise */ \"./node_modules/_es6-promise@4.2.8@es6-promise/dist/es6-promise.js\").polyfill();\n }\n };\n\n return Polyfill;\n}();\n\nPolyfill.install();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polyfill);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/utils/polyfill.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/flv.js/utils/utf8-conv.js":
|
||
/*!*************************************************!*\
|
||
!*** ./src/FlvPlayer/flv.js/utils/utf8-conv.js ***!
|
||
\*************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*\r\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\r\n *\r\n * This file is derived from C++ project libWinTF8 (https://github.com/m13253/libWinTF8)\r\n * @author zheng qian <xqq@xqq.im>\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\nfunction checkContinuation(uint8array, start, checkLength) {\n var array = uint8array;\n\n if (start + checkLength < array.length) {\n while (checkLength--) {\n if ((array[++start] & 0xC0) !== 0x80) return false;\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction decodeUTF8(uint8array) {\n var out = [];\n var input = uint8array;\n var i = 0;\n var length = uint8array.length;\n\n while (i < length) {\n if (input[i] < 0x80) {\n out.push(String.fromCharCode(input[i]));\n ++i;\n continue;\n } else if (input[i] < 0xC0) {// fallthrough\n } else if (input[i] < 0xE0) {\n if (checkContinuation(input, i, 1)) {\n var ucs4 = (input[i] & 0x1F) << 6 | input[i + 1] & 0x3F;\n\n if (ucs4 >= 0x80) {\n out.push(String.fromCharCode(ucs4 & 0xFFFF));\n i += 2;\n continue;\n }\n }\n } else if (input[i] < 0xF0) {\n if (checkContinuation(input, i, 2)) {\n var _ucs = (input[i] & 0xF) << 12 | (input[i + 1] & 0x3F) << 6 | input[i + 2] & 0x3F;\n\n if (_ucs >= 0x800 && (_ucs & 0xF800) !== 0xD800) {\n out.push(String.fromCharCode(_ucs & 0xFFFF));\n i += 3;\n continue;\n }\n }\n } else if (input[i] < 0xF8) {\n if (checkContinuation(input, i, 3)) {\n var _ucs2 = (input[i] & 0x7) << 18 | (input[i + 1] & 0x3F) << 12 | (input[i + 2] & 0x3F) << 6 | input[i + 3] & 0x3F;\n\n if (_ucs2 > 0x10000 && _ucs2 < 0x110000) {\n _ucs2 -= 0x10000;\n out.push(String.fromCharCode(_ucs2 >>> 10 | 0xD800));\n out.push(String.fromCharCode(_ucs2 & 0x3FF | 0xDC00));\n i += 4;\n continue;\n }\n }\n }\n\n out.push(String.fromCharCode(0xFFFD));\n ++i;\n }\n\n return out.join('');\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (decodeUTF8);\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/flv.js/utils/utf8-conv.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/m3u8parser/line-stream.js":
|
||
/*!*************************************************!*\
|
||
!*** ./src/FlvPlayer/m3u8parser/line-stream.js ***!
|
||
\*************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LineStream; });\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @videojs/vhs-utils/dist/stream.js */ \"./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/stream.js\");\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\r\n * @file m3u8/line-stream.js\r\n */\n\n/**\r\n * A stream that buffers string input and generates a `data` event for each\r\n * line.\r\n *\r\n * @class LineStream\r\n * @extends Stream\r\n */\n\nvar LineStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(LineStream, _Stream);\n\n function LineStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.buffer = '';\n return _this;\n }\n /**\r\n * Add new data to be parsed.\r\n *\r\n * @param {string} data the text to process\r\n */\n\n\n var _proto = LineStream.prototype;\n\n _proto.push = function push(data) {\n var nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n };\n\n return LineStream;\n}(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n\n\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/m3u8parser/line-stream.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/m3u8parser/parse-stream.js":
|
||
/*!**************************************************!*\
|
||
!*** ./src/FlvPlayer/m3u8parser/parse-stream.js ***!
|
||
\**************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ParseStream; });\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @videojs/vhs-utils/dist/stream.js */ \"./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/stream.js\");\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\r\n * @file m3u8/parse-stream.js\r\n */\n\n/**\r\n * \"forgiving\" attribute list psuedo-grammar:\r\n * attributes -> keyvalue (',' keyvalue)*\r\n * keyvalue -> key '=' value\r\n * key -> [^=]*\r\n * value -> '\"' [^\"]* '\"' | [^,]*\r\n */\n\nvar attributeSeparator = function attributeSeparator() {\n var key = '[^=]*';\n var value = '\"[^\"]*\"|[^,]*';\n var keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\r\n * Parse attributes from a line given the separator\r\n *\r\n * @param {string} attributes the attribute line to parse\r\n */\n\n\nvar parseAttributes = function parseAttributes(attributes) {\n // split the string using attributes as the separator\n var attrs = attributes.split(attributeSeparator());\n var result = {};\n var i = attrs.length;\n var attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\r\n * A line-level M3U8 parser event stream. It expects to receive input one\r\n * line at a time and performs a context-free parse of its contents. A stream\r\n * interpretation of a manifest can be useful if the manifest is expected to\r\n * be too large to fit comfortably into memory or the entirety of the input\r\n * is not immediately available. Otherwise, it's probably much easier to work\r\n * with a regular `Parser` object.\r\n *\r\n * Produces `data` events with an object that captures the parser's\r\n * interpretation of the input. That object has a property `tag` that is one\r\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\r\n * property, `line`, which captures the entirety of the input without\r\n * interpretation. Comments similarly have a single additional property\r\n * `text` which is the input without the leading `#`.\r\n *\r\n * Tags always have a property `tagType` which is the lower-cased version of\r\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\r\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\r\n * tags are given the tag type `unknown` and a single additional property\r\n * `data` with the remainder of the input.\r\n *\r\n * @class ParseStream\r\n * @extends Stream\r\n */\n\n\nvar ParseStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(ParseStream, _Stream);\n\n function ParseStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.customParsers = [];\n _this.tagMappers = [];\n return _this;\n }\n /**\r\n * Parses an additional line of input.\r\n *\r\n * @param {string} line a single line of an M3U8 file to parse\r\n */\n\n\n var _proto = ParseStream.prototype;\n\n _proto.push = function push(line) {\n var _this2 = this;\n\n var match;\n var event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n var newLines = this.tagMappers.reduce(function (acc, mapper) {\n var mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(function (newLine) {\n for (var i = 0; i < _this2.customParsers.length; i++) {\n if (_this2.customParsers[i].call(_this2, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n _this2.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n\n return;\n }\n\n match = /^#EXTINF:?([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'totalduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'byterange'\n };\n\n if (match[1]) {\n event.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n event.offset = parseInt(match[2], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MAP:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n var attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n var _attributes$BYTERANGE = attributes.BYTERANGE.split('@'),\n length = _attributes$BYTERANGE[0],\n offset = _attributes$BYTERANGE[1];\n\n event.byterange = {};\n\n if (length) {\n event.byterange.length = parseInt(length, 10);\n }\n\n if (offset) {\n event.byterange.offset = parseInt(offset, 10);\n }\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n var split = event.attributes.RESOLUTION.split('x');\n var resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = resolution;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-KEY:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-START:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n } // unknown tag type\n\n\n _this2.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\r\n * Add a parser for custom headers\r\n *\r\n * @param {Object} options a map of options for the added parser\r\n * @param {RegExp} options.expression a regular expression to match the custom header\r\n * @param {string} options.customType the custom type to register to the output\r\n * @param {Function} [options.dataParser] function to parse the line into an object\r\n * @param {boolean} [options.segment] should tag data be attached to the segment object\r\n */\n ;\n\n _proto.addParser = function addParser(_ref) {\n var _this3 = this;\n\n var expression = _ref.expression,\n customType = _ref.customType,\n dataParser = _ref.dataParser,\n segment = _ref.segment;\n\n if (typeof dataParser !== 'function') {\n dataParser = function dataParser(line) {\n return line;\n };\n }\n\n this.customParsers.push(function (line) {\n var match = expression.exec(line);\n\n if (match) {\n _this3.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType: customType,\n segment: segment\n });\n\n return true;\n }\n });\n }\n /**\r\n * Add a custom header mapper\r\n *\r\n * @param {Object} options\r\n * @param {RegExp} options.expression a regular expression to match the custom header\r\n * @param {Function} options.map function to translate tag into a different tag\r\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(_ref2) {\n var expression = _ref2.expression,\n map = _ref2.map;\n\n var mapFn = function mapFn(line) {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n };\n\n return ParseStream;\n}(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n\n\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/m3u8parser/parse-stream.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/FlvPlayer/m3u8parser/parser.js":
|
||
/*!********************************************!*\
|
||
!*** ./src/FlvPlayer/m3u8parser/parser.js ***!
|
||
\********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Parser; });\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @videojs/vhs-utils/dist/stream.js */ \"./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/stream.js\");\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _videojs_vhs_utils_dist_decode_b64_to_uint8_array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @videojs/vhs-utils/dist/decode-b64-to-uint8-array.js */ \"./node_modules/_@videojs_vhs-utils@1.3.0@@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js\");\n/* harmony import */ var _videojs_vhs_utils_dist_decode_b64_to_uint8_array_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_videojs_vhs_utils_dist_decode_b64_to_uint8_array_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _line_stream__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line-stream */ \"./src/FlvPlayer/m3u8parser/line-stream.js\");\n/* harmony import */ var _parse_stream__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parse-stream */ \"./src/FlvPlayer/m3u8parser/parse-stream.js\");\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\r\n * @file m3u8/parser.js\r\n */\n\n\n\n\n/**\r\n * A parser for M3U8 files. The current interpretation of the input is\r\n * exposed as a property `manifest` on parser objects. It's just two lines to\r\n * create and parse a manifest once you have the contents available as a string:\r\n *\r\n * ```js\r\n * var parser = new m3u8.Parser();\r\n * parser.push(xhr.responseText);\r\n * ```\r\n *\r\n * New input can later be applied to update the manifest object by calling\r\n * `push` again.\r\n *\r\n * The parser attempts to create a usable manifest object even if the\r\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\r\n * events during the parse if it encounters input that seems invalid or\r\n * requires some property of the manifest object to be defaulted.\r\n *\r\n * @class Parser\r\n * @extends Stream\r\n */\n\nvar Parser = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(Parser, _Stream);\n\n function Parser() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.lineStream = new _line_stream__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n _this.parseStream = new _parse_stream__WEBPACK_IMPORTED_MODULE_3__[\"default\"]();\n\n _this.lineStream.pipe(_this.parseStream);\n /* eslint-disable consistent-this */\n\n\n var self = _assertThisInitialized(_this);\n /* eslint-enable consistent-this */\n\n\n var uris = [];\n var currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n var currentMap; // if specified, the active decryption key\n\n var _key;\n\n var noop = function noop() {};\n\n var defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n _this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: []\n }; // update the manifest with the m3u8 entry from the parse stream\n\n _this.parseStream.on('data', function (entry) {\n var mediaGroup;\n var rendition;\n ({\n tag: function tag() {\n // switch based on the tag type\n (({\n 'allow-cache': function allowCache() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n byterange: function byterange() {\n var byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n this.trigger('info', {\n message: 'defaulting offset to zero'\n });\n entry.offset = 0;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n },\n endlist: function endlist() {\n this.manifest.endList = true;\n },\n inf: function inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n key: function key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n _key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n var VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = {\n 'com.widevine.alpha': {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: _videojs_vhs_utils_dist_decode_b64_to_uint8_array_js__WEBPACK_IMPORTED_MODULE_1___default()(entry.attributes.URI.split(',')[1])\n }\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n _key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n _key.iv = entry.attributes.IV;\n }\n },\n 'media-sequence': function mediaSequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n 'discontinuity-sequence': function discontinuitySequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n 'playlist-type': function playlistType() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n map: function map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n },\n 'stream-inf': function streamInf() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n Object.assign(currentUri.attributes, entry.attributes);\n },\n media: function media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n discontinuity: function discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n 'program-date-time': function programDateTime() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n },\n targetduration: function targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n },\n totalduration: function totalduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid total duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.totalDuration = entry.duration;\n },\n start: function start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n 'cue-out': function cueOut() {\n currentUri.cueOut = entry.data;\n },\n 'cue-out-cont': function cueOutCont() {\n currentUri.cueOutCont = entry.data;\n },\n 'cue-in': function cueIn() {\n currentUri.cueIn = entry.data;\n }\n })[entry.tagType] || noop).call(self);\n },\n uri: function uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (_key) {\n currentUri.key = _key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // prepare for the next URI\n\n\n currentUri = {};\n },\n comment: function comment() {// comments are not important for playback\n },\n custom: function custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n })[entry.type].call(self);\n });\n\n return _this;\n }\n /**\r\n * Parse the input string and update the manifest object.\r\n *\r\n * @param {string} chunk a potentially incomplete portion of the manifest\r\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.push = function push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\r\n * Flush any remaining input. This can be handy if the last line of an M3U8\r\n * manifest did not contain a trailing newline but the file has been\r\n * completely received.\r\n */\n ;\n\n _proto.end = function end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n }\n /**\r\n * Add an additional parser for non-standard tags\r\n *\r\n * @param {Object} options a map of options for the added parser\r\n * @param {RegExp} options.expression a regular expression to match the custom header\r\n * @param {string} options.type the type to register to the output\r\n * @param {Function} [options.dataParser] function to parse the line into an object\r\n * @param {boolean} [options.segment] should tag data be attached to the segment object\r\n */\n ;\n\n _proto.addParser = function addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\r\n * Add a custom header mapper\r\n *\r\n * @param {Object} options\r\n * @param {RegExp} options.expression a regular expression to match the custom header\r\n * @param {Function} options.map function to translate tag into a different tag\r\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n };\n\n return Parser;\n}(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n\n\n\n//# sourceURL=webpack://WasmPlayer/./src/FlvPlayer/m3u8parser/parser.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/SyncPlayer.js":
|
||
/*!***************************!*\
|
||
!*** ./src/SyncPlayer.js ***!
|
||
\***************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WasmPlayer; });\n/* harmony import */ var _FlvPlayer_EasyFlvPlayer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FlvPlayer/EasyFlvPlayer */ \"./src/FlvPlayer/EasyFlvPlayer.js\");\n/* harmony import */ var _FlvPlayer_flv_js_core_features_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FlvPlayer/flv.js/core/features.js */ \"./src/FlvPlayer/flv.js/core/features.js\");\n/* harmony import */ var _FlvPlayer_flv_js_player_native_player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FlvPlayer/flv.js/player/native-player.js */ \"./src/FlvPlayer/flv.js/player/native-player.js\");\n/* harmony import */ var _font_awesome_4_7_0_css_font_awesome_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./font-awesome-4.7.0/css/font-awesome.css */ \"./src/font-awesome-4.7.0/css/font-awesome.css\");\n/* harmony import */ var _font_awesome_4_7_0_css_font_awesome_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_font_awesome_4_7_0_css_font_awesome_css__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _icon_iconfont_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./icon/iconfont.css */ \"./src/icon/iconfont.css\");\n/* harmony import */ var _icon_iconfont_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_icon_iconfont_css__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _range_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./range.css */ \"./src/range.css\");\n/* harmony import */ var _range_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_range_css__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./common/common */ \"./src/common/common.js\");\n\n\n\n\n\n\n\n\nvar WasmPlayer = /*#__PURE__*/function () {\n function WasmPlayer(url, ID, cbFunc, data) {\n if (data === void 0) {\n data = {};\n }\n\n var _data = data,\n cbUserPtr = _data.cbUserPtr,\n decodeType = _data.decodeType,\n openAudio = _data.openAudio,\n BigPlay = _data.BigPlay,\n Height = _data.Height,\n UnLogo = _data.UnLogo,\n HideKbs = _data.HideKbs,\n cfKbs = _data.cfKbs;\n this.playerInstance = null;\n this.url = url;\n this.UnLogo = UnLogo;\n\n this.callbackFunc = cbFunc || function () {};\n\n ;\n this.fulls = true;\n this.callbackUserPtr = cbUserPtr;\n this.decodeType = 'auto';\n this.version = 'v2.0.20200930';\n this.timeKbps = null;\n this.HideKbs = HideKbs;\n\n this.cfKbs = cfKbs || function () {};\n\n if (decodeType === 'auto' || decodeType === 'soft') {\n this.decodeType = decodeType;\n }\n\n if (!_FlvPlayer_flv_js_core_features_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].supportMSEH264Playback()) {\n this.decodeType = 'soft'; //alert(\"not support mse. change to software decode\");\n }\n\n this.internalTriggerPlay = false; //此处应为true, 则在所有平台上功能表现正常, 如为false,在苹果上则不能自动播放声音, 现应用在win chrome上,暂置为false;\n //var useragent = navigator.userAgent;//.tolowercase();\n\n this.showTimeLabel = false;\n this.seeking = false;\n this.callbackEnd = false;\n this.initH5Flag = false;\n this.currentH5Status = false;\n this.seekTimeSecs = 0;\n this.fullScreenFlag = false;\n this.playerUI = document.getElementById(ID);\n\n if (this.playerUI == null) {\n return;\n }\n\n if (Height) {\n this.playerUI.style = \"color:blue;position:relative;background-color:black;width:100%;height:100%;overflow: hidden;\";\n } else {\n this.playerUI.style = \"color:blue;position:relative;background-color:black;width:100%;padding-top:56.25%;overflow: hidden;\";\n }\n\n this.h5Video = null;\n this.h5Video = document.createElement(\"VIDEO\"); //this.h5Video.style = \"width:100%;height:100%;position:absolute;top:0px;left:0px;background: black;\";\n\n this.h5Video.style = \"width:0%;height:0%;position:absolute;top:0px;left:0px;background: black;\"; //正式发布用该行\n\n this.h5Video.setAttribute('oncontextmenu', 'return false');\n this.playerUI.appendChild(this.h5Video);\n\n if (BigPlay != undefined && BigPlay) {\n //中间大播放按钮\n this.bigPlayBox = document.createElement('div');\n this.bigPlayBox.style = 'display:block';\n this.bigPlayBox.classList = \"bigPlayBox fa fa-play\";\n this.playerUI.appendChild(this.bigPlayBox); // 播放按钮点击事件\n\n var _self = this;\n\n this.bigPlayBox.onclick = function () {\n if (_self.url === \"\") return;\n\n if (_self.playFlag) {\n _self.internalTriggerPlay = false;\n\n if (_self.play(_self.url, 1, _self.seekTimeSecs)) {//_self.playBtn.classList.remove('fa-play');\n //_self.playBtn.classList.add('fa-pause');\n //console.log('play');\n //_self.playFlag = false;\n }\n } else {\n //console.log('pause')\n _self.pause();\n\n _self.bigPlayBox.classList.remove('fa-pause');\n\n _self.bigPlayBox.classList.add('fa-play');\n\n _self.bigPlayBox.title = 'Play';\n\n _self.playBtn.classList.remove('fa-pause');\n\n _self.playBtn.classList.add('fa-play');\n\n _self.bigPlayBox.style = 'display:block';\n _self.playBtn.title = 'Play';\n _self.playFlag = true;\n }\n };\n } //加载动画\n\n\n this.lodingBox = document.createElement('div');\n this.lodingBox.style = 'width:100%;height:100%;position: absolute;left:0px;top:0px;background:rgba(0,0,0,0.6);z-index:9;display:none';\n this.lodingBox.classList = \"lodingBox\";\n this.playerUI.appendChild(this.lodingBox); // 加载动画中间的动画元素\n\n this.conter = document.createElement('div');\n this.conter.classList = 'conter';\n this.lodingBox.appendChild(this.conter);\n this.loding = document.createElement('div');\n this.loding.id = 'load5';\n this.conter.appendChild(this.loding);\n this.lodingTitle = document.createElement('span');\n this.lodingTitle.classList = 'LodingTitle';\n this.lodingTitle.innerHTML = 'Loading...';\n this.conter.appendChild(this.lodingTitle);\n this.offscreenCanvas = null;\n this.canvas = document.createElement('canvas');\n this.canvas.style = \"width:100%;height:100%;position:absolute;top:0px;left:0px;background: black;\"; //正式发布用该行\n //this.canvas.style = \"width:100%;height:50%;position:absolute;top:50%;left:0px;background: red;\";\n\n this.playerUI.appendChild(this.canvas);\n this.timeBox = document.createElement('div');\n this.timeBox.style = \"position: absolute;left: 0px;bottom: 0px;display:flex;width: 100%;display:none;background-color: black;z-index:10;\";\n this.playerUI.appendChild(this.timeBox);\n this.playBtn = document.createElement('span');\n this.playFlag = true;\n this.playBtn.classList = \"fa fa-play\";\n this.playBtn.title = 'Play';\n this.playBtn.style = \"display:inine-block;width: 20px;color: #fff;line-height: 27px;margin: 0 10px;padding:0px 2px;cursor:pointer;text-align:center\";\n this.timeRule = null;\n this.timeTrack = null;\n this.timeLabel = null;\n /*\r\n window.addEventListener(\"onorientationchange\" in window ? \"orientationchange\" : \"resize\", function () {\r\n \tif (window.orientation === 180 || window.orientation === 0) {\r\n \t\talert('竖屏状态!'); \r\n \t}\r\n \tif (window.orientation === 90 || window.orientation === -90) {\r\n \t\talert('横屏状态!'); \r\n \t}\r\n }, false); \r\n */\n // 播放按钮点击事件\n\n var self = this;\n\n this.playBtn.onclick = function () {\n if (self.url === \"\") return;\n\n if (self.playFlag) {\n self.internalTriggerPlay = false;\n\n if (self.play(self.url, 1, self.seekTimeSecs)) {//self.playBtn.classList.remove('fa-play');\n //self.playBtn.classList.add('fa-pause');\n //console.log('play');\n //self.playFlag = false;\n }\n } else {\n //console.log('pause')\n self.pause();\n self.playBtn.classList.remove('fa-pause');\n self.playBtn.classList.add('fa-play');\n self.playBtn.title = 'Play';\n\n if (self.bigPlayBox != undefined) {\n self.bigPlayBox.classList.remove('fa-pause');\n self.bigPlayBox.classList.add('fa-play');\n self.bigPlayBox.style = 'display:block';\n self.bigPlayBox.title = 'Play';\n }\n\n self.playFlag = true;\n }\n };\n\n this.timeBox.appendChild(this.playBtn);\n var stop = document.createElement('span');\n stop.classList = \"fa fa-stop\";\n stop.title = 'Stop'; //停止按钮\n\n stop.onclick = function () {\n self.stop(); //console.log('stop')\n\n self.playBtn.classList.remove('fa-pause');\n self.playBtn.classList.add('fa-play');\n self.playBtn.title = 'Play';\n\n if (self.bigPlayBox != undefined) {\n self.bigPlayBox.classList.remove('fa-pause');\n self.bigPlayBox.classList.add('fa-play');\n self.bigPlayBox.style = 'display:block';\n self.bigPlayBox.title = 'Play';\n }\n\n self.playFlag = true;\n\n if (self.timeTrack) {\n self.timeTrack.value = 0;\n self.timeLabel.innerHTML = '00:00:00/00:00:00';\n }\n };\n\n stop.style = \"display:inine-block;width: 15px;color: #fff;line-height: 27px;margin-right:10px;padding:0px 2px;cursor:pointer;\";\n this.timeBox.appendChild(stop);\n this.soundButton = document.createElement('span');\n this.defaultAudioStatus = openAudio == 1 ? true : false;\n this.enableAudio = openAudio == 1 ? true : false;\n\n if (this.enableAudio) {\n this.soundButton.classList = \"fa fa-volume-up \";\n } else {\n this.soundButton.classList = \"fa fa-volume-off \";\n }\n\n this.soundButton.style = \"display:inine-block;width:23px;color:#fff;line-height: 27px;margin-right:10px; text-align:center;cursor:pointer;\"; // 声音按钮事件\n\n this.soundButton.onclick = function () {\n if (!self.enableAudio) {\n self.openAudio();\n } else {\n self.closeAudio();\n }\n };\n\n this.timeBox.appendChild(this.soundButton);\n var timeRule = document.createElement('span');\n timeRule.classList = 'no-padding';\n timeRule.style = \"display:inine-block;width:100%;display:flex;\";\n this.timeBox.appendChild(timeRule);\n var timeTrack = document.createElement('input');\n timeTrack.classList = \"timeTrack\";\n timeTrack.id = \"timeTrack\";\n timeTrack.type = \"range\";\n timeTrack.style = \"width:100%;-webkit-appearance: none;height:3px;border-radius:3px;cursor:pointer;margin:auto;display:none\";\n timeTrack.value = 0;\n timeRule.appendChild(timeTrack);\n this.timeTrack = timeTrack;\n this.timeRule = timeRule;\n var span1 = document.createElement('span');\n span1.classList = \"padding\";\n span1.style = \"display:inine-block;padding-left:10px;\";\n this.timeBox.appendChild(span1);\n var timeLabel = document.createElement('label');\n timeLabel.style = \"color: #fff;margin: 0 40px 0px 10px;line-height:27px;display:none\";\n timeLabel.innerHTML = '00:00:00/00:00:00';\n span1.appendChild(timeLabel);\n this.timeLabel = timeLabel;\n\n if (this.timeTrack) {\n this.timeTrack.oninput = function () {\n if (!self.seeking) {\n //console.log(\"Seek: \" + self.timeTrack.value);\n self.seekToPercent(self.timeTrack.value, 1);\n }\n };\n\n this.timeTrack.onchange = function () {\n /*\r\n if (!self.seeking) {\r\n \tself.seek(self.timeTrack.value, 1);\r\n }\r\n */\n };\n }\n\n if (!UnLogo || UnLogo === undefined) {\n // 公司水印logo\n this.logo = document.createElement('a');\n this.logo.classList = \"iconfont iconqingxiLOGO\";\n this.logo.title = '青犀视频';\n this.logo.href = 'http://www.tsingsee.com';\n this.logo.target = \"_blank\";\n this.logo.style = \"display:inline-block;color: #fff;font-size:70px;margin-right:40px;line-height: 27px;text-align:center;position:absolute;top:1px;right:0px;cursor:pointer;overflow: hidden;opacity: 1;\";\n this.timeBox.appendChild(this.logo);\n this.detectionLogo(); // 执行检查logo定时器\n } //码率显示\n\n\n this.domKbps = document.createElement(\"div\");\n this.timeBox.appendChild(this.domKbps);\n this.full = document.createElement('span');\n this.full.classList = \"fa fa-expand\";\n this.full.title = 'Fullscreen'; //全屏\n\n this.full.onclick = function () {\n self.fullScreen();\n };\n\n this.full.style = \"color: #fff;width:20px;margin-right: 10px;line-height: 27px;text-align:center;position:absolute;top:0px;right:0px;cursor:pointer\";\n this.timeBox.appendChild(this.full); // 右击菜单\n\n this.Menu = document.createElement('div');\n this.Menu.style = ' position: absolute;left: 0;top: 0;min-width:140px;border-radius: 4px;background:rgba(43, 51, 63, 0.7); color:#fff;font-size:12px;padding:5px 10px;display: none;z-index: 2;';\n this.playerUI.appendChild(this.Menu); // 版本号\n\n var versionNumber = document.createElement('div');\n versionNumber.innerHTML = \"\\u7248\\u672C\\u53F7:\" + this.version;\n this.Menu.appendChild(versionNumber); // 右击事件\n\n var _that = this;\n\n this.playerUI.oncontextmenu = function (e) {\n //鼠标点的坐标\n var oX = e.offsetX;\n var oY = e.offsetY; //菜单出现后的位置\n\n _that.Menu.style.display = \"block\";\n _that.Menu.style.left = oX + \"px\";\n _that.Menu.style.top = oY + \"px\";\n console.dir(e); //阻止浏览器默认事件\n\n return false; //一般点击右键会出现浏览器默认的右键菜单,写了这句代码就可以阻止该默认事件。\n };\n\n this.playerUI.onclick = function (e) {\n var e = e || window.event;\n _that.Menu.style.display = \"none\";\n };\n\n _that.Menu.onclick = function (e) {\n var e = e || window.event;\n e.cancelBubble = true;\n }; // 鼠标进入移出事件\n\n\n var Timer;\n\n this.playerUI.onmousemove = function () {\n self.timeBox.style = \"position: absolute;left: 0px;bottom: 0px;display:flex;width: 100%;background-color: rgba(43,51,63,.7);z-index:10;\";\n clearTimeout(this.Timer);\n this.Timer = setTimeout(function () {\n //需要执行的事件\n self.timeBox.style = \"position: absolute;left: 0px;bottom: 0px;display:flex;width: 100%;background-color: rgba(43,51,63,.7);z-index:10;opacity:0;\";\n }, 3000);\n };\n\n this.playerUI.onmouseout = function () {\n clearTimeout(this.Timer);\n this.Timer = setTimeout(function () {\n //需要执行的事件\n self.timeBox.style = \"position: absolute;left: 0px;bottom: 0px;display:flex;width: 100%;background-color: rgba(43,51,63,.7);z-index:10;opacity:0;\";\n }, 3000);\n }; // 监听播放器是否为全屏状态\n\n\n document.addEventListener(\"fullscreenchange\", function (e) {\n if (!document.fullscreenElement) {\n _that.full.classList.remove('fa-compress');\n\n _that.full.classList.add('fa-expand');\n\n if (document.exitFullScreen) {\n document.exitFullScreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (element.msExitFullscreen) {\n element.msExitFullscreen();\n }\n\n _that.fulls = true;\n _that.full.title = 'Fullscreen';\n } else {//console.log(\"FullScreen\");\n }\n });\n }\n\n var _proto = WasmPlayer.prototype;\n\n _proto.normal = function normal() {\n this.timeRule.innerHTML = '';\n this.timeRule.style = \"color:#fff;line-height: 27px;font-size=16px;width:100%;display:flex;\";\n this.timeLabel.style = \" color: #fff;margin: 0 120px 0px 10px;display:none\";\n } // 直播事件\n ;\n\n _proto.live = function live() {\n //var codecStr = common.GetCodecTypeStr();\n //this.timeRule.innerHTML = 'LIVE[' + codecStr + \"]\";\n this.timeRule.innerHTML = 'LIVE';\n this.timeRule.style = \"color:#fff;line-height: 27px;font-size=16px;width:100%;display:flex;\";\n this.timeLabel.style = \" color: #fff;margin: 0 120px 0px 10px;display:none\";\n };\n\n // 录像事件\n _proto.playback = function playback() {\n this.timeRule.innerHTML = \"\";\n this.timeTrack.style = \"width:100%;-webkit-appearance:none;height:3px;border-radius:3px;cursor:pointer;margin:auto;\";\n this.timeTrack.value = 0;\n this.timeRule.appendChild(this.timeTrack);\n\n if (!this.UnLogo && !this.HideKbs) {\n this.timeLabel.style = \"color: #fff;margin: 0 174px 0px 10px;dispplay:block;line-height:27px;\";\n } else if (!this.UnLogo) {\n this.timeLabel.style = \"color: #fff;margin: 0 120px 0px 10px;dispplay:block;line-height:27px;\";\n } else {\n this.timeLabel.style = \"color: #fff;margin: 0 40px 0px 10px;dispplay:block;line-height:27px;\";\n }\n };\n\n _proto.onUpdateTrackPos = function onUpdateTrackPos(percent) {//此处修改进度条样式\n //...\n };\n\n _proto.removeAllChilds = function removeAllChilds(p) {\n for (var i = p.childNodes.length - 1; i >= 0; i--) {\n this.removeAllChilds(p.childNodes[i]);\n p.removeChild(p.childNodes[i]);\n }\n };\n\n _proto.destroy = function destroy() {\n if (this.playerUI) {\n this.removeAllChilds(this.playerUI);\n }\n\n this.stop();\n\n if (this.playerInstance) {\n this.playerInstance.stop();\n this.playerInstance.destroy();\n delete this.playerInstance;\n this.playerInstance = null;\n }\n\n clearInterval(this.LogoTimer);\n clearInterval(this.timeKbps);\n };\n\n _proto.changeToH5Video = function changeToH5Video(b) {\n if (!this.initH5Flag) {\n this.initH5Flag = true;\n } else {\n if (b == this.currentH5Status) {\n return;\n }\n }\n\n this.currentH5Status = b;\n\n if (b) {\n if (this.canvas) {\n //document.removeChild(this.canvas);\n this.playerUI.removeChild(this.canvas);\n this.playerUI.removeChild(this.timeBox); //document.removeElement(this.timeBox);\n //this.canvas = null;\n }\n\n if (this.h5Video == null) {\n this.h5Video = document.createElement(\"VIDEO\");\n }\n\n this.h5Video.style = \"width:100%;height:100%;position:absolute;top:0px;left:0px;background: black;\";\n this.h5Video.setAttribute('oncontextmenu', 'return false'); // this.h5Video.oncontextmenu=\"return false\";\n\n this.playerUI.appendChild(this.h5Video);\n this.playerUI.appendChild(this.timeBox);\n } else {\n if (this.h5Video) {\n this.playerUI.removeChild(this.h5Video);\n this.playerUI.removeChild(this.timeBox); //this.h5Video = null;\n }\n\n if (this.canvas == null) {\n this.canvas = document.createElement('canvas');\n }\n\n this.canvas.style = \"width:100%;height:100%;position:absolute;top:0px;left:0px;background: black;\";\n this.playerUI.appendChild(this.canvas);\n this.playerUI.appendChild(this.timeBox);\n }\n } //连接状态回调\n ;\n\n _proto._onConnectStatus = function _onConnectStatus(_this, status) {\n if (status == 1) {\n //console.log(\"SyncPlayer::connected.\");\n _this.lodingBox.style = 'display:none';\n } else {\n //console.log(\"SyncPlayer::connecting...\");\n _this.lodingBox.style = 'width:100%;height:100%;position: absolute;left:0px;top:0px;background:rgba(0,0,0,0.6);z-index:9;display:block';\n }\n } //流类型回调\n ;\n\n _proto._onChangeTypeCallback = function _onChangeTypeCallback(_this, streamType, isWasm) {\n //streamType: 'flv', 'm3u8'\n //isWasm: true为wasm, false为mse\n //console.log(\"streamType: \" + streamType + \" isWasm:\" + isWasm);\n _this.changeToH5Video(!isWasm);\n\n if (streamType === 'm3u8') {//显示进度条\n //_this.playback();\n }\n };\n\n _proto.formatTime = function formatTime(s) {\n var h = Math.floor(s / 3600) < 10 ? '0' + Math.floor(s / 3600) : Math.floor(s / 3600);\n var m = Math.floor(s / 60 % 60) < 10 ? '0' + Math.floor(s / 60 % 60) : Math.floor(s / 60 % 60);\n var s = Math.floor(s % 60) < 10 ? '0' + Math.floor(s % 60) : Math.floor(s % 60);\n return h + \":\" + m + \":\" + s;\n } //播放时间回调\n ;\n\n _proto._onUpdatePlayTime = function _onUpdatePlayTime(_this, streamType, currentTime, totalDuration) {\n //console.log(\"WasmPlayer.js:: Update play time...\" + currentTime + \" / \" + totalDuration);\n //初始化是否显示进度条\n if (!_this.showTimeLabel) {\n _this.showTimeLabel = true;\n\n if (totalDuration !== Infinity && totalDuration > 0) {\n _this.playback();\n } else {\n _this.live();\n }\n }\n\n if (totalDuration === Infinity) return;\n if (totalDuration < 1) return;\n\n if (_this.showTimeLabel && _this.timeTrack && totalDuration > 0) {\n //更新进度条\n var pos = parseInt((currentTime + 1) / totalDuration * 100.0);\n var trackPos = parseInt(_this.timeTrack.value);\n\n if (pos !== trackPos) {\n _this.timeTrack.value = pos;\n } //更新进度条样式\n\n\n _this.onUpdateTrackPos(pos); //更新显示标签上的播放时间\n\n\n if (_this.timeLabel && _this.timeLabel !== undefined) {\n if (currentTime < 1) currentTime = 0;else if (currentTime > totalDuration) currentTime = totalDuration;\n _this.timeLabel.innerHTML = _this.formatTime(currentTime) + \"/\" + _this.formatTime(totalDuration);\n } //回调给上层\n\n\n if (_this.callbackFunc && !this.callbackEnd) {\n _this.callbackFunc('playbackTime', parseInt(currentTime));\n\n if (pos == 100 && !this.callbackEnd) {\n _this.callbackFunc('ended', 0);\n\n this.callbackEnd = true;\n }\n }\n }\n } // 启动加载动画\n ;\n\n _proto.startLoding = function startLoding() {\n this.callbackFunc('startLoding');\n this.lodingBox.style = 'width:100%;height:100%;position: absolute;left:0px;top:0px;background:rgba(0,0,0,0.6);z-index:9;';\n } // 启动加载动画\n ;\n\n _proto.endLoding = function endLoding() {\n this.callbackFunc('endLoding');\n this.lodingBox.style = 'display:none';\n } // 检测logo事件\n ;\n\n _proto.detectionLogo = function detectionLogo() {\n var that = this;\n this.LogoTimer = setInterval(function () {\n if (that.logo == undefined || that.logo.title != '青犀视频' || that.logo.href !== 'http://www.tsingsee.com/' || that.logo.style.display != \"inline-block\" || that.logo.style.opacity != \"1\") {\n //console.log('防伪logo被修改');\n that.stop();\n }\n }, 1000);\n } // 播放事件\n ;\n\n _proto.play = function play(url, autoPlay, playTimeSecs) {\n var _this2 = this;\n\n if (this.playerUI == null) return;\n this.callbackFunc('play');\n\n if (autoPlay == 0) {\n if (this.bigPlayBox != undefined) {\n this.bigPlayBox.style = 'display:block';\n }\n }\n\n if (url) {\n this.url = url;\n }\n\n if (playTimeSecs != undefined) {\n this.seekTimeSecs = playTimeSecs;\n }\n\n if (!this.url || this.url === \"\" || this.url === undefined) {\n console.log(\"url is empty...\");\n return false;\n }\n\n if (this.url.indexOf(\"rtmp:\") != -1) {\n console.log(\"Unsupport rtmp stream.\");\n return false;\n } else if (this.url.indexOf(\"rtsp:\") != -1) {\n console.log(\"Unsupport rtsp stream.\");\n return false;\n } else if (this.url.indexOf(\"http:\") == -1 && this.url.indexOf(\"https:\") == -1) {\n if (this.url.indexOf(\"ws://\") == -1 && this.url.indexOf(\"wss://\") == -1) {\n console.log(\"Unsupport stream: \" + this.url);\n return false;\n }\n }\n /*\r\n if (!ModuleInitialized) {\r\n \t//console.log(\"Module not initialize, Please try again...\");\r\n \t\t\tif (autoPlay == 1) {\r\n \t\t//console.log(\"call play[3secs]...\");\r\n \t\tcommon.sleep(2000).then(() => {\r\n \t\t\tthis.play(null, 1, playTimeSecs);\r\n \t\t})\r\n \t}\r\n \t\t\treturn false;\r\n }\r\n */\n\n\n if (autoPlay != 1) return true;\n\n if (this.bigPlayBox != undefined) {\n this.bigPlayBox.style = 'display:none';\n }\n\n this._onConnectStatus(this, 1); //关闭加载动画\n\n\n var streamIsM3u8 = false;\n var streamIsFlv = false;\n var streamIsMp4 = false;\n var ext = this.url.substr(this.url.lastIndexOf('.') + 1);\n\n if (ext) {\n // && (ext.length < 5 || ext.indexOf('m3u8')>-1)) {\n var extLowerCase = ext.toLowerCase();\n if (extLowerCase.indexOf('m3u8') > -1) streamIsM3u8 = true;else if (extLowerCase.indexOf('flv') > -1) streamIsFlv = true;else if (extLowerCase.indexOf('mp4') > -1) streamIsMp4 = true;\n\n if (!streamIsM3u8 && !streamIsFlv && !streamIsMp4) {\n if (this.url.indexOf(\".flv\") > -1) streamIsFlv = true;else if (this.url.indexOf(\".m3u8\") > -1) streamIsM3u8 = true;else if (this.url.indexOf(\".mp4\") > -1) streamIsMp4 = true;\n }\n } else {\n streamIsFlv = true;\n }\n\n this.callbackEnd = false;\n var bRet = false;\n\n if (streamIsM3u8) {\n // || (this.url.indexOf(\"m3u8\") != -1)) {\t//M3U8\n //new HlsPlayer\n //if (!this.isHLS) {\n //this.changeToH5Video(false);\n //}\n this.showTimeLabel = false;\n\n if (this.playerInstance == null || !this.playerInstance.isPause()) {\n this.live();\n }\n\n this.isHLS = false;\n\n if (this.playerInstance == null) {\n this.playerInstance = new _FlvPlayer_EasyFlvPlayer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]('m3u8', this.h5Video, this.offscreenCanvas == null ? this.canvas : this.offscreenCanvas, this.decodeType, this._onChangeTypeCallback, this._onUpdatePlayTime, this._onConnectStatus, this, this.enableAudio, this.callbackFunc);\n }\n\n bRet = this.playerInstance.play(this.url, this.seekTimeSecs);\n this.enableAudio = this.defaultAudioStatus; //由外部触发 && 启用声音\n\n if (!this.internalTriggerPlay && this.enableAudio) {\n this.openAudio();\n }\n /*\r\n if (this.playerInstance == null) {\r\n \tthis.playerInstance = new HlsPlayer(this.h5Video,\r\n \t\tthis.offscreenCanvas == null ? this.canvas : this.offscreenCanvas,\r\n \t\tthis.decodeType,\r\n \t\tthis._onChangeTypeCallback, this);\r\n \tthis.setTrack(this.timeTrack, this.timeLabel);\r\n }\r\n this.isHLS = true;\r\n \t\tbRet = this.playerInstance.play(this.url, this.seekTimeSecs);\r\n */\n\n\n this.seekTimeSecs = 0;\n } else if (streamIsMp4) {\n //MP4文件\n this.changeToH5Video(true);\n this.showTimeLabel = false;\n\n if (this.playerInstance == null || !this.playerInstance.isPause()) {\n this.live();\n }\n\n this.isHLS = false;\n\n if (this.playerInstance == null) {\n this.playerInstance = new _FlvPlayer_flv_js_player_native_player_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n type: 'mp4',\n url: url\n }, this.h5Video, this._onUpdatePlayTime, this);\n }\n\n this.playerInstance.play();\n this.enableAudio = this.defaultAudioStatus; //由外部触发 && 启用声音\n\n if (!this.internalTriggerPlay && this.enableAudio) {\n this.openAudio();\n } else {\n this.closeAudio();\n }\n\n bRet = true;\n } else if (streamIsFlv) {\n //FLV流\n if (typeof OffscreenCanvas !== 'undefined' && this.offscreenCanvas == null) {//this.offscreenCanvas = this.canvas.transferControlToOffscreen();\n }\n\n if (this.isHLS) {//this.changeToH5Video(false);\n } //this.changeToH5Video(true);\n\n\n this.showTimeLabel = false;\n this.live();\n this.isHLS = false;\n\n if (this.playerInstance == null) {\n this.playerInstance = new _FlvPlayer_EasyFlvPlayer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]('flv', this.h5Video, this.offscreenCanvas == null ? this.canvas : this.offscreenCanvas, this.decodeType, this._onChangeTypeCallback, this._onUpdatePlayTime, this._onConnectStatus, this, this.enableAudio, this.callbackFunc);\n }\n\n bRet = this.playerInstance.play(this.url, 0);\n this.enableAudio = this.defaultAudioStatus; //由外部触发 && 启用声音\n\n if (!this.internalTriggerPlay && this.enableAudio) {\n this.openAudio();\n }\n }\n\n if (!this.HideKbs) {\n this.domKbps.style = \"position:absolute;top:6px;right:115px;z-index: 19;font-size: 12px;color: #fff;\";\n this.timeKbps = setInterval(function () {\n if (_this2.playerInstance.flvPlayer && _this2.playerInstance.flvPlayer._transmuxer && _this2.playerInstance.flvPlayer._transmuxer._controller && _this2.playerInstance.flvPlayer._transmuxer._controller._ioctl) {\n var current = parseInt(_this2.playerInstance.flvPlayer._transmuxer._controller._ioctl.currentSpeed);\n var average = parseInt(_this2.playerInstance.flvPlayer._transmuxer._controller._ioctl.averageKBps);\n\n if (average * 8 >= 1024) {\n _this2.domKbps.innerText = (average * 8 / 1024).toFixed(2) + 'Mb/s';\n } else {\n _this2.domKbps.innerText = average * 8 + 'Kb/s';\n }\n\n _this2.cfKbs({\n currentKbs: current * 8,\n averageKbs: average * 8,\n currentKbps: current,\n averageKbps: average\n });\n }\n }, 1000);\n }\n\n if (null == this.playerInstance) {\n console.log(\"Unsupport url: \" + url);\n return false;\n }\n\n if (bRet) {\n this.playBtn.classList.remove('fa-play');\n this.playBtn.classList.add('fa-pause');\n this.playBtn.title = 'Pause';\n\n if (this.bigPlayBox != undefined) {\n this.bigPlayBox.classList.remove('fa-play');\n this.bigPlayBox.classList.add('fa-pause');\n this.bigPlayBox.style = 'display:none';\n this.bigPlayBox.title = 'Pause';\n }\n\n this.playFlag = false;\n }\n\n return bRet;\n };\n\n _proto.stop = function stop() {\n if (this.playerUI == null) return;\n this.callbackFunc('stop');\n this.callbackEnd = false;\n\n this._onConnectStatus(this, 1); //关闭加载动画\n\n\n if (this.playerInstance) {\n //关闭声音按钮\n //this.soundButton.classList.add('fa-volume-off');\n //this.soundButton.classList.remove('fa-volume-up');\n this.closeAudio();\n this.playerInstance.stop();\n this.showTimeLabel = false;\n this.normal(); //if (!this.isHLS) {\n //\tthis.playerInstance.destroy();\n //\tdelete this.playerInstance;\n //\tthis.playerInstance = null;\n //}\n\n return true;\n }\n\n return false;\n };\n\n _proto.pause = function pause() {\n this.callbackFunc('pause');\n\n if (this.playerInstance) {\n this.playerInstance.pause();\n }\n };\n\n _proto.resume = function resume() {\n this.callbackFunc('resume');\n\n if (this.playerInstance) {\n this.playerInstance.resume();\n }\n } //外部调用(秒)\n ;\n\n _proto.seekToSecs = function seekToSecs(seekValue) {\n if (this.playerInstance) {\n this.playerInstance.seek(seekValue, 0);\n }\n } //百分比\n ;\n\n _proto.seekToPercent = function seekToPercent(seekValue) {\n if (this.playerInstance) {\n this.playerInstance.seek(seekValue, 1);\n }\n } //设置滚动条和时间标签\n ;\n\n _proto.setTrack = function setTrack(timeTrack, timeLabel) {\n if (this.playerInstance) {\n this.playerInstance.setTrack(timeTrack, timeLabel);\n }\n };\n\n _proto.openAudio = function openAudio() {\n this.callbackFunc('openAudio');\n\n if (this.playerInstance) {\n if (this.playerInstance.openAudio()) {\n this.soundButton.classList.add('fa-volume-up');\n this.soundButton.classList.remove('fa-volume-off');\n this.enableAudio = true;\n } else {\n this.soundButton.classList.add('fa-volume-off');\n this.soundButton.classList.remove('fa-volume-up');\n this.enableAudio = false;\n }\n } //alert(\"open audio: \" + this.enableAudio);\n\n\n return this.enableAudio;\n };\n\n _proto.closeAudio = function closeAudio() {\n this.callbackFunc('closeAudio');\n\n if (this.playerInstance) {\n if (!this.enableAudio) {\n return true;\n }\n\n if (this.playerInstance.closeAudio()) {\n this.soundButton.classList.add('fa-volume-off');\n this.soundButton.classList.remove('fa-volume-up');\n this.enableAudio = false;\n } else {\n this.soundButton.classList.add('fa-volume-up');\n this.soundButton.classList.remove('fa-volume-off');\n this.enableAudio = true;\n }\n } //alert(\"close audio: \" + !this.enableAudio);\n\n\n return !this.enableAudio;\n };\n\n _proto.showStaticsInfo = function showStaticsInfo(enable) {\n if (this.playerInstance == null) {\n return false;\n }\n\n if (enable) {\n return this.playerInstance.openStatinfo();\n } else {\n return this.playerInstance.closeStatinfo();\n }\n\n return false;\n };\n\n _proto.fullScreen = function fullScreen() {\n var self = this;\n\n if (self.fulls) {\n self.callbackFunc('full');\n self.full.classList.remove('fa-expand');\n self.full.classList.add('fa-compress');\n\n if (self.playerUI.requestFullscreen) {\n self.playerUI.requestFullscreen();\n } else if (self.playerUI.mozRequestFullScreen) {\n self.playerUI.mozRequestFullScreen();\n } else if (self.playerUI.webkitRequestFullscreen) {\n self.playerUI.webkitRequestFullscreen();\n } else if (self.playerUI.msRequestFullscreen) {\n self.playerUI.msRequestFullscreen();\n }\n\n self.fulls = false;\n self.full.title = 'Exit Fullscreen';\n var u = navigator.userAgent;\n var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端\n\n var isiOS = !!u.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端\n //if (isAndroid || isiOS) {\n\n if (isiOS) {//console.log(isAndroid ? \" isAndroid\" : \"isiOS\");\n //self.playerUI.webkitRequestFullScreen();\n }\n } else {\n self.callbackFunc('unFull');\n self.full.classList.remove('fa-compress');\n self.full.classList.add('fa-expand');\n\n if (document.exitFullScreen) {\n document.exitFullScreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (element.msExitFullscreen) {\n element.msExitFullscreen();\n }\n\n self.fulls = true;\n self.full.title = 'Fullscreen';\n }\n };\n\n return WasmPlayer;\n}();\n\n\n\n//# sourceURL=webpack://WasmPlayer/./src/SyncPlayer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/common/DecodeWorker.js":
|
||
/*!************************************!*\
|
||
!*** ./src/common/DecodeWorker.js ***!
|
||
\************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process, __dirname, module, Buffer) {/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./src/common/common.js\");\n/* harmony import */ var wasm_worker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! wasm-worker */ \"./node_modules/_wasm-worker@0.4.0@wasm-worker/lib/index.js\");\n/* harmony import */ var wasm_worker__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(wasm_worker__WEBPACK_IMPORTED_MODULE_1__);\n\n //import * as wasmjs from './wasm.js';\n\nvar fullURL = \"\";\nvar Module = typeof Module !== \"undefined\" ? Module : {};\n\nfunction LoadWasmModule() {\n var moduleOverrides = {};\n var key;\n\n for (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n }\n\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n\n var quit_ = function quit_(status, toThrow) {\n throw toThrow;\n };\n\n var ENVIRONMENT_IS_WEB = false;\n var ENVIRONMENT_IS_WORKER = false;\n var ENVIRONMENT_IS_NODE = false;\n var ENVIRONMENT_HAS_NODE = false;\n var ENVIRONMENT_IS_SHELL = false;\n ENVIRONMENT_IS_WEB = typeof window === \"object\";\n ENVIRONMENT_IS_WORKER = typeof importScripts === \"function\";\n ENVIRONMENT_HAS_NODE = typeof process === \"object\" && typeof process.versions === \"object\" && typeof process.versions.node === \"string\";\n ENVIRONMENT_IS_NODE = ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\n ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n\n if (Module[\"ENVIRONMENT\"]) {\n throw new Error(\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)\");\n }\n\n var scriptDirectory = \"\";\n\n function locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n\n return scriptDirectory + path;\n }\n\n var read_, readAsync, readBinary, setWindowTitle;\n\n if (ENVIRONMENT_IS_NODE) {\n scriptDirectory = __dirname + \"/\";\n var nodeFS;\n var nodePath;\n\n read_ = function shell_read(filename, binary) {\n var ret;\n if (!nodeFS) nodeFS = __webpack_require__(/*! fs */ \"./node_modules/_node-libs-browser@2.2.1@node-libs-browser/mock/empty.js\");\n if (!nodePath) nodePath = __webpack_require__(/*! path */ \"./node_modules/_path-browserify@0.0.1@path-browserify/index.js\");\n filename = nodePath[\"normalize\"](filename);\n ret = nodeFS[\"readFileSync\"](filename);\n return binary ? ret : ret.toString();\n };\n\n readBinary = function readBinary(filename) {\n var ret = read_(filename, true);\n\n if (!ret.buffer) {\n ret = new Uint8Array(ret);\n }\n\n assert(ret.buffer);\n return ret;\n };\n\n if (process[\"argv\"].length > 1) {\n thisProgram = process[\"argv\"][1].replace(/\\\\/g, \"/\");\n }\n\n arguments_ = process[\"argv\"].slice(2);\n\n if (true) {\n module[\"exports\"] = Module;\n }\n\n process[\"on\"](\"uncaughtException\", function (ex) {\n if (!(ex instanceof ExitStatus)) {\n throw ex;\n }\n });\n process[\"on\"](\"unhandledRejection\", abort);\n\n quit_ = function quit_(status) {\n process[\"exit\"](status);\n };\n\n Module[\"inspect\"] = function () {\n return \"[Emscripten Module object]\";\n };\n } else if (ENVIRONMENT_IS_SHELL) {\n if (typeof read != \"undefined\") {\n read_ = function shell_read(f) {\n return read(f);\n };\n }\n\n readBinary = function readBinary(f) {\n var data;\n\n if (typeof readbuffer === \"function\") {\n return new Uint8Array(readbuffer(f));\n }\n\n data = read(f, \"binary\");\n assert(typeof data === \"object\");\n return data;\n };\n\n if (typeof scriptArgs != \"undefined\") {\n arguments_ = scriptArgs;\n } else if (typeof arguments != \"undefined\") {\n arguments_ = arguments;\n }\n\n if (typeof quit === \"function\") {\n quit_ = function quit_(status) {\n quit(status);\n };\n }\n\n if (typeof print !== \"undefined\") {\n if (typeof console === \"undefined\") console = {};\n console.log = print;\n console.warn = console.error = typeof printErr !== \"undefined\" ? printErr : print;\n }\n } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n\n read_ = function shell_read(url) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = function readBinary(url) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n\n onerror();\n };\n\n xhr.onerror = onerror;\n xhr.send(null);\n };\n\n setWindowTitle = function setWindowTitle(title) {\n document.title = title;\n };\n } else {\n throw new Error(\"environment detection error\");\n }\n\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n\n for (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n }\n\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (!Object.getOwnPropertyDescriptor(Module, \"arguments\")) Object.defineProperty(Module, \"arguments\", {\n configurable: true,\n get: function get() {\n abort(\"Module.arguments has been replaced with plain arguments_\");\n }\n });\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (!Object.getOwnPropertyDescriptor(Module, \"thisProgram\")) Object.defineProperty(Module, \"thisProgram\", {\n configurable: true,\n get: function get() {\n abort(\"Module.thisProgram has been replaced with plain thisProgram\");\n }\n });\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n if (!Object.getOwnPropertyDescriptor(Module, \"quit\")) Object.defineProperty(Module, \"quit\", {\n configurable: true,\n get: function get() {\n abort(\"Module.quit has been replaced with plain quit_\");\n }\n });\n assert(typeof Module[\"memoryInitializerPrefixURL\"] === \"undefined\", \"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");\n assert(typeof Module[\"pthreadMainPrefixURL\"] === \"undefined\", \"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");\n assert(typeof Module[\"cdInitializerPrefixURL\"] === \"undefined\", \"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");\n assert(typeof Module[\"filePackagePrefixURL\"] === \"undefined\", \"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");\n assert(typeof Module[\"read\"] === \"undefined\", \"Module.read option was removed (modify read_ in JS)\");\n assert(typeof Module[\"readAsync\"] === \"undefined\", \"Module.readAsync option was removed (modify readAsync in JS)\");\n assert(typeof Module[\"readBinary\"] === \"undefined\", \"Module.readBinary option was removed (modify readBinary in JS)\");\n assert(typeof Module[\"setWindowTitle\"] === \"undefined\", \"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\");\n if (!Object.getOwnPropertyDescriptor(Module, \"read\")) Object.defineProperty(Module, \"read\", {\n configurable: true,\n get: function get() {\n abort(\"Module.read has been replaced with plain read_\");\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, \"readAsync\")) Object.defineProperty(Module, \"readAsync\", {\n configurable: true,\n get: function get() {\n abort(\"Module.readAsync has been replaced with plain readAsync\");\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, \"readBinary\")) Object.defineProperty(Module, \"readBinary\", {\n configurable: true,\n get: function get() {\n abort(\"Module.readBinary has been replaced with plain readBinary\");\n }\n });\n\n stackSave = stackRestore = stackAlloc = function stackAlloc() {\n abort(\"cannot use the stack before compiled code is ready to run, and has provided stack access\");\n };\n\n function dynamicAlloc(size) {\n assert(DYNAMICTOP_PTR);\n var ret = HEAP32[DYNAMICTOP_PTR >> 2];\n var end = ret + size + 15 & -16;\n\n if (end > _emscripten_get_heap_size()) {\n abort(\"failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly\");\n }\n\n HEAP32[DYNAMICTOP_PTR >> 2] = end;\n return ret;\n }\n\n function getNativeTypeSize(type) {\n switch (type) {\n case \"i1\":\n case \"i8\":\n return 1;\n\n case \"i16\":\n return 2;\n\n case \"i32\":\n return 4;\n\n case \"i64\":\n return 8;\n\n case \"float\":\n return 4;\n\n case \"double\":\n return 8;\n\n default:\n {\n if (type[type.length - 1] === \"*\") {\n return 4;\n } else if (type[0] === \"i\") {\n var bits = parseInt(type.substr(1));\n assert(bits % 8 === 0, \"getNativeTypeSize invalid bits \" + bits + \", type \" + type);\n return bits / 8;\n } else {\n return 0;\n }\n }\n }\n }\n\n function warnOnce(text) {\n if (!warnOnce.shown) warnOnce.shown = {};\n\n if (!warnOnce.shown[text]) {\n warnOnce.shown[text] = 1;\n err(text);\n }\n }\n\n function convertJsFunctionToWasm(func, sig) {\n var typeSection = [1, 0, 1, 96];\n var sigRet = sig.slice(0, 1);\n var sigParam = sig.slice(1);\n var typeCodes = {\n \"i\": 127,\n \"j\": 126,\n \"f\": 125,\n \"d\": 124\n };\n typeSection.push(sigParam.length);\n\n for (var i = 0; i < sigParam.length; ++i) {\n typeSection.push(typeCodes[sigParam[i]]);\n }\n\n if (sigRet == \"v\") {\n typeSection.push(0);\n } else {\n typeSection = typeSection.concat([1, typeCodes[sigRet]]);\n }\n\n typeSection[1] = typeSection.length - 2;\n var bytes = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0].concat(typeSection, [2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0]));\n var module = new WebAssembly.Module(bytes);\n var instance = new WebAssembly.Instance(module, {\n e: {\n f: func\n }\n });\n var wrappedFunc = instance.exports.f;\n return wrappedFunc;\n }\n\n function addFunctionWasm(func, sig) {\n var table = wasmTable;\n var ret = table.length;\n\n try {\n table.grow(1);\n } catch (err) {\n if (!err instanceof RangeError) {\n throw err;\n }\n\n throw \"Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.\";\n }\n\n try {\n table.set(ret, func);\n } catch (err) {\n if (!err instanceof TypeError) {\n throw err;\n }\n\n assert(typeof sig !== \"undefined\", \"Missing signature argument to addFunction\");\n var wrapped = convertJsFunctionToWasm(func, sig);\n table.set(ret, wrapped);\n }\n\n return ret;\n }\n\n function addFunction(func, sig) {\n assert(typeof func !== \"undefined\");\n return addFunctionWasm(func, sig);\n }\n\n var tempRet0 = 0;\n\n var setTempRet0 = function setTempRet0(value) {\n tempRet0 = value;\n };\n\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n if (!Object.getOwnPropertyDescriptor(Module, \"wasmBinary\")) Object.defineProperty(Module, \"wasmBinary\", {\n configurable: true,\n get: function get() {\n abort(\"Module.wasmBinary has been replaced with plain wasmBinary\");\n }\n });\n var noExitRuntime;\n if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n if (!Object.getOwnPropertyDescriptor(Module, \"noExitRuntime\")) Object.defineProperty(Module, \"noExitRuntime\", {\n configurable: true,\n get: function get() {\n abort(\"Module.noExitRuntime has been replaced with plain noExitRuntime\");\n }\n });\n\n if (typeof WebAssembly !== \"object\") {\n abort(\"No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.\");\n }\n\n function setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") type = \"i32\";\n\n switch (type) {\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n\n case \"i64\":\n tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n break;\n\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n }\n\n var wasmMemory;\n var wasmTable = new WebAssembly.Table({\n \"initial\": 2263,\n \"maximum\": 2263 + 10,\n \"element\": \"anyfunc\"\n });\n var ABORT = false;\n var EXITSTATUS = 0;\n\n function assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n }\n\n function getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n return func;\n }\n\n function ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n \"string\": function string(str) {\n var ret = 0;\n\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n\n return ret;\n },\n \"array\": function array(arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n\n function convertReturnValue(ret) {\n if (returnType === \"string\") return UTF8ToString(ret);\n if (returnType === \"boolean\") return Boolean(ret);\n return ret;\n }\n\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n assert(returnType !== \"array\", 'Return type should not be \"array\".');\n\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) stackRestore(stack);\n return ret;\n }\n\n function cwrap(ident, returnType, argTypes, opts) {\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n }\n\n var ALLOC_NONE = 3;\n\n function allocate(slab, types, allocator, ptr) {\n var zeroinit, size;\n\n if (typeof slab === \"number\") {\n zeroinit = true;\n size = slab;\n } else {\n zeroinit = false;\n size = slab.length;\n }\n\n var singleType = typeof types === \"string\" ? types : null;\n var ret;\n\n if (allocator == ALLOC_NONE) {\n ret = ptr;\n } else {\n ret = [_malloc, stackAlloc, dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length));\n }\n\n if (zeroinit) {\n var stop;\n ptr = ret;\n assert((ret & 3) == 0);\n stop = ret + (size & ~3);\n\n for (; ptr < stop; ptr += 4) {\n HEAP32[ptr >> 2] = 0;\n }\n\n stop = ret + size;\n\n while (ptr < stop) {\n HEAP8[ptr++ >> 0] = 0;\n }\n\n return ret;\n }\n\n if (singleType === \"i8\") {\n if (slab.subarray || slab.slice) {\n HEAPU8.set(slab, ret);\n } else {\n HEAPU8.set(new Uint8Array(slab), ret);\n }\n\n return ret;\n }\n\n var i = 0,\n type,\n typeSize,\n previousType;\n\n while (i < size) {\n var curr = slab[i];\n type = singleType || types[i];\n\n if (type === 0) {\n i++;\n continue;\n }\n\n assert(type, \"Must know what type to store in allocate!\");\n if (type == \"i64\") type = \"i32\";\n setValue(ret + i, curr, type);\n\n if (previousType !== type) {\n typeSize = getNativeTypeSize(type);\n previousType = type;\n }\n\n i += typeSize;\n }\n\n return ret;\n }\n\n var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n\n function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n\n while (u8Array[endPtr] && !(endPtr >= endIdx)) {\n ++endPtr;\n }\n\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n } else {\n var str = \"\";\n\n while (idx < endPtr) {\n var u0 = u8Array[idx++];\n\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n\n var u1 = u8Array[idx++] & 63;\n\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n\n var u2 = u8Array[idx++] & 63;\n\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n if ((u0 & 248) != 240) warnOnce(\"Invalid UTF-8 leading byte 0x\" + u0.toString(16) + \" encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!\");\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n }\n\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n\n return str;\n }\n\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n\n function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n outU8Array[outIdx++] = 192 | u >> 6;\n outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n outU8Array[outIdx++] = 224 | u >> 12;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n if (u >= 2097152) warnOnce(\"Invalid Unicode code point 0x\" + u.toString(16) + \" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).\");\n outU8Array[outIdx++] = 240 | u >> 18;\n outU8Array[outIdx++] = 128 | u >> 12 & 63;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n }\n }\n\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n }\n\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n assert(typeof maxBytesToWrite == \"number\", \"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n\n function lengthBytesUTF8(str) {\n var len = 0;\n\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;\n if (u <= 127) ++len;else if (u <= 2047) len += 2;else if (u <= 65535) len += 3;else len += 4;\n }\n\n return len;\n }\n\n var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n\n function writeArrayToMemory(array, buffer) {\n assert(array.length >= 0, \"writeArrayToMemory array must have a length (should be an array or typed array)\");\n HEAP8.set(array, buffer);\n }\n\n function writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n assert(str.charCodeAt(i) === str.charCodeAt(i) & 255);\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n }\n\n var WASM_PAGE_SIZE = 65536;\n\n function alignUp(x, multiple) {\n if (x % multiple > 0) {\n x += multiple - x % multiple;\n }\n\n return x;\n }\n\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n }\n\n var STACK_BASE = 6415696,\n STACK_MAX = 1172816,\n DYNAMIC_BASE = 6415696,\n DYNAMICTOP_PTR = 1172656;\n assert(STACK_BASE % 16 === 0, \"stack must start aligned\");\n assert(DYNAMIC_BASE % 16 === 0, \"heap must start aligned\");\n var TOTAL_STACK = 5242880;\n if (Module[\"TOTAL_STACK\"]) assert(TOTAL_STACK === Module[\"TOTAL_STACK\"], \"the stack size can no longer be determined at runtime\");\n var INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 67108864;\n if (!Object.getOwnPropertyDescriptor(Module, \"TOTAL_MEMORY\")) Object.defineProperty(Module, \"TOTAL_MEMORY\", {\n configurable: true,\n get: function get() {\n abort(\"Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY\");\n }\n });\n assert(INITIAL_TOTAL_MEMORY >= TOTAL_STACK, \"TOTAL_MEMORY should be larger than TOTAL_STACK, was \" + INITIAL_TOTAL_MEMORY + \"! (TOTAL_STACK=\" + TOTAL_STACK + \")\");\n assert(typeof Int32Array !== \"undefined\" && typeof Float64Array !== \"undefined\" && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, \"JS engine does not provide full typed array support\");\n\n if (Module[\"wasmMemory\"]) {\n wasmMemory = Module[\"wasmMemory\"];\n } else {\n wasmMemory = new WebAssembly.Memory({\n \"initial\": INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE\n });\n }\n\n if (wasmMemory) {\n buffer = wasmMemory.buffer;\n }\n\n INITIAL_TOTAL_MEMORY = buffer.byteLength;\n assert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0);\n updateGlobalBufferAndViews(buffer);\n HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n\n function writeStackCookie() {\n assert((STACK_MAX & 3) == 0);\n HEAPU32[(STACK_MAX >> 2) + 1] = 34821223;\n HEAPU32[(STACK_MAX >> 2) + 2] = 2310721022;\n HEAP32[0] = 1668509029;\n }\n\n function checkStackCookie() {\n var cookie1 = HEAPU32[(STACK_MAX >> 2) + 1];\n var cookie2 = HEAPU32[(STACK_MAX >> 2) + 2];\n\n if (cookie1 != 34821223 || cookie2 != 2310721022) {\n abort(\"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x\" + cookie2.toString(16) + \" \" + cookie1.toString(16));\n }\n\n if (HEAP32[0] !== 1668509029) abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\");\n }\n\n function abortStackOverflow(allocSize) {\n abort(\"Stack overflow! Attempted to allocate \" + allocSize + \" bytes on the stack, but stack has only \" + (STACK_MAX - stackSave() + allocSize) + \" bytes available!\");\n }\n\n (function () {\n var h16 = new Int16Array(1);\n var h8 = new Int8Array(h16.buffer);\n h16[0] = 25459;\n if (h8[0] !== 115 || h8[1] !== 99) throw \"Runtime error: expected the system to be little-endian!\";\n })();\n\n function callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n\n if (typeof callback == \"function\") {\n callback();\n continue;\n }\n\n var func = callback.func;\n\n if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n Module[\"dynCall_v\"](func);\n } else {\n Module[\"dynCall_vi\"](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n }\n\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n\n callRuntimeCallbacks(__ATPRERUN__);\n }\n\n function initRuntime() {\n checkStackCookie();\n assert(!runtimeInitialized);\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n\n function preMain() {\n checkStackCookie();\n FS.ignorePermissions = false;\n callRuntimeCallbacks(__ATMAIN__);\n }\n\n function exitRuntime() {\n checkStackCookie();\n runtimeExited = true;\n }\n\n function postRun() {\n checkStackCookie();\n\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n\n assert(Math.imul, \"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");\n assert(Math.fround, \"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");\n assert(Math.clz32, \"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");\n assert(Math.trunc, \"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");\n var Math_abs = Math.abs;\n var Math_ceil = Math.ceil;\n var Math_floor = Math.floor;\n var Math_min = Math.min;\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n var runDependencyTracking = {};\n\n function getUniqueRunDependency(id) {\n var orig = id;\n\n while (1) {\n if (!runDependencyTracking[id]) return id;\n id = orig + Math.random();\n }\n\n return id;\n }\n\n function addRunDependency(id) {\n runDependencies++;\n\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n\n if (id) {\n assert(!runDependencyTracking[id]);\n runDependencyTracking[id] = 1;\n\n if (runDependencyWatcher === null && typeof setInterval !== \"undefined\") {\n runDependencyWatcher = setInterval(function () {\n if (ABORT) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n return;\n }\n\n var shown = false;\n\n for (var dep in runDependencyTracking) {\n if (!shown) {\n shown = true;\n err(\"still waiting on run dependencies:\");\n }\n\n err(\"dependency: \" + dep);\n }\n\n if (shown) {\n err(\"(end of list)\");\n }\n }, 1e4);\n }\n } else {\n err(\"warning: run dependency added without ID\");\n }\n }\n\n function removeRunDependency(id) {\n runDependencies--;\n\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n\n if (id) {\n assert(runDependencyTracking[id]);\n delete runDependencyTracking[id];\n } else {\n err(\"warning: run dependency removed without ID\");\n }\n\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n\n Module[\"preloadedImages\"] = {};\n Module[\"preloadedAudios\"] = {};\n\n function abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n\n what += \"\";\n out(what);\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n var output = \"abort(\" + what + \") at \" + stackTrace();\n what = output;\n throw new WebAssembly.RuntimeError(what);\n }\n\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n\n function isDataURI(filename) {\n return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n }\n\n var wasmBinaryFile = fullURL + \"libDecoder.wasm\";\n\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n\n function getBinary() {\n try {\n if (wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n\n if (readBinary) {\n return readBinary(wasmBinaryFile);\n } else {\n throw \"both async and sync fetching of the wasm failed\";\n }\n } catch (err) {\n abort(err);\n }\n }\n\n function getBinaryPromise() {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === \"function\") {\n return fetch(wasmBinaryFile, {\n credentials: \"same-origin\"\n }).then(function (response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\n }\n\n return response[\"arrayBuffer\"]();\n }).catch(function () {\n return getBinary();\n });\n }\n\n return new Promise(function (resolve, reject) {\n resolve(getBinary());\n });\n }\n\n function createWasm() {\n var info = {\n \"env\": asmLibraryArg,\n \"wasi_unstable\": asmLibraryArg\n };\n\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module[\"asm\"] = exports;\n removeRunDependency(\"wasm-instantiate\");\n }\n\n addRunDependency(\"wasm-instantiate\");\n var trueModule = Module;\n\n function receiveInstantiatedSource(output) {\n assert(Module === trueModule, \"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\");\n trueModule = null;\n receiveInstance(output[\"instance\"]);\n }\n\n function instantiateArrayBuffer(receiver) {\n return getBinaryPromise().then(function (binary) {\n return WebAssembly.instantiate(binary, info);\n }).then(receiver, function (reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n\n function instantiateAsync() {\n if (!wasmBinary && typeof WebAssembly.instantiateStreaming === \"function\" && !isDataURI(wasmBinaryFile) && typeof fetch === \"function\") {\n fetch(wasmBinaryFile, {\n credentials: \"same-origin\"\n }).then(function (response) {\n var result = WebAssembly.instantiateStreaming(response, info);\n return result.then(receiveInstantiatedSource, function (reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n instantiateArrayBuffer(receiveInstantiatedSource);\n });\n });\n } else {\n return instantiateArrayBuffer(receiveInstantiatedSource);\n }\n }\n\n if (Module[\"instantiateWasm\"]) {\n try {\n var exports = Module[\"instantiateWasm\"](info, receiveInstance);\n return exports;\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n return false;\n }\n }\n\n instantiateAsync();\n return {};\n }\n\n var tempDouble;\n var tempI64;\n\n __ATINIT__.push({\n func: function func() {\n ___wasm_call_ctors();\n }\n });\n\n function demangle(func) {\n warnOnce(\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\");\n return func;\n }\n\n function demangleAll(text) {\n var regex = /\\b_Z[\\w\\d_]+/g;\n return text.replace(regex, function (x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n }\n\n function jsStackTrace() {\n var err = new Error();\n\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n\n if (!err.stack) {\n return \"(no stack trace available)\";\n }\n }\n\n return err.stack.toString();\n }\n\n function stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();\n return demangleAll(js);\n }\n\n function ___cxa_allocate_exception(size) {\n return _malloc(size);\n }\n\n var ___exception_infos = {};\n var ___exception_last = 0;\n\n function ___cxa_throw(ptr, type, destructor) {\n ___exception_infos[ptr] = {\n ptr: ptr,\n adjusted: [ptr],\n type: type,\n destructor: destructor,\n refcount: 0,\n caught: false,\n rethrown: false\n };\n ___exception_last = ptr;\n\n if (!(\"uncaught_exception\" in __ZSt18uncaught_exceptionv)) {\n __ZSt18uncaught_exceptionv.uncaught_exceptions = 1;\n } else {\n __ZSt18uncaught_exceptionv.uncaught_exceptions++;\n }\n\n throw ptr + \" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\";\n }\n\n function ___lock() {}\n\n function ___setErrNo(value) {\n if (Module[\"___errno_location\"]) HEAP32[Module[\"___errno_location\"]() >> 2] = value;else err(\"failed to set errno from JS\");\n return value;\n }\n\n var PATH = {\n splitPath: function splitPath(filename) {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: function normalizeArray(parts, allowAboveRoot) {\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift(\"..\");\n }\n }\n\n return parts;\n },\n normalize: function normalize(path) {\n var isAbsolute = path.charAt(0) === \"/\",\n trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(function (p) {\n return !!p;\n }), !isAbsolute).join(\"/\");\n\n if (!path && !isAbsolute) {\n path = \".\";\n }\n\n if (path && trailingSlash) {\n path += \"/\";\n }\n\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: function dirname(path) {\n var result = PATH.splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n return \".\";\n }\n\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n },\n basename: function basename(path) {\n if (path === \"/\") return \"/\";\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n extname: function extname(path) {\n return PATH.splitPath(path)[3];\n },\n join: function join() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: function join2(l, r) {\n return PATH.normalize(l + \"/\" + r);\n }\n };\n var PATH_FS = {\n resolve: function resolve() {\n var resolvedPath = \"\",\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n\n if (typeof path !== \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = path.charAt(0) === \"/\";\n }\n\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(function (p) {\n return !!p;\n }), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: function relative(from, to) {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n var TTY = {\n ttys: [],\n init: function init() {},\n shutdown: function shutdown() {},\n register: function register(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function open(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function close(stream) {\n stream.tty.ops.flush(stream.tty);\n },\n flush: function flush(stream) {\n stream.tty.ops.flush(stream.tty);\n },\n read: function read(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n\n var bytesRead = 0;\n\n for (var i = 0; i < length; i++) {\n var result;\n\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n\n return bytesRead;\n },\n write: function write(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n\n if (length) {\n stream.node.timestamp = Date.now();\n }\n\n return i;\n }\n },\n default_tty_ops: {\n get_char: function get_char(tty) {\n if (!tty.input.length) {\n var result = null;\n\n if (ENVIRONMENT_IS_NODE) {\n var BUFSIZE = 256;\n var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);\n var bytesRead = 0;\n\n try {\n bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null);\n } catch (e) {\n if (e.toString().indexOf(\"EOF\") != -1) bytesRead = 0;else throw e;\n }\n\n if (bytesRead > 0) {\n result = buf.slice(0, bytesRead).toString(\"utf-8\");\n } else {\n result = null;\n }\n } else if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n\n if (result !== null) {\n result += \"\\n\";\n }\n }\n\n if (!result) {\n return null;\n }\n\n tty.input = intArrayFromString(result, true);\n }\n\n return tty.input.shift();\n },\n put_char: function put_char(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function flush(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function put_char(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function flush(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n var MEMFS = {\n ops_table: null,\n mount: function mount(_mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function createNode(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n\n var node = FS.createNode(parent, name, mode, dev);\n\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n\n node.timestamp = Date.now();\n\n if (parent) {\n parent.contents[name] = node;\n }\n\n return node;\n },\n getFileDataAsRegularArray: function getFileDataAsRegularArray(node) {\n if (node.contents && node.contents.subarray) {\n var arr = [];\n\n for (var i = 0; i < node.usedBytes; ++i) {\n arr.push(node.contents[i]);\n }\n\n return arr;\n }\n\n return node.contents;\n },\n getFileDataAsTypedArray: function getFileDataAsTypedArray(node) {\n if (!node.contents) return new Uint8Array();\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function expandFileStorage(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n return;\n },\n resizeFileStorage: function resizeFileStorage(node, newSize) {\n if (node.usedBytes == newSize) return;\n\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n return;\n }\n\n if (!node.contents || node.contents.subarray) {\n var oldContents = node.contents;\n node.contents = new Uint8Array(new ArrayBuffer(newSize));\n\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n\n node.usedBytes = newSize;\n return;\n }\n\n if (!node.contents) node.contents = [];\n if (node.contents.length > newSize) node.contents.length = newSize;else while (node.contents.length < newSize) {\n node.contents.push(0);\n }\n node.usedBytes = newSize;\n },\n node_ops: {\n getattr: function getattr(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function setattr(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function lookup(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function mknod(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function rename(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n\n delete old_node.parent.contents[old_node.name];\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n old_node.parent = new_dir;\n },\n unlink: function unlink(parent, name) {\n delete parent.contents[name];\n },\n rmdir: function rmdir(parent, name) {\n var node = FS.lookupNode(parent, name);\n\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n\n delete parent.contents[name];\n },\n readdir: function readdir(node) {\n var entries = [\".\", \"..\"];\n\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n\n entries.push(key);\n }\n\n return entries;\n },\n symlink: function symlink(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function readlink(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n\n return node.link;\n }\n },\n stream_ops: {\n read: function read(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n assert(size >= 0);\n\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n }\n\n return size;\n },\n write: function write(stream, buffer, offset, length, position, canOwn) {\n if (canOwn) {\n warnOnce(\"file packager has copied file data into memory, but in memory growth we are forced to copy it again (see --no-heap-copy)\");\n }\n\n canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n assert(position === 0, \"canOwn must imply no weird position inside the file\");\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = new Uint8Array(buffer.subarray(offset, offset + length));\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function llseek(stream, offset, whence) {\n var position = offset;\n\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n\n return position;\n },\n allocate: function allocate(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function mmap(stream, buffer, offset, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n\n if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < stream.node.usedBytes) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n\n allocated = true;\n var fromHeap = buffer.buffer == HEAP8.buffer;\n ptr = _malloc(length);\n\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n\n (fromHeap ? HEAP8 : buffer).set(contents, ptr);\n }\n\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function msync(stream, buffer, offset, length, mmapFlags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n\n if (mmapFlags & 2) {\n return 0;\n }\n\n var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n var ERRNO_MESSAGES = {\n 0: \"Success\",\n 1: \"Arg list too long\",\n 2: \"Permission denied\",\n 3: \"Address already in use\",\n 4: \"Address not available\",\n 5: \"Address family not supported by protocol family\",\n 6: \"No more processes\",\n 7: \"Socket already connected\",\n 8: \"Bad file number\",\n 9: \"Trying to read unreadable message\",\n 10: \"Mount device busy\",\n 11: \"Operation canceled\",\n 12: \"No children\",\n 13: \"Connection aborted\",\n 14: \"Connection refused\",\n 15: \"Connection reset by peer\",\n 16: \"File locking deadlock error\",\n 17: \"Destination address required\",\n 18: \"Math arg out of domain of func\",\n 19: \"Quota exceeded\",\n 20: \"File exists\",\n 21: \"Bad address\",\n 22: \"File too large\",\n 23: \"Host is unreachable\",\n 24: \"Identifier removed\",\n 25: \"Illegal byte sequence\",\n 26: \"Connection already in progress\",\n 27: \"Interrupted system call\",\n 28: \"Invalid argument\",\n 29: \"I/O error\",\n 30: \"Socket is already connected\",\n 31: \"Is a directory\",\n 32: \"Too many symbolic links\",\n 33: \"Too many open files\",\n 34: \"Too many links\",\n 35: \"Message too long\",\n 36: \"Multihop attempted\",\n 37: \"File or path name too long\",\n 38: \"Network interface is not configured\",\n 39: \"Connection reset by network\",\n 40: \"Network is unreachable\",\n 41: \"Too many open files in system\",\n 42: \"No buffer space available\",\n 43: \"No such device\",\n 44: \"No such file or directory\",\n 45: \"Exec format error\",\n 46: \"No record locks available\",\n 47: \"The link has been severed\",\n 48: \"Not enough core\",\n 49: \"No message of desired type\",\n 50: \"Protocol not available\",\n 51: \"No space left on device\",\n 52: \"Function not implemented\",\n 53: \"Socket is not connected\",\n 54: \"Not a directory\",\n 55: \"Directory not empty\",\n 56: \"State not recoverable\",\n 57: \"Socket operation on non-socket\",\n 59: \"Not a typewriter\",\n 60: \"No such device or address\",\n 61: \"Value too large for defined data type\",\n 62: \"Previous owner died\",\n 63: \"Not super-user\",\n 64: \"Broken pipe\",\n 65: \"Protocol error\",\n 66: \"Unknown protocol\",\n 67: \"Protocol wrong type for socket\",\n 68: \"Math result not representable\",\n 69: \"Read only file system\",\n 70: \"Illegal seek\",\n 71: \"No such process\",\n 72: \"Stale file handle\",\n 73: \"Connection timed out\",\n 74: \"Text file busy\",\n 75: \"Cross-device link\",\n 100: \"Device not a stream\",\n 101: \"Bad font file fmt\",\n 102: \"Invalid slot\",\n 103: \"Invalid request code\",\n 104: \"No anode\",\n 105: \"Block device required\",\n 106: \"Channel number out of range\",\n 107: \"Level 3 halted\",\n 108: \"Level 3 reset\",\n 109: \"Link number out of range\",\n 110: \"Protocol driver not attached\",\n 111: \"No CSI structure available\",\n 112: \"Level 2 halted\",\n 113: \"Invalid exchange\",\n 114: \"Invalid request descriptor\",\n 115: \"Exchange full\",\n 116: \"No data (for no delay io)\",\n 117: \"Timer expired\",\n 118: \"Out of streams resources\",\n 119: \"Machine is not on the network\",\n 120: \"Package not installed\",\n 121: \"The object is remote\",\n 122: \"Advertise error\",\n 123: \"Srmount error\",\n 124: \"Communication error on send\",\n 125: \"Cross mount point (not really error)\",\n 126: \"Given log. name not unique\",\n 127: \"f.d. invalid for this operation\",\n 128: \"Remote address changed\",\n 129: \"Can access a needed shared lib\",\n 130: \"Accessing a corrupted shared lib\",\n 131: \".lib section in a.out corrupted\",\n 132: \"Attempting to link in too many libs\",\n 133: \"Attempting to exec a shared library\",\n 135: \"Streams pipe error\",\n 136: \"Too many users\",\n 137: \"Socket type not supported\",\n 138: \"Not supported\",\n 139: \"Protocol family not supported\",\n 140: \"Can't send after socket shutdown\",\n 141: \"Too many references\",\n 142: \"Host is down\",\n 148: \"No medium (in tape drive)\",\n 156: \"Level 2 not synchronized\"\n };\n var ERRNO_CODES = {\n EPERM: 63,\n ENOENT: 44,\n ESRCH: 71,\n EINTR: 27,\n EIO: 29,\n ENXIO: 60,\n E2BIG: 1,\n ENOEXEC: 45,\n EBADF: 8,\n ECHILD: 12,\n EAGAIN: 6,\n EWOULDBLOCK: 6,\n ENOMEM: 48,\n EACCES: 2,\n EFAULT: 21,\n ENOTBLK: 105,\n EBUSY: 10,\n EEXIST: 20,\n EXDEV: 75,\n ENODEV: 43,\n ENOTDIR: 54,\n EISDIR: 31,\n EINVAL: 28,\n ENFILE: 41,\n EMFILE: 33,\n ENOTTY: 59,\n ETXTBSY: 74,\n EFBIG: 22,\n ENOSPC: 51,\n ESPIPE: 70,\n EROFS: 69,\n EMLINK: 34,\n EPIPE: 64,\n EDOM: 18,\n ERANGE: 68,\n ENOMSG: 49,\n EIDRM: 24,\n ECHRNG: 106,\n EL2NSYNC: 156,\n EL3HLT: 107,\n EL3RST: 108,\n ELNRNG: 109,\n EUNATCH: 110,\n ENOCSI: 111,\n EL2HLT: 112,\n EDEADLK: 16,\n ENOLCK: 46,\n EBADE: 113,\n EBADR: 114,\n EXFULL: 115,\n ENOANO: 104,\n EBADRQC: 103,\n EBADSLT: 102,\n EDEADLOCK: 16,\n EBFONT: 101,\n ENOSTR: 100,\n ENODATA: 116,\n ETIME: 117,\n ENOSR: 118,\n ENONET: 119,\n ENOPKG: 120,\n EREMOTE: 121,\n ENOLINK: 47,\n EADV: 122,\n ESRMNT: 123,\n ECOMM: 124,\n EPROTO: 65,\n EMULTIHOP: 36,\n EDOTDOT: 125,\n EBADMSG: 9,\n ENOTUNIQ: 126,\n EBADFD: 127,\n EREMCHG: 128,\n ELIBACC: 129,\n ELIBBAD: 130,\n ELIBSCN: 131,\n ELIBMAX: 132,\n ELIBEXEC: 133,\n ENOSYS: 52,\n ENOTEMPTY: 55,\n ENAMETOOLONG: 37,\n ELOOP: 32,\n EOPNOTSUPP: 138,\n EPFNOSUPPORT: 139,\n ECONNRESET: 15,\n ENOBUFS: 42,\n EAFNOSUPPORT: 5,\n EPROTOTYPE: 67,\n ENOTSOCK: 57,\n ENOPROTOOPT: 50,\n ESHUTDOWN: 140,\n ECONNREFUSED: 14,\n EADDRINUSE: 3,\n ECONNABORTED: 13,\n ENETUNREACH: 40,\n ENETDOWN: 38,\n ETIMEDOUT: 73,\n EHOSTDOWN: 142,\n EHOSTUNREACH: 23,\n EINPROGRESS: 26,\n EALREADY: 7,\n EDESTADDRREQ: 17,\n EMSGSIZE: 35,\n EPROTONOSUPPORT: 66,\n ESOCKTNOSUPPORT: 137,\n EADDRNOTAVAIL: 4,\n ENETRESET: 39,\n EISCONN: 30,\n ENOTCONN: 53,\n ETOOMANYREFS: 141,\n EUSERS: 136,\n EDQUOT: 19,\n ESTALE: 72,\n ENOTSUP: 138,\n ENOMEDIUM: 148,\n EILSEQ: 25,\n EOVERFLOW: 61,\n ECANCELED: 11,\n ENOTRECOVERABLE: 56,\n EOWNERDEAD: 62,\n ESTRPIPE: 135\n };\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n trackingDelegate: {},\n tracking: {\n openFlags: {\n READ: 1,\n WRITE: 2\n }\n },\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n handleFSError: function handleFSError(e) {\n if (!(e instanceof FS.ErrnoError)) throw e + \" : \" + stackTrace();\n return ___setErrNo(e.errno);\n },\n lookupPath: function lookupPath(path, opts) {\n path = PATH_FS.resolve(FS.cwd(), path);\n opts = opts || {};\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n\n for (var key in defaults) {\n if (opts[key] === undefined) {\n opts[key] = defaults[key];\n }\n }\n\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n\n var parts = PATH.normalizeArray(path.split(\"/\").filter(function (p) {\n return !!p;\n }), false);\n var current = FS.root;\n var current_path = \"/\";\n\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n\n if (islast && opts.parent) {\n break;\n }\n\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n\n if (!islast || opts.follow) {\n var count = 0;\n\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count\n });\n current = lookup.node;\n\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n\n return {\n path: current_path,\n node: current\n };\n },\n getPath: function getPath(node) {\n var path;\n\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: function hashName(parentid, name) {\n var hash = 0;\n\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: function hashAddNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: function hashRemoveNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n\n current = current.name_next;\n }\n }\n },\n lookupNode: function lookupNode(parent, name) {\n var err = FS.mayLookup(parent);\n\n if (err) {\n throw new FS.ErrnoError(err, parent);\n }\n\n var hash = FS.hashName(parent.id, name);\n\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n\n return FS.lookup(parent, name);\n },\n createNode: function createNode(parent, name, mode, rdev) {\n if (!FS.FSNode) {\n FS.FSNode = function (parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n\n FS.FSNode.prototype = {};\n var readMode = 292 | 73;\n var writeMode = 146;\n Object.defineProperties(FS.FSNode.prototype, {\n read: {\n get: function get() {\n return (this.mode & readMode) === readMode;\n },\n set: function set(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function get() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function set(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function get() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function get() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n }\n\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: function destroyNode(node) {\n FS.hashRemoveNode(node);\n },\n isRoot: function isRoot(node) {\n return node === node.parent;\n },\n isMountpoint: function isMountpoint(node) {\n return !!node.mounted;\n },\n isFile: function isFile(mode) {\n return (mode & 61440) === 32768;\n },\n isDir: function isDir(mode) {\n return (mode & 61440) === 16384;\n },\n isLink: function isLink(mode) {\n return (mode & 61440) === 40960;\n },\n isChrdev: function isChrdev(mode) {\n return (mode & 61440) === 8192;\n },\n isBlkdev: function isBlkdev(mode) {\n return (mode & 61440) === 24576;\n },\n isFIFO: function isFIFO(mode) {\n return (mode & 61440) === 4096;\n },\n isSocket: function isSocket(mode) {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"rs\": 1052672,\n \"r+\": 2,\n \"w\": 577,\n \"wx\": 705,\n \"xw\": 705,\n \"w+\": 578,\n \"wx+\": 706,\n \"xw+\": 706,\n \"a\": 1089,\n \"ax\": 1217,\n \"xa\": 1217,\n \"a+\": 1090,\n \"ax+\": 1218,\n \"xa+\": 1218\n },\n modeStringToFlags: function modeStringToFlags(str) {\n var flags = FS.flagModes[str];\n\n if (typeof flags === \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n\n return flags;\n },\n flagsToPermissionString: function flagsToPermissionString(flag) {\n var perms = [\"r\", \"w\", \"rw\"][flag & 3];\n\n if (flag & 512) {\n perms += \"w\";\n }\n\n return perms;\n },\n nodePermissions: function nodePermissions(node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n\n if (perms.indexOf(\"r\") !== -1 && !(node.mode & 292)) {\n return 2;\n } else if (perms.indexOf(\"w\") !== -1 && !(node.mode & 146)) {\n return 2;\n } else if (perms.indexOf(\"x\") !== -1 && !(node.mode & 73)) {\n return 2;\n }\n\n return 0;\n },\n mayLookup: function mayLookup(dir) {\n var err = FS.nodePermissions(dir, \"x\");\n if (err) return err;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: function mayCreate(dir, name) {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: function mayDelete(dir, name, isdir) {\n var node;\n\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n\n var err = FS.nodePermissions(dir, \"wx\");\n\n if (err) {\n return err;\n }\n\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n\n return 0;\n },\n mayOpen: function mayOpen(node, flags) {\n if (!node) {\n return 44;\n }\n\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: function nextfd(fd_start, fd_end) {\n fd_start = fd_start || 0;\n fd_end = fd_end || FS.MAX_OPEN_FDS;\n\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n\n throw new FS.ErrnoError(33);\n },\n getStream: function getStream(fd) {\n return FS.streams[fd];\n },\n createStream: function createStream(stream, fd_start, fd_end) {\n if (!FS.FSStream) {\n FS.FSStream = function () {};\n\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function get() {\n return this.node;\n },\n set: function set(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function get() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function get() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function get() {\n return this.flags & 1024;\n }\n }\n });\n }\n\n var newStream = new FS.FSStream();\n\n for (var p in stream) {\n newStream[p] = stream[p];\n }\n\n stream = newStream;\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: function closeStream(fd) {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: function open(stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: function llseek() {\n throw new FS.ErrnoError(70);\n }\n },\n major: function major(dev) {\n return dev >> 8;\n },\n minor: function minor(dev) {\n return dev & 255;\n },\n makedev: function makedev(ma, mi) {\n return ma << 8 | mi;\n },\n registerDevice: function registerDevice(dev, ops) {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: function getDevice(dev) {\n return FS.devices[dev];\n },\n getMounts: function getMounts(mount) {\n var mounts = [];\n var check = [mount];\n\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n\n return mounts;\n },\n syncfs: function syncfs(populate, callback) {\n if (typeof populate === \"function\") {\n callback = populate;\n populate = false;\n }\n\n FS.syncFSRequests++;\n\n if (FS.syncFSRequests > 1) {\n console.log(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n\n function doCallback(err) {\n assert(FS.syncFSRequests > 0);\n FS.syncFSRequests--;\n return callback(err);\n }\n\n function done(err) {\n if (err) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(err);\n }\n\n return;\n }\n\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n\n mounts.forEach(function (mount) {\n if (!mount.type.syncfs) {\n return done(null);\n }\n\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: function mount(type, opts, mountpoint) {\n if (typeof type === \"string\") {\n throw type;\n }\n\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n\n return mountRoot;\n },\n unmount: function unmount(mountpoint) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(function (hash) {\n var current = FS.nameTable[hash];\n\n while (current) {\n var next = current.name_next;\n\n if (mounts.indexOf(current.mount) !== -1) {\n FS.destroyNode(current);\n }\n\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n assert(idx !== -1);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: function lookup(parent, name) {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: function mknod(path, mode, dev) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n\n var err = FS.mayCreate(parent, name);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: function create(path, mode) {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: function mkdir(path, mode) {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: function mkdirTree(path, mode) {\n var dirs = path.split(\"/\");\n var d = \"\";\n\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: function mkdev(path, mode, dev) {\n if (typeof dev === \"undefined\") {\n dev = mode;\n mode = 438;\n }\n\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: function symlink(oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n\n var newname = PATH.basename(newpath);\n var err = FS.mayCreate(parent, newname);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: function rename(old_path, new_path) {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n\n try {\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n } catch (e) {\n throw new FS.ErrnoError(10);\n }\n\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n\n relative = PATH_FS.relative(new_path, old_dirname);\n\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n\n var new_node;\n\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n\n if (old_node === new_node) {\n return;\n }\n\n var isdir = FS.isDir(old_node.mode);\n var err = FS.mayDelete(old_dir, old_name, isdir);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n\n if (new_dir !== old_dir) {\n err = FS.nodePermissions(old_dir, \"w\");\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n }\n\n try {\n if (FS.trackingDelegate[\"willMovePath\"]) {\n FS.trackingDelegate[\"willMovePath\"](old_path, new_path);\n }\n } catch (e) {\n console.log(\"FS.trackingDelegate['willMovePath']('\" + old_path + \"', '\" + new_path + \"') threw an exception: \" + e.message);\n }\n\n FS.hashRemoveNode(old_node);\n\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n\n try {\n if (FS.trackingDelegate[\"onMovePath\"]) FS.trackingDelegate[\"onMovePath\"](old_path, new_path);\n } catch (e) {\n console.log(\"FS.trackingDelegate['onMovePath']('\" + old_path + \"', '\" + new_path + \"') threw an exception: \" + e.message);\n }\n },\n rmdir: function rmdir(path) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var err = FS.mayDelete(parent, name, true);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n\n try {\n if (FS.trackingDelegate[\"willDeletePath\"]) {\n FS.trackingDelegate[\"willDeletePath\"](path);\n }\n } catch (e) {\n console.log(\"FS.trackingDelegate['willDeletePath']('\" + path + \"') threw an exception: \" + e.message);\n }\n\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n\n try {\n if (FS.trackingDelegate[\"onDeletePath\"]) FS.trackingDelegate[\"onDeletePath\"](path);\n } catch (e) {\n console.log(\"FS.trackingDelegate['onDeletePath']('\" + path + \"') threw an exception: \" + e.message);\n }\n },\n readdir: function readdir(path) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n\n return node.node_ops.readdir(node);\n },\n unlink: function unlink(path) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var err = FS.mayDelete(parent, name, false);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n\n try {\n if (FS.trackingDelegate[\"willDeletePath\"]) {\n FS.trackingDelegate[\"willDeletePath\"](path);\n }\n } catch (e) {\n console.log(\"FS.trackingDelegate['willDeletePath']('\" + path + \"') threw an exception: \" + e.message);\n }\n\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n\n try {\n if (FS.trackingDelegate[\"onDeletePath\"]) FS.trackingDelegate[\"onDeletePath\"](path);\n } catch (e) {\n console.log(\"FS.trackingDelegate['onDeletePath']('\" + path + \"') threw an exception: \" + e.message);\n }\n },\n readlink: function readlink(path) {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: function stat(path, dontFollow) {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n\n return node.node_ops.getattr(node);\n },\n lstat: function lstat(path) {\n return FS.stat(path, true);\n },\n chmod: function chmod(path, mode, dontFollow) {\n var node;\n\n if (typeof path === \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: function lchmod(path, mode) {\n FS.chmod(path, mode, true);\n },\n fchmod: function fchmod(fd, mode) {\n var stream = FS.getStream(fd);\n\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n\n FS.chmod(stream.node, mode);\n },\n chown: function chown(path, uid, gid, dontFollow) {\n var node;\n\n if (typeof path === \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: function lchown(path, uid, gid) {\n FS.chown(path, uid, gid, true);\n },\n fchown: function fchown(fd, uid, gid) {\n var stream = FS.getStream(fd);\n\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n\n FS.chown(stream.node, uid, gid);\n },\n truncate: function truncate(path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n\n var node;\n\n if (typeof path === \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n\n var err = FS.nodePermissions(node, \"w\");\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: function ftruncate(fd, len) {\n var stream = FS.getStream(fd);\n\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n\n FS.truncate(stream.node, len);\n },\n utime: function utime(path, atime, mtime) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: function open(path, flags, mode, fd_start, fd_end) {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n\n flags = typeof flags === \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode === \"undefined\" ? 438 : mode;\n\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n\n var node;\n\n if (typeof path === \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n\n var created = false;\n\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n\n if (!created) {\n var err = FS.mayOpen(node, flags);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n }\n\n if (flags & 512) {\n FS.truncate(node, 0);\n }\n\n flags &= ~(128 | 512);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n }, fd_start, fd_end);\n\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n console.log(\"FS.trackingDelegate error on read file: \" + path);\n }\n }\n\n try {\n if (FS.trackingDelegate[\"onOpenFile\"]) {\n var trackingFlags = 0;\n\n if ((flags & 2097155) !== 1) {\n trackingFlags |= FS.tracking.openFlags.READ;\n }\n\n if ((flags & 2097155) !== 0) {\n trackingFlags |= FS.tracking.openFlags.WRITE;\n }\n\n FS.trackingDelegate[\"onOpenFile\"](path, trackingFlags);\n }\n } catch (e) {\n console.log(\"FS.trackingDelegate['onOpenFile']('\" + path + \"', flags) threw an exception: \" + e.message);\n }\n\n return stream;\n },\n close: function close(stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if (stream.getdents) stream.getdents = null;\n\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n\n stream.fd = null;\n },\n isClosed: function isClosed(stream) {\n return stream.fd === null;\n },\n llseek: function llseek(stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: function read(stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n\n var seeking = typeof position !== \"undefined\";\n\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: function write(stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n\n if (stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n\n var seeking = typeof position !== \"undefined\";\n\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n\n try {\n if (stream.path && FS.trackingDelegate[\"onWriteToFile\"]) FS.trackingDelegate[\"onWriteToFile\"](stream.path);\n } catch (e) {\n console.log(\"FS.trackingDelegate['onWriteToFile']('\" + stream.path + \"') threw an exception: \" + e.message);\n }\n\n return bytesWritten;\n },\n allocate: function allocate(stream, offset, length) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: function mmap(stream, buffer, offset, length, position, prot, flags) {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n\n return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);\n },\n msync: function msync(stream, buffer, offset, length, mmapFlags) {\n if (!stream || !stream.stream_ops.msync) {\n return 0;\n }\n\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: function munmap(stream) {\n return 0;\n },\n ioctl: function ioctl(stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: function readFile(path, opts) {\n opts = opts || {};\n opts.flags = opts.flags || \"r\";\n opts.encoding = opts.encoding || \"binary\";\n\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n\n FS.close(stream);\n return ret;\n },\n writeFile: function writeFile(path, data, opts) {\n opts = opts || {};\n opts.flags = opts.flags || \"w\";\n var stream = FS.open(path, opts.flags, opts.mode);\n\n if (typeof data === \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n\n FS.close(stream);\n },\n cwd: function cwd() {\n return FS.currentPath;\n },\n chdir: function chdir(path) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n\n var err = FS.nodePermissions(lookup.node, \"x\");\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: function createDefaultDirectories() {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: function createDefaultDevices() {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: function read() {\n return 0;\n },\n write: function write(stream, buffer, offset, length, pos) {\n return length;\n }\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device;\n\n if (typeof crypto === \"object\" && typeof crypto[\"getRandomValues\"] === \"function\") {\n var randomBuffer = new Uint8Array(1);\n\n random_device = function random_device() {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else if (ENVIRONMENT_IS_NODE) {\n try {\n var crypto_module = __webpack_require__(/*! crypto */ \"./node_modules/_crypto-browserify@3.12.0@crypto-browserify/index.js\");\n\n random_device = function random_device() {\n return crypto_module[\"randomBytes\"](1)[0];\n };\n } catch (e) {}\n } else {}\n\n if (!random_device) {\n random_device = function random_device() {\n abort(\"no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\");\n };\n }\n\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: function createSpecialDirectories() {\n FS.mkdir(\"/proc\");\n FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: function mount() {\n var node = FS.createNode(\"/proc/self\", \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: function lookup(parent, name) {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: function readlink() {\n return stream.path;\n }\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: function createStandardStreams() {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n\n var stdin = FS.open(\"/dev/stdin\", \"r\");\n var stdout = FS.open(\"/dev/stdout\", \"w\");\n var stderr = FS.open(\"/dev/stderr\", \"w\");\n assert(stdin.fd === 0, \"invalid handle for stdin (\" + stdin.fd + \")\");\n assert(stdout.fd === 1, \"invalid handle for stdout (\" + stdout.fd + \")\");\n assert(stderr.fd === 2, \"invalid handle for stderr (\" + stderr.fd + \")\");\n },\n ensureErrnoError: function ensureErrnoError() {\n if (FS.ErrnoError) return;\n\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.node = node;\n\n this.setErrno = function (errno) {\n this.errno = errno;\n\n for (var key in ERRNO_CODES) {\n if (ERRNO_CODES[key] === errno) {\n this.code = key;\n break;\n }\n }\n };\n\n this.setErrno(errno);\n this.message = ERRNO_MESSAGES[errno];\n\n if (this.stack) {\n Object.defineProperty(this, \"stack\", {\n value: new Error().stack,\n writable: true\n });\n this.stack = demangleAll(this.stack);\n }\n };\n\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [44].forEach(function (code) {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"<generic error, no stack>\";\n });\n },\n staticInit: function staticInit() {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: function init(input, output, error) {\n assert(!FS.init.initialized, \"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: function quit() {\n FS.init.initialized = false;\n var fflush = Module[\"_fflush\"];\n if (fflush) fflush(0);\n\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n\n if (!stream) {\n continue;\n }\n\n FS.close(stream);\n }\n },\n getMode: function getMode(canRead, canWrite) {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n joinPath: function joinPath(parts, forceRelative) {\n var path = PATH.join.apply(null, parts);\n if (forceRelative && path[0] == \"/\") path = path.substr(1);\n return path;\n },\n absolutePath: function absolutePath(relative, base) {\n return PATH_FS.resolve(base, relative);\n },\n standardizePath: function standardizePath(path) {\n return PATH.normalize(path);\n },\n findObject: function findObject(path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n\n if (ret.exists) {\n return ret.object;\n } else {\n ___setErrNo(ret.error);\n\n return null;\n }\n },\n analyzePath: function analyzePath(path, dontResolveLastLink) {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n\n return ret;\n },\n createFolder: function createFolder(parent, name, canRead, canWrite) {\n var path = PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.mkdir(path, mode);\n },\n createPath: function createPath(parent, path, canRead, canWrite) {\n parent = typeof parent === \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n\n try {\n FS.mkdir(current);\n } catch (e) {}\n\n parent = current;\n }\n\n return current;\n },\n createFile: function createFile(parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: function createDataFile(parent, name, data, canRead, canWrite, canOwn) {\n var path = name ? PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name) : parent;\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n\n if (data) {\n if (typeof data === \"string\") {\n var arr = new Array(data.length);\n\n for (var i = 0, len = data.length; i < len; ++i) {\n arr[i] = data.charCodeAt(i);\n }\n\n data = arr;\n }\n\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, \"w\");\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n\n return node;\n },\n createDevice: function createDevice(parent, name, input, output) {\n var path = PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: function open(stream) {\n stream.seekable = false;\n },\n close: function close(stream) {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: function read(stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n\n for (var i = 0; i < length; i++) {\n var result;\n\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n\n return bytesRead;\n },\n write: function write(stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n\n if (length) {\n stream.node.timestamp = Date.now();\n }\n\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n createLink: function createLink(parent, name, target, canRead, canWrite) {\n var path = PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name);\n return FS.symlink(target, path);\n },\n forceLoadFile: function forceLoadFile(obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n var success = true;\n\n if (typeof XMLHttpRequest !== \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n success = false;\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n\n if (!success) ___setErrNo(29);\n return success;\n },\n createLazyFile: function createLazyFile(parent, name, url, canRead, canWrite) {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n\n var doXHR = function doXHR(from, to) {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n if (typeof Uint8Array != \"undefined\") xhr.responseType = \"arraybuffer\";\n\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n } else {\n return intArrayFromString(xhr.responseText || \"\", true);\n }\n };\n\n var lazyArray = this;\n lazyArray.setDataGetter(function (chunkNum) {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n\n if (typeof lazyArray.chunks[chunkNum] === \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n\n if (typeof lazyArray.chunks[chunkNum] === \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n console.log(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n\n if (typeof XMLHttpRequest !== \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function get() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n\n return this._length;\n }\n },\n chunkSize: {\n get: function get() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n\n Object.defineProperties(node, {\n usedBytes: {\n get: function get() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(function (key) {\n var fn = node.stream_ops[key];\n\n stream_ops[key] = function forceLoadLazyFile() {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(29);\n }\n\n return fn.apply(null, arguments);\n };\n });\n\n stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(29);\n }\n\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n assert(size >= 0);\n\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n\n return size;\n };\n\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: function createPreloadedFile(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {\n Browser.init();\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n\n if (onload) onload();\n removeRunDependency(dep);\n }\n\n var handled = false;\n Module[\"preloadPlugins\"].forEach(function (plugin) {\n if (handled) return;\n\n if (plugin[\"canHandle\"](fullname)) {\n plugin[\"handle\"](byteArray, fullname, finish, function () {\n if (onerror) onerror();\n removeRunDependency(dep);\n });\n handled = true;\n }\n });\n if (!handled) finish(byteArray);\n }\n\n addRunDependency(dep);\n\n if (typeof url == \"string\") {\n Browser.asyncLoad(url, function (byteArray) {\n processData(byteArray);\n }, onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: function indexedDB() {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: function DB_NAME() {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: function saveFilesToDB(paths, onload, onerror) {\n onload = onload || function () {};\n\n onerror = onerror || function () {};\n\n var indexedDB = FS.indexedDB();\n\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n\n openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {\n console.log(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n var transaction = db.transaction([FS.DB_STORE_NAME], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n\n function finish() {\n if (fail == 0) onload();else onerror();\n }\n\n paths.forEach(function (path) {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n\n putRequest.onsuccess = function putRequest_onsuccess() {\n ok++;\n if (ok + fail == total) finish();\n };\n\n putRequest.onerror = function putRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: function loadFilesFromDB(paths, onload, onerror) {\n onload = onload || function () {};\n\n onerror = onerror || function () {};\n\n var indexedDB = FS.indexedDB();\n\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n\n openRequest.onupgradeneeded = onerror;\n\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n\n try {\n var transaction = db.transaction([FS.DB_STORE_NAME], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n\n function finish() {\n if (fail == 0) onload();else onerror();\n }\n\n paths.forEach(function (path) {\n var getRequest = files.get(path);\n\n getRequest.onsuccess = function getRequest_onsuccess() {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n\n getRequest.onerror = function getRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n mappings: {},\n umask: 511,\n calculateAt: function calculateAt(dirfd, path) {\n if (path[0] !== \"/\") {\n var dir;\n\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = FS.getStream(dirfd);\n if (!dirstream) throw new FS.ErrnoError(8);\n dir = dirstream.path;\n }\n\n path = PATH.join2(dir, path);\n }\n\n return path;\n },\n doStat: function doStat(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n\n throw e;\n }\n\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 4 >> 2] = 0;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAP32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n HEAP32[buf + 32 >> 2] = 0;\n tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0;\n HEAP32[buf + 60 >> 2] = 0;\n HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0;\n HEAP32[buf + 68 >> 2] = 0;\n HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0;\n HEAP32[buf + 76 >> 2] = 0;\n tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function doMsync(addr, stream, len, flags) {\n var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));\n FS.msync(stream, buffer, 0, len, flags);\n },\n doMkdir: function doMkdir(path, mode) {\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n },\n doMknod: function doMknod(path, mode, dev) {\n switch (mode & 61440) {\n case 32768:\n case 8192:\n case 24576:\n case 4096:\n case 49152:\n break;\n\n default:\n return -28;\n }\n\n FS.mknod(path, mode, dev);\n return 0;\n },\n doReadlink: function doReadlink(path, buf, bufsize) {\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n },\n doAccess: function doAccess(path, amode) {\n if (amode & ~7) {\n return -28;\n }\n\n var node;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n\n if (!node) {\n return -44;\n }\n\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n\n return 0;\n },\n doDup: function doDup(path, flags, suggestFD) {\n var suggest = FS.getStream(suggestFD);\n if (suggest) FS.close(suggest);\n return FS.open(path, flags, 0, suggestFD, suggestFD).fd;\n },\n doReadv: function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];\n var len = HEAP32[iov + (i * 8 + 4) >> 2];\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n }\n\n return ret;\n },\n doWritev: function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];\n var len = HEAP32[iov + (i * 8 + 4) >> 2];\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n }\n\n return ret;\n },\n varargs: 0,\n get: function get(varargs) {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function getStr() {\n var ret = UTF8ToString(SYSCALLS.get());\n return ret;\n },\n getStreamFromFD: function getStreamFromFD(fd) {\n if (fd === undefined) fd = SYSCALLS.get();\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n },\n get64: function get64() {\n var low = SYSCALLS.get(),\n high = SYSCALLS.get();\n if (low >= 0) assert(high === 0);else assert(high === -1);\n return low;\n },\n getZero: function getZero() {\n assert(SYSCALLS.get() === 0);\n }\n };\n\n function ___syscall221(which, varargs) {\n SYSCALLS.varargs = varargs;\n\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n cmd = SYSCALLS.get();\n\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n\n if (arg < 0) {\n return -28;\n }\n\n var newStream;\n newStream = FS.open(stream.path, stream.flags, 0, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 12:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 13:\n case 14:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n ___setErrNo(28);\n\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n }\n\n function ___syscall3(which, varargs) {\n SYSCALLS.varargs = varargs;\n\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n buf = SYSCALLS.get(),\n count = SYSCALLS.get();\n return FS.read(stream, HEAP8, buf, count);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n }\n\n function ___syscall5(which, varargs) {\n SYSCALLS.varargs = varargs;\n\n try {\n var pathname = SYSCALLS.getStr(),\n flags = SYSCALLS.get(),\n mode = SYSCALLS.get();\n var stream = FS.open(pathname, flags, mode);\n return stream.fd;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n }\n\n function ___unlock() {}\n\n function _abort() {\n abort();\n }\n\n function _clock() {\n if (_clock.start === undefined) _clock.start = Date.now();\n return (Date.now() - _clock.start) * (1e6 / 1e3) | 0;\n }\n\n function _emscripten_get_heap_size() {\n return HEAP8.length;\n }\n\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n }\n\n function emscripten_realloc_buffer(size) {\n try {\n wasmMemory.grow(size - buffer.byteLength + 65535 >> 16);\n updateGlobalBufferAndViews(wasmMemory.buffer);\n return 1;\n } catch (e) {\n console.error(\"emscripten_realloc_buffer: Attempted to grow heap from \" + buffer.byteLength + \" bytes to \" + size + \" bytes, but got error: \" + e);\n }\n }\n\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = _emscripten_get_heap_size();\n\n assert(requestedSize > oldSize);\n var PAGE_MULTIPLE = 65536;\n var LIMIT = 2147483648 - PAGE_MULTIPLE;\n\n if (requestedSize > LIMIT) {\n err(\"Cannot enlarge memory, asked to go up to \" + requestedSize + \" bytes, but the limit is \" + LIMIT + \" bytes!\");\n return false;\n }\n\n var MIN_TOTAL_MEMORY = 16777216;\n var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n\n while (newSize < requestedSize) {\n if (newSize <= 536870912) {\n newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n } else {\n newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n }\n\n if (newSize === oldSize) {\n warnOnce(\"Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only \" + HEAP8.length);\n }\n }\n\n var replacement = emscripten_realloc_buffer(newSize);\n\n if (!replacement) {\n err(\"Failed to grow the heap from \" + oldSize + \" bytes to \" + newSize + \" bytes, not enough memory!\");\n return false;\n }\n\n return true;\n }\n\n var ENV = {};\n\n function _emscripten_get_environ() {\n if (!_emscripten_get_environ.strings) {\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": (typeof navigator === \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\",\n \"_\": thisProgram\n };\n\n for (var x in ENV) {\n env[x] = ENV[x];\n }\n\n var strings = [];\n\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n\n _emscripten_get_environ.strings = strings;\n }\n\n return _emscripten_get_environ.strings;\n }\n\n function _environ_get(__environ, environ_buf) {\n var strings = _emscripten_get_environ();\n\n var bufSize = 0;\n strings.forEach(function (string, i) {\n var ptr = environ_buf + bufSize;\n HEAP32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n }\n\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = _emscripten_get_environ();\n\n HEAP32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function (string) {\n bufSize += string.length + 1;\n });\n HEAP32[penviron_buf_size >> 2] = bufSize;\n return 0;\n }\n\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n }\n\n function _fd_fdstat_get(fd, pbuf) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n HEAP8[pbuf >> 0] = type;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n }\n\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var HIGH_OFFSET = 4294967296;\n var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);\n var DOUBLE_LIMIT = 9007199254740992;\n\n if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {\n return -61;\n }\n\n FS.llseek(stream, offset, whence);\n tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n }\n\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = SYSCALLS.doWritev(stream, iov, iovcnt);\n HEAP32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n }\n\n function _gettimeofday(ptr) {\n var now = Date.now();\n HEAP32[ptr >> 2] = now / 1e3 | 0;\n HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0;\n return 0;\n }\n\n var ___tm_timezone = (stringToUTF8(\"GMT\", 1172720, 4), 1172720);\n\n function _round(d) {\n d = +d;\n return d >= +0 ? +Math_floor(d + +.5) : +Math_ceil(d - +.5);\n }\n\n function _setTempRet0($i) {\n setTempRet0($i | 0);\n }\n\n function _time(ptr) {\n var ret = Date.now() / 1e3 | 0;\n\n if (ptr) {\n HEAP32[ptr >> 2] = ret;\n }\n\n return ret;\n }\n\n FS.staticInit();\n\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n\n var asmLibraryArg = {\n \"__cxa_allocate_exception\": ___cxa_allocate_exception,\n \"__cxa_throw\": ___cxa_throw,\n \"__lock\": ___lock,\n \"__syscall221\": ___syscall221,\n \"__syscall3\": ___syscall3,\n \"__syscall5\": ___syscall5,\n \"__unlock\": ___unlock,\n \"abort\": _abort,\n \"clock\": _clock,\n \"emscripten_memcpy_big\": _emscripten_memcpy_big,\n \"emscripten_resize_heap\": _emscripten_resize_heap,\n \"environ_get\": _environ_get,\n \"environ_sizes_get\": _environ_sizes_get,\n \"fd_close\": _fd_close,\n \"fd_fdstat_get\": _fd_fdstat_get,\n \"fd_seek\": _fd_seek,\n \"fd_write\": _fd_write,\n \"gettimeofday\": _gettimeofday,\n \"memory\": wasmMemory,\n \"round\": _round,\n \"setTempRet0\": _setTempRet0,\n \"table\": wasmTable,\n \"time\": _time\n };\n var asm = createWasm();\n var real____wasm_call_ctors = asm[\"__wasm_call_ctors\"];\n\n asm[\"__wasm_call_ctors\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real____wasm_call_ctors.apply(null, arguments);\n };\n\n var real__WasmDecoder_Check = asm[\"WasmDecoder_Check\"];\n\n asm[\"WasmDecoder_Check\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_Check.apply(null, arguments);\n };\n\n var real__WasmDecoder_Init = asm[\"WasmDecoder_Init\"];\n\n asm[\"WasmDecoder_Init\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_Init.apply(null, arguments);\n };\n\n var real__WasmDecoder_Deinit = asm[\"WasmDecoder_Deinit\"];\n\n asm[\"WasmDecoder_Deinit\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_Deinit.apply(null, arguments);\n };\n\n var real__WasmDecoder_OpenChannel = asm[\"WasmDecoder_OpenChannel\"];\n\n asm[\"WasmDecoder_OpenChannel\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_OpenChannel.apply(null, arguments);\n };\n\n var real__WasmDecoder_InputFlvStream = asm[\"WasmDecoder_InputFlvStream\"];\n\n asm[\"WasmDecoder_InputFlvStream\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_InputFlvStream.apply(null, arguments);\n };\n\n var real__WasmDecoder_GetFlvDecodeData = asm[\"WasmDecoder_GetFlvDecodeData\"];\n\n asm[\"WasmDecoder_GetFlvDecodeData\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_GetFlvDecodeData.apply(null, arguments);\n };\n\n var real__WasmDecoder_InputFlvStreamAndDecode = asm[\"WasmDecoder_InputFlvStreamAndDecode\"];\n\n asm[\"WasmDecoder_InputFlvStreamAndDecode\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_InputFlvStreamAndDecode.apply(null, arguments);\n };\n\n var real__WasmDecoder_OpenVideoDecoder = asm[\"WasmDecoder_OpenVideoDecoder\"];\n\n asm[\"WasmDecoder_OpenVideoDecoder\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_OpenVideoDecoder.apply(null, arguments);\n };\n\n var real__WasmDecoder_OpenAudioDecoder = asm[\"WasmDecoder_OpenAudioDecoder\"];\n\n asm[\"WasmDecoder_OpenAudioDecoder\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_OpenAudioDecoder.apply(null, arguments);\n };\n\n var real__WasmDecoder_DecodeVideoFrame = asm[\"WasmDecoder_DecodeVideoFrame\"];\n\n asm[\"WasmDecoder_DecodeVideoFrame\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_DecodeVideoFrame.apply(null, arguments);\n };\n\n var real__WasmDecoder_DecodeAudioFrame = asm[\"WasmDecoder_DecodeAudioFrame\"];\n\n asm[\"WasmDecoder_DecodeAudioFrame\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_DecodeAudioFrame.apply(null, arguments);\n };\n\n var real__WasmDecoder_CloseChannel = asm[\"WasmDecoder_CloseChannel\"];\n\n asm[\"WasmDecoder_CloseChannel\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__WasmDecoder_CloseChannel.apply(null, arguments);\n };\n\n var real__main = asm[\"main\"];\n\n asm[\"main\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__main.apply(null, arguments);\n };\n\n var real__malloc = asm[\"malloc\"];\n\n asm[\"malloc\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__malloc.apply(null, arguments);\n };\n\n var real__free = asm[\"free\"];\n\n asm[\"free\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__free.apply(null, arguments);\n };\n\n var real____errno_location = asm[\"__errno_location\"];\n\n asm[\"__errno_location\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real____errno_location.apply(null, arguments);\n };\n\n var real__fflush = asm[\"fflush\"];\n\n asm[\"fflush\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__fflush.apply(null, arguments);\n };\n\n var real___get_tzname = asm[\"_get_tzname\"];\n\n asm[\"_get_tzname\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real___get_tzname.apply(null, arguments);\n };\n\n var real___get_daylight = asm[\"_get_daylight\"];\n\n asm[\"_get_daylight\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real___get_daylight.apply(null, arguments);\n };\n\n var real___get_timezone = asm[\"_get_timezone\"];\n\n asm[\"_get_timezone\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real___get_timezone.apply(null, arguments);\n };\n\n var real__setThrew = asm[\"setThrew\"];\n\n asm[\"setThrew\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real__setThrew.apply(null, arguments);\n };\n\n var real___ZSt18uncaught_exceptionv = asm[\"_ZSt18uncaught_exceptionv\"];\n\n asm[\"_ZSt18uncaught_exceptionv\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real___ZSt18uncaught_exceptionv.apply(null, arguments);\n };\n\n var real_stackSave = asm[\"stackSave\"];\n\n asm[\"stackSave\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_stackSave.apply(null, arguments);\n };\n\n var real_stackAlloc = asm[\"stackAlloc\"];\n\n asm[\"stackAlloc\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_stackAlloc.apply(null, arguments);\n };\n\n var real_stackRestore = asm[\"stackRestore\"];\n\n asm[\"stackRestore\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_stackRestore.apply(null, arguments);\n };\n\n var real___growWasmMemory = asm[\"__growWasmMemory\"];\n\n asm[\"__growWasmMemory\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real___growWasmMemory.apply(null, arguments);\n };\n\n var real_dynCall_ii = asm[\"dynCall_ii\"];\n\n asm[\"dynCall_ii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_ii.apply(null, arguments);\n };\n\n var real_dynCall_viiiii = asm[\"dynCall_viiiii\"];\n\n asm[\"dynCall_viiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiifi = asm[\"dynCall_viiiiiifi\"];\n\n asm[\"dynCall_viiiiiifi\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiiifi.apply(null, arguments);\n };\n\n var real_dynCall_viiii = asm[\"dynCall_viiii\"];\n\n asm[\"dynCall_viiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiii.apply(null, arguments);\n };\n\n var real_dynCall_viii = asm[\"dynCall_viii\"];\n\n asm[\"dynCall_viii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viii.apply(null, arguments);\n };\n\n var real_dynCall_iiiiiii = asm[\"dynCall_iiiiiii\"];\n\n asm[\"dynCall_iiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_iiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_iiiiii = asm[\"dynCall_iiiiii\"];\n\n asm[\"dynCall_iiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_iiiiii.apply(null, arguments);\n };\n\n var real_dynCall_vii = asm[\"dynCall_vii\"];\n\n asm[\"dynCall_vii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_vii.apply(null, arguments);\n };\n\n var real_dynCall_iii = asm[\"dynCall_iii\"];\n\n asm[\"dynCall_iii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_iii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiii = asm[\"dynCall_viiiiii\"];\n\n asm[\"dynCall_viiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiii = asm[\"dynCall_viiiiiiiii\"];\n\n asm[\"dynCall_viiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiii = asm[\"dynCall_viiiiiiii\"];\n\n asm[\"dynCall_viiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_iiiii = asm[\"dynCall_iiiii\"];\n\n asm[\"dynCall_iiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_iiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiiiiiiii = asm[\"dynCall_viiiiiiiiiiiiii\"];\n\n asm[\"dynCall_viiiiiiiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiiiiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiiiii = asm[\"dynCall_viiiiiiiiiii\"];\n\n asm[\"dynCall_viiiiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiii = asm[\"dynCall_viiiiiii\"];\n\n asm[\"dynCall_viiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiiiiii = asm[\"dynCall_viiiiiiiiiiii\"];\n\n asm[\"dynCall_viiiiiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_vi = asm[\"dynCall_vi\"];\n\n asm[\"dynCall_vi\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_vi.apply(null, arguments);\n };\n\n var real_dynCall_iiii = asm[\"dynCall_iiii\"];\n\n asm[\"dynCall_iiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_iiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiifii = asm[\"dynCall_viiiifii\"];\n\n asm[\"dynCall_viiiifii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiifii.apply(null, arguments);\n };\n\n var real_dynCall_fii = asm[\"dynCall_fii\"];\n\n asm[\"dynCall_fii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_fii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiiii = asm[\"dynCall_viiiiiiiiii\"];\n\n asm[\"dynCall_viiiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_dd = asm[\"dynCall_dd\"];\n\n asm[\"dynCall_dd\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_dd.apply(null, arguments);\n };\n\n var real_dynCall_viifi = asm[\"dynCall_viifi\"];\n\n asm[\"dynCall_viifi\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viifi.apply(null, arguments);\n };\n\n var real_dynCall_fiii = asm[\"dynCall_fiii\"];\n\n asm[\"dynCall_fiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_fiii.apply(null, arguments);\n };\n\n var real_dynCall_viidi = asm[\"dynCall_viidi\"];\n\n asm[\"dynCall_viidi\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viidi.apply(null, arguments);\n };\n\n var real_dynCall_iiiiiiii = asm[\"dynCall_iiiiiiii\"];\n\n asm[\"dynCall_iiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_iiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiijj = asm[\"dynCall_viiijj\"];\n\n asm[\"dynCall_viiijj\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_viiijj.apply(null, arguments);\n };\n\n var real_dynCall_iiiiiiidiiddii = asm[\"dynCall_iiiiiiidiiddii\"];\n\n asm[\"dynCall_iiiiiiidiiddii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_iiiiiiidiiddii.apply(null, arguments);\n };\n\n var real_dynCall_jij = asm[\"dynCall_jij\"];\n\n asm[\"dynCall_jij\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_jij.apply(null, arguments);\n };\n\n var real_dynCall_jii = asm[\"dynCall_jii\"];\n\n asm[\"dynCall_jii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_jii.apply(null, arguments);\n };\n\n var real_dynCall_v = asm[\"dynCall_v\"];\n\n asm[\"dynCall_v\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_v.apply(null, arguments);\n };\n\n var real_dynCall_iidiiii = asm[\"dynCall_iidiiii\"];\n\n asm[\"dynCall_iidiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_iidiiii.apply(null, arguments);\n };\n\n var real_dynCall_jiji = asm[\"dynCall_jiji\"];\n\n asm[\"dynCall_jiji\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return real_dynCall_jiji.apply(null, arguments);\n };\n\n Module[\"asm\"] = asm;\n\n var ___wasm_call_ctors = Module[\"___wasm_call_ctors\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"__wasm_call_ctors\"].apply(null, arguments);\n };\n\n var _WasmDecoder_Check = Module[\"_WasmDecoder_Check\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_Check\"].apply(null, arguments);\n };\n\n var _WasmDecoder_Init = Module[\"_WasmDecoder_Init\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_Init\"].apply(null, arguments);\n };\n\n var _WasmDecoder_Deinit = Module[\"_WasmDecoder_Deinit\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_Deinit\"].apply(null, arguments);\n };\n\n var _WasmDecoder_OpenChannel = Module[\"_WasmDecoder_OpenChannel\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_OpenChannel\"].apply(null, arguments);\n };\n\n var _WasmDecoder_InputFlvStream = Module[\"_WasmDecoder_InputFlvStream\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_InputFlvStream\"].apply(null, arguments);\n };\n\n var _WasmDecoder_GetFlvDecodeData = Module[\"_WasmDecoder_GetFlvDecodeData\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_GetFlvDecodeData\"].apply(null, arguments);\n };\n\n var _WasmDecoder_InputFlvStreamAndDecode = Module[\"_WasmDecoder_InputFlvStreamAndDecode\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_InputFlvStreamAndDecode\"].apply(null, arguments);\n };\n\n var _WasmDecoder_OpenVideoDecoder = Module[\"_WasmDecoder_OpenVideoDecoder\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_OpenVideoDecoder\"].apply(null, arguments);\n };\n\n var _WasmDecoder_OpenAudioDecoder = Module[\"_WasmDecoder_OpenAudioDecoder\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_OpenAudioDecoder\"].apply(null, arguments);\n };\n\n var _WasmDecoder_DecodeVideoFrame = Module[\"_WasmDecoder_DecodeVideoFrame\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_DecodeVideoFrame\"].apply(null, arguments);\n };\n\n var _WasmDecoder_DecodeAudioFrame = Module[\"_WasmDecoder_DecodeAudioFrame\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_DecodeAudioFrame\"].apply(null, arguments);\n };\n\n var _WasmDecoder_CloseChannel = Module[\"_WasmDecoder_CloseChannel\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"WasmDecoder_CloseChannel\"].apply(null, arguments);\n };\n\n var _main = Module[\"_main\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"main\"].apply(null, arguments);\n };\n\n var _malloc = Module[\"_malloc\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"malloc\"].apply(null, arguments);\n };\n\n var _free = Module[\"_free\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"free\"].apply(null, arguments);\n };\n\n var ___errno_location = Module[\"___errno_location\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"__errno_location\"].apply(null, arguments);\n };\n\n var _fflush = Module[\"_fflush\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"fflush\"].apply(null, arguments);\n };\n\n var __get_tzname = Module[\"__get_tzname\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"_get_tzname\"].apply(null, arguments);\n };\n\n var __get_daylight = Module[\"__get_daylight\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"_get_daylight\"].apply(null, arguments);\n };\n\n var __get_timezone = Module[\"__get_timezone\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"_get_timezone\"].apply(null, arguments);\n };\n\n var _setThrew = Module[\"_setThrew\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"setThrew\"].apply(null, arguments);\n };\n\n var __ZSt18uncaught_exceptionv = Module[\"__ZSt18uncaught_exceptionv\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"_ZSt18uncaught_exceptionv\"].apply(null, arguments);\n };\n\n var stackSave = Module[\"stackSave\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"stackSave\"].apply(null, arguments);\n };\n\n var stackAlloc = Module[\"stackAlloc\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"stackAlloc\"].apply(null, arguments);\n };\n\n var stackRestore = Module[\"stackRestore\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"stackRestore\"].apply(null, arguments);\n };\n\n var __growWasmMemory = Module[\"__growWasmMemory\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"__growWasmMemory\"].apply(null, arguments);\n };\n\n var dynCall_ii = Module[\"dynCall_ii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_ii\"].apply(null, arguments);\n };\n\n var dynCall_viiiii = Module[\"dynCall_viiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiiifi = Module[\"dynCall_viiiiiifi\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiiifi\"].apply(null, arguments);\n };\n\n var dynCall_viiii = Module[\"dynCall_viiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiii\"].apply(null, arguments);\n };\n\n var dynCall_viii = Module[\"dynCall_viii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viii\"].apply(null, arguments);\n };\n\n var dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_iiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_iiiiii\"].apply(null, arguments);\n };\n\n var dynCall_vii = Module[\"dynCall_vii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_vii\"].apply(null, arguments);\n };\n\n var dynCall_iii = Module[\"dynCall_iii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_iii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_iiiii = Module[\"dynCall_iiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_iiiii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiiiiiiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiiiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiiiiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_vi = Module[\"dynCall_vi\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_vi\"].apply(null, arguments);\n };\n\n var dynCall_iiii = Module[\"dynCall_iiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_iiii\"].apply(null, arguments);\n };\n\n var dynCall_viiiifii = Module[\"dynCall_viiiifii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiifii\"].apply(null, arguments);\n };\n\n var dynCall_fii = Module[\"dynCall_fii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_fii\"].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiiiiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_dd = Module[\"dynCall_dd\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_dd\"].apply(null, arguments);\n };\n\n var dynCall_viifi = Module[\"dynCall_viifi\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viifi\"].apply(null, arguments);\n };\n\n var dynCall_fiii = Module[\"dynCall_fiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_fiii\"].apply(null, arguments);\n };\n\n var dynCall_viidi = Module[\"dynCall_viidi\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viidi\"].apply(null, arguments);\n };\n\n var dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_iiiiiiii\"].apply(null, arguments);\n };\n\n var dynCall_viiijj = Module[\"dynCall_viiijj\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_viiijj\"].apply(null, arguments);\n };\n\n var dynCall_iiiiiiidiiddii = Module[\"dynCall_iiiiiiidiiddii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_iiiiiiidiiddii\"].apply(null, arguments);\n };\n\n var dynCall_jij = Module[\"dynCall_jij\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_jij\"].apply(null, arguments);\n };\n\n var dynCall_jii = Module[\"dynCall_jii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_jii\"].apply(null, arguments);\n };\n\n var dynCall_v = Module[\"dynCall_v\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_v\"].apply(null, arguments);\n };\n\n var dynCall_iidiiii = Module[\"dynCall_iidiiii\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_iidiiii\"].apply(null, arguments);\n };\n\n var dynCall_jiji = Module[\"dynCall_jiji\"] = function () {\n assert(runtimeInitialized, \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\");\n assert(!runtimeExited, \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n return Module[\"asm\"][\"dynCall_jiji\"].apply(null, arguments);\n };\n\n Module[\"asm\"] = asm;\n if (!Object.getOwnPropertyDescriptor(Module, \"intArrayFromString\")) Module[\"intArrayFromString\"] = function () {\n abort(\"'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"intArrayToString\")) Module[\"intArrayToString\"] = function () {\n abort(\"'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n Module[\"ccall\"] = ccall;\n Module[\"cwrap\"] = cwrap;\n if (!Object.getOwnPropertyDescriptor(Module, \"setValue\")) Module[\"setValue\"] = function () {\n abort(\"'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"getValue\")) Module[\"getValue\"] = function () {\n abort(\"'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"allocate\")) Module[\"allocate\"] = function () {\n abort(\"'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"getMemory\")) Module[\"getMemory\"] = function () {\n abort(\"'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"AsciiToString\")) Module[\"AsciiToString\"] = function () {\n abort(\"'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stringToAscii\")) Module[\"stringToAscii\"] = function () {\n abort(\"'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"UTF8ArrayToString\")) Module[\"UTF8ArrayToString\"] = function () {\n abort(\"'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"UTF8ToString\")) Module[\"UTF8ToString\"] = function () {\n abort(\"'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF8Array\")) Module[\"stringToUTF8Array\"] = function () {\n abort(\"'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF8\")) Module[\"stringToUTF8\"] = function () {\n abort(\"'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF8\")) Module[\"lengthBytesUTF8\"] = function () {\n abort(\"'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"UTF16ToString\")) Module[\"UTF16ToString\"] = function () {\n abort(\"'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF16\")) Module[\"stringToUTF16\"] = function () {\n abort(\"'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF16\")) Module[\"lengthBytesUTF16\"] = function () {\n abort(\"'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"UTF32ToString\")) Module[\"UTF32ToString\"] = function () {\n abort(\"'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF32\")) Module[\"stringToUTF32\"] = function () {\n abort(\"'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF32\")) Module[\"lengthBytesUTF32\"] = function () {\n abort(\"'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"allocateUTF8\")) Module[\"allocateUTF8\"] = function () {\n abort(\"'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stackTrace\")) Module[\"stackTrace\"] = function () {\n abort(\"'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"addOnPreRun\")) Module[\"addOnPreRun\"] = function () {\n abort(\"'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"addOnInit\")) Module[\"addOnInit\"] = function () {\n abort(\"'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"addOnPreMain\")) Module[\"addOnPreMain\"] = function () {\n abort(\"'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"addOnExit\")) Module[\"addOnExit\"] = function () {\n abort(\"'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"addOnPostRun\")) Module[\"addOnPostRun\"] = function () {\n abort(\"'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"writeStringToMemory\")) Module[\"writeStringToMemory\"] = function () {\n abort(\"'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"writeArrayToMemory\")) Module[\"writeArrayToMemory\"] = function () {\n abort(\"'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"writeAsciiToMemory\")) Module[\"writeAsciiToMemory\"] = function () {\n abort(\"'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"addRunDependency\")) Module[\"addRunDependency\"] = function () {\n abort(\"'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"removeRunDependency\")) Module[\"removeRunDependency\"] = function () {\n abort(\"'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"ENV\")) Module[\"ENV\"] = function () {\n abort(\"'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS\")) Module[\"FS\"] = function () {\n abort(\"'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS_createFolder\")) Module[\"FS_createFolder\"] = function () {\n abort(\"'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS_createPath\")) Module[\"FS_createPath\"] = function () {\n abort(\"'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS_createDataFile\")) Module[\"FS_createDataFile\"] = function () {\n abort(\"'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS_createPreloadedFile\")) Module[\"FS_createPreloadedFile\"] = function () {\n abort(\"'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS_createLazyFile\")) Module[\"FS_createLazyFile\"] = function () {\n abort(\"'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS_createLink\")) Module[\"FS_createLink\"] = function () {\n abort(\"'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS_createDevice\")) Module[\"FS_createDevice\"] = function () {\n abort(\"'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"FS_unlink\")) Module[\"FS_unlink\"] = function () {\n abort(\"'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"GL\")) Module[\"GL\"] = function () {\n abort(\"'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"dynamicAlloc\")) Module[\"dynamicAlloc\"] = function () {\n abort(\"'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"loadDynamicLibrary\")) Module[\"loadDynamicLibrary\"] = function () {\n abort(\"'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"loadWebAssemblyModule\")) Module[\"loadWebAssemblyModule\"] = function () {\n abort(\"'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"getLEB\")) Module[\"getLEB\"] = function () {\n abort(\"'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"getFunctionTables\")) Module[\"getFunctionTables\"] = function () {\n abort(\"'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"alignFunctionTables\")) Module[\"alignFunctionTables\"] = function () {\n abort(\"'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"registerFunctions\")) Module[\"registerFunctions\"] = function () {\n abort(\"'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n Module[\"addFunction\"] = addFunction;\n if (!Object.getOwnPropertyDescriptor(Module, \"removeFunction\")) Module[\"removeFunction\"] = function () {\n abort(\"'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"getFuncWrapper\")) Module[\"getFuncWrapper\"] = function () {\n abort(\"'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"prettyPrint\")) Module[\"prettyPrint\"] = function () {\n abort(\"'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"makeBigInt\")) Module[\"makeBigInt\"] = function () {\n abort(\"'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"dynCall\")) Module[\"dynCall\"] = function () {\n abort(\"'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"getCompilerSetting\")) Module[\"getCompilerSetting\"] = function () {\n abort(\"'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stackSave\")) Module[\"stackSave\"] = function () {\n abort(\"'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stackRestore\")) Module[\"stackRestore\"] = function () {\n abort(\"'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"stackAlloc\")) Module[\"stackAlloc\"] = function () {\n abort(\"'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"establishStackSpace\")) Module[\"establishStackSpace\"] = function () {\n abort(\"'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"print\")) Module[\"print\"] = function () {\n abort(\"'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"printErr\")) Module[\"printErr\"] = function () {\n abort(\"'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"getTempRet0\")) Module[\"getTempRet0\"] = function () {\n abort(\"'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"setTempRet0\")) Module[\"setTempRet0\"] = function () {\n abort(\"'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"callMain\")) Module[\"callMain\"] = function () {\n abort(\"'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"abort\")) Module[\"abort\"] = function () {\n abort(\"'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"Pointer_stringify\")) Module[\"Pointer_stringify\"] = function () {\n abort(\"'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n if (!Object.getOwnPropertyDescriptor(Module, \"warnOnce\")) Module[\"warnOnce\"] = function () {\n abort(\"'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n };\n Module[\"writeStackCookie\"] = writeStackCookie;\n Module[\"checkStackCookie\"] = checkStackCookie;\n Module[\"abortStackOverflow\"] = abortStackOverflow;\n if (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_NORMAL\")) Object.defineProperty(Module, \"ALLOC_NORMAL\", {\n configurable: true,\n get: function get() {\n abort(\"'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_STACK\")) Object.defineProperty(Module, \"ALLOC_STACK\", {\n configurable: true,\n get: function get() {\n abort(\"'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_DYNAMIC\")) Object.defineProperty(Module, \"ALLOC_DYNAMIC\", {\n configurable: true,\n get: function get() {\n abort(\"'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_NONE\")) Object.defineProperty(Module, \"ALLOC_NONE\", {\n configurable: true,\n get: function get() {\n abort(\"'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, \"calledRun\")) Object.defineProperty(Module, \"calledRun\", {\n configurable: true,\n get: function get() {\n abort(\"'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n }\n });\n var calledRun;\n\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n\n var calledMain = false;\n\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n\n function callMain(args) {\n assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module[\"onRuntimeInitialized\"])');\n assert(__ATPRERUN__.length == 0, \"cannot call main when preRun functions remain to be called\");\n var entryFunction = Module[\"_main\"];\n var argc = 0;\n var argv = 0;\n\n try {\n var ret = entryFunction(argc, argv);\n exit(ret, true);\n } catch (e) {\n if (e instanceof ExitStatus) {\n return;\n } else if (e == \"SimulateInfiniteLoop\") {\n noExitRuntime = true;\n return;\n } else {\n var toLog = e;\n\n if (e && typeof e === \"object\" && e.stack) {\n toLog = [e, e.stack];\n }\n\n err(\"exception thrown: \" + toLog);\n quit_(1, e);\n }\n } finally {\n calledMain = true;\n }\n }\n\n function run(args) {\n args = args || arguments_;\n\n if (runDependencies > 0) {\n return;\n }\n\n writeStackCookie();\n preRun();\n if (runDependencies > 0) return;\n\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function () {\n setTimeout(function () {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n\n checkStackCookie();\n }\n\n Module[\"run\"] = run;\n\n function checkUnflushedContent() {\n var print = out;\n var printErr = err;\n var has = false;\n\n out = err = function err(x) {\n has = true;\n };\n\n try {\n var flush = Module[\"_fflush\"];\n if (flush) flush(0);\n [\"stdout\", \"stderr\"].forEach(function (name) {\n var info = FS.analyzePath(\"/dev/\" + name);\n if (!info) return;\n var stream = info.object;\n var rdev = stream.rdev;\n var tty = TTY.ttys[rdev];\n\n if (tty && tty.output && tty.output.length) {\n has = true;\n }\n });\n } catch (e) {}\n\n out = print;\n err = printErr;\n\n if (has) {\n warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\");\n }\n }\n\n function exit(status, implicit) {\n checkUnflushedContent();\n\n if (implicit && noExitRuntime && status === 0) {\n return;\n }\n\n if (noExitRuntime) {\n if (!implicit) {\n err(\"program exited (with status: \" + status + \"), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)\");\n }\n } else {\n ABORT = true;\n EXITSTATUS = status;\n exitRuntime();\n if (Module[\"onExit\"]) Module[\"onExit\"](status);\n }\n\n quit_(status, new ExitStatus(status));\n }\n\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n }\n\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n noExitRuntime = true;\n run();\n}\n\nvar ModuleInitialized = false;\n\nvar VideoWorker = function VideoWorker(self) {\n //console.log(\"new VideoWorker.js\");\n self.isFlvStream = true;\n self.enableAudio = false;\n self.pause = false; //HLS<4C><53><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ͣ,<2C><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DecodeWorker<65><72>\n\n self.exitFlag = false;\n self.needMoreData = false;\n self.wasmDecoderId = -1;\n self.wasmInitVideoDecoder = false;\n self.wasmInitAudioDecoder = false;\n self.videoQueue = [];\n self.audioQueue = [];\n self.videoFrameNum = 0;\n self.videoRawData = null;\n self.audioRawData = null;\n self.videoPacketData = null;\n self.audioPacketData = null;\n self.findKeyFrame = true;\n self.videoIntervalHandle = -1;\n self.videoIntervalValue = 40;\n self.audioIntervalHandle = -1;\n self.audioIntervalValue = 80;\n self.lastPTS = 0;\n self.ptsCount = 0;\n self.maxCacheFrameNum = 0;\n self.calcDelayFlag = true;\n self.procVideoFlag = false;\n self.procAudioFlag = false;\n\n var createBuf = function createBuf() {\n if (self.videoRawData == null) {\n self.videoRawData = Module._malloc(1920 * 1080 * 4); //self.videoRawData = Module._malloc(4000 * 3000 * 2);\n }\n\n if (self.audioRawData == null) {\n self.audioRawData = Module._malloc(1024 * 16);\n }\n\n if (self.videoPacketData == null) {\n self.videoPacketData = Module._malloc(1024 * 1024);\n }\n\n if (self.audioPacketData == null) {\n self.audioPacketData = Module._malloc(1024 * 2);\n }\n\n if (self.wasmDecoderId < 0) {\n self.wasmDecoderId = Module._WasmDecoder_OpenChannel(); //console.log(\"openChannel: \" + self.wasmDecoderId);\n }\n };\n\n var deleteBuf = function deleteBuf() {\n if (self.wasmDecoderId > 0) {\n //console.log(\"closeChannel: \" + self.wasmDecoderId);\n Module._WasmDecoder_CloseChannel(self.wasmDecoderId);\n\n self.wasmDecoderId = -1;\n }\n\n if (self.videoRawData != null) {\n Module._free(self.videoRawData);\n\n self.videoRawData = null;\n }\n\n if (self.audioRawData != null) {\n Module._free(self.audioRawData);\n\n self.audioRawData = null;\n }\n\n if (self.videoPacketData != null) {\n Module._free(self.videoPacketData);\n\n self.videoPacketData = null;\n }\n\n if (self.audioPacketData != null) {\n Module._free(self.audioPacketData);\n\n self.audioPacketData = null;\n }\n };\n\n var onProcStreamData = function onProcStreamData(mediaType, codecId, frameType, playTimeSecs, samplerate, channelNum, bitPerSample, pbuf, bufsize) {\n //console.log(\"DecodeWorker: onProcStreamData:\" + bufsize);\n //console.log(\"frame data: \" + pbuf);\n if (self.procVideoFlag) return -1;\n self.procVideoFlag = true;\n Module.HEAPU8.set(pbuf, self.videoPacketData);\n var videoRenderFormat = _common__WEBPACK_IMPORTED_MODULE_0__[\"tVideoRenderYV12\"];\n var outputFormat = 0;\n if (videoRenderFormat == _common__WEBPACK_IMPORTED_MODULE_0__[\"tVideoRenderYV12\"]) outputFormat = 0;else if (videoRenderFormat == _common__WEBPACK_IMPORTED_MODULE_0__[\"tVideoRenderRGB\"]) outputFormat = 2;else if (videoRenderFormat == _common__WEBPACK_IMPORTED_MODULE_0__[\"tVideoRenderRGBA\"]) outputFormat = 26; //if (self.isFlvStream) {\n\n if (0) { var objData, sampleFmt, data, outArray, _mediaType, mediaCodec, frameLength, vidFrameType, vidWidth, vidHeight, vidBitrate, vidFps, vidInterval, audChannel, audSampleRate, audBitPerSample, audBitrate, timestamp, ptr, decodeMediaType, outputDataSize, first; } else {\n //Decoder\n //mediaType, codecId, samplerate, channelNum, bitPerSample, pbuf, bufsize\n if (mediaType == 1) {\n if (self.videoFrameNum > 0) self.videoFrameNum -= 1;\n }\n\n if (mediaType == 1 && !self.wasmInitVideoDecoder && frameType) {\n //open video decoder..\n var ret = Module._WasmDecoder_OpenVideoDecoder(self.wasmDecoderId, codecId, 0, 0, outputFormat);\n\n if (ret == 0) self.wasmInitVideoDecoder = true;\n } else if (mediaType == 2 && !self.wasmInitAudioDecoder) {\n //open audio decoder\n var ret = Module._WasmDecoder_OpenAudioDecoder(self.wasmDecoderId, codecId, samplerate, bitPerSample, channelNum);\n\n if (ret == 0) self.wasmInitAudioDecoder = true;\n }\n\n var _ptr = null;\n\n if (mediaType == 1 && self.wasmInitVideoDecoder) {\n _ptr = Module._WasmDecoder_DecodeVideoFrame(self.wasmDecoderId, self.videoPacketData, bufsize, 0, 0, self.videoRawData, 0);\n } else if (mediaType == 2 && self.wasmInitAudioDecoder && self.enableAudio) {\n _ptr = Module._WasmDecoder_DecodeAudioFrame(self.wasmDecoderId, self.videoPacketData, bufsize, self.audioRawData, 0);\n }\n\n if (_ptr != 0 && _ptr != null) {\n var _mediaType2 = Module.HEAPU32[_ptr / 4],\n _mediaCodec = Module.HEAPU32[_ptr / 4 + 1],\n _frameLength = Module.HEAPU32[_ptr / 4 + 2],\n _vidFrameType = Module.HEAPU32[_ptr / 4 + 3],\n _vidWidth = Module.HEAPU32[_ptr / 4 + 4],\n _vidHeight = Module.HEAPU32[_ptr / 4 + 5],\n _vidBitrate = Module.HEAPU32[_ptr / 4 + 6],\n _vidFps = Module.HEAPU32[_ptr / 4 + 7],\n _vidInterval = Module.HEAPU32[_ptr / 4 + 8],\n _audChannel = Module.HEAPU32[_ptr / 4 + 9],\n _audSampleRate = Module.HEAPU32[_ptr / 4 + 10],\n _audBitPerSample = Module.HEAPU32[_ptr / 4 + 11],\n _audBitrate = Module.HEAPU32[_ptr / 4 + 12],\n _timestamp = Module.HEAPU32[_ptr / 4 + 13];\n\n if (_frameLength < 1) {\n //console.log(\"framelength<1: \" + frameLength);\n self.procVideoFlag = false;\n return;\n }\n\n if (_mediaType2 == 1) {\n //Video\n //procVideoFrame++;\n if (outputFormat == 0) outputDataSize = _vidWidth * _vidHeight * 3 / 2;else if (outputFormat == 2) outputDataSize = _vidWidth * _vidHeight * 3;else if (outputFormat == 25) outputDataSize = _vidWidth * _vidHeight * 4;else if (outputFormat == 26) outputDataSize = _vidWidth * _vidHeight * 4;\n var outArray = Module.HEAPU8.subarray(self.videoRawData, self.videoRawData + outputDataSize);\n var data = new Uint8Array(outArray);\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common__WEBPACK_IMPORTED_MODULE_0__[\"DECODE_WORKER_ID\"],\n mediaType: 1,\n ts: _timestamp,\n width: _vidWidth,\n height: _vidHeight,\n framesize: bufsize,\n rawsize: outputDataSize,\n fps: _vidFps,\n interval: _vidInterval,\n playTimeSec: playTimeSecs,\n frameNum: self.videoFrameNum,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]);\n\n if (_vidWidth >= 1920 && _vidHeight >= 720) {\n self.procVideoFlag = false;\n return 1;\n }\n } else if (_mediaType2 == 2) {\n var outArray = Module.HEAPU8.subarray(self.audioRawData, self.audioRawData + _frameLength);\n var data = new Uint8Array(outArray);\n var sampleFmt = 0; //default: 8bits\n\n if (_audBitPerSample == 8) sampleFmt = 0;else if (_audBitPerSample == 16) sampleFmt = 1;else if (_audBitPerSample == 32) sampleFmt = 2;\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common__WEBPACK_IMPORTED_MODULE_0__[\"DECODE_WORKER_ID\"],\n mediaType: 2,\n fmt: sampleFmt,\n ch: _audChannel,\n samplerate: _audSampleRate,\n ts: _timestamp,\n framesize: _frameLength,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]);\n }\n }\n }\n\n self.procVideoFlag = false;\n return 0;\n };\n\n var onProcAudioStreamData = function onProcAudioStreamData(codecId, samplerate, channelNum, bitPerSample, pbuf, bufsize) {\n Module.HEAPU8.set(pbuf, self.audioPacketData);\n {\n //Decoder\n if (!self.wasmInitAudioDecoder) {\n var ret = Module._WasmDecoder_OpenAudioDecoder(self.wasmDecoderId, codecId, samplerate, bitPerSample, channelNum);\n\n if (ret == 0) self.wasmInitAudioDecoder = true;\n }\n\n var ptr = null;\n\n if (self.wasmInitAudioDecoder && self.enableAudio) {\n ptr = Module._WasmDecoder_DecodeAudioFrame(self.wasmDecoderId, self.audioPacketData, bufsize, self.audioRawData, 0);\n }\n\n if (ptr != 0 && ptr != null) {\n var mediaType = Module.HEAPU32[ptr / 4],\n mediaCodec = Module.HEAPU32[ptr / 4 + 1],\n frameLength = Module.HEAPU32[ptr / 4 + 2],\n vidFrameType = Module.HEAPU32[ptr / 4 + 3],\n vidWidth = Module.HEAPU32[ptr / 4 + 4],\n vidHeight = Module.HEAPU32[ptr / 4 + 5],\n vidBitrate = Module.HEAPU32[ptr / 4 + 6],\n vidFps = Module.HEAPU32[ptr / 4 + 7],\n vidInterval = Module.HEAPU32[ptr / 4 + 8],\n audChannel = Module.HEAPU32[ptr / 4 + 9],\n audSampleRate = Module.HEAPU32[ptr / 4 + 10],\n audBitPerSample = Module.HEAPU32[ptr / 4 + 11],\n audBitrate = Module.HEAPU32[ptr / 4 + 12],\n timestamp = Module.HEAPU32[ptr / 4 + 13];\n\n if (frameLength < 1) {\n //console.log(\"framelength<1: \" + frameLength);\n return;\n }\n\n var outArray = Module.HEAPU8.subarray(self.audioRawData, self.audioRawData + frameLength);\n var data = new Uint8Array(outArray);\n var sampleFmt = 0; //default: 8bits\n\n if (audBitPerSample == 8) sampleFmt = 0;else if (audBitPerSample == 16) sampleFmt = 1;else if (audBitPerSample == 32) sampleFmt = 2;\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common__WEBPACK_IMPORTED_MODULE_0__[\"DECODE_WORKER_ID\"],\n mediaType: 2,\n fmt: sampleFmt,\n ch: audChannel,\n samplerate: audSampleRate,\n ts: timestamp,\n framesize: frameLength,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]);\n }\n }\n };\n\n var VideoDecodeLoop = function VideoDecodeLoop() {\n if (self.wasmDecoderId < 0) {\n createBuf(); //<2F><><EFBFBD><EFBFBD>buf\n //console.log(\"wasm already loaded... Create buff...\");\n }\n\n if (self.wasmDecoderId > 0) {\n if (self.videoQueue.length > 0) {\n //console.log(\"videoQueue.length: \" + self.videoQueue.length);\n //if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) {\n // self.maxCacheFrameNum = self.videoQueue.length;\n //}\n //else if (self.calcDelayFlag){\n // self.calcDelayFlag = false;\n // console.log(\"videoQueue.length: \" + self.maxCacheFrameNum + \" interval:\" + self.videoIntervalValue);\n //}\n //<2F><><EFBFBD><EFBFBD>ͣ״̬\n if (!self.pause) {\n var frame = null;\n var ret = -1;\n\n if (self.isFlvStream) {\n //FLV <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰGOP\n //<2F><><EFBFBD>ҹؼ<D2B9>֡\n if (self.findKeyFrame) {\n while (self.videoQueue.length > 0) {\n frame = self.videoQueue[0]; //console.log(\"frameCount\" + self.videoQueue.length + \" drop frame: \" + frame.dat.length);\n\n if (frame.frameType && self.videoQueue.length < 80) {\n self.findKeyFrame = false;\n break;\n }\n\n self.videoQueue.shift();\n }\n } else {\n if (self.videoQueue.length > 80) {\n self.findKeyFrame = true;\n }\n }\n\n if (self.videoQueue.length > 0) {\n if (frame == null) {\n frame = self.videoQueue[0];\n } //if (frame.frameType) {\n // console.log(\"videoQueue.length: \" + self.videoQueue.length);\n //}\n\n\n ret = onProcStreamData(frame.mediaType, frame.codecId, frame.frameType, frame.playTimeSec, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length);\n }\n } else {\n frame = self.videoQueue[0];\n ret = onProcStreamData(frame.mediaType, frame.codecId, frame.frameType, frame.playTimeSec, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length);\n }\n\n if (ret >= 0) {\n self.videoQueue.shift();\n } //if (ret === 1 && self.videoQueue.length > self.maxCacheFrameNum && (self.videoQueue.length % 10 == 0)) {\n\n\n if (self.videoQueue.length > self.maxCacheFrameNum && self.videoQueue.length % 20 == 0) {//console.log(\"videoQueue.length: \" + self.videoQueue.length + \" maxCacheFrameNum:\" + self.maxCacheFrameNum);\n //if (self.videoIntervalValue > 5) {\n //updateIntervalTime(self.videoIntervalValue - 5);\n //}\n //updateIntervalTime(20);\n }\n }\n }\n }\n\n return;\n };\n\n var HlsAudioDecodeLoop = function HlsAudioDecodeLoop() {\n if (self.wasmDecoderId < 0) {\n return;\n }\n\n if (self.wasmDecoderId > 0) {\n while (self.audioQueue.length > 0 && !self.pause) {\n //if (self.audioQueue.length > 0) {\n //console.log(\"audioQueue.length: \" + self.audioQueue.length);\n //<2F><><EFBFBD><EFBFBD>ͣ״̬\n if (!self.pause) {\n var frame = self.audioQueue[0];\n\n if (self.enableAudio) {\n onProcAudioStreamData(frame.codecId, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length);\n }\n\n self.audioQueue.shift();\n }\n }\n }\n\n return;\n }; //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>\n\n\n Module.onRuntimeInitialized = function () {\n //console.log('WASM initialized done!');\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>\n self.videoIntervalHandle = setInterval(VideoDecodeLoop, self.videoIntervalValue);\n\n if (self.isFlvStream) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>\n self.audioIntervalHandle = setInterval(HlsAudioDecodeLoop, self.audioIntervalValue);\n }\n\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tDecoderWorkerStartup\"]\n };\n self.postMessage(objData);\n ModuleInitialized = true;\n };\n\n var updateIntervalTime = function updateIntervalTime(interval) {\n if (ModuleInitialized) {\n var iVal = interval;\n\n if (iVal < 5 || iVal > 500) {\n iVal = 40;\n }\n\n if (iVal != self.videoIntervalValue) {\n if (self.videoIntervalHandle >= 0) {\n clearInterval(self.videoIntervalHandle);\n self.videoIntervalHandle = -1;\n }\n\n self.videoIntervalValue = Math.floor(iVal); //self.videoIntervalHandle = setInterval(VideoDecodeLoop, iVal > 15 ? iVal - 15 : self.videoIntervalValue);\n\n self.videoIntervalHandle = setInterval(VideoDecodeLoop, self.videoIntervalValue);\n console.log(\"SetInterval: \" + self.videoIntervalValue);\n }\n }\n };\n\n var calcIntervalTime = function calcIntervalTime(pts) {\n if (pts > self.lastPTS) {\n if (self.lastPTS > 0) {\n if (self.videoQueue.length % 5 == 0) {\n var interval = self.ptsCount / 5;\n\n if (self.videoQueue.length <= self.maxCacheFrameNum) {\n updateIntervalTime(interval);\n console.log(\"Update interval: \" + interval);\n }\n\n self.ptsCount = pts - self.lastPTS;\n } else {\n self.ptsCount += pts - self.lastPTS;\n }\n\n self.lastPTS = pts;\n } else {\n self.lastPTS = pts;\n self.ptsCount = 40;\n }\n } else {\n self.lastPTS = pts;\n self.ptsCount = 40;\n }\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data; //console.log('render-worker.js demuxer cmd:' + data.cmd);\n\n switch (data.cmd) {\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenStream\"]:\n //console.log(\"init decoder worker...\");\n fullURL = data.url;\n self.isFlvStream = data.isFlv; //console.log(\"wasm path: \" + data.url);\n //<2F><><EFBFBD><EFBFBD>wasm module\n\n LoadWasmModule();\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"]:\n self.exitFlag = true;\n deleteBuf(); //<2F>ͷ<EFBFBD>buf\n //HLS<4C><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ὺ<EFBFBD><E1BFAA><EFBFBD><EFBFBD>ʱִ<CAB1>к<EFBFBD><D0BA><EFBFBD>, <20>˴<EFBFBD><CBB4><EFBFBD>ر<EFBFBD>\n\n if (self.videoIntervalHandle >= 0) {\n clearInterval(self.videoIntervalHandle);\n self.videoIntervalHandle = -1;\n }\n\n if (self.audioIntervalHandle >= 0) {\n clearInterval(self.audioIntervalHandle);\n self.audioIntervalHandle = -1;\n }\n\n self.videoQueue.clear;\n self.videoQueue.length = 0;\n self.videoFrameNum = 0;\n self.audioQueue.clear;\n self.audioQueue.length = 0;\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"],\n workerId: _common__WEBPACK_IMPORTED_MODULE_0__[\"DECODE_WORKER_ID\"]\n };\n self.postMessage(objData);\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenAudio\"]:\n self.enableAudio = true;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseAudio\"]:\n self.enableAudio = false;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tPauseStream\"]:\n //<2F><>ͣ\n self.pause = true;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tResumeStream\"]:\n //<2F>ָ<EFBFBD>\n self.pause = false;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tSeekStream\"]:\n self.videoQueue.clear;\n self.videoQueue.length = 0;\n self.videoFrameNum = 0;\n self.audioQueue.clear;\n self.audioQueue.length = 0;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tVidInterval\"]:\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>\n self.updateIntervalTime(data.interval);\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"]:\n //<2F>Ѽ<EFBFBD><D1BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n if (self.exitFlag) {\n console.log(\"exit...\");\n break;\n }\n\n if (ModuleInitialized) {\n if (self.isFlvStream) {\n //FLV Stream\n if (self.wasmDecoderId < 0) {\n createBuf(); //<2F><><EFBFBD><EFBFBD>buf\n //console.log(\"wasm already loaded... Create buff...\");\n }\n\n if (self.wasmDecoderId > 0) {\n if (data.mediaType == 1) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>\n\n self.maxCacheFrameNum = 5; //calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, <20>˴<EFBFBD><CBB4><EFBFBD>samplerateʵ<65><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pts\n }\n } else if (data.mediaType == 2) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>\n if (self.audioIntervalHandle >= 0 && !self.findKeyFrame) {\n self.audioQueue.push(data);\n }\n }\n /*\r\n onProcStreamData(data.mediaType, data.codecId, data.frameType,\r\n data.playTimeSec,\r\n data.samplerate, data.channelNum, data.bitPerSample,\r\n data.dat, data.dat.length);\r\n */\n\n } else if (self.videoQueue.length < 100) {\n //<2F><><EFBFBD>Wasm<73><6D>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>, <20><EFBFBD>ؼ<EFBFBD>֡\n if (data.mediaType == 1 && data.frameType) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data);\n\n if (self.videoQueue.length >= 5) {\n self.videoQueue.shift();\n }\n }\n }\n }\n } else {\n //HLS stream, ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>\n //console.log(\"HLS Stream... add to queue... queueLength: \" + self.videoQueue.length);\n if (data.mediaType == 1) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data);\n calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, <20>˴<EFBFBD><CBB4><EFBFBD>samplerateʵ<65><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pts\n //console.log(\"decode pts2:\" + data.playTimeSec);\n\n self.videoFrameNum += 1;\n\n if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) {\n self.maxCacheFrameNum = self.videoQueue.length;\n } else if (self.calcDelayFlag) {\n self.calcDelayFlag = false; //console.log(\"videoQueue.length2: \" + self.maxCacheFrameNum + \" interval:\" + self.videoIntervalValue);\n }\n }\n } else if (data.mediaType == 2) {\n //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>\n if (self.audioIntervalHandle >= 0) {\n self.audioQueue.push(data);\n }\n }\n\n self.needMoreData = false;\n }\n } else {\n //δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n //Flv: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>֡\n if (self.isFlvStream && self.videoQueue.length < 5) {\n if (data.mediaType == 1 && data.frameType) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data);\n\n if (self.videoQueue.length >= 5) {\n self.videoQueue.shift();\n }\n }\n }\n } else if (!self.isFlvStream && self.videoQueue.length < 1000) {\n if (data.mediaType == 1) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data);\n calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, <20>˴<EFBFBD><CBB4><EFBFBD>samplerateʵ<65><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pts\n\n self.videoFrameNum += 1;\n\n if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) {\n self.maxCacheFrameNum = self.videoQueue.length;\n } else if (self.calcDelayFlag) {\n self.calcDelayFlag = false;\n console.log(\"videoQueue.length: \" + self.maxCacheFrameNum + \" interval:\" + self.videoIntervalValue);\n }\n } //console.log(\"decode pts:\" + data.playTimeSec);\n\n } else if (data.mediaType == 2) {\n if (self.audioIntervalHandle >= 0) {\n self.audioQueue.push(data);\n }\n } //console.log(\"HLS Stream[wasm loading...]... add to queue... queueLength: \" + self.videoQueue.length);\n\n } //console.log(\"wasm not load... videoQueue.length: \" + self.videoQueue.length);\n\n }\n\n break;\n\n default:\n break;\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (VideoWorker);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\"), \"/\", __webpack_require__(/*! ./../../node_modules/_webpack@4.44.1@webpack/buildin/harmony-module.js */ \"./node_modules/_webpack@4.44.1@webpack/buildin/harmony-module.js\")(module), __webpack_require__(/*! ./../../node_modules/_buffer@4.9.2@buffer/index.js */ \"./node_modules/_buffer@4.9.2@buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WasmPlayer/./src/common/DecodeWorker.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/common/common.js":
|
||
/*!******************************!*\
|
||
!*** ./src/common/common.js ***!
|
||
\******************************/
|
||
/*! exports provided: tVideoRenderYV12, tVideoRenderRGB, tVideoRenderRGBA, tOpenStream, tCloseStream, tFrameData, tReOpenStream, tConnecting, tOpenAudio, tCloseAudio, tOutputStatInfo, tGetTsStream, tGetTsStreamRsp, tDecode, tVidInterval, tPauseStream, tResumeStream, tSeekStream, tMediaInfo, tGetTsComplete, tError, tExcept, tDisconnect, tResetMSE, tDecoderWorkerStartup, DOWNLOAD_WORKER_ID, DECODE_WORKER_ID, RENDER_WORKER_ID, setLiveStreamType, GetLiveStreamType, setCodecTypeStr, setVideoWidth, setVideoHeight, setVideoBitrate, GetCodecTypeStr, GetVideoWidth, GetVideoHeight, GetVideoBitrate, sleep, MediaWorkerLog, getFullURL */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tVideoRenderYV12\", function() { return tVideoRenderYV12; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tVideoRenderRGB\", function() { return tVideoRenderRGB; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tVideoRenderRGBA\", function() { return tVideoRenderRGBA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tOpenStream\", function() { return tOpenStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tCloseStream\", function() { return tCloseStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tFrameData\", function() { return tFrameData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tReOpenStream\", function() { return tReOpenStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tConnecting\", function() { return tConnecting; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tOpenAudio\", function() { return tOpenAudio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tCloseAudio\", function() { return tCloseAudio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tOutputStatInfo\", function() { return tOutputStatInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tGetTsStream\", function() { return tGetTsStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tGetTsStreamRsp\", function() { return tGetTsStreamRsp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tDecode\", function() { return tDecode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tVidInterval\", function() { return tVidInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tPauseStream\", function() { return tPauseStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tResumeStream\", function() { return tResumeStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tSeekStream\", function() { return tSeekStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tMediaInfo\", function() { return tMediaInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tGetTsComplete\", function() { return tGetTsComplete; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tError\", function() { return tError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tExcept\", function() { return tExcept; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tDisconnect\", function() { return tDisconnect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tResetMSE\", function() { return tResetMSE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tDecoderWorkerStartup\", function() { return tDecoderWorkerStartup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DOWNLOAD_WORKER_ID\", function() { return DOWNLOAD_WORKER_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DECODE_WORKER_ID\", function() { return DECODE_WORKER_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RENDER_WORKER_ID\", function() { return RENDER_WORKER_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLiveStreamType\", function() { return setLiveStreamType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetLiveStreamType\", function() { return GetLiveStreamType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCodecTypeStr\", function() { return setCodecTypeStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVideoWidth\", function() { return setVideoWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVideoHeight\", function() { return setVideoHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVideoBitrate\", function() { return setVideoBitrate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetCodecTypeStr\", function() { return GetCodecTypeStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetVideoWidth\", function() { return GetVideoWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetVideoHeight\", function() { return GetVideoHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetVideoBitrate\", function() { return GetVideoBitrate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sleep\", function() { return sleep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaWorkerLog\", function() { return MediaWorkerLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFullURL\", function() { return getFullURL; });\n//显示格式\nvar tVideoRenderYV12 = 1;\nvar tVideoRenderRGB = 2;\nvar tVideoRenderRGBA = 3;\nvar tOpenStream = 1;\nvar tCloseStream = 2;\nvar tFrameData = 3;\nvar tReOpenStream = 4;\nvar tConnecting = 5;\nvar tOpenAudio = 6;\nvar tCloseAudio = 7;\nvar tOutputStatInfo = 8;\nvar tGetTsStream = 10;\nvar tGetTsStreamRsp = 11;\nvar tDecode = 12;\nvar tVidInterval = 13;\nvar tPauseStream = 14;\nvar tResumeStream = 15;\nvar tSeekStream = 16;\nvar tMediaInfo = 20;\nvar tGetTsComplete = 21;\nvar tError = 100;\nvar tExcept = 101;\nvar tDisconnect = 102;\nvar tResetMSE = 103;\nvar tDecoderWorkerStartup = 200;\nvar DOWNLOAD_WORKER_ID = 1;\nvar DECODE_WORKER_ID = 2;\nvar RENDER_WORKER_ID = 3;\nvar playerIsLiveStream = true;\nvar playerVideoCodecStr = \"H264\";\nvar playerVideoWidth = 1920;\nvar playerVideoHeight = 1080;\nvar playerVideoBitrate = 0;\nfunction setLiveStreamType(isLiveStream) {\n playerIsLiveStream = isLiveStream;\n}\nfunction GetLiveStreamType() {\n return playerIsLiveStream;\n}\nfunction setCodecTypeStr(str) {\n playerVideoCodecStr = str;\n}\nfunction setVideoWidth(w) {\n playerVideoWidth = w;\n}\nfunction setVideoHeight(h) {\n playerVideoHeight = h;\n}\nfunction setVideoBitrate(b) {\n playerVideoBitrate = b;\n}\nfunction GetCodecTypeStr() {\n return playerVideoCodecStr;\n}\nfunction GetVideoWidth() {\n return playerVideoWidth;\n}\nfunction GetVideoHeight() {\n return playerVideoHeight;\n}\nfunction GetVideoBitrate() {\n return playerVideoBitrate;\n}\nfunction sleep(ms) {\n return new Promise(function (resolve) {\n return setTimeout(resolve, ms);\n });\n}\nfunction MediaWorkerLog(str) {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth() + 1;\n var date = now.getDate();\n var day = now.getDay(); //得到周几\n\n var hour = now.getHours(); //得到小时\n\n var minu = now.getMinutes(); //得到分钟\n\n var sec = now.getSeconds(); //得到秒\n\n var _time = \"\";\n _time = year + \"-\" + month + \"-\" + date + \" \" + hour + \":\" + minu + \":\" + sec;\n console.log(\"[\" + _time + \"]: \" + str);\n}\nfunction getFullURL() {\n var query = window.location.href;\n var param_arr = query.split(\"/\");\n var path = \"\"; //for (var i = 0; i < param_arr.length - 1; i++) {\n\n for (var i = 0; i < 3; i++) {\n path += param_arr[i];\n path += \"/\";\n }\n\n return path;\n}\n\n//# sourceURL=webpack://WasmPlayer/./src/common/common.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/common/soundPlayer.js":
|
||
/*!***********************************!*\
|
||
!*** ./src/common/soundPlayer.js ***!
|
||
\***********************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\nvar WebSoundPlayer = /*#__PURE__*/function () {\n function WebSoundPlayer() {\n this.stopFlag = false;\n this.bufferSourcePtr = null;\n }\n\n var _proto = WebSoundPlayer.prototype;\n\n _proto.destroy = function destroy() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n\n this.samples = null;\n this.audioCtx.close();\n this.audioCtx = null;\n };\n\n _proto.init = function init(option) {\n var defaults = {\n encoding: '16bitInt',\n channels: 1,\n sampleRate: 8000,\n flushingTime: 1000\n };\n this.option = Object.assign({}, defaults, option);\n this.samples = new Float32Array();\n this.flush = this.flush.bind(this);\n this.interval = setInterval(this.flush, this.option.flushingTime);\n this.maxValue = this.getMaxValue();\n this.typedArray = this.getTypedArray();\n this.createContext();\n };\n\n _proto.getMaxValue = function getMaxValue() {\n var encodings = {\n '8bitInt': 128,\n '16bitInt': 32768,\n '32bitInt': 2147483648,\n '32bitFloat': 1\n };\n return encodings[this.option.encoding] ? encodings[this.option.encoding] : encodings['16bitInt'];\n };\n\n _proto.getTypedArray = function getTypedArray() {\n var typedArrays = {\n '8bitInt': Int8Array,\n '16bitInt': Int16Array,\n '32bitInt': Int32Array,\n '32bitFloat': Float32Array\n };\n return typedArrays[this.option.encoding] ? typedArrays[this.option.encoding] : typedArrays['16bitInt'];\n };\n\n _proto.createContext = function createContext() {\n //window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.msAudioContext || window.oAudioContext;\n this.audioCtx = new (window.AudioContext || window.webkitAudioContext)();\n this.gainNode = this.audioCtx.createGain();\n this.gainNode.gain.value = 1;\n this.gainNode.connect(this.audioCtx.destination);\n this.startTime = this.audioCtx.currentTime; //this.audioCtx.play();\n //alert(\"status: \" + this.audioCtx.state);\n };\n\n _proto.isTypedArray = function isTypedArray(data) {\n return data.byteLength && data.buffer && data.buffer.constructor == ArrayBuffer;\n };\n\n _proto.feed = function feed(data) {\n if (!this.isTypedArray(data)) return;\n data = this.getFormatedValue(data);\n var tmp = new Float32Array(this.samples.length + data.length);\n tmp.set(this.samples, 0);\n tmp.set(data, this.samples.length);\n this.samples = tmp;\n };\n\n _proto.getFormatedValue = function getFormatedValue(data) {\n var data = new this.typedArray(data.buffer),\n float32 = new Float32Array(data.length),\n i;\n\n for (i = 0; i < data.length; i++) {\n float32[i] = data[i] / this.maxValue;\n }\n\n return float32;\n };\n\n _proto.volume = function volume(_volume) {\n this.gainNode.gain.value = _volume;\n };\n\n _proto.flush = function flush() {\n if (this.samples == null) return;\n if (!this.samples.length) return;\n console.log(\"flush audio data...\");\n var bufferSource = this.audioCtx.createBufferSource(),\n length = this.samples.length / this.option.channels,\n audioBuffer = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate),\n audioData,\n channel,\n offset,\n i,\n decrement;\n\n for (channel = 0; channel < this.option.channels; channel++) {\n audioData = audioBuffer.getChannelData(channel);\n offset = channel;\n decrement = 50;\n\n for (i = 0; i < length; i++) {\n audioData[i] = this.samples[offset];\n /* fadein */\n\n if (i < 50) {\n audioData[i] = audioData[i] * i / 50;\n }\n /* fadeout*/\n\n\n if (i >= length - 51) {\n audioData[i] = audioData[i] * decrement-- / 50;\n }\n\n offset += this.option.channels;\n }\n }\n\n if (this.startTime < this.audioCtx.currentTime) {\n this.startTime = this.audioCtx.currentTime;\n } //console.log('start vs current '+this.startTime+' vs '+this.audioCtx.currentTime+' duration: '+audioBuffer.duration);\n\n\n bufferSource.buffer = audioBuffer;\n bufferSource.connect(this.gainNode);\n bufferSource.start(this.startTime);\n this.startTime += audioBuffer.duration;\n this.samples = new Float32Array();\n };\n\n _proto.getTimestamp = function getTimestamp() {\n if (this.audioCtx) {\n return this.audioCtx.currentTime;\n } else {\n return 0;\n }\n };\n\n _proto.play = function play(data) {\n if (this.audioCtx == null) return;\n\n if (this.audioCtx.state !== 'running') {\n this.audioCtx.resume();\n return;\n }\n\n if (!this.isTypedArray(data)) {\n return;\n }\n\n data = this.getFormatedValue(data);\n\n if (!data.length) {\n return;\n }\n\n this.stopFlag = false;\n var bufferSource = this.audioCtx.createBufferSource(); //console.log(\"data.length:\" + data.length + \" channel:\" + this.option.channels);\n\n var length = data.length / this.option.channels; //createBuffer<65><72><EFBFBD><EFBFBD><EFBFBD>try{}<7D><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iOS<4F><53>iPad<61><64>, <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>ʲ<EFBFBD>֧<EFBFBD><D6A7>8Khz,16Khz,<2C><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ᱨ<EFBFBD><E1B1A8>\n\n var audioBuffer; // = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate);\n\n try {\n audioBuffer = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate);\n } catch (e) {//alert(e);\n }\n\n var audioData, channel, offset, i, decrement;\n\n for (channel = 0; channel < this.option.channels; channel++) {\n audioData = audioBuffer.getChannelData(channel);\n offset = channel;\n decrement = 50;\n\n for (i = 0; i < length; i++) {\n audioData[i] = data[offset];\n /* fadein */\n\n if (i < 50) {\n audioData[i] = audioData[i] * i / 50;\n }\n /* fadeout*/\n\n\n if (i >= length - 51) {\n audioData[i] = audioData[i] * decrement-- / 50;\n }\n\n offset += this.option.channels;\n }\n }\n\n if (this.startTime < this.audioCtx.currentTime) {\n this.startTime = this.audioCtx.currentTime;\n }\n\n bufferSource.buffer = audioBuffer;\n bufferSource.connect(this.gainNode);\n bufferSource.start(this.startTime);\n this.startTime += audioBuffer.duration;\n this.bufferSourcePtr = bufferSource;\n };\n\n _proto.clearAudioBuffer = function clearAudioBuffer() {\n this.stopFlag = true; //this.samples = null;\n\n if (this.bufferSourcePtr) {\n this.bufferSourcePtr.stop(0);\n }\n };\n\n _proto.pause = function pause() {\n if (this.audioCtx == null) return;\n\n if (this.audioCtx.state === 'running') {\n this.audioCtx.suspend();\n }\n };\n\n _proto.resume = function resume() {\n if (this.audioCtx == null) return;\n\n if (this.audioCtx.state === 'suspended') {\n this.audioCtx.resume();\n }\n };\n\n return WebSoundPlayer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebSoundPlayer);\n\n//# sourceURL=webpack://WasmPlayer/./src/common/soundPlayer.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/common/webgl.js":
|
||
/*!*****************************!*\
|
||
!*** ./src/common/webgl.js ***!
|
||
\*****************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n//import Texture from './webglTexture';\nvar Texture = /*#__PURE__*/function () {\n function Texture(gl) {\n //console.log(\"new Texture\" + gl);\n this.gl = gl;\n this.texture = null;\n }\n\n var _proto = Texture.prototype;\n\n _proto.create = function create(t, textCanvas) {\n var gl = this.gl;\n this.texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\n\n if (t == 1) {\n gl.texImage2D(gl.TEXTURE_2D, 1, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textCanvas);\n }\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n };\n\n _proto.bind = function bind(n, program, name) {\n var gl = this.gl;\n gl.activeTexture([gl.TEXTURE0, gl.TEXTURE1, gl.TEXTURE2, gl.TEXTURE3][n]);\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\n gl.uniform1i(gl.getUniformLocation(program, name), n);\n };\n\n _proto.fill = function fill(width, height, data) {\n var gl = this.gl;\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, width, height, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, data);\n };\n\n return Texture;\n}();\n\nvar WebGLPlayer = /*#__PURE__*/function () {\n function WebGLPlayer(canvas) {\n this.enableTextTexture = 0;\n this.canvas = canvas;\n this.gl = canvas.getContext(\"webgl\") || canvas.getContext(\"experimental-webgl\");\n this.textCtx = null; //canvas.getContext(\"2d\");\n }\n\n var _proto2 = WebGLPlayer.prototype;\n\n _proto2.destroy = function destroy() {\n //console.log(\"webgl destroy...\");\n if (this.gl) {\n //console.log(\"gl.commit\");\n if (this.gl.commit) {\n this.gl.commit();\n }\n }\n };\n\n _proto2.makeTextCanvas = function makeTextCanvas(text, width, height) {\n textCtx.canvas.width = width;\n textCtx.canvas.height = height;\n textCtx.font = \"10px monospace\";\n textCtx.textAlign = \"center\";\n textCtx.textBaseline = \"middle\";\n textCtx.fillStyle = \"rgba(100, 0, 0, 0.6)\";\n textCtx.clearRect(0, 0, textCtx.canvas.width, textCtx.canvas.height);\n textCtx.fillText(text, width / 2, height / 2);\n return textCtx.canvas;\n };\n\n _proto2.initGL = function initGL(options) {\n if (!this.gl) {\n console.log(\"[ER] WebGL not supported.\");\n return;\n }\n\n var gl = this.gl;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n var program = gl.createProgram();\n var vertexShaderSource = [\"attribute highp vec4 aVertexPosition;\", \"attribute vec2 aTextureCoord;\", \"varying highp vec2 vTextureCoord;\", \"void main(void) {\", \" gl_Position = aVertexPosition;\", \" vTextureCoord = aTextureCoord;\", \"}\"].join(\"\\n\");\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderSource);\n gl.compileShader(vertexShader);\n var fragmentShaderSource = [\"precision highp float;\", \"varying lowp vec2 vTextureCoord;\", \"uniform sampler2D YTexture;\", \"uniform sampler2D UTexture;\", \"uniform sampler2D VTexture;\", \"uniform sampler2D TTexture;\", \"const mat4 YUV2RGB = mat4\", \"(\", \" 1.1643828125, 0, 1.59602734375, -.87078515625,\", \" 1.1643828125, -.39176171875, -.81296875, .52959375,\", \" 1.1643828125, 2.017234375, 0, -1.081390625,\", \" 0, 0, 0, 1\", \");\", \"void main(void) {\", \" gl_FragColor = mix(vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB, texture2D(TTexture, vTextureCoord), 0.1);\", //\" gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;\",\n \"}\"].join(\"\\n\");\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderSource);\n gl.compileShader(fragmentShader);\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n gl.useProgram(program);\n\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log(\"[ER] Shader link failed.\");\n }\n\n var vertexPositionAttribute = gl.getAttribLocation(program, \"aVertexPosition\");\n gl.enableVertexAttribArray(vertexPositionAttribute);\n var textureCoordAttribute = gl.getAttribLocation(program, \"aTextureCoord\");\n gl.enableVertexAttribArray(textureCoordAttribute);\n var verticesBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, verticesBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 1.0, -1.0, 0.0, -1.0, -1.0, 0.0]), gl.STATIC_DRAW);\n gl.vertexAttribPointer(vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0);\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0]), gl.STATIC_DRAW);\n gl.vertexAttribPointer(textureCoordAttribute, 2, gl.FLOAT, false, 0, 0);\n\n if (this.enableTextTexture == 1) {\n //this.textCtx = this.canvas.getContext(\"2d\");\n if (document !== undefined) {\n this.textCtx = document.createElement(\"canvas\").getContext(\"2d\");\n }\n\n console.log(\"textCtx:\" + this.textCtx);\n\n if (this.textCtx != null) {\n this.textCtx.canvas.width = 256;\n this.textCtx.canvas.height = 256;\n this.textCtx.font = \"10px monospace\";\n this.textCtx.textAlign = \"center\";\n this.textCtx.textBaseline = \"middle\";\n this.textCtx.fillStyle = \"rgba(100, 0, 0, 0.6)\";\n this.textCtx.clearRect(0, 0, this.textCtx.canvas.width, this.textCtx.canvas.height);\n this.textCtx.fillText(\"Hello\", this.textCtx.canvas.width / 2, this.textCtx.canvas.height / 2);\n gl.t = new Texture(gl);\n gl.t.create(1, this.textCtx.canvas);\n console.log(\"create textctx ok.\");\n } else {\n console.log(\"create textctx fail.\");\n }\n }\n\n gl.y = new Texture(gl);\n gl.y.create(0, null);\n gl.u = new Texture(gl);\n gl.u.create(0, null);\n gl.v = new Texture(gl);\n gl.v.create(0, null);\n gl.y.bind(0, program, \"YTexture\");\n gl.u.bind(1, program, \"UTexture\");\n gl.v.bind(2, program, \"VTexture\");\n\n if (this.enableTextTexture == 1 && this.textCtx) {\n gl.t.bind(3, program, \"TTexture\");\n }\n };\n\n _proto2.renderFrame = function renderFrame(videoFrame, width, height, uOffset, vOffset) {\n if (!this.gl) {\n console.log(\"[ER] Render frame failed due to WebGL not supported.\");\n return;\n }\n\n var gl = this.gl;\n gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n gl.clearColor(0.0, 0.0, 0.0, 0.0);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n if (videoFrame) {\n gl.y.fill(width, height, videoFrame.subarray(0, uOffset));\n gl.u.fill(width >> 1, height >> 1, videoFrame.subarray(uOffset, uOffset + vOffset));\n gl.v.fill(width >> 1, height >> 1, videoFrame.subarray(uOffset + vOffset, videoFrame.length));\n }\n\n if (this.enableTextTexture == 1 && this.textCtx) {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this.textCtx.canvas);\n }\n\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n };\n\n _proto2.renderVideoFrame = function renderVideoFrame(data, width, height) {\n if (width < 1 || height < 1) {\n var gl = this.gl;\n var tmpBuf = new Uint8Array(gl.canvas.width * gl.canvas.height * 3 / 2);\n var i = 0;\n var uOffset = gl.canvas.width * gl.canvas.height;\n var uLen = gl.canvas.width * gl.canvas.height * 5 / 4;\n var vLen = tmpBuf.byteLength; //<2F><>ɫ<EFBFBD><C9AB>YUVֵ<56><D6B5>(0, 128, 128)\n\n for (i = uOffset; i < uLen; i++) {\n tmpBuf[i] = 128;\n }\n\n for (i = uLen; i < vLen; i++) {\n tmpBuf[i] = 128;\n }\n\n var yLength = gl.canvas.width * gl.canvas.height;\n var uvLength = gl.canvas.width / 2 * (gl.canvas.height / 2);\n this.renderFrame(tmpBuf, gl.canvas.width, gl.canvas.height, yLength, uvLength);\n return;\n }\n\n if (data == null) return; //YV12\n\n var yLength = width * height;\n var uvLength = width / 2 * (height / 2);\n this.renderFrame(data, width, height, yLength, uvLength);\n };\n\n return WebGLPlayer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebGLPlayer);\n\n//# sourceURL=webpack://WasmPlayer/./src/common/webgl.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/font-awesome-4.7.0/css/font-awesome.css":
|
||
/*!*****************************************************!*\
|
||
!*** ./src/font-awesome-4.7.0/css/font-awesome.css ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var api = __webpack_require__(/*! ../../../node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./font-awesome.css */ \"./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/font-awesome-4.7.0/css/font-awesome.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack://WasmPlayer/./src/font-awesome-4.7.0/css/font-awesome.css?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/font-awesome-4.7.0/fonts/fontawesome-webfont.eot":
|
||
/*!**************************************************************!*\
|
||
!*** ./src/font-awesome-4.7.0/fonts/fontawesome-webfont.eot ***!
|
||
\**************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:application/vnd.ms-fontobject;base64,bocCAKyGAgABAAIAAAAAAAAAAAAAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAWXjPkAAAAAAAAAAAAAAAAAAAAAAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAADgBSAGUAZwB1AGwAYQByAAAAJABWAGUAcgBzAGkAbwBuACAANAAuADcALgAwACAAMgAwADEANgAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAAAAAAAQAAAA0AgAADAFBGRlRNa75HuQAChpAAAAAcR0RFRgLwAAQAAoZwAAAAIE9TLzKIMnpAAAABWAAAAGBjbWFwCr86fwAADKgAAALyZ2FzcP//AAMAAoZoAAAACGdseWaP965NAAAarAACTLxoZWFkEInlLQAAANwAAAA2aGhlYQ8DCrUAAAEUAAAAJGhtdHhFeRiFAAABuAAACvBsb2NhAvWiXAAAD5wAAAsQbWF4cAMsAhwAAAE4AAAAIG5hbWXjl4usAAJnaAAABIZwb3N0r4+boQACa/AAABp1AAEAAAAEAcuQz3hZXw889QALBwAAAAAA1DPNMgAAAADUM80y////AAkBBgAAAAAIAAIAAQAAAAAAAQAABgD/AAAACQD/////CQEAAQAAAAAAAAAAAAAAAAAAArUAAQAAAsMCGQAnAAAAAAACAAAAAQABAAAAQAAAAAAAAAADBmkBkAAFAAAEjAQzAAAAhgSMBDMAAAJzAAABigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABweXJzAEAAIPUABgD/AAAABgABAAAAAAEAAAAAAAAAAAAAACAAAQOAAHAAAAAAAlUAAAHAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAABdBgAAAAaAAAAHAAAABwAAAAaAAAAGgAAABQAAAAeAAAAGgAAABwAAAAcAAAAHAAB5BYAAbgaAAAAGgAAABgAAAAcAAAAGAAAABYAAAAaAABoGAAAABgAAAAeAADIGgAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAASAAAAHAABABoAAAAMAAAAEgAAABoAAAAWAAAAHAAAABgAAAAeAAAAGgAAKBQAAAAaAAAAHgAAABoAAAAWAAAAEAAAABwAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAeAAAAGAAAABAAAAAYAAAAEAAAABwAAAAaAAAAGgAAABwAAAAQAAAAHAAAABoAAegWAAAAGAAAABgAAAAaAAAAHAAAABAAAAAYCAAEFAACaBQAAWgYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAABABgAAAAaAADUGgAA1BwAAAAYAAAAGAAANBYAAAAWAAAAGgAB6BgAAAAYAAAAHAAAABYAAAAcAAAAHAAAABwAAEAWAAAAGgAAABwAAAAcAAAAGAAAABwAAWgcAAFoHgAAABoAAAAaAAAAHgAAAAwAAQAcAAAAIAAAABgAAAAYAAAAHAAAABwAAAAeAAAAHAAAABgAAAAYAAAADgAAABwAAAAaAAAAGAAAABIAAAAcAAAAGAAAABoAAAAYAAAAGgAAABgAAAAWAAAAFgAAABQAAAAYAAAAGgAAsBAAAXwYAAAAGgAAAB4AAAAWAAAAGAAAABwAAAAcAAEAGAAACBwAAAAcAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABoAAFQcAAAAFgAAFBwAAAAYAAAAHgAAABoAAEAeAAAAGgABzBwAAAQcAAAAFgAAEBgAAAAYAAAAGAAAABwAAAAcAAA8HAAAABgAAAAaAAAAGgAAbBwAAQAYAAAAGAAAABgAAAAkAAAAHgAAABAAAAAQAAAACgABAAoAAAAaAAAAEAAAABAAAAAQAAAAHAAAABgAAAAYAAAAHAAAoBwAAAAcAAAAHAAAAA4AAAQcAAAAGgAAABwAAAAQAAAAHAAAAB4AAAAeAAAAFgAAABYAAAAcAAAAHAABAB4AAAAWAAAAGAAAABYAAAAWAAAAHgABABwAAAAeAAAAGgABABgAAAAYAAAAEAAAtBAAADQSAAE0EgABNAoAALQKAAA0EgABNBIAATQeAAAAHgAAABIAAAAMAAAAGAAAABoAAAAaAAAAHAABABgAAAAcAAAAGgAAABoAAAAeAAAAHAAAABwAAAAYAAAAGAAAABgAAAAeAAAAHgAAABwAAQAcAAEAGgAANB4AALQcAAAAGgAACBYAAAgaAAAAEAAAABoAAAAQAAGACgAAAAoAAYgYAAAUGAAAFB4AAAQaAAAAEgAAABYAADQUAAAAGgAAABYAAAwaAACQHAAAABgAAAAYAAAAGAAAABgAAAAWAAAAHAAAMBwAAAASAAAAGAAAABYAAAAGAAAAGAAAABgAAAAcAADYGAAAABYAAAAQAAAMEAAADBgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAEAAAABAAAAAQAADQDggAABAMABAUAAAAHAAAABQAAOAYAAAAGAAAABoAAIgaAACIHAAAiBwAAIgYAACIGAAAiBoAAAAaAAAAGAAAABgAAGwWAAAUGAAAABwAAAAcAAEAGAAALBgAAAAYAAAAGAAAABYAAAAYAAAAEAABEBgAAAAMAAAMDAAADBwAAQAcAAAAFgAAABoAAAAWAAAAGAAALBgAAAAYAAAAFAAAsBgAAAAUAAAAEAAAABgAAAAcAACwGAAAABwAAQAaAACAHgP//BwAAAAYAAAAFgAAABQAAFQYAAAAGAAAABgAAAAYAAAAGgAAABgAAAASAAAAFgAAACIAAAAaAAAAGAAAABwAAAAcAAAAIAAAACQAAAAYAAG0GAAAABwAAAAYAAAAGAAAAB4AAAAYAAAAIAAAABgAAAAf2ACkGAAAABgAAAAYAAAAHAAAABgAAAAUAAEAGgAAAAwAAQAcAAAAJAAAACAAAAAYAAAAHAAAABgAAAAcAABAIAAAACAAAAAYAACAGAAAABAAAAAkAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAJwcAAAAIAAAABwAAAAcAACAHAAATBwAAAAYAAAAHAABEBgAAAAUAADkHAAASCAAAAAcAAAAHAAAABgAAAAYAAAAHAAA+BQAAGAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAGQcAAGQGAABZCAAAAAgAACoHAAAABgAACQcAACcJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAIAAAOCAAADgWAAAAGAAAABgAAAAcAAAAHAAAABwAAAAgAAAAHAAAACAAAAAcAAAAGAAAACAAAAAgAAAAJAAAABgAAAAgAAAAFAAALCAAAAAYAAAAGAAAABgAAAAgAAAAGAAAABgAAAAgAAAAIAAAABgAAAAgAAAAIAAAABoAAAAaAAAAIAAAACAAAEwYAAAAJAAAABgAAAAcAAAAFAAACBgAAAAUAAAAGAAACBwAAAAcA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AaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAAiAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTANICVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxAJQFZ2xhc3MFbXVzaWMGc2VhcmNoCGVudmVsb3BlBWhlYXJ0BHN0YXIKc3Rhcl9lbXB0eQR1c2VyBGZpbG0IdGhfbGFyZ2UCdGgHdGhfbGlzdAJvawZyZW1vdmUHem9vbV9pbgh6b29tX291dANvZmYGc2lnbmFsA2NvZwV0cmFzaARob21lCGZpbGVfYWx0BHRpbWUEcm9hZAxkb3dubG9hZF9hbHQIZG93bmxvYWQGdXBsb2FkBWluYm94C3BsYXlfY2lyY2xlBnJlcGVhdAdyZWZyZXNoCGxpc3RfYWx0BGxvY2sEZmxhZwpoZWFkcGhvbmVzCnZvbHVtZV9vZmYLdm9sdW1lX2Rvd24Jdm9sdW1lX3VwBnFyY29kZQdiYXJjb2RlA3RhZwR0YWdzBGJvb2sIYm9va21hcmsFcHJpbnQGY2FtZXJhBGZvbnQEYm9sZAZpdGFsaWMLdGV4dF9oZWlnaHQKdGV4dF93aWR0aAphbGlnbl9sZWZ0DGFsaWduX2NlbnRlcgthbGlnbl9yaWdodA1hbGlnbl9qdXN0aWZ5BGxpc3QLaW5kZW50X2xlZnQMaW5kZW50X3JpZ2h0DmZhY2V0aW1lX3ZpZGVvB3BpY3R1cmUGcGVuY2lsCm1hcF9tYXJrZXIGYWRqdXN0BHRpbnQEZWRpdAVzaGFyZQVjaGVjawRtb3ZlDXN0ZXBfYmFja3dhcmQNZmFzdF9iYWNrd2FyZAhiYWNrd2FyZARwbGF5BXBhdXNlBHN0b3AHZm9yd2FyZAxmYXN0X2ZvcndhcmQMc3RlcF9mb3J3YXJkBWVqZWN0DGNoZXZyb25fbGVmdA1jaGV2cm9uX3JpZ2h0CXBsdXNfc2lnbgptaW51c19zaWduC3JlbW92ZV9zaWduB29rX3NpZ24NcXVlc3Rpb25fc2lnbglpbmZvX3NpZ24Kc2NyZWVuc2hvdA1yZW1vdmVfY2lyY2xlCW9rX2NpcmNsZQpiYW5fY2lyY2xlCmFycm93X2xlZnQLYXJyb3dfcmlnaHQIYXJyb3dfdXAKYXJyb3dfZG93bglzaGFyZV9hbHQLcmVzaXplX2Z1bGwMcmVzaXplX3NtYWxsEGV4Y2xhbWF0aW9uX3NpZ24EZ2lmdARsZWFmBGZpcmUIZXllX29wZW4JZXllX2Nsb3NlDHdhcm5pbmdfc2lnbgVwbGFuZQhjYWxlbmRhcgZyYW5kb20HY29tbWVudAZtYWduZXQKY2hldnJvbl91cAxjaGV2cm9uX2Rvd24HcmV0d2VldA1zaG9wcGluZ19jYXJ0DGZvbGRlcl9jbG9zZQtmb2xkZXJfb3Blbg9yZXNpemVfdmVydGljYWwRcmVzaXplX2hvcml6b250YWwJYmFyX2NoYXJ0DHR3aXR0ZXJfc2lnbg1mYWNlYm9va19zaWduDGNhbWVyYV9yZXRybwNrZXkEY29ncwhjb21tZW50cw10aHVtYnNfdXBfYWx0D3RodW1ic19kb3duX2FsdAlzdGFyX2hhbGYLaGVhcnRfZW1wdHkHc2lnbm91dA1saW5rZWRpbl9zaWduB3B1c2hwaW4NZXh0ZXJuYWxfbGluawZzaWduaW4GdHJvcGh5C2dpdGh1Yl9zaWduCnVwbG9hZF9hbHQFbGVtb24FcGhvbmULY2hlY2tfZW1wdHkOYm9va21hcmtfZW1wdHkKcGhvbmVfc2lnbgd0d2l0dGVyCGZhY2Vib29rBmdpdGh1YgZ1bmxvY2sLY3JlZGl0X2NhcmQDcnNzA2hkZAhidWxsaG9ybgRiZWxsC2NlcnRpZmljYXRlCmhhbmRfcmlnaHQJaGFuZF9sZWZ0B2hhbmRfdXAJaGFuZF9kb3duEWNpcmNsZV9hcnJvd19sZWZ0EmNpcmNsZV9hcnJvd19yaWdodA9jaXJjbGVfYXJyb3dfdXARY2lyY2xlX2Fycm93X2Rvd24FZ2xvYmUGd3JlbmNoBXRhc2tzBmZpbHRlcglicmllZmNhc2UKZnVsbHNjcmVlbgVncm91cARsaW5rBWNsb3VkBmJlYWtlcgNjdXQEY29weQpwYXBlcl9jbGlwBHNhdmUKc2lnbl9ibGFuawdyZW9yZGVyAnVsAm9sDXN0cmlrZXRocm91Z2gJdW5kZXJsaW5lBXRhYmxlBW1hZ2ljBXRydWNrCXBpbnRlcmVzdA5waW50ZXJlc3Rfc2lnbhBnb29nbGVfcGx1c19zaWduC2dvb2dsZV9wbHVzBW1vbmV5CmNhcmV0X2Rvd24IY2FyZXRfdXAKY2FyZXRfbGVmdAtjYXJldF9yaWdodAdjb2x1bW5zBHNvcnQJc29ydF9kb3duB3NvcnRfdXAMZW52ZWxvcGVfYWx0CGxpbmtlZGluBHVuZG8FbGVnYWwJZGFzaGJvYXJkC2NvbW1lbnRfYWx0DGNvbW1lbnRzX2FsdARib2x0B3NpdGVtYXAIdW1icmVsbGEFcGFzdGUKbGlnaHRfYnVsYghleGNoYW5nZQ5jbG91ZF9kb3dubG9hZAxjbG91ZF91cGxvYWQHdXNlcl9tZAtzdGV0aG9zY29wZQhzdWl0Y2FzZQhiZWxsX2FsdAZjb2ZmZWUEZm9vZA1maWxlX3RleHRfYWx0CGJ1aWxkaW5nCGhvc3BpdGFsCWFtYnVsYW5jZQZtZWRraXQLZmlnaHRlcl9qZXQEYmVlcgZoX3NpZ24EZjBmZRFkb3VibGVfYW5nbGVfbGVmdBJkb3VibGVfYW5nbGVfcmlnaHQPZG91YmxlX2FuZ2xlX3VwEWRvdWJsZV9hbmdsZV9kb3duCmFuZ2xlX2xlZnQLYW5nbGVfcmlnaHQIYW5nbGVfdXAKYW5nbGVfZG93bgdkZXNrdG9wBmxhcHRvcAZ0YWJsZXQMbW9iaWxlX3Bob25lDGNpcmNsZV9ibGFuawpxdW90ZV9sZWZ0C3F1b3RlX3JpZ2h0B3NwaW5uZXIGY2lyY2xlBXJlcGx5CmdpdGh1Yl9hbHQQZm9sZGVyX2Nsb3NlX2FsdA9mb2xkZXJfb3Blbl9hbHQKZXhwYW5kX2FsdAxjb2xsYXBzZV9hbHQFc21pbGUFZnJvd24DbWVoB2dhbWVwYWQIa2V5Ym9hcmQIZmxhZ19hbHQOZmxhZ19jaGVja2VyZWQIdGVybWluYWwEY29kZQlyZXBseV9hbGwPc3Rhcl9oYWxmX2VtcHR5DmxvY2F0aW9uX2Fycm93BGNyb3AJY29kZV9mb3JrBnVubGluawRfMjc5C2V4Y2xhbWF0aW9uC3N1cGVyc2NyaXB0CXN1YnNjcmlwdARfMjgzDHB1enpsZV9waWVjZQptaWNyb3Bob25lDm1pY3JvcGhvbmVfb2ZmBnNoaWVsZA5jYWxlbmRhcl9lbXB0eRFmaXJlX2V4dGluZ3Vpc2hlcgZyb2NrZXQGbWF4Y2RuEWNoZXZyb25fc2lnbl9sZWZ0EmNoZXZyb25fc2lnbl9yaWdodA9jaGV2cm9uX3NpZ25fdXARY2hldnJvbl9zaWduX2Rvd24FaHRtbDUEY3NzMwZhbmNob3IKdW5sb2NrX2FsdAhidWxsc2V5ZRNlbGxpcHNpc19ob3Jpem9udGFsEWVsbGlwc2lzX3ZlcnRpY2FsBF8zMDMJcGxheV9zaWduBnRpY2tldA5taW51c19zaWduX2FsdAtjaGVja19taW51cwhsZXZlbF91cApsZXZlbF9kb3duCmNoZWNrX3NpZ24JZWRpdF9zaWduBF8zMTIKc2hhcmVfc2lnbgdjb21wYXNzCGNvbGxhcHNlDGNvbGxhcHNlX3RvcARfMzE3A2V1cgNnYnADdXNkA2lucgNqcHkDcnViA2tydwNidGMEZmlsZQlmaWxlX3RleHQQc29ydF9ieV9hbHBoYWJldARfMzI5EnNvcnRfYnlfYXR0cmlidXRlcxZzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0DXNvcnRfYnlfb3JkZXIRc29ydF9ieV9vcmRlcl9hbHQEXzMzNARfMzM1DHlvdXR1YmVfc2lnbgd5b3V0dWJlBHhpbmcJeGluZ19zaWduDHlvdXR1YmVfcGxheQdkcm9wYm94DXN0YWNrZXhjaGFuZ2UJaW5zdGFncmFtBmZsaWNrcgNhZG4EZjE3MQ5iaXRidWNrZXRfc2lnbgZ0dW1ibHILdHVtYmxyX3NpZ24PbG9uZ19hcnJvd19kb3duDWxvbmdfYXJyb3dfdXAPbG9uZ19hcnJvd19sZWZ0EGxvbmdfYXJyb3dfcmlnaHQHd2luZG93cwdhbmRyb2lkBWxpbnV4B2RyaWJibGUFc2t5cGUKZm91cnNxdWFyZQZ0cmVsbG8GZmVtYWxlBG1hbGUGZ2l0dGlwA3N1bgRfMzY2B2FyY2hpdmUDYnVnAnZrBXdlaWJvBnJlbnJlbgRfMzcyDnN0YWNrX2V4Y2hhbmdlBF8zNzQVYXJyb3dfY2lyY2xlX2FsdF9sZWZ0BF8zNzYOZG90X2NpcmNsZV9hbHQEXzM3OAx2aW1lb19zcXVhcmUEXzM4MA1wbHVzX3NxdWFyZV9vBF8zODIEXzM4MwRfMzg0BF8zODUEXzM4NgRfMzg3BF8zODgEXzM4OQd1bmlGMUEwBGYxYTEEXzM5MgRfMzkzBGYxYTQEXzM5NQRfMzk2BF8zOTcEXzM5OARfMzk5BF80MDAEZjFhYgRfNDAyBF80MDMEXzQwNAd1bmlGMUIxBF80MDYEXzQwNwRfNDA4BF80MDkEXzQxMARfNDExBF80MTIEXzQxMwRfNDE0BF80MTUEXzQxNgRfNDE3BF80MTgEXzQxOQd1bmlGMUMwB3VuaUYxQzEEXzQyMgRfNDIzBF80MjQEXzQyNQRfNDI2BF80MjcEXzQyOARfNDI5BF80MzAEXzQzMQRfNDMyBF80MzMEXzQzNAd1bmlGMUQwB3VuaUYxRDEHdW5pRjFEMgRfNDM4BF80MzkHdW5pRjFENQd1bmlGMUQ2B3VuaUYxRDcEXzQ0MwRfNDQ0BF80NDUEXzQ0NgRfNDQ3BF80NDgEXzQ0OQd1bmlGMUUwBF80NTEEXzQ1MgRfNDUzBF80NTQEXzQ1NQRfNDU2BF80NTcEXzQ1OARfNDU5BF80NjAEXzQ2MQRfNDYyBF80NjMEXzQ2NAd1bmlGMUYwBF80NjYEXzQ2NwRmMWYzBF80NjkEXzQ3MARfNDcxBF80NzIEXzQ3MwRfNDc0BF80NzUEXzQ3NgRmMWZjBF80NzgEXzQ3OQRfNDgwBF80ODEEXzQ4MgRfNDgzBF80ODQEXzQ4NQRfNDg2BF80ODcEXzQ4OARfNDg5BF80OTAEXzQ5MQRfNDkyBF80OTMEXzQ5NARmMjEwBF80OTYEZjIxMgRfNDk4BF80OTkEXzUwMARfNTAxBF81MDIEXzUwMwRfNTA0BF81MDUEXzUwNgRfNTA3BF81MDgEXzUwOQV2ZW51cwRfNTExBF81MTIEXzUxMwRfNTE0BF81MTUEXzUxNgRfNTE3BF81MTgEXzUxOQRfNTIwBF81MjEEXzUyMgRfNTIzBF81MjQEXzUyNQRfNTI2BF81MjcEXzUyOARfNTI5BF81MzAEXzUzMQRfNTMyBF81MzMEXzUzNARfNTM1BF81MzYEXzUzNwRfNTM4BF81MzkEXzU0MARfNTQxBF81NDIEXzU0MwRfNTQ0BF81NDUEXzU0NgRfNTQ3BF81NDgEXzU0OQRfNTUwBF81NTEEXzU1MgRfNTUzBF81NTQEXzU1NQRfNTU2BF81NTcEXzU1OARfNTU5BF81NjAEXzU2MQRfNTYyBF81NjMEXzU2NARfNTY1BF81NjYEXzU2NwRfNTY4BF81NjkEZjI2MARmMjYxBF81NzIEZjI2MwRfNTc0BF81NzUEXzU3NgRfNTc3BF81NzgEXzU3OQRfNTgwBF81ODEEXzU4MgRfNTgzBF81ODQEXzU4NQRfNTg2BF81ODcEXzU4OARfNTg5BF81OTAEXzU5MQRfNTkyBF81OTMEXzU5NARfNTk1BF81OTYEXzU5NwRfNTk4BGYyN2UHdW5pRjI4MAd1bmlGMjgxBF82MDIEXzYwMwRfNjA0B3VuaUYyODUHdW5pRjI4NgRfNjA3BF82MDgEXzYwOQRfNjEwBF82MTEEXzYxMgRfNjEzBF82MTQEXzYxNQRfNjE2BF82MTcEXzYxOARfNjE5BF82MjAEXzYyMQRfNjIyBF82MjMEXzYyNARfNjI1BF82MjYEXzYyNwRfNjI4BF82MjkHdW5pRjJBMAd1bmlGMkExB3VuaUYyQTIHdW5pRjJBMwd1bmlGMkE0B3VuaUYyQTUHdW5pRjJBNgd1bmlGMkE3B3VuaUYyQTgHdW5pRjJBOQd1bmlGMkFBB3VuaUYyQUIHdW5pRjJBQwd1bmlGMkFEB3VuaUYyQUUHdW5pRjJCMAd1bmlGMkIxB3VuaUYyQjIHdW5pRjJCMwd1bmlGMkI0B3VuaUYyQjUHdW5pRjJCNgd1bmlGMkI3B3VuaUYyQjgHdW5pRjJCOQd1bmlGMkJBB3VuaUYyQkIHdW5pRjJCQwd1bmlGMkJEB3VuaUYyQkUHdW5pRjJDMAd1bmlGMkMxB3VuaUYyQzIHdW5pRjJDMwd1bmlGMkM0B3VuaUYyQzUHdW5pRjJDNgd1bmlGMkM3B3VuaUYyQzgHdW5pRjJDOQd1bmlGMkNBB3VuaUYyQ0IHdW5pRjJDQwd1bmlGMkNEB3VuaUYyQ0UHdW5pRjJEMAd1bmlGMkQxB3VuaUYyRDIHdW5pRjJEMwd1bmlGMkQ0B3VuaUYyRDUHdW5pRjJENgd1bmlGMkQ3B3VuaUYyRDgHdW5pRjJEOQd1bmlGMkRBB3VuaUYyREIHdW5pRjJEQwd1bmlGMkREB3VuaUYyREUHdW5pRjJFMAd1bmlGMkUxB3VuaUYyRTIHdW5pRjJFMwd1bmlGMkU0B3VuaUYyRTUHdW5pRjJFNgd1bmlGMkU3BF82OTgHdW5pRjJFOQd1bmlGMkVBB3VuaUYyRUIHdW5pRjJFQwd1bmlGMkVEB3VuaUYyRUUAAAAAAAAB//8AAgABAAAADgAAABgAAAAAAAIAAQABAsIAAQAEAAAAAgAAAAAAAQAAAADMPaLPAAAAAMtPPDAAAAAA1DFouQ==\");\n\n//# sourceURL=webpack://WasmPlayer/./src/font-awesome-4.7.0/fonts/fontawesome-webfont.eot?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/font-awesome-4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0":
|
||
/*!**********************************************************************!*\
|
||
!*** ./src/font-awesome-4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0 ***!
|
||
\**********************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:application/vnd.ms-fontobject;base64,bocCAKyGAgABAAIAAAAAAAAAAAAAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAWXjPkAAAAAAAAAAAAAAAAAAAAAAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAADgBSAGUAZwB1AGwAYQByAAAAJABWAGUAcgBzAGkAbwBuACAANAAuADcALgAwACAAMgAwADEANgAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAAAAAAAQAAAA0AgAADAFBGRlRNa75HuQAChpAAAAAcR0RFRgLwAAQAAoZwAAAAIE9TLzKIMnpAAAABWAAAAGBjbWFwCr86fwAADKgAAALyZ2FzcP//AAMAAoZoAAAACGdseWaP965NAAAarAACTLxoZWFkEInlLQAAANwAAAA2aGhlYQ8DCrUAAAEUAAAAJGhtdHhFeRiFAAABuAAACvBsb2NhAvWiXAAAD5wAAAsQbWF4cAMsAhwAAAE4AAAAIG5hbWXjl4usAAJnaAAABIZwb3N0r4+boQACa/AAABp1AAEAAAAEAcuQz3hZXw889QALBwAAAAAA1DPNMgAAAADUM80y////AAkBBgAAAAAIAAIAAQAAAAAAAQAABgD/AAAACQD/////CQEAAQAAAAAAAAAAAAAAAAAAArUAAQAAAsMCGQAnAAAAAAACAAAAAQABAAAAQAAAAAAAAAADBmkBkAAFAAAEjAQzAAAAhgSMBDMAAAJzAAABigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABweXJzAEAAIPUABgD/AAAABgABAAAAAAEAAAAAAAAAAAAAACAAAQOAAHAAAAAAAlUAAAHAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAABdBgAAAAaAAAAHAAAABwAAAAaAAAAGgAAABQAAAAeAAAAGgAAABwAAAAcAAAAHAAB5BYAAbgaAAAAGgAAABgAAAAcAAAAGAAAABYAAAAaAABoGAAAABgAAAAeAADIGgAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAASAAAAHAABABoAAAAMAAAAEgAAABoAAAAWAAAAHAAAABgAAAAeAAAAGgAAKBQAAAAaAAAAHgAAABoAAAAWAAAAEAAAABwAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAeAAAAGAAAABAAAAAYAAAAEAAAABwAAAAaAAAAGgAAABwAAAAQAAAAHAAAABoAAegWAAAAGAAAABgAAAAaAAAAHAAAABAAAAAYCAAEFAACaBQAAWgYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAABABgAAAAaAADUGgAA1BwAAAAYAAAAGAAANBYAAAAWAAAAGgAB6BgAAAAYAAAAHAAAABYAAAAcAAAAHAAAABwAAEAWAAAAGgAAABwAAAAcAAAAGAAAABwAAWgcAAFoHgAAABoAAAAaAAAAHgAAAAwAAQAcAAAAIAAAABgAAAAYAAAAHAAAABwAAAAeAAAAHAAAABgAAAAYAAAADgAAABwAAAAaAAAAGAAAABIAAAAcAAAAGAAAABoAAAAYAAAAGgAAABgAAAAWAAAAFgAAABQAAAAYAAAAGgAAsBAAAXwYAAAAGgAAAB4AAAAWAAAAGAAAABwAAAAcAAEAGAAACBwAAAAcAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABoAAFQcAAAAFgAAFBwAAAAYAAAAHgAAABoAAEAeAAAAGgABzBwAAAQcAAAAFgAAEBgAAAAYAAAAGAAAABwAAAAcAAA8HAAAABgAAAAaAAAAGgAAbBwAAQAYAAAAGAAAABgAAAAkAAAAHgAAABAAAAAQAAAACgABAAoAAAAaAAAAEAAAABAAAAAQAAAAHAAAABgAAAAYAAAAHAAAoBwAAAAcAAAAHAAAAA4AAAQcAAAAGgAAABwAAAAQAAAAHAAAAB4AAAAeAAAAFgAAABYAAAAcAAAAHAABAB4AAAAWAAAAGAAAABYAAAAWAAAAHgABABwAAAAeAAAAGgABABgAAAAYAAAAEAAAtBAAADQSAAE0EgABNAoAALQKAAA0EgABNBIAATQeAAAAHgAAABIAAAAMAAAAGAAAABoAAAAaAAAAHAABABgAAAAcAAAAGgAAABoAAAAeAAAAHAAAABwAAAAYAAAAGAAAABgAAAAeAAAAHgAAABwAAQAcAAEAGgAANB4AALQcAAAAGgAACBYAAAgaAAAAEAAAABoAAAAQAAGACgAAAAoAAYgYAAAUGAAAFB4AAAQaAAAAEgAAABYAADQUAAAAGgAAABYAAAwaAACQHAAAABgAAAAYAAAAGAAAABgAAAAWAAAAHAAAMBwAAAASAAAAGAAAABYAAAAGAAAAGAAAABgAAAAcAADYGAAAABYAAAAQAAAMEAAADBgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAEAAAABAAAAAQAADQDggAABAMABAUAAAAHAAAABQAAOAYAAAAGAAAABoAAIgaAACIHAAAiBwAAIgYAACIGAAAiBoAAAAaAAAAGAAAABgAAGwWAAAUGAAAABwAAAAcAAEAGAAALBgAAAAYAAAAGAAAABYAAAAYAAAAEAABEBgAAAAMAAAMDAAADBwAAQAcAAAAFgAAABoAAAAWAAAAGAAALBgAAAAYAAAAFAAAsBgAAAAUAAAAEAAAABgAAAAcAACwGAAAABwAAQAaAACAHgP//BwAAAAYAAAAFgAAABQAAFQYAAAAGAAAABgAAAAYAAAAGgAAABgAAAASAAAAFgAAACIAAAAaAAAAGAAAABwAAAAcAAAAIAAAACQAAAAYAAG0GAAAABwAAAAYAAAAGAAAAB4AAAAYAAAAIAAAABgAAAAf2ACkGAAAABgAAAAYAAAAHAAAABgAAAAUAAEAGgAAAAwAAQAcAAAAJAAAACAAAAAYAAAAHAAAABgAAAAcAABAIAAAACAAAAAYAACAGAAAABAAAAAkAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAJwcAAAAIAAAABwAAAAcAACAHAAATBwAAAAYAAAAHAABEBgAAAAUAADkHAAASCAAAAAcAAAAHAAAABgAAAAYAAAAHAAA+BQAAGAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAGQcAAGQGAABZCAAAAAgAACoHAAAABgAACQcAACcJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAIAAAOCAAADgWAAAAGAAAABgAAAAcAAAAHAAAABwAAAAgAAAAHAAAACAAAAAcAAAAGAAAACAAAAAgAAAAJAAAABgAAAAgAAAAFAAALCAAAAAYAAAAGAAAABgAAAAgAAAAGAAAABgAAAAgAAAAIAAAABgAAAAgAAAAIAAAABoAAAAaAAAAIAAAACAAAEwYAAAAJAAAABgAAAAcAAAAFAAACBgAAAAUAAAAGAAACBwAAAAcA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AaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAAiAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTANICVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxAJQFZ2xhc3MFbXVzaWMGc2VhcmNoCGVudmVsb3BlBWhlYXJ0BHN0YXIKc3Rhcl9lbXB0eQR1c2VyBGZpbG0IdGhfbGFyZ2UCdGgHdGhfbGlzdAJvawZyZW1vdmUHem9vbV9pbgh6b29tX291dANvZmYGc2lnbmFsA2NvZwV0cmFzaARob21lCGZpbGVfYWx0BHRpbWUEcm9hZAxkb3dubG9hZF9hbHQIZG93bmxvYWQGdXBsb2FkBWluYm94C3BsYXlfY2lyY2xlBnJlcGVhdAdyZWZyZXNoCGxpc3RfYWx0BGxvY2sEZmxhZwpoZWFkcGhvbmVzCnZvbHVtZV9vZmYLdm9sdW1lX2Rvd24Jdm9sdW1lX3VwBnFyY29kZQdiYXJjb2RlA3RhZwR0YWdzBGJvb2sIYm9va21hcmsFcHJpbnQGY2FtZXJhBGZvbnQEYm9sZAZpdGFsaWMLdGV4dF9oZWlnaHQKdGV4dF93aWR0aAphbGlnbl9sZWZ0DGFsaWduX2NlbnRlcgthbGlnbl9yaWdodA1hbGlnbl9qdXN0aWZ5BGxpc3QLaW5kZW50X2xlZnQMaW5kZW50X3JpZ2h0DmZhY2V0aW1lX3ZpZGVvB3BpY3R1cmUGcGVuY2lsCm1hcF9tYXJrZXIGYWRqdXN0BHRpbnQEZWRpdAVzaGFyZQVjaGVjawRtb3ZlDXN0ZXBfYmFja3dhcmQNZmFzdF9iYWNrd2FyZAhiYWNrd2FyZARwbGF5BXBhdXNlBHN0b3AHZm9yd2FyZAxmYXN0X2ZvcndhcmQMc3RlcF9mb3J3YXJkBWVqZWN0DGNoZXZyb25fbGVmdA1jaGV2cm9uX3JpZ2h0CXBsdXNfc2lnbgptaW51c19zaWduC3JlbW92ZV9zaWduB29rX3NpZ24NcXVlc3Rpb25fc2lnbglpbmZvX3NpZ24Kc2NyZWVuc2hvdA1yZW1vdmVfY2lyY2xlCW9rX2NpcmNsZQpiYW5fY2lyY2xlCmFycm93X2xlZnQLYXJyb3dfcmlnaHQIYXJyb3dfdXAKYXJyb3dfZG93bglzaGFyZV9hbHQLcmVzaXplX2Z1bGwMcmVzaXplX3NtYWxsEGV4Y2xhbWF0aW9uX3NpZ24EZ2lmdARsZWFmBGZpcmUIZXllX29wZW4JZXllX2Nsb3NlDHdhcm5pbmdfc2lnbgVwbGFuZQhjYWxlbmRhcgZyYW5kb20HY29tbWVudAZtYWduZXQKY2hldnJvbl91cAxjaGV2cm9uX2Rvd24HcmV0d2VldA1zaG9wcGluZ19jYXJ0DGZvbGRlcl9jbG9zZQtmb2xkZXJfb3Blbg9yZXNpemVfdmVydGljYWwRcmVzaXplX2hvcml6b250YWwJYmFyX2NoYXJ0DHR3aXR0ZXJfc2lnbg1mYWNlYm9va19zaWduDGNhbWVyYV9yZXRybwNrZXkEY29ncwhjb21tZW50cw10aHVtYnNfdXBfYWx0D3RodW1ic19kb3duX2FsdAlzdGFyX2hhbGYLaGVhcnRfZW1wdHkHc2lnbm91dA1saW5rZWRpbl9zaWduB3B1c2hwaW4NZXh0ZXJuYWxfbGluawZzaWduaW4GdHJvcGh5C2dpdGh1Yl9zaWduCnVwbG9hZF9hbHQFbGVtb24FcGhvbmULY2hlY2tfZW1wdHkOYm9va21hcmtfZW1wdHkKcGhvbmVfc2lnbgd0d2l0dGVyCGZhY2Vib29rBmdpdGh1YgZ1bmxvY2sLY3JlZGl0X2NhcmQDcnNzA2hkZAhidWxsaG9ybgRiZWxsC2NlcnRpZmljYXRlCmhhbmRfcmlnaHQJaGFuZF9sZWZ0B2hhbmRfdXAJaGFuZF9kb3duEWNpcmNsZV9hcnJvd19sZWZ0EmNpcmNsZV9hcnJvd19yaWdodA9jaXJjbGVfYXJyb3dfdXARY2lyY2xlX2Fycm93X2Rvd24FZ2xvYmUGd3JlbmNoBXRhc2tzBmZpbHRlcglicmllZmNhc2UKZnVsbHNjcmVlbgVncm91cARsaW5rBWNsb3VkBmJlYWtlcgNjdXQEY29weQpwYXBlcl9jbGlwBHNhdmUKc2lnbl9ibGFuawdyZW9yZGVyAnVsAm9sDXN0cmlrZXRocm91Z2gJdW5kZXJsaW5lBXRhYmxlBW1hZ2ljBXRydWNrCXBpbnRlcmVzdA5waW50ZXJlc3Rfc2lnbhBnb29nbGVfcGx1c19zaWduC2dvb2dsZV9wbHVzBW1vbmV5CmNhcmV0X2Rvd24IY2FyZXRfdXAKY2FyZXRfbGVmdAtjYXJldF9yaWdodAdjb2x1bW5zBHNvcnQJc29ydF9kb3duB3NvcnRfdXAMZW52ZWxvcGVfYWx0CGxpbmtlZGluBHVuZG8FbGVnYWwJZGFzaGJvYXJkC2NvbW1lbnRfYWx0DGNvbW1lbnRzX2FsdARib2x0B3NpdGVtYXAIdW1icmVsbGEFcGFzdGUKbGlnaHRfYnVsYghleGNoYW5nZQ5jbG91ZF9kb3dubG9hZAxjbG91ZF91cGxvYWQHdXNlcl9tZAtzdGV0aG9zY29wZQhzdWl0Y2FzZQhiZWxsX2FsdAZjb2ZmZWUEZm9vZA1maWxlX3RleHRfYWx0CGJ1aWxkaW5nCGhvc3BpdGFsCWFtYnVsYW5jZQZtZWRraXQLZmlnaHRlcl9qZXQEYmVlcgZoX3NpZ24EZjBmZRFkb3VibGVfYW5nbGVfbGVmdBJkb3VibGVfYW5nbGVfcmlnaHQPZG91YmxlX2FuZ2xlX3VwEWRvdWJsZV9hbmdsZV9kb3duCmFuZ2xlX2xlZnQLYW5nbGVfcmlnaHQIYW5nbGVfdXAKYW5nbGVfZG93bgdkZXNrdG9wBmxhcHRvcAZ0YWJsZXQMbW9iaWxlX3Bob25lDGNpcmNsZV9ibGFuawpxdW90ZV9sZWZ0C3F1b3RlX3JpZ2h0B3NwaW5uZXIGY2lyY2xlBXJlcGx5CmdpdGh1Yl9hbHQQZm9sZGVyX2Nsb3NlX2FsdA9mb2xkZXJfb3Blbl9hbHQKZXhwYW5kX2FsdAxjb2xsYXBzZV9hbHQFc21pbGUFZnJvd24DbWVoB2dhbWVwYWQIa2V5Ym9hcmQIZmxhZ19hbHQOZmxhZ19jaGVja2VyZWQIdGVybWluYWwEY29kZQlyZXBseV9hbGwPc3Rhcl9oYWxmX2VtcHR5DmxvY2F0aW9uX2Fycm93BGNyb3AJY29kZV9mb3JrBnVubGluawRfMjc5C2V4Y2xhbWF0aW9uC3N1cGVyc2NyaXB0CXN1YnNjcmlwdARfMjgzDHB1enpsZV9waWVjZQptaWNyb3Bob25lDm1pY3JvcGhvbmVfb2ZmBnNoaWVsZA5jYWxlbmRhcl9lbXB0eRFmaXJlX2V4dGluZ3Vpc2hlcgZyb2NrZXQGbWF4Y2RuEWNoZXZyb25fc2lnbl9sZWZ0EmNoZXZyb25fc2lnbl9yaWdodA9jaGV2cm9uX3NpZ25fdXARY2hldnJvbl9zaWduX2Rvd24FaHRtbDUEY3NzMwZhbmNob3IKdW5sb2NrX2FsdAhidWxsc2V5ZRNlbGxpcHNpc19ob3Jpem9udGFsEWVsbGlwc2lzX3ZlcnRpY2FsBF8zMDMJcGxheV9zaWduBnRpY2tldA5taW51c19zaWduX2FsdAtjaGVja19taW51cwhsZXZlbF91cApsZXZlbF9kb3duCmNoZWNrX3NpZ24JZWRpdF9zaWduBF8zMTIKc2hhcmVfc2lnbgdjb21wYXNzCGNvbGxhcHNlDGNvbGxhcHNlX3RvcARfMzE3A2V1cgNnYnADdXNkA2lucgNqcHkDcnViA2tydwNidGMEZmlsZQlmaWxlX3RleHQQc29ydF9ieV9hbHBoYWJldARfMzI5EnNvcnRfYnlfYXR0cmlidXRlcxZzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0DXNvcnRfYnlfb3JkZXIRc29ydF9ieV9vcmRlcl9hbHQEXzMzNARfMzM1DHlvdXR1YmVfc2lnbgd5b3V0dWJlBHhpbmcJeGluZ19zaWduDHlvdXR1YmVfcGxheQdkcm9wYm94DXN0YWNrZXhjaGFuZ2UJaW5zdGFncmFtBmZsaWNrcgNhZG4EZjE3MQ5iaXRidWNrZXRfc2lnbgZ0dW1ibHILdHVtYmxyX3NpZ24PbG9uZ19hcnJvd19kb3duDWxvbmdfYXJyb3dfdXAPbG9uZ19hcnJvd19sZWZ0EGxvbmdfYXJyb3dfcmlnaHQHd2luZG93cwdhbmRyb2lkBWxpbnV4B2RyaWJibGUFc2t5cGUKZm91cnNxdWFyZQZ0cmVsbG8GZmVtYWxlBG1hbGUGZ2l0dGlwA3N1bgRfMzY2B2FyY2hpdmUDYnVnAnZrBXdlaWJvBnJlbnJlbgRfMzcyDnN0YWNrX2V4Y2hhbmdlBF8zNzQVYXJyb3dfY2lyY2xlX2FsdF9sZWZ0BF8zNzYOZG90X2NpcmNsZV9hbHQEXzM3OAx2aW1lb19zcXVhcmUEXzM4MA1wbHVzX3NxdWFyZV9vBF8zODIEXzM4MwRfMzg0BF8zODUEXzM4NgRfMzg3BF8zODgEXzM4OQd1bmlGMUEwBGYxYTEEXzM5MgRfMzkzBGYxYTQEXzM5NQRfMzk2BF8zOTcEXzM5OARfMzk5BF80MDAEZjFhYgRfNDAyBF80MDMEXzQwNAd1bmlGMUIxBF80MDYEXzQwNwRfNDA4BF80MDkEXzQxMARfNDExBF80MTIEXzQxMwRfNDE0BF80MTUEXzQxNgRfNDE3BF80MTgEXzQxOQd1bmlGMUMwB3VuaUYxQzEEXzQyMgRfNDIzBF80MjQEXzQyNQRfNDI2BF80MjcEXzQyOARfNDI5BF80MzAEXzQzMQRfNDMyBF80MzMEXzQzNAd1bmlGMUQwB3VuaUYxRDEHdW5pRjFEMgRfNDM4BF80MzkHdW5pRjFENQd1bmlGMUQ2B3VuaUYxRDcEXzQ0MwRfNDQ0BF80NDUEXzQ0NgRfNDQ3BF80NDgEXzQ0OQd1bmlGMUUwBF80NTEEXzQ1MgRfNDUzBF80NTQEXzQ1NQRfNDU2BF80NTcEXzQ1OARfNDU5BF80NjAEXzQ2MQRfNDYyBF80NjMEXzQ2NAd1bmlGMUYwBF80NjYEXzQ2NwRmMWYzBF80NjkEXzQ3MARfNDcxBF80NzIEXzQ3MwRfNDc0BF80NzUEXzQ3NgRmMWZjBF80NzgEXzQ3OQRfNDgwBF80ODEEXzQ4MgRfNDgzBF80ODQEXzQ4NQRfNDg2BF80ODcEXzQ4OARfNDg5BF80OTAEXzQ5MQRfNDkyBF80OTMEXzQ5NARmMjEwBF80OTYEZjIxMgRfNDk4BF80OTkEXzUwMARfNTAxBF81MDIEXzUwMwRfNTA0BF81MDUEXzUwNgRfNTA3BF81MDgEXzUwOQV2ZW51cwRfNTExBF81MTIEXzUxMwRfNTE0BF81MTUEXzUxNgRfNTE3BF81MTgEXzUxOQRfNTIwBF81MjEEXzUyMgRfNTIzBF81MjQEXzUyNQRfNTI2BF81MjcEXzUyOARfNTI5BF81MzAEXzUzMQRfNTMyBF81MzMEXzUzNARfNTM1BF81MzYEXzUzNwRfNTM4BF81MzkEXzU0MARfNTQxBF81NDIEXzU0MwRfNTQ0BF81NDUEXzU0NgRfNTQ3BF81NDgEXzU0OQRfNTUwBF81NTEEXzU1MgRfNTUzBF81NTQEXzU1NQRfNTU2BF81NTcEXzU1OARfNTU5BF81NjAEXzU2MQRfNTYyBF81NjMEXzU2NARfNTY1BF81NjYEXzU2NwRfNTY4BF81NjkEZjI2MARmMjYxBF81NzIEZjI2MwRfNTc0BF81NzUEXzU3NgRfNTc3BF81NzgEXzU3OQRfNTgwBF81ODEEXzU4MgRfNTgzBF81ODQEXzU4NQRfNTg2BF81ODcEXzU4OARfNTg5BF81OTAEXzU5MQRfNTkyBF81OTMEXzU5NARfNTk1BF81OTYEXzU5NwRfNTk4BGYyN2UHdW5pRjI4MAd1bmlGMjgxBF82MDIEXzYwMwRfNjA0B3VuaUYyODUHdW5pRjI4NgRfNjA3BF82MDgEXzYwOQRfNjEwBF82MTEEXzYxMgRfNjEzBF82MTQEXzYxNQRfNjE2BF82MTcEXzYxOARfNjE5BF82MjAEXzYyMQRfNjIyBF82MjMEXzYyNARfNjI1BF82MjYEXzYyNwRfNjI4BF82MjkHdW5pRjJBMAd1bmlGMkExB3VuaUYyQTIHdW5pRjJBMwd1bmlGMkE0B3VuaUYyQTUHdW5pRjJBNgd1bmlGMkE3B3VuaUYyQTgHdW5pRjJBOQd1bmlGMkFBB3VuaUYyQUIHdW5pRjJBQwd1bmlGMkFEB3VuaUYyQUUHdW5pRjJCMAd1bmlGMkIxB3VuaUYyQjIHdW5pRjJCMwd1bmlGMkI0B3VuaUYyQjUHdW5pRjJCNgd1bmlGMkI3B3VuaUYyQjgHdW5pRjJCOQd1bmlGMkJBB3VuaUYyQkIHdW5pRjJCQwd1bmlGMkJEB3VuaUYyQkUHdW5pRjJDMAd1bmlGMkMxB3VuaUYyQzIHdW5pRjJDMwd1bmlGMkM0B3VuaUYyQzUHdW5pRjJDNgd1bmlGMkM3B3VuaUYyQzgHdW5pRjJDOQd1bmlGMkNBB3VuaUYyQ0IHdW5pRjJDQwd1bmlGMkNEB3VuaUYyQ0UHdW5pRjJEMAd1bmlGMkQxB3VuaUYyRDIHdW5pRjJEMwd1bmlGMkQ0B3VuaUYyRDUHdW5pRjJENgd1bmlGMkQ3B3VuaUYyRDgHdW5pRjJEOQd1bmlGMkRBB3VuaUYyREIHdW5pRjJEQwd1bmlGMkREB3VuaUYyREUHdW5pRjJFMAd1bmlGMkUxB3VuaUYyRTIHdW5pRjJFMwd1bmlGMkU0B3VuaUYyRTUHdW5pRjJFNgd1bmlGMkU3BF82OTgHdW5pRjJFOQd1bmlGMkVBB3VuaUYyRUIHdW5pRjJFQwd1bmlGMkVEB3VuaUYyRUUAAAAAAAAB//8AAgABAAAADgAAABgAAAAAAAIAAQABAsIAAQAEAAAAAgAAAAAAAQAAAADMPaLPAAAAAMtPPDAAAAAA1DFouQ==\");\n\n//# sourceURL=webpack://WasmPlayer/./src/font-awesome-4.7.0/fonts/fontawesome-webfont.eot?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/font-awesome-4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0":
|
||
/*!**********************************************************************!*\
|
||
!*** ./src/font-awesome-4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0 ***!
|
||
\**********************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiA+DQo8c3ZnPg0KPG1ldGFkYXRhPg0KQ3JlYXRlZCBieSBGb250Rm9yZ2UgMjAxMjA3MzEgYXQgTW9uIE9jdCAyNCAxNzozNzo0MCAyMDE2DQogQnkgLCwsDQpDb3B5cmlnaHQgRGF2ZSBHYW5keSAyMDE2LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPC9tZXRhZGF0YT4NCjxkZWZzPg0KPGZvbnQgaWQ9IkZvbnRBd2Vzb21lIiBob3Jpei1hZHYteD0iMTUzNiIgPg0KICA8Zm9udC1mYWNlIA0KICAgIGZvbnQtZmFtaWx5PSJGb250QXdlc29tZSINCiAgICBmb250LXdlaWdodD0iNDAwIg0KICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIg0KICAgIHVuaXRzLXBlci1lbT0iMTc5MiINCiAgICBwYW5vc2UtMT0iMCAwIDAgMCAwIDAgMCAwIDAgMCINCiAgICBhc2NlbnQ9IjE1MzYiDQogICAgZGVzY2VudD0iLTI1NiINCiAgICBiYm94PSItMS4wMjA4MyAtMjU2Ljk2MiAyMzA0LjYgMTUzNy4wMiINCiAgICB1bmRlcmxpbmUtdGhpY2tuZXNzPSIwIg0KICAgIHVuZGVybGluZS1wb3NpdGlvbj0iMCINCiAgICB1bmljb2RlLXJhbmdlPSJVKzAwMjAtRjUwMCINCiAgLz4NCjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSI4OTYiIA0KZD0iTTIyNCAxMTJoNDQ4djEzMTJoLTQ0OHYtMTMxMnpNMTEyIDB2MTUzNmg2NzJ2LTE1MzZoLTY3MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Ii5ub3RkZWYiIGhvcml6LWFkdi14PSI4OTYiIA0KZD0iTTIyNCAxMTJoNDQ4djEzMTJoLTQ0OHYtMTMxMnpNMTEyIDB2MTUzNmg2NzJ2LTE1MzZoLTY3MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Ii5udWxsIiBob3Jpei1hZHYteD0iMCIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibm9ubWFya2luZ3JldHVybiIgaG9yaXotYWR2LXg9IjU5NyIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3BhY2UiIHVuaWNvZGU9IiAiIGhvcml6LWFkdi14PSI0NDgiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImRpZXJlc2lzIiB1bmljb2RlPSImI3hhODsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb3B5cmlnaHQiIHVuaWNvZGU9IiYjeGE5OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJlZ2lzdGVyZWQiIHVuaWNvZGU9IiYjeGFlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFjdXRlIiB1bmljb2RlPSImI3hiNDsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJBRSIgdW5pY29kZT0iJiN4YzY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iT3NsYXNoIiB1bmljb2RlPSImI3hkODsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0cmFkZW1hcmsiIHVuaWNvZGU9IiYjeDIxMjI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaW5maW5pdHkiIHVuaWNvZGU9IiYjeDIyMWU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibm90ZXF1YWwiIHVuaWNvZGU9IiYjeDIyNjA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2xhc3MiIHVuaWNvZGU9IiYjeGYwMDA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTY5OSAxMzUwcTAgLTM1IC00MyAtNzhsLTYzMiAtNjMydi03NjhoMzIwcTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTg5NnEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDMyMHY3NjhsLTYzMiA2MzJxLTQzIDQzIC00MyA3OHEwIDIzIDE4IDM2LjV0MzggMTcuNXQ0MyA0aDE0MDhxMjMgMCA0MyAtNHQzOCAtMTcuNXQxOCAtMzYuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im11c2ljIiB1bmljb2RlPSImI3hmMDAxOyIgDQpkPSJNMTUzNiAxMzEydi0xMTIwcTAgLTUwIC0zNCAtODl0LTg2IC02MC41dC0xMDMuNSAtMzJ0LTk2LjUgLTEwLjV0LTk2LjUgMTAuNXQtMTAzLjUgMzJ0LTg2IDYwLjV0LTM0IDg5dDM0IDg5dDg2IDYwLjV0MTAzLjUgMzJ0OTYuNSAxMC41cTEwNSAwIDE5MiAtMzl2NTM3bC03NjggLTIzN3YtNzA5cTAgLTUwIC0zNCAtODl0LTg2IC02MC41dC0xMDMuNSAtMzJ0LTk2LjUgLTEwLjV0LTk2LjUgMTAuNXQtMTAzLjUgMzJ0LTg2IDYwLjV0LTM0IDg5DQp0MzQgODl0ODYgNjAuNXQxMDMuNSAzMnQ5Ni41IDEwLjVxMTA1IDAgMTkyIC0zOXY5NjdxMCAzMSAxOSA1Ni41dDQ5IDM1LjVsODMyIDI1NnExMiA0IDI4IDRxNDAgMCA2OCAtMjh0MjggLTY4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2VhcmNoIiB1bmljb2RlPSImI3hmMDAyOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTExNTIgNzA0cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV0MzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV6TTE2NjQgLTEyOHEwIC01MiAtMzggLTkwdC05MCAtMzhxLTU0IDAgLTkwIDM4bC0zNDMgMzQycS0xNzkgLTEyNCAtMzk5IC0xMjRxLTE0MyAwIC0yNzMuNSA1NS41dC0yMjUgMTUwdC0xNTAgMjI1dC01NS41IDI3My41DQp0NTUuNSAyNzMuNXQxNTAgMjI1dDIyNSAxNTB0MjczLjUgNTUuNXQyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXEwIC0yMjAgLTEyNCAtMzk5bDM0MyAtMzQzcTM3IC0zNyAzNyAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbnZlbG9wZSIgdW5pY29kZT0iJiN4ZjAwMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjY0IDMydjc2OHEtMzIgLTM2IC02OSAtNjZxLTI2OCAtMjA2IC00MjYgLTMzOHEtNTEgLTQzIC04MyAtNjd0LTg2LjUgLTQ4LjV0LTEwMi41IC0yNC41aC0xaC0xcS00OCAwIC0xMDIuNSAyNC41dC04Ni41IDQ4LjV0LTgzIDY3cS0xNTggMTMyIC00MjYgMzM4cS0zNyAzMCAtNjkgNjZ2LTc2OHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE0NzJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTY2NCAxMDgzdjExdjEzLjV0LTAuNSAxMw0KdC0zIDEyLjV0LTUuNSA5dC05IDcuNXQtMTQgMi41aC0xNDcycS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXEwIC0xNjggMTQ3IC0yODRxMTkzIC0xNTIgNDAxIC0zMTdxNiAtNSAzNSAtMjkuNXQ0NiAtMzcuNXQ0NC41IC0zMS41dDUwLjUgLTI3LjV0NDMgLTloMWgxcTIwIDAgNDMgOXQ1MC41IDI3LjV0NDQuNSAzMS41dDQ2IDM3LjV0MzUgMjkuNXEyMDggMTY1IDQwMSAzMTdxNTQgNDMgMTAwLjUgMTE1LjV0NDYuNSAxMzEuNXoNCk0xNzkyIDExMjB2LTEwODhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEwODhxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoZWFydCIgdW5pY29kZT0iJiN4ZjAwNDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04OTYgLTEyOHEtMjYgMCAtNDQgMThsLTYyNCA2MDJxLTEwIDggLTI3LjUgMjZ0LTU1LjUgNjUuNXQtNjggOTcuNXQtNTMuNSAxMjF0LTIzLjUgMTM4cTAgMjIwIDEyNyAzNDR0MzUxIDEyNHE2MiAwIDEyNi41IC0yMS41dDEyMCAtNTh0OTUuNSAtNjguNXQ3NiAtNjhxMzYgMzYgNzYgNjh0OTUuNSA2OC41dDEyMCA1OHQxMjYuNSAyMS41cTIyNCAwIDM1MSAtMTI0dDEyNyAtMzQ0cTAgLTIyMSAtMjI5IC00NTBsLTYyMyAtNjAwDQpxLTE4IC0xOCAtNDQgLTE4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RhciIgdW5pY29kZT0iJiN4ZjAwNTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjY0IDg4OXEwIC0yMiAtMjYgLTQ4bC0zNjMgLTM1NGw4NiAtNTAwcTEgLTcgMSAtMjBxMCAtMjEgLTEwLjUgLTM1LjV0LTMwLjUgLTE0LjVxLTE5IDAgLTQwIDEybC00NDkgMjM2bC00NDkgLTIzNnEtMjIgLTEyIC00MCAtMTJxLTIxIDAgLTMxLjUgMTQuNXQtMTAuNSAzNS41cTAgNiAyIDIwbDg2IDUwMGwtMzY0IDM1NHEtMjUgMjcgLTI1IDQ4cTAgMzcgNTYgNDZsNTAyIDczbDIyNSA0NTVxMTkgNDEgNDkgNDF0NDkgLTQxbDIyNSAtNDU1DQpsNTAyIC03M3E1NiAtOSA1NiAtNDZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGFyX2VtcHR5IiB1bmljb2RlPSImI3hmMDA2OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTExMzcgNTMybDMwNiAyOTdsLTQyMiA2MmwtMTg5IDM4MmwtMTg5IC0zODJsLTQyMiAtNjJsMzA2IC0yOTdsLTczIC00MjFsMzc4IDE5OWwzNzcgLTE5OXpNMTY2NCA4ODlxMCAtMjIgLTI2IC00OGwtMzYzIC0zNTRsODYgLTUwMHExIC03IDEgLTIwcTAgLTUwIC00MSAtNTBxLTE5IDAgLTQwIDEybC00NDkgMjM2bC00NDkgLTIzNnEtMjIgLTEyIC00MCAtMTJxLTIxIDAgLTMxLjUgMTQuNXQtMTAuNSAzNS41cTAgNiAyIDIwbDg2IDUwMA0KbC0zNjQgMzU0cS0yNSAyNyAtMjUgNDhxMCAzNyA1NiA0Nmw1MDIgNzNsMjI1IDQ1NXExOSA0MSA0OSA0MXQ0OSAtNDFsMjI1IC00NTVsNTAyIC03M3E1NiAtOSA1NiAtNDZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1c2VyIiB1bmljb2RlPSImI3hmMDA3OyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEyODAgMTM3cTAgLTEwOSAtNjIuNSAtMTg3dC0xNTAuNSAtNzhoLTg1NHEtODggMCAtMTUwLjUgNzh0LTYyLjUgMTg3cTAgODUgOC41IDE2MC41dDMxLjUgMTUydDU4LjUgMTMxdDk0IDg5dDEzNC41IDM0LjVxMTMxIC0xMjggMzEzIC0xMjh0MzEzIDEyOHE3NiAwIDEzNC41IC0zNC41dDk0IC04OXQ1OC41IC0xMzF0MzEuNSAtMTUydDguNSAtMTYwLjV6TTEwMjQgMTAyNHEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41DQp0LTI3MS41IDExMi41dC0xMTIuNSAyNzEuNXQxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNXQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsbSIgdW5pY29kZT0iJiN4ZjAwODsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0zODQgLTY0djEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0zODQgMzIwdjEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0zODQgNzA0djEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOA0KcS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE0MDggLTY0djUxMnEwIDI2IC0xOSA0NXQtNDUgMTloLTc2OHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTUxMnEwIC0yNiAxOSAtNDV0NDUgLTE5aDc2OHEyNiAwIDQ1IDE5dDE5IDQ1ek0zODQgMTA4OHYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1DQp0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNzkyIC02NHYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXpNMTQwOCA3MDR2NTEycTAgMjYgLTE5IDQ1dC00NSAxOWgtNzY4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtNTEycTAgLTI2IDE5IC00NXQ0NSAtMTloNzY4cTI2IDAgNDUgMTl0MTkgNDV6TTE3OTIgMzIwdjEyOA0KcTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE3OTIgNzA0djEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNzkyIDEwODh2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTkNCnQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXpNMTkyMCAxMjQ4di0xMzQ0cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNjAwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMzQ0cTAgNjYgNDcgMTEzdDExMyA0N2gxNjAwcTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGhfbGFyZ2UiIHVuaWNvZGU9IiYjeGYwMDk7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNNzY4IDUxMnYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNTEycS01MiAwIC05MCAzOHQtMzggOTB2Mzg0cTAgNTIgMzggOTB0OTAgMzhoNTEycTUyIDAgOTAgLTM4dDM4IC05MHpNNzY4IDEyODB2LTM4NHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTUxMnEtNTIgMCAtOTAgMzh0LTM4IDkwdjM4NHEwIDUyIDM4IDkwdDkwIDM4aDUxMnE1MiAwIDkwIC0zOHQzOCAtOTB6TTE2NjQgNTEydi0zODRxMCAtNTIgLTM4IC05MHQtOTAgLTM4DQpoLTUxMnEtNTIgMCAtOTAgMzh0LTM4IDkwdjM4NHEwIDUyIDM4IDkwdDkwIDM4aDUxMnE1MiAwIDkwIC0zOHQzOCAtOTB6TTE2NjQgMTI4MHYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNTEycS01MiAwIC05MCAzOHQtMzggOTB2Mzg0cTAgNTIgMzggOTB0OTAgMzhoNTEycTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRoIiB1bmljb2RlPSImI3hmMDBhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTUxMiAyODh2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTExNTIgMjg4di0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjANCnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xMTUyIDgwMHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjgNCmgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDI4OHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHpNMTE1MiAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDgwMHYtMTkyDQpxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDEzMTJ2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0aF9saXN0IiB1bmljb2RlPSImI3hmMDBiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTUxMiAyODh2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTE3OTIgMjg4di0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjANCnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDk2MHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDgwMHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTYwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjgNCmg5NjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDEzMTJ2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDk2MHE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJvayIgdW5pY29kZT0iJiN4ZjAwYzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjcxIDk3MHEwIC00MCAtMjggLTY4bC03MjQgLTcyNGwtMTM2IC0xMzZxLTI4IC0yOCAtNjggLTI4dC02OCAyOGwtMTM2IDEzNmwtMzYyIDM2MnEtMjggMjggLTI4IDY4dDI4IDY4bDEzNiAxMzZxMjggMjggNjggMjh0NjggLTI4bDI5NCAtMjk1bDY1NiA2NTdxMjggMjggNjggMjh0NjggLTI4bDEzNiAtMTM2cTI4IC0yOCAyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZW1vdmUiIHVuaWNvZGU9IiYjeGYwMGQ7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMTI5OCAyMTRxMCAtNDAgLTI4IC02OGwtMTM2IC0xMzZxLTI4IC0yOCAtNjggLTI4dC02OCAyOGwtMjk0IDI5NGwtMjk0IC0yOTRxLTI4IC0yOCAtNjggLTI4dC02OCAyOGwtMTM2IDEzNnEtMjggMjggLTI4IDY4dDI4IDY4bDI5NCAyOTRsLTI5NCAyOTRxLTI4IDI4IC0yOCA2OHQyOCA2OGwxMzYgMTM2cTI4IDI4IDY4IDI4dDY4IC0yOGwyOTQgLTI5NGwyOTQgMjk0cTI4IDI4IDY4IDI4dDY4IC0yOGwxMzYgLTEzNnEyOCAtMjggMjggLTY4DQp0LTI4IC02OGwtMjk0IC0yOTRsMjk0IC0yOTRxMjggLTI4IDI4IC02OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Inpvb21faW4iIHVuaWNvZGU9IiYjeGYwMGU7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTAyNCA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMjI0di0yMjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djIyNGgtMjI0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgyMjR2MjI0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0yMjRoMjI0DQpxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xMTUyIDcwNHEwIDE4NSAtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41dDMxNi41IDEzMS41dDEzMS41IDMxNi41ek0xNjY0IC0xMjhxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjVxLTU0IDAgLTkwIDM4bC0zNDMgMzQycS0xNzkgLTEyNCAtMzk5IC0xMjRxLTE0MyAwIC0yNzMuNSA1NS41DQp0LTIyNSAxNTB0LTE1MCAyMjV0LTU1LjUgMjczLjV0NTUuNSAyNzMuNXQxNTAgMjI1dDIyNSAxNTB0MjczLjUgNTUuNXQyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXEwIC0yMjAgLTEyNCAtMzk5bDM0MyAtMzQzcTM3IC0zNyAzNyAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ6b29tX291dCIgdW5pY29kZT0iJiN4ZjAxMDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xMDI0IDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC01NzZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDU3NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgNzA0cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV0MzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV6DQpNMTY2NCAtMTI4cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41cS01NCAwIC05MCAzOGwtMzQzIDM0MnEtMTc5IC0xMjQgLTM5OSAtMTI0cS0xNDMgMCAtMjczLjUgNTUuNXQtMjI1IDE1MHQtMTUwIDIyNXQtNTUuNSAyNzMuNXQ1NS41IDI3My41dDE1MCAyMjV0MjI1IDE1MHQyNzMuNSA1NS41dDI3My41IC01NS41dDIyNSAtMTUwdDE1MCAtMjI1dDU1LjUgLTI3My41cTAgLTIyMCAtMTI0IC0zOTlsMzQzIC0zNDNxMzcgLTM3IDM3IC05MHoNCiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ib2ZmIiB1bmljb2RlPSImI3hmMDExOyIgDQpkPSJNMTUzNiA2NDBxMCAtMTU2IC02MSAtMjk4dC0xNjQgLTI0NXQtMjQ1IC0xNjR0LTI5OCAtNjF0LTI5OCA2MXQtMjQ1IDE2NHQtMTY0IDI0NXQtNjEgMjk4cTAgMTgyIDgwLjUgMzQzdDIyNi41IDI3MHE0MyAzMiA5NS41IDI1dDgzLjUgLTUwcTMyIC00MiAyNC41IC05NC41dC00OS41IC04NC41cS05OCAtNzQgLTE1MS41IC0xODF0LTUzLjUgLTIyOHEwIC0xMDQgNDAuNSAtMTk4LjV0MTA5LjUgLTE2My41dDE2My41IC0xMDkuNQ0KdDE5OC41IC00MC41dDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXEwIDEyMSAtNTMuNSAyMjh0LTE1MS41IDE4MXEtNDIgMzIgLTQ5LjUgODQuNXQyNC41IDk0LjVxMzEgNDMgODQgNTB0OTUgLTI1cTE0NiAtMTA5IDIyNi41IC0yNzB0ODAuNSAtMzQzek04OTYgMTQwOHYtNjQwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOHQtOTAgMzh0LTM4IDkwdjY0MHEwIDUyIDM4IDkwdDkwIDM4dDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzaWduYWwiIHVuaWNvZGU9IiYjeGYwMTI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjU2IDk2di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNNjQwIDIyNHYtMzIwcTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YzMjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTEwMjQgNDgwdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzDQp2NTc2cTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0xNDA4IDg2NHYtOTYwcTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3Y5NjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgMTM3NnYtMTQ3MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTQ3MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvZyIgdW5pY29kZT0iJiN4ZjAxMzsiIA0KZD0iTTEwMjQgNjQwcTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMTUzNiA3NDl2LTIyMnEwIC0xMiAtOCAtMjN0LTIwIC0xM2wtMTg1IC0yOHEtMTkgLTU0IC0zOSAtOTFxMzUgLTUwIDEwNyAtMTM4cTEwIC0xMiAxMCAtMjV0LTkgLTIzcS0yNyAtMzcgLTk5IC0xMDh0LTk0IC03MXEtMTIgMCAtMjYgOWwtMTM4IDEwOHEtNDQgLTIzIC05MSAtMzgNCnEtMTYgLTEzNiAtMjkgLTE4NnEtNyAtMjggLTM2IC0yOGgtMjIycS0xNCAwIC0yNC41IDguNXQtMTEuNSAyMS41bC0yOCAxODRxLTQ5IDE2IC05MCAzN2wtMTQxIC0xMDdxLTEwIC05IC0yNSAtOXEtMTQgMCAtMjUgMTFxLTEyNiAxMTQgLTE2NSAxNjhxLTcgMTAgLTcgMjNxMCAxMiA4IDIzcTE1IDIxIDUxIDY2LjV0NTQgNzAuNXEtMjcgNTAgLTQxIDk5bC0xODMgMjdxLTEzIDIgLTIxIDEyLjV0LTggMjMuNXYyMjJxMCAxMiA4IDIzdDE5IDEzDQpsMTg2IDI4cTE0IDQ2IDM5IDkycS00MCA1NyAtMTA3IDEzOHEtMTAgMTIgLTEwIDI0cTAgMTAgOSAyM3EyNiAzNiA5OC41IDEwNy41dDk0LjUgNzEuNXExMyAwIDI2IC0xMGwxMzggLTEwN3E0NCAyMyA5MSAzOHExNiAxMzYgMjkgMTg2cTcgMjggMzYgMjhoMjIycTE0IDAgMjQuNSAtOC41dDExLjUgLTIxLjVsMjggLTE4NHE0OSAtMTYgOTAgLTM3bDE0MiAxMDdxOSA5IDI0IDlxMTMgMCAyNSAtMTBxMTI5IC0xMTkgMTY1IC0xNzBxNyAtOCA3IC0yMg0KcTAgLTEyIC04IC0yM3EtMTUgLTIxIC01MSAtNjYuNXQtNTQgLTcwLjVxMjYgLTUwIDQxIC05OGwxODMgLTI4cTEzIC0yIDIxIC0xMi41dDggLTIzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0cmFzaCIgdW5pY29kZT0iJiN4ZjAxNDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik01MTIgODAwdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2NTc2cTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN6TTc2OCA4MDB2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloNjRxMTQgMCAyMyAtOXQ5IC0yM3pNMTAyNCA4MDB2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzYNCnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzek0xMTUyIDc2djk0OGgtODk2di05NDhxMCAtMjIgNyAtNDAuNXQxNC41IC0yN3QxMC41IC04LjVoODMycTMgMCAxMC41IDguNXQxNC41IDI3dDcgNDAuNXpNNDgwIDExNTJoNDQ4bC00OCAxMTdxLTcgOSAtMTcgMTFoLTMxN3EtMTAgLTIgLTE3IC0xMXpNMTQwOCAxMTIwdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTQ4cTAgLTgzIC00NyAtMTQzLjV0LTExMyAtNjAuNWgtODMyDQpxLTY2IDAgLTExMyA1OC41dC00NyAxNDEuNXY5NTJoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDMwOWw3MCAxNjdxMTUgMzcgNTQgNjN0NzkgMjZoMzIwcTQwIDAgNzkgLTI2dDU0IC02M2w3MCAtMTY3aDMwOXExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaG9tZSIgdW5pY29kZT0iJiN4ZjAxNTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNDA4IDU0NHYtNDgwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMzg0djM4NGgtMjU2di0zODRoLTM4NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djQ4MHEwIDEgMC41IDN0MC41IDNsNTc1IDQ3NGw1NzUgLTQ3NHExIC0yIDEgLTZ6TTE2MzEgNjEzbC02MiAtNzRxLTggLTkgLTIxIC0xMWgtM3EtMTMgMCAtMjEgN2wtNjkyIDU3N2wtNjkyIC01NzdxLTEyIC04IC0yNCAtN3EtMTMgMiAtMjEgMTFsLTYyIDc0cS04IDEwIC03IDIzLjV0MTEgMjEuNQ0KbDcxOSA1OTlxMzIgMjYgNzYgMjZ0NzYgLTI2bDI0NCAtMjA0djE5NXEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtNDA4bDIxOSAtMTgycTEwIC04IDExIC0yMS41dC03IC0yMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsZV9hbHQiIHVuaWNvZGU9IiYjeGYwMTY7IiANCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgweg0KIiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0aW1lIiB1bmljb2RlPSImI3hmMDE3OyIgDQpkPSJNODk2IDk5MnYtNDQ4cTAgLTE0IC05IC0yM3QtMjMgLTloLTMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgyMjR2MzUycTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN6TTEzMTIgNjQwcTAgMTQ4IC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3QtMjczIC03M3QtMTk4IC0xOTh0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJvYWQiIHVuaWNvZGU9IiYjeGYwMTg7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTExMSA1NDB2NGwtMjQgMzIwcS0xIDEzIC0xMSAyMi41dC0yMyA5LjVoLTE4NnEtMTMgMCAtMjMgLTkuNXQtMTEgLTIyLjVsLTI0IC0zMjB2LTRxLTEgLTEyIDggLTIwdDIxIC04aDI0NHExMiAwIDIxIDh0OCAyMHpNMTg3MCA3M3EwIC03MyAtNDYgLTczaC03MDRxMTMgMCAyMiA5LjV0OCAyMi41bC0yMCAyNTZxLTEgMTMgLTExIDIyLjV0LTIzIDkuNWgtMjcycS0xMyAwIC0yMyAtOS41dC0xMSAtMjIuNWwtMjAgLTI1Ng0KcS0xIC0xMyA4IC0yMi41dDIyIC05LjVoLTcwNHEtNDYgMCAtNDYgNzNxMCA1NCAyNiAxMTZsNDE3IDEwNDRxOCAxOSAyNiAzM3QzOCAxNGgzMzlxLTEzIDAgLTIzIC05LjV0LTExIC0yMi41bC0xNSAtMTkycS0xIC0xNCA4IC0yM3QyMiAtOWgxNjZxMTMgMCAyMiA5dDggMjNsLTE1IDE5MnEtMSAxMyAtMTEgMjIuNXQtMjMgOS41aDMzOXEyMCAwIDM4IC0xNHQyNiAtMzNsNDE3IC0xMDQ0cTI2IC02MiAyNiAtMTE2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZG93bmxvYWRfYWx0IiB1bmljb2RlPSImI3hmMDE5OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTEyODAgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTUzNiAxOTJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNjY0IDQxNnYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTQ3MnEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDQ2NWwxMzUgLTEzNg0KcTU4IC01NiAxMzYgLTU2dDEzNiA1NmwxMzYgMTM2aDQ2NHE0MCAwIDY4IC0yOHQyOCAtNjh6TTEzMzkgOTg1cTE3IC00MSAtMTQgLTcwbC00NDggLTQ0OHEtMTggLTE5IC00NSAtMTl0LTQ1IDE5bC00NDggNDQ4cS0zMSAyOSAtMTQgNzBxMTcgMzkgNTkgMzloMjU2djQ0OHEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV2LTQ0OGgyNTZxNDIgMCA1OSAtMzl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3dubG9hZCIgdW5pY29kZT0iJiN4ZjAxYTsiIA0KZD0iTTExMjAgNjA4cTAgLTEyIC0xMCAtMjRsLTMxOSAtMzE5cS0xMSAtOSAtMjMgLTl0LTIzIDlsLTMyMCAzMjBxLTE1IDE2IC03IDM1cTggMjAgMzAgMjBoMTkydjM1MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMzUyaDE5MnExNCAwIDIzIC05dDkgLTIzek03NjggMTE4NHEtMTQ4IDAgLTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzMNCnQtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idXBsb2FkIiB1bmljb2RlPSImI3hmMDFiOyIgDQpkPSJNMTExOCA2NjBxLTggLTIwIC0zMCAtMjBoLTE5MnYtMzUycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YzNTJoLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3EwIDEyIDEwIDI0bDMxOSAzMTlxMTEgOSAyMyA5dDIzIC05bDMyMCAtMzIwcTE1IC0xNiA3IC0zNXpNNzY4IDExODRxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTgNCnQ3MyAyNzN0LTczIDI3M3QtMTk4IDE5OHQtMjczIDczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImluYm94IiB1bmljb2RlPSImI3hmMDFjOyIgDQpkPSJNMTAyMyA1NzZoMzE2cS0xIDMgLTIuNSA4LjV0LTIuNSA3LjVsLTIxMiA0OTZoLTcwOGwtMjEyIC00OTZxLTEgLTMgLTIuNSAtOC41dC0yLjUgLTcuNWgzMTZsOTUgLTE5MmgzMjB6TTE1MzYgNTQ2di00ODJxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDA4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDgycTAgNjIgMjUgMTIzbDIzOCA1NTJxMTAgMjUgMzYuNSA0MnQ1Mi41IDE3aDgzMnEyNiAwIDUyLjUgLTE3dDM2LjUgLTQybDIzOCAtNTUyDQpxMjUgLTYxIDI1IC0xMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbGF5X2NpcmNsZSIgdW5pY29kZT0iJiN4ZjAxZDsiIA0KZD0iTTExODQgNjQwcTAgLTM3IC0zMiAtNTVsLTU0NCAtMzIwcS0xNSAtOSAtMzIgLTlxLTE2IDAgLTMyIDhxLTMyIDE5IC0zMiA1NnY2NDBxMCAzNyAzMiA1NnEzMyAxOCA2NCAtMWw1NDQgLTMyMHEzMiAtMTggMzIgLTU1ek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzN6TTE1MzYgNjQwDQpxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXBlYXQiIHVuaWNvZGU9IiYjeGYwMWU7IiANCmQ9Ik0xNTM2IDEyODB2LTQ0OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTQ0OHEtNDIgMCAtNTkgNDBxLTE3IDM5IDE0IDY5bDEzOCAxMzhxLTE0OCAxMzcgLTM0OSAxMzdxLTEwNCAwIC0xOTguNSAtNDAuNXQtMTYzLjUgLTEwOS41dC0xMDkuNSAtMTYzLjV0LTQwLjUgLTE5OC41dDQwLjUgLTE5OC41dDEwOS41IC0xNjMuNXQxNjMuNSAtMTA5LjV0MTk4LjUgLTQwLjVxMTE5IDAgMjI1IDUydDE3OSAxNDdxNyAxMCAyMyAxMnExNSAwIDI1IC05DQpsMTM3IC0xMzhxOSAtOCA5LjUgLTIwLjV0LTcuNSAtMjIuNXEtMTA5IC0xMzIgLTI2NCAtMjA0LjV0LTMyNyAtNzIuNXEtMTU2IDAgLTI5OCA2MXQtMjQ1IDE2NHQtMTY0IDI0NXQtNjEgMjk4dDYxIDI5OHQxNjQgMjQ1dDI0NSAxNjR0Mjk4IDYxcTE0NyAwIDI4NC41IC01NS41dDI0NC41IC0xNTYuNWwxMzAgMTI5cTI5IDMxIDcwIDE0cTM5IC0xNyAzOSAtNTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZWZyZXNoIiB1bmljb2RlPSImI3hmMDIxOyIgDQpkPSJNMTUxMSA0ODBxMCAtNSAtMSAtN3EtNjQgLTI2OCAtMjY4IC00MzQuNXQtNDc4IC0xNjYuNXEtMTQ2IDAgLTI4Mi41IDU1dC0yNDMuNSAxNTdsLTEyOSAtMTI5cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djQ0OHEwIDI2IDE5IDQ1dDQ1IDE5aDQ0OHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NWwtMTM3IC0xMzdxNzEgLTY2IDE2MSAtMTAydDE4NyAtMzZxMTM0IDAgMjUwIDY1dDE4NiAxNzlxMTEgMTcgNTMgMTE3DQpxOCAyMyAzMCAyM2gxOTJxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNTM2IDEyODB2LTQ0OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTQ0OHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDEzOCAxMzhxLTE0OCAxMzcgLTM0OSAxMzdxLTEzNCAwIC0yNTAgLTY1dC0xODYgLTE3OXEtMTEgLTE3IC01MyAtMTE3cS04IC0yMyAtMzAgLTIzaC0xOTlxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY3cTY1IDI2OCAyNzAgNDM0LjV0NDgwIDE2Ni41DQpxMTQ2IDAgMjg0IC01NS41dDI0NSAtMTU2LjVsMTMwIDEyOXExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlzdF9hbHQiIHVuaWNvZGU9IiYjeGYwMjI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMzg0IDM1MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgNjA4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNMzg0IDg2NHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNTM2IDM1MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC05NjBxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDk2MHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNMTUzNiA2MDh2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtOTYwcS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg5NjBxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNTM2IDg2NHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC05NjBxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDk2MHExMyAwIDIyLjUgLTkuNQ0KdDkuNSAtMjIuNXpNMTY2NCAxNjB2ODMycTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTQ3MnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTgzMnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE0NzJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTc5MiAxMjQ4di0xMDg4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxNDcycTY2IDAgMTEzIC00Nw0KdDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb2NrIiB1bmljb2RlPSImI3hmMDIzOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTMyMCA3NjhoNTEydjE5MnEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF2LTE5MnpNMTE1MiA2NzJ2LTU3NnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djU3NnEwIDQwIDI4IDY4dDY4IDI4aDMydjE5MnEwIDE4NCAxMzIgMzE2dDMxNiAxMzJ0MzE2IC0xMzJ0MTMyIC0zMTZ2LTE5MmgzMnE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmbGFnIiB1bmljb2RlPSImI3hmMDI0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTMyMCAxMjgwcTAgLTcyIC02NCAtMTEwdi0xMjY2cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxMjY2cS02NCAzOCAtNjQgMTEwcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE3OTIgMTIxNnYtNzYzcTAgLTI1IC0xMi41IC0zOC41dC0zOS41IC0yNy41cS0yMTUgLTExNiAtMzY5IC0xMTZxLTYxIDAgLTEyMy41IDIydC0xMDguNSA0OA0KdC0xMTUuNSA0OHQtMTQyLjUgMjJxLTE5MiAwIC00NjQgLTE0NnEtMTcgLTkgLTMzIC05cS0yNiAwIC00NSAxOXQtMTkgNDV2NzQycTAgMzIgMzEgNTVxMjEgMTQgNzkgNDNxMjM2IDEyMCA0MjEgMTIwcTEwNyAwIDIwMCAtMjl0MjE5IC04OHEzOCAtMTkgODggLTE5cTU0IDAgMTE3LjUgMjF0MTEwIDQ3dDg4IDQ3dDU0LjUgMjFxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGVhZHBob25lcyIgdW5pY29kZT0iJiN4ZjAyNTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjY0IDY1MHEwIC0xNjYgLTYwIC0zMTRsLTIwIC00OWwtMTg1IC0zM3EtMjIgLTgzIC05MC41IC0xMzYuNXQtMTU2LjUgLTUzLjV2LTMycTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjU3NnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi0zMnE3MSAwIDEzMCAtMzUuNXQ5MyAtOTUuNWw2OCAxMnEyOSA5NSAyOSAxOTNxMCAxNDggLTg4IDI3OXQtMjM2LjUgMjA5dC0zMTUuNSA3OA0KdC0zMTUuNSAtNzh0LTIzNi41IC0yMDl0LTg4IC0yNzlxMCAtOTggMjkgLTE5M2w2OCAtMTJxMzQgNjAgOTMgOTUuNXQxMzAgMzUuNXYzMnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MzJxLTg4IDAgLTE1Ni41IDUzLjV0LTkwLjUgMTM2LjVsLTE4NSAzM2wtMjAgNDlxLTYwIDE0OCAtNjAgMzE0cTAgMTUxIDY3IDI5MXQxNzkgMjQyLjUNCnQyNjYgMTYzLjV0MzIwIDYxdDMyMCAtNjF0MjY2IC0xNjMuNXQxNzkgLTI0Mi41dDY3IC0yOTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ2b2x1bWVfb2ZmIiB1bmljb2RlPSImI3hmMDI2OyIgaG9yaXotYWR2LXg9Ijc2OCIgDQpkPSJNNzY4IDExODR2LTEwODhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMzMzIDMzM2gtMjYycS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloMjYybDMzMyAzMzNxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InZvbHVtZV9kb3duIiB1bmljb2RlPSImI3hmMDI3OyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTc2OCAxMTg0di0xMDg4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTlsLTMzMyAzMzNoLTI2MnEtMjYgMCAtNDUgMTl0LTE5IDQ1djM4NHEwIDI2IDE5IDQ1dDQ1IDE5aDI2MmwzMzMgMzMzcTE5IDE5IDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTExNTIgNjQwcTAgLTc2IC00Mi41IC0xNDEuNXQtMTEyLjUgLTkzLjVxLTEwIC01IC0yNSAtNXEtMjYgMCAtNDUgMTguNXQtMTkgNDUuNXEwIDIxIDEyIDM1LjV0MjkgMjV0MzQgMjN0MjkgMzYNCnQxMiA1Ni41dC0xMiA1Ni41dC0yOSAzNnQtMzQgMjN0LTI5IDI1dC0xMiAzNS41cTAgMjcgMTkgNDUuNXQ0NSAxOC41cTE1IDAgMjUgLTVxNzAgLTI3IDExMi41IC05M3Q0Mi41IC0xNDJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ2b2x1bWVfdXAiIHVuaWNvZGU9IiYjeGYwMjg7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNNzY4IDExODR2LTEwODhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMzMzIDMzM2gtMjYycS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloMjYybDMzMyAzMzNxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXpNMTE1MiA2NDBxMCAtNzYgLTQyLjUgLTE0MS41dC0xMTIuNSAtOTMuNXEtMTAgLTUgLTI1IC01cS0yNiAwIC00NSAxOC41dC0xOSA0NS41cTAgMjEgMTIgMzUuNXQyOSAyNXQzNCAyM3QyOSAzNg0KdDEyIDU2LjV0LTEyIDU2LjV0LTI5IDM2dC0zNCAyM3QtMjkgMjV0LTEyIDM1LjVxMCAyNyAxOSA0NS41dDQ1IDE4LjVxMTUgMCAyNSAtNXE3MCAtMjcgMTEyLjUgLTkzdDQyLjUgLTE0MnpNMTQwOCA2NDBxMCAtMTUzIC04NSAtMjgyLjV0LTIyNSAtMTg4LjVxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDYgMTl0LTE5IDQ1cTAgMzkgMzkgNTlxNTYgMjkgNzYgNDRxNzQgNTQgMTE1LjUgMTM1LjV0NDEuNSAxNzMuNXQtNDEuNSAxNzMuNQ0KdC0xMTUuNSAxMzUuNXEtMjAgMTUgLTc2IDQ0cS0zOSAyMCAtMzkgNTlxMCAyNiAxOSA0NXQ0NSAxOXExMyAwIDI2IC01cTE0MCAtNTkgMjI1IC0xODguNXQ4NSAtMjgyLjV6TTE2NjQgNjQwcTAgLTIzMCAtMTI3IC00MjIuNXQtMzM4IC0yODMuNXEtMTMgLTUgLTI2IC01cS0yNiAwIC00NSAxOXQtMTkgNDVxMCAzNiAzOSA1OXE3IDQgMjIuNSAxMC41dDIyLjUgMTAuNXE0NiAyNSA4MiA1MXExMjMgOTEgMTkyIDIyN3Q2OSAyODl0LTY5IDI4OQ0KdC0xOTIgMjI3cS0zNiAyNiAtODIgNTFxLTcgNCAtMjIuNSAxMC41dC0yMi41IDEwLjVxLTM5IDIzIC0zOSA1OXEwIDI2IDE5IDQ1dDQ1IDE5cTEzIDAgMjYgLTVxMjExIC05MSAzMzggLTI4My41dDEyNyAtNDIyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxcmNvZGUiIHVuaWNvZGU9IiYjeGYwMjk7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMzg0IDM4NHYtMTI4aC0xMjh2MTI4aDEyOHpNMzg0IDExNTJ2LTEyOGgtMTI4djEyOGgxMjh6TTExNTIgMTE1MnYtMTI4aC0xMjh2MTI4aDEyOHpNMTI4IDEyOWgzODR2MzgzaC0zODR2LTM4M3pNMTI4IDg5NmgzODR2Mzg0aC0zODR2LTM4NHpNODk2IDg5NmgzODR2Mzg0aC0zODR2LTM4NHpNNjQwIDY0MHYtNjQwaC02NDB2NjQwaDY0MHpNMTE1MiAxMjh2LTEyOGgtMTI4djEyOGgxMjh6TTE0MDggMTI4di0xMjhoLTEyOHYxMjhoMTI4eg0KTTE0MDggNjQwdi0zODRoLTM4NHYxMjhoLTEyOHYtMzg0aC0xMjh2NjQwaDM4NHYtMTI4aDEyOHYxMjhoMTI4ek02NDAgMTQwOHYtNjQwaC02NDB2NjQwaDY0MHpNMTQwOCAxNDA4di02NDBoLTY0MHY2NDBoNjQweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmFyY29kZSIgdW5pY29kZT0iJiN4ZjAyYTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02MyAwaC02M3YxNDA4aDYzdi0xNDA4ek0xMjYgMWgtMzJ2MTQwN2gzMnYtMTQwN3pNMjIwIDFoLTMxdjE0MDdoMzF2LTE0MDd6TTM3NyAxaC0zMXYxNDA3aDMxdi0xNDA3ek01MzQgMWgtNjJ2MTQwN2g2MnYtMTQwN3pNNjYwIDFoLTMxdjE0MDdoMzF2LTE0MDd6TTcyMyAxaC0zMXYxNDA3aDMxdi0xNDA3ek03ODYgMWgtMzF2MTQwN2gzMXYtMTQwN3pNOTQzIDFoLTYzdjE0MDdoNjN2LTE0MDd6TTExMDAgMWgtNjN2MTQwN2g2M3YtMTQwN3oNCk0xMjI2IDFoLTYzdjE0MDdoNjN2LTE0MDd6TTEzNTIgMWgtNjN2MTQwN2g2M3YtMTQwN3pNMTQ0NiAxaC02M3YxNDA3aDYzdi0xNDA3ek0xNjM1IDFoLTk0djE0MDdoOTR2LTE0MDd6TTE2OTggMWgtMzJ2MTQwN2gzMnYtMTQwN3pNMTc5MiAwaC02M3YxNDA4aDYzdi0xNDA4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGFnIiB1bmljb2RlPSImI3hmMDJiOyIgDQpkPSJNNDQ4IDEwODhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE1MTUgNTEycTAgLTUzIC0zNyAtOTBsLTQ5MSAtNDkycS0zOSAtMzcgLTkxIC0zN3EtNTMgMCAtOTAgMzdsLTcxNSA3MTZxLTM4IDM3IC02NC41IDEwMXQtMjYuNSAxMTd2NDE2cTAgNTIgMzggOTB0OTAgMzhoNDE2cTUzIDAgMTE3IC0yNi41dDEwMiAtNjQuNQ0KbDcxNSAtNzE0cTM3IC0zOSAzNyAtOTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0YWdzIiB1bmljb2RlPSImI3hmMDJjOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTQ0OCAxMDg4cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNTE1IDUxMnEwIC01MyAtMzcgLTkwbC00OTEgLTQ5MnEtMzkgLTM3IC05MSAtMzdxLTUzIDAgLTkwIDM3bC03MTUgNzE2cS0zOCAzNyAtNjQuNSAxMDF0LTI2LjUgMTE3djQxNnEwIDUyIDM4IDkwdDkwIDM4aDQxNnE1MyAwIDExNyAtMjYuNXQxMDIgLTY0LjUNCmw3MTUgLTcxNHEzNyAtMzkgMzcgLTkxek0xODk5IDUxMnEwIC01MyAtMzcgLTkwbC00OTEgLTQ5MnEtMzkgLTM3IC05MSAtMzdxLTM2IDAgLTU5IDE0dC01MyA0NWw0NzAgNDcwcTM3IDM3IDM3IDkwcTAgNTIgLTM3IDkxbC03MTUgNzE0cS0zOCAzOCAtMTAyIDY0LjV0LTExNyAyNi41aDIyNHE1MyAwIDExNyAtMjYuNXQxMDIgLTY0LjVsNzE1IC03MTRxMzcgLTM5IDM3IC05MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJvb2siIHVuaWNvZGU9IiYjeGYwMmQ7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTYzOSAxMDU4cTQwIC01NyAxOCAtMTI5bC0yNzUgLTkwNnEtMTkgLTY0IC03Ni41IC0xMDcuNXQtMTIyLjUgLTQzLjVoLTkyM3EtNzcgMCAtMTQ4LjUgNTMuNXQtOTkuNSAxMzEuNXEtMjQgNjcgLTIgMTI3cTAgNCAzIDI3dDQgMzdxMSA4IC0zIDIxLjV0LTMgMTkuNXEyIDExIDggMjF0MTYuNSAyMy41dDE2LjUgMjMuNXEyMyAzOCA0NSA5MS41dDMwIDkxLjVxMyAxMCAwLjUgMzB0LTAuNSAyOHEzIDExIDE3IDI4dDE3IDIzDQpxMjEgMzYgNDIgOTJ0MjUgOTBxMSA5IC0yLjUgMzJ0MC41IDI4cTQgMTMgMjIgMzAuNXQyMiAyMi41cTE5IDI2IDQyLjUgODQuNXQyNy41IDk2LjVxMSA4IC0zIDI1LjV0LTIgMjYuNXEyIDggOSAxOHQxOCAyM3QxNyAyMXE4IDEyIDE2LjUgMzAuNXQxNSAzNXQxNiAzNnQxOS41IDMydDI2LjUgMjMuNXQzNiAxMS41dDQ3LjUgLTUuNWwtMSAtM3EzOCA5IDUxIDloNzYxcTc0IDAgMTE0IC01NnQxOCAtMTMwbC0yNzQgLTkwNg0KcS0zNiAtMTE5IC03MS41IC0xNTMuNXQtMTI4LjUgLTM0LjVoLTg2OXEtMjcgMCAtMzggLTE1cS0xMSAtMTYgLTEgLTQzcTI0IC03MCAxNDQgLTcwaDkyM3EyOSAwIDU2IDE1LjV0MzUgNDEuNWwzMDAgOTg3cTcgMjIgNSA1N3EzOCAtMTUgNTkgLTQzek01NzUgMTA1NnEtNCAtMTMgMiAtMjIuNXQyMCAtOS41aDYwOHExMyAwIDI1LjUgOS41dDE2LjUgMjIuNWwyMSA2NHE0IDEzIC0yIDIyLjV0LTIwIDkuNWgtNjA4cS0xMyAwIC0yNS41IC05LjUNCnQtMTYuNSAtMjIuNXpNNDkyIDgwMHEtNCAtMTMgMiAtMjIuNXQyMCAtOS41aDYwOHExMyAwIDI1LjUgOS41dDE2LjUgMjIuNWwyMSA2NHE0IDEzIC0yIDIyLjV0LTIwIDkuNWgtNjA4cS0xMyAwIC0yNS41IC05LjV0LTE2LjUgLTIyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJib29rbWFyayIgdW5pY29kZT0iJiN4ZjAyZTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMTY0IDE0MDhxMjMgMCA0NCAtOXEzMyAtMTMgNTIuNSAtNDF0MTkuNSAtNjJ2LTEyODlxMCAtMzQgLTE5LjUgLTYydC01Mi41IC00MXEtMTkgLTggLTQ0IC04cS00OCAwIC04MyAzMmwtNDQxIDQyNGwtNDQxIC00MjRxLTM2IC0zMyAtODMgLTMzcS0yMyAwIC00NCA5cS0zMyAxMyAtNTIuNSA0MXQtMTkuNSA2MnYxMjg5cTAgMzQgMTkuNSA2MnQ1Mi41IDQxcTIxIDkgNDQgOWgxMDQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icHJpbnQiIHVuaWNvZGU9IiYjeGYwMmY7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMzg0IDBoODk2djI1NmgtODk2di0yNTZ6TTM4NCA2NDBoODk2djM4NGgtMTYwcS00MCAwIC02OCAyOHQtMjggNjh2MTYwaC02NDB2LTY0MHpNMTUzNiA1NzZxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNjY0IDU3NnYtNDE2cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMjI0di0xNjBxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjBxLTQwIDAgLTY4IDI4dC0yOCA2OA0KdjE2MGgtMjI0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NDE2cTAgNzkgNTYuNSAxMzUuNXQxMzUuNSA1Ni41aDY0djU0NHEwIDQwIDI4IDY4dDY4IDI4aDY3MnE0MCAwIDg4IC0yMHQ3NiAtNDhsMTUyIC0xNTJxMjggLTI4IDQ4IC03NnQyMCAtODh2LTI1Nmg2NHE3OSAwIDEzNS41IC01Ni41dDU2LjUgLTEzNS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2FtZXJhIiB1bmljb2RlPSImI3hmMDMwOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTk2MCA4NjRxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV0LTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNXQtMjAzLjUgODQuNXQtODQuNSAyMDMuNXQ4NC41IDIwMy41dDIwMy41IDg0LjV6TTE2NjQgMTI4MHExMDYgMCAxODEgLTc1dDc1IC0xODF2LTg5NnEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzVoLTE0MDhxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXY4OTZxMCAxMDYgNzUgMTgxdDE4MSA3NWgyMjRsNTEgMTM2DQpxMTkgNDkgNjkuNSA4NC41dDEwMy41IDM1LjVoNTEycTUzIDAgMTAzLjUgLTM1LjV0NjkuNSAtODQuNWw1MSAtMTM2aDIyNHpNOTYwIDEyOHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9udCIgdW5pY29kZT0iJiN4ZjAzMTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik03MjUgOTc3bC0xNzAgLTQ1MHEzMyAwIDEzNi41IC0ydDE2MC41IC0ycTE5IDAgNTcgMnEtODcgMjUzIC0xODQgNDUyek0wIC0xMjhsMiA3OXEyMyA3IDU2IDEyLjV0NTcgMTAuNXQ0OS41IDE0LjV0NDQuNSAyOXQzMSA1MC41bDIzNyA2MTZsMjgwIDcyNGg3NWg1M3E4IC0xNCAxMSAtMjFsMjA1IC00ODBxMzMgLTc4IDEwNiAtMjU3LjV0MTE0IC0yNzQuNXExNSAtMzQgNTggLTE0NC41dDcyIC0xNjguNXEyMCAtNDUgMzUgLTU3DQpxMTkgLTE1IDg4IC0yOS41dDg0IC0yMC41cTYgLTM4IDYgLTU3cTAgLTUgLTAuNSAtMTMuNXQtMC41IC0xMi41cS02MyAwIC0xOTAgOHQtMTkxIDhxLTc2IDAgLTIxNSAtN3QtMTc4IC04cTAgNDMgNCA3OGwxMzEgMjhxMSAwIDEyLjUgMi41dDE1LjUgMy41dDE0LjUgNC41dDE1IDYuNXQxMSA4dDkgMTF0Mi41IDE0cTAgMTYgLTMxIDk2LjV0LTcyIDE3Ny41dC00MiAxMDBsLTQ1MCAycS0yNiAtNTggLTc2LjUgLTE5NS41dC01MC41IC0xNjIuNQ0KcTAgLTIyIDE0IC0zNy41dDQzLjUgLTI0LjV0NDguNSAtMTMuNXQ1NyAtOC41dDQxIC00cTEgLTE5IDEgLTU4cTAgLTkgLTIgLTI3cS01OCAwIC0xNzQuNSAxMHQtMTc0LjUgMTBxLTggMCAtMjYuNSAtNHQtMjEuNSAtNHEtODAgLTE0IC0xODggLTE0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYm9sZCIgdW5pY29kZT0iJiN4ZjAzMjsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik01NTUgMTVxNzQgLTMyIDE0MCAtMzJxMzc2IDAgMzc2IDMzNXEwIDExNCAtNDEgMTgwcS0yNyA0NCAtNjEuNSA3NHQtNjcuNSA0Ni41dC04MC41IDI1dC04NCAxMC41dC05NC41IDJxLTczIDAgLTEwMSAtMTBxMCAtNTMgLTAuNSAtMTU5dC0wLjUgLTE1OHEwIC04IC0xIC02Ny41dC0wLjUgLTk2LjV0NC41IC04My41dDEyIC02Ni41ek01NDEgNzYxcTQyIC03IDEwOSAtN3E4MiAwIDE0MyAxM3QxMTAgNDQuNXQ3NC41IDg5LjV0MjUuNSAxNDINCnEwIDcwIC0yOSAxMjIuNXQtNzkgODJ0LTEwOCA0My41dC0xMjQgMTRxLTUwIDAgLTEzMCAtMTNxMCAtNTAgNCAtMTUxdDQgLTE1MnEwIC0yNyAtMC41IC04MHQtMC41IC03OXEwIC00NiAxIC02OXpNMCAtMTI4bDIgOTRxMTUgNCA4NSAxNnQxMDYgMjdxNyAxMiAxMi41IDI3dDguNSAzMy41dDUuNSAzMi41dDMgMzcuNXQwLjUgMzR2MzUuNXYzMHEwIDk4MiAtMjIgMTAyNXEtNCA4IC0yMiAxNC41dC00NC41IDExdC00OS41IDd0LTQ4LjUgNC41DQp0LTMwLjUgM2wtNCA4M3E5OCAyIDM0MCAxMS41dDM3MyA5LjVxMjMgMCA2OCAtMC41dDY4IC0wLjVxNzAgMCAxMzYuNSAtMTN0MTI4LjUgLTQydDEwOCAtNzF0NzQgLTEwNC41dDI4IC0xMzcuNXEwIC01MiAtMTYuNSAtOTUuNXQtMzkgLTcydC02NC41IC01Ny41dC03MyAtNDV0LTg0IC00MHExNTQgLTM1IDI1Ni41IC0xMzR0MTAyLjUgLTI0OHEwIC0xMDAgLTM1IC0xNzkuNXQtOTMuNSAtMTMwLjV0LTEzOCAtODUuNXQtMTYzLjUgLTQ4LjUNCnQtMTc2IC0xNHEtNDQgMCAtMTMyIDN0LTEzMiAzcS0xMDYgMCAtMzA3IC0xMXQtMjMxIC0xMnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Iml0YWxpYyIgdW5pY29kZT0iJiN4ZjAzMzsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0wIC0xMjZsMTcgODVxMjIgNyA2MS41IDE2LjV0NzIgMTl0NTkuNSAyMy41cTI4IDM1IDQxIDEwMXExIDcgNjIgMjg5dDExNCA1NDMuNXQ1MiAyOTYuNXYyNXEtMjQgMTMgLTU0LjUgMTguNXQtNjkuNSA4dC01OCA1LjVsMTkgMTAzcTMzIC0yIDEyMCAtNi41dDE0OS41IC03dDEyMC41IC0yLjVxNDggMCA5OC41IDIuNXQxMjEgN3Q5OC41IDYuNXEtNSAtMzkgLTE5IC04OXEtMzAgLTEwIC0xMDEuNSAtMjguNXQtMTA4LjUgLTMzLjUNCnEtOCAtMTkgLTE0IC00Mi41dC05IC00MHQtNy41IC00NS41dC02LjUgLTQycS0yNyAtMTQ4IC04Ny41IC00MTkuNXQtNzcuNSAtMzU1LjVxLTIgLTkgLTEzIC01OHQtMjAgLTkwdC0xNiAtODMuNXQtNiAtNTcuNWwxIC0xOHExNyAtNCAxODUgLTMxcS0zIC00NCAtMTYgLTk5cS0xMSAwIC0zMi41IC0xLjV0LTMyLjUgLTEuNXEtMjkgMCAtODcgMTB0LTg2IDEwcS0xMzggMiAtMjA2IDJxLTUxIDAgLTE0MyAtOXQtMTIxIC0xMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRleHRfaGVpZ2h0IiB1bmljb2RlPSImI3hmMDM0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NDQgMTI4cTMzIDAgNDIgLTE4LjV0LTExIC00NC41bC0xMjYgLTE2MnEtMjAgLTI2IC00OSAtMjZ0LTQ5IDI2bC0xMjYgMTYycS0yMCAyNiAtMTEgNDQuNXQ0MiAxOC41aDgwdjEwMjRoLTgwcS0zMyAwIC00MiAxOC41dDExIDQ0LjVsMTI2IDE2MnEyMCAyNiA0OSAyNnQ0OSAtMjZsMTI2IC0xNjJxMjAgLTI2IDExIC00NC41dC00MiAtMTguNWgtODB2LTEwMjRoODB6TTgxIDE0MDdsNTQgLTI3cTEyIC01IDIxMSAtNXE0NCAwIDEzMiAyDQp0MTMyIDJxMzYgMCAxMDcuNSAtMC41dDEwNy41IC0wLjVoMjkzcTYgMCAyMSAtMC41dDIwLjUgMHQxNiAzdDE3LjUgOXQxNSAxNy41bDQyIDFxNCAwIDE0IC0wLjV0MTQgLTAuNXEyIC0xMTIgMiAtMzM2cTAgLTgwIC01IC0xMDlxLTM5IC0xNCAtNjggLTE4cS0yNSA0NCAtNTQgMTI4cS0zIDkgLTExIDQ4dC0xNC41IDczLjV0LTcuNSAzNS41cS02IDggLTEyIDEyLjV0LTE1LjUgNnQtMTMgMi41dC0xOCAwLjV0LTE2LjUgLTAuNQ0KcS0xNyAwIC02Ni41IDAuNXQtNzQuNSAwLjV0LTY0IC0ydC03MSAtNnEtOSAtODEgLTggLTEzNnEwIC05NCAyIC0zODh0MiAtNDU1cTAgLTE2IC0yLjUgLTcxLjV0MCAtOTEuNXQxMi41IC02OXE0MCAtMjEgMTI0IC00Mi41dDEyMCAtMzcuNXE1IC00MCA1IC01MHEwIC0xNCAtMyAtMjlsLTM0IC0xcS03NiAtMiAtMjE4IDh0LTIwNyAxMHEtNTAgMCAtMTUxIC05dC0xNTIgLTlxLTMgNTEgLTMgNTJ2OXExNyAyNyA2MS41IDQzdDk4LjUgMjl0NzggMjcNCnExOSA0MiAxOSAzODNxMCAxMDEgLTMgMzAzdC0zIDMwM3YxMTdxMCAyIDAuNSAxNS41dDAuNSAyNXQtMSAyNS41dC0zIDI0dC01IDE0cS0xMSAxMiAtMTYyIDEycS0zMyAwIC05MyAtMTJ0LTgwIC0yNnEtMTkgLTEzIC0zNCAtNzIuNXQtMzEuNSAtMTExdC00Mi41IC01My41cS00MiAyNiAtNTYgNDR2MzgzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGV4dF93aWR0aCIgdW5pY29kZT0iJiN4ZjAzNTsiIA0KZD0iTTgxIDE0MDdsNTQgLTI3cTEyIC01IDIxMSAtNXE0NCAwIDEzMiAydDEzMiAycTcwIDAgMjQ2LjUgMXQzMDQuNSAwLjV0MjQ3IC00LjVxMzMgLTEgNTYgMzFsNDIgMXE0IDAgMTQgLTAuNXQxNCAtMC41cTIgLTExMiAyIC0zMzZxMCAtODAgLTUgLTEwOXEtMzkgLTE0IC02OCAtMThxLTI1IDQ0IC01NCAxMjhxLTMgOSAtMTEgNDcuNXQtMTUgNzMuNXQtNyAzNnEtMTAgMTMgLTI3IDE5cS01IDIgLTY2IDJxLTMwIDAgLTkzIDF0LTEwMyAxDQp0LTk0IC0ydC05NiAtN3EtOSAtODEgLTggLTEzNmwxIC0xNTJ2NTJxMCAtNTUgMSAtMTU0dDEuNSAtMTgwdDAuNSAtMTUzcTAgLTE2IC0yLjUgLTcxLjV0MCAtOTEuNXQxMi41IC02OXE0MCAtMjEgMTI0IC00Mi41dDEyMCAtMzcuNXE1IC00MCA1IC01MHEwIC0xNCAtMyAtMjlsLTM0IC0xcS03NiAtMiAtMjE4IDh0LTIwNyAxMHEtNTAgMCAtMTUxIC05dC0xNTIgLTlxLTMgNTEgLTMgNTJ2OXExNyAyNyA2MS41IDQzdDk4LjUgMjl0NzggMjcNCnE3IDE2IDExLjUgNzR0NiAxNDUuNXQxLjUgMTU1dC0wLjUgMTUzLjV0LTAuNSA4OXEwIDcgLTIuNSAyMS41dC0yLjUgMjIuNXEwIDcgMC41IDQ0dDEgNzN0MCA3Ni41dC0zIDY3LjV0LTYuNSAzMnEtMTEgMTIgLTE2MiAxMnEtNDEgMCAtMTYzIC0xMy41dC0xMzggLTI0LjVxLTE5IC0xMiAtMzQgLTcxLjV0LTMxLjUgLTExMS41dC00Mi41IC01NHEtNDIgMjYgLTU2IDQ0djM4M3pNMTMxMCAxMjVxMTIgMCA0MiAtMTkuNXQ1Ny41IC00MS41DQp0NTkuNSAtNDl0MzYgLTMwcTI2IC0yMSAyNiAtNDl0LTI2IC00OXEtNCAtMyAtMzYgLTMwdC01OS41IC00OXQtNTcuNSAtNDEuNXQtNDIgLTE5LjVxLTEzIDAgLTIwLjUgMTAuNXQtMTAgMjguNXQtMi41IDMzLjV0MS41IDMzdDEuNSAxOS41aC0xMDI0cTAgLTIgMS41IC0xOS41dDEuNSAtMzN0LTIuNSAtMzMuNXQtMTAgLTI4LjV0LTIwLjUgLTEwLjVxLTEyIDAgLTQyIDE5LjV0LTU3LjUgNDEuNXQtNTkuNSA0OXQtMzYgMzBxLTI2IDIxIC0yNiA0OQ0KdDI2IDQ5cTQgMyAzNiAzMHQ1OS41IDQ5dDU3LjUgNDEuNXQ0MiAxOS41cTEzIDAgMjAuNSAtMTAuNXQxMCAtMjguNXQyLjUgLTMzLjV0LTEuNSAtMzN0LTEuNSAtMTkuNWgxMDI0cTAgMiAtMS41IDE5LjV0LTEuNSAzM3QyLjUgMzMuNXQxMCAyOC41dDIwLjUgMTAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFsaWduX2xlZnQiIHVuaWNvZGU9IiYjeGYwMzY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiAxOTJ2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE2NjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxNjY0cTI2IDAgNDUgLTE5dDE5IC00NXpNMTQwOCA1NzZ2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyODBxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxMjgwcTI2IDAgNDUgLTE5dDE5IC00NXpNMTY2NCA5NjB2LTEyOHEwIC0yNiAtMTkgLTQ1DQp0LTQ1IC0xOWgtMTUzNnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE1MzZxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xMjgwIDEzNDR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTExNTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxMTUycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFsaWduX2NlbnRlciIgdW5pY29kZT0iJiN4ZjAzNzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNDA4IDU3NnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtODk2cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloODk2cTI2IDAgNDUgLTE5dDE5IC00NXpNMTY2NCA5NjB2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTkNCmgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xMjgwIDEzNDR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTY0MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDY0MHEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbGlnbl9yaWdodCIgdW5pY29kZT0iJiN4ZjAzODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDU3NnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDEyODBxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDk2MHYtMTI4cTAgLTI2IC0xOSAtNDUNCnQtNDUgLTE5aC0xNTM2cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTUzNnEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgMTM0NHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTE1MnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDExNTJxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYWxpZ25fanVzdGlmeSIgdW5pY29kZT0iJiN4ZjAzOTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDU3NnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDk2MHYtMTI4cTAgLTI2IC0xOSAtNDUNCnQtNDUgLTE5aC0xNjY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgMTM0NHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlzdCIgdW5pY29kZT0iJiN4ZjAzYTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0yNTYgMjI0di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xOTJxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxOTJxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0yNTYgNjA4di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xOTJxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxOTJxMTMgMCAyMi41IC05LjUNCnQ5LjUgLTIyLjV6TTI1NiA5OTJ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE5MnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgMjI0di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMzQ0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTM0NA0KcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMjU2IDEzNzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE5MnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgNjA4di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMzQ0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjUNCnQyMi41IDkuNWgxMzQ0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTc5MiA5OTJ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEzNDRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzQ0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTc5MiAxMzc2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMzQ0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkyDQpxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzQ0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImluZGVudF9sZWZ0IiB1bmljb2RlPSImI3hmMDNiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTM4NCA5OTJ2LTU3NnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTE0IDAgLTIzIDlsLTI4OCAyODhxLTkgOSAtOSAyM3Q5IDIzbDI4OCAyODhxOSA5IDIzIDlxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDIyNHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTcyOHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE3MjhxMTMgMCAyMi41IC05LjUNCnQ5LjUgLTIyLjV6TTE3OTIgNjA4di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMDg4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTA4OHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgOTkydi0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMDg4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTA4OA0KcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTc5MiAxMzc2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xNzI4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTcyOHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpbmRlbnRfcmlnaHQiIHVuaWNvZGU9IiYjeGYwM2M7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMzUyIDcwNHEwIC0xNCAtOSAtMjNsLTI4OCAtMjg4cS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djU3NnEwIDEzIDkuNSAyMi41dDIyLjUgOS41cTE0IDAgMjMgLTlsMjg4IC0yODhxOSAtOSA5IC0yM3pNMTc5MiAyMjR2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE3MjhxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxNzI4cTEzIDAgMjIuNSAtOS41DQp0OS41IC0yMi41ek0xNzkyIDYwOHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTA4OHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEwODhxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDk5MnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTA4OHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEwODgNCnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgMTM3NnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTcyOHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE3MjhxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmFjZXRpbWVfdmlkZW8iIHVuaWNvZGU9IiYjeGYwM2Q7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiAxMTg0di0xMDg4cTAgLTQyIC0zOSAtNTlxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDUgMTlsLTQwMyA0MDN2LTE2NnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtNzA0cS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY3MDRxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDcwNHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtMTY1bDQwMyA0MDJxMTggMTkgNDUgMTlxMTIgMCAyNSAtNQ0KcTM5IC0xNyAzOSAtNTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwaWN0dXJlIiB1bmljb2RlPSImI3hmMDNlOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTY0MCA5NjBxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjY0IDU3NnYtNDQ4aC0xNDA4djE5MmwzMjAgMzIwbDE2MCAtMTYwbDUxMiA1MTJ6TTE3NjAgMTI4MGgtMTYwMHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTEyMTZxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxNjAwcTEzIDAgMjIuNSA5LjV0OS41IDIyLjV2MTIxNg0KcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNXpNMTkyMCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNjAwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxNjAwcTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGVuY2lsIiB1bmljb2RlPSImI3hmMDQwOyIgDQpkPSJNMzYzIDBsOTEgOTFsLTIzNSAyMzVsLTkxIC05MXYtMTA3aDEyOHYtMTI4aDEwN3pNODg2IDkyOHEwIDIyIC0yMiAyMnEtMTAgMCAtMTcgLTdsLTU0MiAtNTQycS03IC03IC03IC0xN3EwIC0yMiAyMiAtMjJxMTAgMCAxNyA3bDU0MiA1NDJxNyA3IDcgMTd6TTgzMiAxMTIwbDQxNiAtNDE2bC04MzIgLTgzMmgtNDE2djQxNnpNMTUxNSAxMDI0cTAgLTUzIC0zNyAtOTBsLTE2NiAtMTY2bC00MTYgNDE2bDE2NiAxNjVxMzYgMzggOTAgMzgNCnE1MyAwIDkxIC0zOGwyMzUgLTIzNHEzNyAtMzkgMzcgLTkxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWFwX21hcmtlciIgdW5pY29kZT0iJiN4ZjA0MTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik03NjggODk2cTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMTAyNCA4OTZxMCAtMTA5IC0zMyAtMTc5bC0zNjQgLTc3NHEtMTYgLTMzIC00Ny41IC01MnQtNjcuNSAtMTl0LTY3LjUgMTl0LTQ2LjUgNTJsLTM2NSA3NzRxLTMzIDcwIC0zMyAxNzlxMCAyMTIgMTUwIDM2MnQzNjIgMTUwdDM2MiAtMTUwdDE1MCAtMzYyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYWRqdXN0IiB1bmljb2RlPSImI3hmMDQyOyIgDQpkPSJNNzY4IDk2djEwODhxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGludCIgdW5pY29kZT0iJiN4ZjA0MzsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik01MTIgMzg0cTAgMzYgLTIwIDY5cS0xIDEgLTE1LjUgMjIuNXQtMjUuNSAzOHQtMjUgNDR0LTIxIDUwLjVxLTQgMTYgLTIxIDE2dC0yMSAtMTZxLTcgLTIzIC0yMSAtNTAuNXQtMjUgLTQ0dC0yNS41IC0zOHQtMTUuNSAtMjIuNXEtMjAgLTMzIC0yMCAtNjlxMCAtNTMgMzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMjQgNTEycTAgLTIxMiAtMTUwIC0zNjJ0LTM2MiAtMTUwdC0zNjIgMTUwdC0xNTAgMzYyDQpxMCAxNDUgODEgMjc1cTYgOSA2Mi41IDkwLjV0MTAxIDE1MXQ5OS41IDE3OHQ4MyAyMDEuNXE5IDMwIDM0IDQ3dDUxIDE3dDUxLjUgLTE3dDMzLjUgLTQ3cTI4IC05MyA4MyAtMjAxLjV0OTkuNSAtMTc4dDEwMSAtMTUxdDYyLjUgLTkwLjVxODEgLTEyNyA4MSAtMjc1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZWRpdCIgdW5pY29kZT0iJiN4ZjA0NDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04ODggMzUybDExNiAxMTZsLTE1MiAxNTJsLTExNiAtMTE2di01Nmg5NnYtOTZoNTZ6TTEzMjggMTA3MnEtMTYgMTYgLTMzIC0xbC0zNTAgLTM1MHEtMTcgLTE3IC0xIC0zM3QzMyAxbDM1MCAzNTBxMTcgMTcgMSAzM3pNMTQwOCA0Nzh2LTE5MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtODMycS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY4MzJxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDgzMg0KcTYzIDAgMTE3IC0yNXExNSAtNyAxOCAtMjNxMyAtMTcgLTkgLTI5bC00OSAtNDlxLTE0IC0xNCAtMzIgLThxLTIzIDYgLTQ1IDZoLTgzMnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzdjEyNnEwIDEzIDkgMjJsNjQgNjRxMTUgMTUgMzUgN3QyMCAtMjl6TTEzMTIgMTIxNmwyODggLTI4OGwtNjcyIC02NzJoLTI4OHYyODh6TTE3NTYgMTA4NGwtOTIgLTkyDQpsLTI4OCAyODhsOTIgOTJxMjggMjggNjggMjh0NjggLTI4bDE1MiAtMTUycTI4IC0yOCAyOCAtNjh0LTI4IC02OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNoYXJlIiB1bmljb2RlPSImI3hmMDQ1OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE0MDggNTQ3di0yNTlxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWgyNTV2MHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjVxMCAtMjcgLTI2IC0zMnEtNzcgLTI2IC0xMzMgLTYwcS0xMCAtNCAtMTYgLTRoLTExMnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzINCnE2NiAwIDExMyA0N3Q0NyAxMTN2MjE0cTAgMTkgMTggMjlxMjggMTMgNTQgMzdxMTYgMTYgMzUgOHEyMSAtOSAyMSAtMjl6TTE2NDUgMTA0M2wtMzg0IC0zODRxLTE4IC0xOSAtNDUgLTE5cS0xMiAwIC0yNSA1cS0zOSAxNyAtMzkgNTl2MTkyaC0xNjBxLTMyMyAwIC00MzggLTEzMXEtMTE5IC0xMzcgLTc0IC00NzNxMyAtMjMgLTIwIC0zNHEtOCAtMiAtMTIgLTJxLTE2IDAgLTI2IDEzcS0xMCAxNCAtMjEgMzF0LTM5LjUgNjguNXQtNDkuNSA5OS41DQp0LTM4LjUgMTE0dC0xNy41IDEyMnEwIDQ5IDMuNSA5MXQxNCA5MHQyOCA4OHQ0NyA4MS41dDY4LjUgNzR0OTQuNSA2MS41dDEyNC41IDQ4LjV0MTU5LjUgMzAuNXQxOTYuNSAxMWgxNjB2MTkycTAgNDIgMzkgNTlxMTMgNSAyNSA1cTI2IDAgNDUgLTE5bDM4NCAtMzg0cTE5IC0xOSAxOSAtNDV0LTE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZWNrIiB1bmljb2RlPSImI3hmMDQ2OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE0MDggNjA2di0zMThxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg4MzJxNjMgMCAxMTcgLTI1cTE1IC03IDE4IC0yM3EzIC0xNyAtOSAtMjlsLTQ5IC00OXEtMTAgLTEwIC0yMyAtMTBxLTMgMCAtOSAycS0yMyA2IC00NSA2aC04MzJxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTgzMg0KcTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzdjI1NHEwIDEzIDkgMjJsNjQgNjRxMTAgMTAgMjMgMTBxNiAwIDEyIC0zcTIwIC04IDIwIC0yOXpNMTYzOSAxMDk1bC04MTQgLTgxNHEtMjQgLTI0IC01NyAtMjR0LTU3IDI0bC00MzAgNDMwcS0yNCAyNCAtMjQgNTd0MjQgNTdsMTEwIDExMHEyNCAyNCA1NyAyNHQ1NyAtMjRsMjYzIC0yNjNsNjQ3IDY0N3EyNCAyNCA1NyAyNHQ1NyAtMjRsMTEwIC0xMTANCnEyNCAtMjQgMjQgLTU3dC0yNCAtNTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtb3ZlIiB1bmljb2RlPSImI3hmMDQ3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNjQwcTAgLTI2IC0xOSAtNDVsLTI1NiAtMjU2cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djEyOGgtMzg0di0zODRoMTI4cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1bC0yNTYgLTI1NnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTloMTI4djM4NGgtMzg0di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMjU2IDI1NnEtMTkgMTkgLTE5IDQ1DQp0MTkgNDVsMjU2IDI1NnExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjhoMzg0djM4NGgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsMjU2IDI1NnExOSAxOSA0NSAxOXQ0NSAtMTlsMjU2IC0yNTZxMTkgLTE5IDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTEyOHYtMzg0aDM4NHYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsMjU2IC0yNTZxMTkgLTE5IDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0ZXBfYmFja3dhcmQiIHVuaWNvZGU9IiYjeGYwNDg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNOTc5IDEzOTVxMTkgMTkgMzIgMTN0MTMgLTMydi0xNDcycTAgLTI2IC0xMyAtMzJ0LTMyIDEzbC03MTAgNzEwcS05IDkgLTEzIDE5di02NzhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNDA4cTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtNjc4cTQgMTAgMTMgMTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmYXN0X2JhY2t3YXJkIiB1bmljb2RlPSImI3hmMDQ5OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NDcgMTM5NXExOSAxOSAzMiAxM3QxMyAtMzJ2LTE0NzJxMCAtMjYgLTEzIC0zMnQtMzIgMTNsLTcxMCA3MTBxLTkgOSAtMTMgMTl2LTcxMHEwIC0yNiAtMTMgLTMydC0zMiAxM2wtNzEwIDcxMHEtOSA5IC0xMyAxOXYtNjc4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTQwOHEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTY3OHE0IDEwIDEzIDE5bDcxMCA3MTANCnExOSAxOSAzMiAxM3QxMyAtMzJ2LTcxMHE0IDEwIDEzIDE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmFja3dhcmQiIHVuaWNvZGU9IiYjeGYwNGE7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTYxOSAxMzk1cTE5IDE5IDMyIDEzdDEzIC0zMnYtMTQ3MnEwIC0yNiAtMTMgLTMydC0zMiAxM2wtNzEwIDcxMHEtOSA5IC0xMyAxOXYtNzEwcTAgLTI2IC0xMyAtMzJ0LTMyIDEzbC03MTAgNzEwcS0xOSAxOSAtMTkgNDV0MTkgNDVsNzEwIDcxMHExOSAxOSAzMiAxM3QxMyAtMzJ2LTcxMHE0IDEwIDEzIDE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZjA0YjsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xMzg0IDYwOWwtMTMyOCAtNzM4cS0yMyAtMTMgLTM5LjUgLTN0LTE2LjUgMzZ2MTQ3MnEwIDI2IDE2LjUgMzZ0MzkuNSAtM2wxMzI4IC03MzhxMjMgLTEzIDIzIC0zMXQtMjMgLTMxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGF1c2UiIHVuaWNvZGU9IiYjeGYwNGM7IiANCmQ9Ik0xNTM2IDEzNDR2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNDA4cTAgMjYgMTkgNDV0NDUgMTloNTEycTI2IDAgNDUgLTE5dDE5IC00NXpNNjQwIDEzNDR2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNDA4cTAgMjYgMTkgNDV0NDUgMTloNTEycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0b3AiIHVuaWNvZGU9IiYjeGYwNGQ7IiANCmQ9Ik0xNTM2IDEzNDR2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDA4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTQwOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9yd2FyZCIgdW5pY29kZT0iJiN4ZjA0ZTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik00NSAtMTE1cS0xOSAtMTkgLTMyIC0xM3QtMTMgMzJ2MTQ3MnEwIDI2IDEzIDMydDMyIC0xM2w3MTAgLTcxMHE5IC05IDEzIC0xOXY3MTBxMCAyNiAxMyAzMnQzMiAtMTNsNzEwIC03MTBxMTkgLTE5IDE5IC00NXQtMTkgLTQ1bC03MTAgLTcxMHEtMTkgLTE5IC0zMiAtMTN0LTEzIDMydjcxMHEtNCAtMTAgLTEzIC0xOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZhc3RfZm9yd2FyZCIgdW5pY29kZT0iJiN4ZjA1MDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik00NSAtMTE1cS0xOSAtMTkgLTMyIC0xM3QtMTMgMzJ2MTQ3MnEwIDI2IDEzIDMydDMyIC0xM2w3MTAgLTcxMHE5IC05IDEzIC0xOXY3MTBxMCAyNiAxMyAzMnQzMiAtMTNsNzEwIC03MTBxOSAtOSAxMyAtMTl2Njc4cTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtMTQwOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djY3OHEtNCAtMTAgLTEzIC0xOWwtNzEwIC03MTANCnEtMTkgLTE5IC0zMiAtMTN0LTEzIDMydjcxMHEtNCAtMTAgLTEzIC0xOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0ZXBfZm9yd2FyZCIgdW5pY29kZT0iJiN4ZjA1MTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik00NSAtMTE1cS0xOSAtMTkgLTMyIC0xM3QtMTMgMzJ2MTQ3MnEwIDI2IDEzIDMydDMyIC0xM2w3MTAgLTcxMHE5IC05IDEzIC0xOXY2NzhxMCAyNiAxOSA0NXQ0NSAxOWgxMjhxMjYgMCA0NSAtMTl0MTkgLTQ1di0xNDA4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV2Njc4cS00IC0xMCAtMTMgLTE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZWplY3QiIHVuaWNvZGU9IiYjeGYwNTI7IiBob3Jpei1hZHYteD0iMTUzOCIgDQpkPSJNMTQgNTU3bDcxMCA3MTBxMTkgMTkgNDUgMTl0NDUgLTE5bDcxMCAtNzEwcTE5IC0xOSAxMyAtMzJ0LTMyIC0xM2gtMTQ3MnEtMjYgMCAtMzIgMTN0MTMgMzJ6TTE0NzMgMGgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9sZWZ0IiB1bmljb2RlPSImI3hmMDUzOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTExNzEgMTIzNWwtNTMxIC01MzFsNTMxIC01MzFxMTkgLTE5IDE5IC00NXQtMTkgLTQ1bC0xNjYgLTE2NnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC03NDIgNzQycS0xOSAxOSAtMTkgNDV0MTkgNDVsNzQyIDc0MnExOSAxOSA0NSAxOXQ0NSAtMTlsMTY2IC0xNjZxMTkgLTE5IDE5IC00NXQtMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9yaWdodCIgdW5pY29kZT0iJiN4ZjA1NDsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMTA3IDY1OWwtNzQyIC03NDJxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtMTY2IDE2NnEtMTkgMTkgLTE5IDQ1dDE5IDQ1bDUzMSA1MzFsLTUzMSA1MzFxLTE5IDE5IC0xOSA0NXQxOSA0NWwxNjYgMTY2cTE5IDE5IDQ1IDE5dDQ1IC0xOWw3NDIgLTc0MnExOSAtMTkgMTkgLTQ1dC0xOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbHVzX3NpZ24iIHVuaWNvZGU9IiYjeGYwNTU7IiANCmQ9Ik0xMjE2IDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0yNTZ2MjU2cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMjU2aC0yNTZxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgyNTZ2LTI1NnEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1djI1NmgyNTZxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41DQp0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im1pbnVzX3NpZ24iIHVuaWNvZGU9IiYjeGYwNTY7IiANCmQ9Ik0xMjE2IDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC03NjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg3NjhxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41DQp0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJlbW92ZV9zaWduIiB1bmljb2RlPSImI3hmMDU3OyIgDQpkPSJNMTE0OSA0MTRxMCAyNiAtMTkgNDVsLTE4MSAxODFsMTgxIDE4MXExOSAxOSAxOSA0NXEwIDI3IC0xOSA0NmwtOTAgOTBxLTE5IDE5IC00NiAxOXEtMjYgMCAtNDUgLTE5bC0xODEgLTE4MWwtMTgxIDE4MXEtMTkgMTkgLTQ1IDE5cS0yNyAwIC00NiAtMTlsLTkwIC05MHEtMTkgLTE5IC0xOSAtNDZxMCAtMjYgMTkgLTQ1bDE4MSAtMTgxbC0xODEgLTE4MXEtMTkgLTE5IC0xOSAtNDVxMCAtMjcgMTkgLTQ2bDkwIC05MHExOSAtMTkgNDYgLTE5DQpxMjYgMCA0NSAxOWwxODEgMTgxbDE4MSAtMTgxcTE5IC0xOSA0NSAtMTlxMjcgMCA0NiAxOWw5MCA5MHExOSAxOSAxOSA0NnpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJva19zaWduIiB1bmljb2RlPSImI3hmMDU4OyIgDQpkPSJNMTI4NCA4MDJxMCAyOCAtMTggNDZsLTkxIDkwcS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtNDA4IC00MDdsLTIyNiAyMjZxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC05MSAtOTBxLTE4IC0xOCAtMTggLTQ2cTAgLTI3IDE4IC00NWwzNjIgLTM2MnExOSAtMTkgNDUgLTE5cTI3IDAgNDYgMTlsNTQzIDU0M3ExOCAxOCAxOCA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwMw0KdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InF1ZXN0aW9uX3NpZ24iIHVuaWNvZGU9IiYjeGYwNTk7IiANCmQ9Ik04OTYgMTYwdjE5MnEwIDE0IC05IDIzdC0yMyA5aC0xOTJxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkycTAgLTE0IDkgLTIzdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3pNMTE1MiA4MzJxMCA4OCAtNTUuNSAxNjN0LTEzOC41IDExNnQtMTcwIDQxcS0yNDMgMCAtMzcxIC0yMTNxLTE1IC0yNCA4IC00MmwxMzIgLTEwMHE3IC02IDE5IC02cTE2IDAgMjUgMTJxNTMgNjggODYgOTJxMzQgMjQgODYgMjRxNDggMCA4NS41IC0yNnQzNy41IC01OQ0KcTAgLTM4IC0yMCAtNjF0LTY4IC00NXEtNjMgLTI4IC0xMTUuNSAtODYuNXQtNTIuNSAtMTI1LjV2LTM2cTAgLTE0IDkgLTIzdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3EwIDE5IDIxLjUgNDkuNXQ1NC41IDQ5LjVxMzIgMTggNDkgMjguNXQ0NiAzNXQ0NC41IDQ4dDI4IDYwLjV0MTIuNSA4MXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjUNCnQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImluZm9fc2lnbiIgdW5pY29kZT0iJiN4ZjA1YTsiIA0KZD0iTTEwMjQgMTYwdjE2MHEwIDE0IC05IDIzdC0yMyA5aC05NnY1MTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE2MHEwIC0xNCA5IC0yM3QyMyAtOWg5NnYtMzIwaC05NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xNjBxMCAtMTQgOSAtMjN0MjMgLTloNDQ4cTE0IDAgMjMgOXQ5IDIzek04OTYgMTA1NnYxNjBxMCAxNCAtOSAyM3QtMjMgOWgtMTkycS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE2MHEwIC0xNCA5IC0yMw0KdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzY3JlZW5zaG90IiB1bmljb2RlPSImI3hmMDViOyIgDQpkPSJNMTE5NyA1MTJoLTEwOXEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDEwOXEtMzIgMTA4IC0xMTIuNSAxODguNXQtMTg4LjUgMTEyLjV2LTEwOXEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEwOXEtMTA4IC0zMiAtMTg4LjUgLTExMi41dC0xMTIuNSAtMTg4LjVoMTA5cTI2IDAgNDUgLTE5dDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTA5DQpxMzIgLTEwOCAxMTIuNSAtMTg4LjV0MTg4LjUgLTExMi41djEwOXEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTEwOXExMDggMzIgMTg4LjUgMTEyLjV0MTEyLjUgMTg4LjV6TTE1MzYgNzA0di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDNxLTM3IC0xNjEgLTE1NC41IC0yNzguNXQtMjc4LjUgLTE1NC41di0xNDNxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNDMNCnEtMTYxIDM3IC0yNzguNSAxNTQuNXQtMTU0LjUgMjc4LjVoLTE0M3EtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0M3EzNyAxNjEgMTU0LjUgMjc4LjV0Mjc4LjUgMTU0LjV2MTQzcTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtMTQzcTE2MSAtMzcgMjc4LjUgLTE1NC41dDE1NC41IC0yNzguNWgxNDNxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVtb3ZlX2NpcmNsZSIgdW5pY29kZT0iJiN4ZjA1YzsiIA0KZD0iTTEwOTcgNDU3bC0xNDYgLTE0NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xMzcgMTM3bC0xMzcgLTEzN3EtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xNDYgMTQ2cS0xMCAxMCAtMTAgMjN0MTAgMjNsMTM3IDEzN2wtMTM3IDEzN3EtMTAgMTAgLTEwIDIzdDEwIDIzbDE0NiAxNDZxMTAgMTAgMjMgMTB0MjMgLTEwbDEzNyAtMTM3bDEzNyAxMzdxMTAgMTAgMjMgMTB0MjMgLTEwbDE0NiAtMTQ2cTEwIC0xMCAxMCAtMjN0LTEwIC0yMw0KbC0xMzcgLTEzN2wxMzcgLTEzN3ExMCAtMTAgMTAgLTIzdC0xMCAtMjN6TTEzMTIgNjQwcTAgMTQ4IC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3QtMjczIC03M3QtMTk4IC0xOTh0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNQ0KdDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im9rX2NpcmNsZSIgdW5pY29kZT0iJiN4ZjA1ZDsiIA0KZD0iTTExNzEgNzIzbC00MjIgLTQyMnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC0yOTQgMjk0cS0xOSAxOSAtMTkgNDV0MTkgNDVsMTAyIDEwMnExOSAxOSA0NSAxOXQ0NSAtMTlsMTQ3IC0xNDdsMjc1IDI3NXExOSAxOSA0NSAxOXQ0NSAtMTlsMTAyIC0xMDJxMTkgLTE5IDE5IC00NXQtMTkgLTQ1ek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTgNCnQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJiYW5fY2lyY2xlIiB1bmljb2RlPSImI3hmMDVlOyIgDQpkPSJNMTMxMiA2NDNxMCAxNjEgLTg3IDI5NWwtNzU0IC03NTNxMTM3IC04OSAyOTcgLTg5cTExMSAwIDIxMS41IDQzLjV0MTczLjUgMTE2LjV0MTE2IDE3NC41dDQzIDIxMi41ek0zMTMgMzQ0bDc1NSA3NTRxLTEzNSA5MSAtMzAwIDkxcS0xNDggMCAtMjczIC03M3QtMTk4IC0xOTl0LTczIC0yNzRxMCAtMTYyIDg5IC0yOTl6TTE1MzYgNjQzcTAgLTE1NyAtNjEgLTMwMHQtMTYzLjUgLTI0NnQtMjQ1IC0xNjR0LTI5OC41IC02MXQtMjk4LjUgNjENCnQtMjQ1IDE2NHQtMTYzLjUgMjQ2dC02MSAzMDB0NjEgMjk5LjV0MTYzLjUgMjQ1LjV0MjQ1IDE2NHQyOTguNSA2MXQyOTguNSAtNjF0MjQ1IC0xNjR0MTYzLjUgLTI0NS41dDYxIC0yOTkuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFycm93X2xlZnQiIHVuaWNvZGU9IiYjeGYwNjA7IiANCmQ9Ik0xNTM2IDY0MHYtMTI4cTAgLTUzIC0zMi41IC05MC41dC04NC41IC0zNy41aC03MDRsMjkzIC0yOTRxMzggLTM2IDM4IC05MHQtMzggLTkwbC03NSAtNzZxLTM3IC0zNyAtOTAgLTM3cS01MiAwIC05MSAzN2wtNjUxIDY1MnEtMzcgMzcgLTM3IDkwcTAgNTIgMzcgOTFsNjUxIDY1MHEzOCAzOCA5MSAzOHE1MiAwIDkwIC0zOGw3NSAtNzRxMzggLTM4IDM4IC05MXQtMzggLTkxbC0yOTMgLTI5M2g3MDRxNTIgMCA4NC41IC0zNy41DQp0MzIuNSAtOTAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFycm93X3JpZ2h0IiB1bmljb2RlPSImI3hmMDYxOyIgDQpkPSJNMTQ3MiA1NzZxMCAtNTQgLTM3IC05MWwtNjUxIC02NTFxLTM5IC0zNyAtOTEgLTM3cS01MSAwIC05MCAzN2wtNzUgNzVxLTM4IDM4IC0zOCA5MXQzOCA5MWwyOTMgMjkzaC03MDRxLTUyIDAgLTg0LjUgMzcuNXQtMzIuNSA5MC41djEyOHEwIDUzIDMyLjUgOTAuNXQ4NC41IDM3LjVoNzA0bC0yOTMgMjk0cS0zOCAzNiAtMzggOTB0MzggOTBsNzUgNzVxMzggMzggOTAgMzhxNTMgMCA5MSAtMzhsNjUxIC02NTFxMzcgLTM1IDM3IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFycm93X3VwIiB1bmljb2RlPSImI3hmMDYyOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE2MTEgNTY1cTAgLTUxIC0zNyAtOTBsLTc1IC03NXEtMzggLTM4IC05MSAtMzhxLTU0IDAgLTkwIDM4bC0yOTQgMjkzdi03MDRxMCAtNTIgLTM3LjUgLTg0LjV0LTkwLjUgLTMyLjVoLTEyOHEtNTMgMCAtOTAuNSAzMi41dC0zNy41IDg0LjV2NzA0bC0yOTQgLTI5M3EtMzYgLTM4IC05MCAtMzh0LTkwIDM4bC03NSA3NXEtMzggMzggLTM4IDkwcTAgNTMgMzggOTFsNjUxIDY1MXEzNSAzNyA5MCAzN3E1NCAwIDkxIC0zN2w2NTEgLTY1MQ0KcTM3IC0zOSAzNyAtOTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvd19kb3duIiB1bmljb2RlPSImI3hmMDYzOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE2MTEgNzA0cTAgLTUzIC0zNyAtOTBsLTY1MSAtNjUycS0zOSAtMzcgLTkxIC0zN3EtNTMgMCAtOTAgMzdsLTY1MSA2NTJxLTM4IDM2IC0zOCA5MHEwIDUzIDM4IDkxbDc0IDc1cTM5IDM3IDkxIDM3cTUzIDAgOTAgLTM3bDI5NCAtMjk0djcwNHEwIDUyIDM4IDkwdDkwIDM4aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB2LTcwNGwyOTQgMjk0cTM3IDM3IDkwIDM3cTUyIDAgOTEgLTM3bDc1IC03NXEzNyAtMzkgMzcgLTkxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hhcmVfYWx0IiB1bmljb2RlPSImI3hmMDY0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgODk2cTAgLTI2IC0xOSAtNDVsLTUxMiAtNTEycS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI1NmgtMjI0cS05OCAwIC0xNzUuNSAtNnQtMTU0IC0yMS41dC0xMzMgLTQyLjV0LTEwNS41IC02OS41dC04MCAtMTAxdC00OC41IC0xMzguNXQtMTcuNSAtMTgxcTAgLTU1IDUgLTEyM3EwIC02IDIuNSAtMjMuNXQyLjUgLTI2LjVxMCAtMTUgLTguNSAtMjV0LTIzLjUgLTEwcS0xNiAwIC0yOCAxN3EtNyA5IC0xMyAyMg0KdC0xMy41IDMwdC0xMC41IDI0cS0xMjcgMjg1IC0xMjcgNDUxcTAgMTk5IDUzIDMzM3ExNjIgNDAzIDg3NSA0MDNoMjI0djI1NnEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWw1MTIgLTUxMnExOSAtMTkgMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVzaXplX2Z1bGwiIHVuaWNvZGU9IiYjeGYwNjU7IiANCmQ9Ik03NTUgNDgwcTAgLTEzIC0xMCAtMjNsLTMzMiAtMzMybDE0NCAtMTQ0cTE5IC0xOSAxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC00NDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY0NDhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsMTQ0IC0xNDRsMzMyIDMzMnExMCAxMCAyMyAxMHQyMyAtMTBsMTE0IC0xMTRxMTAgLTEwIDEwIC0yM3pNMTUzNiAxMzQ0di00NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMTQ0IDE0NGwtMzMyIC0zMzINCnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xMTQgMTE0cS0xMCAxMCAtMTAgMjN0MTAgMjNsMzMyIDMzMmwtMTQ0IDE0NHEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5aDQ0OHEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXNpemVfc21hbGwiIHVuaWNvZGU9IiYjeGYwNjY7IiANCmQ9Ik03NjggNTc2di00NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMTQ0IDE0NGwtMzMyIC0zMzJxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTE0IDExNHEtMTAgMTAgLTEwIDIzdDEwIDIzbDMzMiAzMzJsLTE0NCAxNDRxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOWg0NDhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNTIzIDEyNDhxMCAtMTMgLTEwIC0yM2wtMzMyIC0zMzJsMTQ0IC0xNDRxMTkgLTE5IDE5IC00NXQtMTkgLTQ1DQp0LTQ1IC0xOWgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgMjYgMTkgNDV0NDUgMTl0NDUgLTE5bDE0NCAtMTQ0bDMzMiAzMzJxMTAgMTAgMjMgMTB0MjMgLTEwbDExNCAtMTE0cTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbHVzIiB1bmljb2RlPSImI3hmMDY3OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTE0MDggODAwdi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC00MTZ2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoNDE2djQxNnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh2LTQxNmg0MTZxNDAgMCA2OCAtMjh0MjggLTY4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWludXMiIHVuaWNvZGU9IiYjeGYwNjg7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMTQwOCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEyMTZxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgxMjE2cTQwIDAgNjggLTI4dDI4IC02OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFzdGVyaXNrIiB1bmljb2RlPSImI3hmMDY5OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE0ODIgNDg2cTQ2IC0yNiA1OS41IC03Ny41dC0xMi41IC05Ny41bC02NCAtMTEwcS0yNiAtNDYgLTc3LjUgLTU5LjV0LTk3LjUgMTIuNWwtMjY2IDE1M3YtMzA3cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTI4cS01MiAwIC05MCAzOHQtMzggOTB2MzA3bC0yNjYgLTE1M3EtNDYgLTI2IC05Ny41IC0xMi41dC03Ny41IDU5LjVsLTY0IDExMHEtMjYgNDYgLTEyLjUgOTcuNXQ1OS41IDc3LjVsMjY2IDE1NGwtMjY2IDE1NA0KcS00NiAyNiAtNTkuNSA3Ny41dDEyLjUgOTcuNWw2NCAxMTBxMjYgNDYgNzcuNSA1OS41dDk3LjUgLTEyLjVsMjY2IC0xNTN2MzA3cTAgNTIgMzggOTB0OTAgMzhoMTI4cTUyIDAgOTAgLTM4dDM4IC05MHYtMzA3bDI2NiAxNTNxNDYgMjYgOTcuNSAxMi41dDc3LjUgLTU5LjVsNjQgLTExMHEyNiAtNDYgMTIuNSAtOTcuNXQtNTkuNSAtNzcuNWwtMjY2IC0xNTR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJleGNsYW1hdGlvbl9zaWduIiB1bmljb2RlPSImI3hmMDZhOyIgDQpkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNODk2IDE2MXYxOTBxMCAxNCAtOSAyMy41dC0yMiA5LjVoLTE5MnEtMTMgMCAtMjMgLTEwdC0xMCAtMjN2LTE5MHEwIC0xMyAxMCAtMjN0MjMgLTEwaDE5Mg0KcTEzIDAgMjIgOS41dDkgMjMuNXpNODk0IDUwNWwxOCA2MjFxMCAxMiAtMTAgMThxLTEwIDggLTI0IDhoLTIyMHEtMTQgMCAtMjQgLThxLTEwIC02IC0xMCAtMThsMTcgLTYyMXEwIC0xMCAxMCAtMTcuNXQyNCAtNy41aDE4NXExNCAwIDIzLjUgNy41dDEwLjUgMTcuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImdpZnQiIHVuaWNvZGU9IiYjeGYwNmI7IiANCmQ9Ik05MjggMTgwdjU2djQ2OHYxOTJoLTMyMHYtMTkydi00Njh2LTU2cTAgLTI1IDE4IC0zOC41dDQ2IC0xMy41aDE5MnEyOCAwIDQ2IDEzLjV0MTggMzguNXpNNDcyIDEwMjRoMTk1bC0xMjYgMTYxcS0yNiAzMSAtNjkgMzFxLTQwIDAgLTY4IC0yOHQtMjggLTY4dDI4IC02OHQ2OCAtMjh6TTExNjAgMTEyMHEwIDQwIC0yOCA2OHQtNjggMjhxLTQzIDAgLTY5IC0zMWwtMTI1IC0xNjFoMTk0cTQwIDAgNjggMjh0MjggNjh6TTE1MzYgODY0di0zMjANCnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtNDE2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTA4OHEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtOTZxLTE0IDAgLTIzIDl0LTkgMjN2MzIwcTAgMTQgOSAyM3QyMyA5aDQ0MHEtOTMgMCAtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjVxMTA3IDAgMTY4IC03N2wxMjggLTE2NWwxMjggMTY1cTYxIDc3IDE2OCA3N3E5MyAwIDE1OC41IC02NS41dDY1LjUgLTE1OC41DQp0LTY1LjUgLTE1OC41dC0xNTguNSAtNjUuNWg0NDBxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImxlYWYiIHVuaWNvZGU9IiYjeGYwNmM7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTI4MCA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5cS0xNzIgMCAtMzE4IC00OS41dC0yNTkuNSAtMTM0dC0yMzUuNSAtMjE5LjVxLTE5IC0yMSAtMTkgLTQ1cTAgLTI2IDE5IC00NXQ0NSAtMTlxMjQgMCA0NSAxOXEyNyAyNCA3NCA3MXQ2NyA2NnExMzcgMTI0IDI2OC41IDE3NnQzMTMuNSA1MnEyNiAwIDQ1IDE5dDE5IDQ1ek0xNzkyIDEwMzBxMCAtOTUgLTIwIC0xOTNxLTQ2IC0yMjQgLTE4NC41IC0zODN0LTM1Ny41IC0yNjgNCnEtMjE0IC0xMDggLTQzOCAtMTA4cS0xNDggMCAtMjg2IDQ3cS0xNSA1IC04OCA0MnQtOTYgMzdxLTE2IDAgLTM5LjUgLTMydC00NSAtNzB0LTUyLjUgLTcwdC02MCAtMzJxLTQzIDAgLTYzLjUgMTcuNXQtNDUuNSA1OS41cS0yIDQgLTYgMTF0LTUuNSAxMHQtMyA5LjV0LTEuNSAxMy41cTAgMzUgMzEgNzMuNXQ2OCA2NS41dDY4IDU2dDMxIDQ4cTAgNCAtMTQgMzh0LTE2IDQ0cS05IDUxIC05IDEwNHEwIDExNSA0My41IDIyMHQxMTkgMTg0LjUNCnQxNzAuNSAxMzl0MjA0IDk1LjVxNTUgMTggMTQ1IDI1LjV0MTc5LjUgOXQxNzguNSA2dDE2My41IDI0dDExMy41IDU2LjVsMjkuNSAyOS41dDI5LjUgMjh0MjcgMjB0MzYuNSAxNnQ0My41IDQuNXEzOSAwIDcwLjUgLTQ2dDQ3LjUgLTExMnQyNCAtMTI0dDggLTk2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlyZSIgdW5pY29kZT0iJiN4ZjA2ZDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xNDA4IC0xNjB2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTM0NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTM0NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgODk2cTAgLTc4IC0yNC41IC0xNDR0LTY0IC0xMTIuNXQtODcuNSAtODh0LTk2IC03Ny41dC04Ny41IC03MnQtNjQgLTgxLjV0LTI0LjUgLTk2LjVxMCAtOTYgNjcgLTIyNGwtNCAxbDEgLTENCnEtOTAgNDEgLTE2MCA4M3QtMTM4LjUgMTAwdC0xMTMuNSAxMjIuNXQtNzIuNSAxNTAuNXQtMjcuNSAxODRxMCA3OCAyNC41IDE0NHQ2NCAxMTIuNXQ4Ny41IDg4dDk2IDc3LjV0ODcuNSA3MnQ2NCA4MS41dDI0LjUgOTYuNXEwIDk0IC02NiAyMjRsMyAtMWwtMSAxcTkwIC00MSAxNjAgLTgzdDEzOC41IC0xMDB0MTEzLjUgLTEyMi41dDcyLjUgLTE1MC41dDI3LjUgLTE4NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImV5ZV9vcGVuIiB1bmljb2RlPSImI3hmMDZlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2NjQgNTc2cS0xNTIgMjM2IC0zODEgMzUzcTYxIC0xMDQgNjEgLTIyNXEwIC0xODUgLTEzMS41IC0zMTYuNXQtMzE2LjUgLTEzMS41dC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxMjEgNjEgMjI1cS0yMjkgLTExNyAtMzgxIC0zNTNxMTMzIC0yMDUgMzMzLjUgLTMyNi41dDQzNC41IC0xMjEuNXQ0MzQuNSAxMjEuNXQzMzMuNSAzMjYuNXpNOTQ0IDk2MHEwIDIwIC0xNCAzNHQtMzQgMTRxLTEyNSAwIC0yMTQuNSAtODkuNQ0KdC04OS41IC0yMTQuNXEwIC0yMCAxNCAtMzR0MzQgLTE0dDM0IDE0dDE0IDM0cTAgODYgNjEgMTQ3dDE0NyA2MXEyMCAwIDM0IDE0dDE0IDM0ek0xNzkyIDU3NnEwIC0zNCAtMjAgLTY5cS0xNDAgLTIzMCAtMzc2LjUgLTM2OC41dC00OTkuNSAtMTM4LjV0LTQ5OS41IDEzOXQtMzc2LjUgMzY4cS0yMCAzNSAtMjAgNjl0MjAgNjlxMTQwIDIyOSAzNzYuNSAzNjh0NDk5LjUgMTM5dDQ5OS41IC0xMzl0Mzc2LjUgLTM2OHEyMCAtMzUgMjAgLTY5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXllX2Nsb3NlIiB1bmljb2RlPSImI3hmMDcwOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTU1NSAyMDFsNzggMTQxcS04NyA2MyAtMTM2IDE1OXQtNDkgMjAzcTAgMTIxIDYxIDIyNXEtMjI5IC0xMTcgLTM4MSAtMzUzcTE2NyAtMjU4IDQyNyAtMzc1ek05NDQgOTYwcTAgMjAgLTE0IDM0dC0zNCAxNHEtMTI1IDAgLTIxNC41IC04OS41dC04OS41IC0yMTQuNXEwIC0yMCAxNCAtMzR0MzQgLTE0dDM0IDE0dDE0IDM0cTAgODYgNjEgMTQ3dDE0NyA2MXEyMCAwIDM0IDE0dDE0IDM0ek0xMzA3IDExNTFxMCAtNyAtMSAtOQ0KcS0xMDYgLTE4OSAtMzE2IC01Njd0LTMxNSAtNTY2bC00OSAtODlxLTEwIC0xNiAtMjggLTE2cS0xMiAwIC0xMzQgNzBxLTE2IDEwIC0xNiAyOHEwIDEyIDQ0IDg3cS0xNDMgNjUgLTI2My41IDE3M3QtMjA4LjUgMjQ1cS0yMCAzMSAtMjAgNjl0MjAgNjlxMTUzIDIzNSAzODAgMzcxdDQ5NiAxMzZxODkgMCAxODAgLTE3bDU0IDk3cTEwIDE2IDI4IDE2cTUgMCAxOCAtNnQzMSAtMTUuNXQzMyAtMTguNXQzMS41IC0xOC41dDE5LjUgLTExLjUNCnExNiAtMTAgMTYgLTI3ek0xMzQ0IDcwNHEwIC0xMzkgLTc5IC0yNTMuNXQtMjA5IC0xNjQuNWwyODAgNTAycTggLTQ1IDggLTg0ek0xNzkyIDU3NnEwIC0zNSAtMjAgLTY5cS0zOSAtNjQgLTEwOSAtMTQ1cS0xNTAgLTE3MiAtMzQ3LjUgLTI2N3QtNDE5LjUgLTk1bDc0IDEzMnEyMTIgMTggMzkyLjUgMTM3dDMwMS41IDMwN3EtMTE1IDE3OSAtMjgyIDI5NGw2MyAxMTJxOTUgLTY0IDE4Mi41IC0xNTN0MTQ0LjUgLTE4NHEyMCAtMzQgMjAgLTY5eg0KIiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ3YXJuaW5nX3NpZ24iIHVuaWNvZGU9IiYjeGYwNzE7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTAyNCAxNjF2MTkwcTAgMTQgLTkuNSAyMy41dC0yMi41IDkuNWgtMTkycS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjMuNXYtMTkwcTAgLTE0IDkuNSAtMjMuNXQyMi41IC05LjVoMTkycTEzIDAgMjIuNSA5LjV0OS41IDIzLjV6TTEwMjIgNTM1bDE4IDQ1OXEwIDEyIC0xMCAxOXEtMTMgMTEgLTI0IDExaC0yMjBxLTExIDAgLTI0IC0xMXEtMTAgLTcgLTEwIC0yMWwxNyAtNDU3cTAgLTEwIDEwIC0xNi41dDI0IC02LjVoMTg1DQpxMTQgMCAyMy41IDYuNXQxMC41IDE2LjV6TTEwMDggMTQ2OWw3NjggLTE0MDhxMzUgLTYzIC0yIC0xMjZxLTE3IC0yOSAtNDYuNSAtNDZ0LTYzLjUgLTE3aC0xNTM2cS0zNCAwIC02My41IDE3dC00Ni41IDQ2cS0zNyA2MyAtMiAxMjZsNzY4IDE0MDhxMTcgMzEgNDcgNDl0NjUgMTh0NjUgLTE4dDQ3IC00OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InBsYW5lIiB1bmljb2RlPSImI3hmMDcyOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTEzNzYgMTM3NnE0NCAtNTIgMTIgLTE0OHQtMTA4IC0xNzJsLTE2MSAtMTYxbDE2MCAtNjk2cTUgLTE5IC0xMiAtMzNsLTEyOCAtOTZxLTcgLTYgLTE5IC02cS00IDAgLTcgMXEtMTUgMyAtMjEgMTZsLTI3OSA1MDhsLTI1OSAtMjU5bDUzIC0xOTRxNSAtMTcgLTggLTMxbC05NiAtOTZxLTkgLTkgLTIzIC05aC0ycS0xNSAyIC0yNCAxM2wtMTg5IDI1MmwtMjUyIDE4OXEtMTEgNyAtMTMgMjNxLTEgMTMgOSAyNWw5NiA5N3E5IDkgMjMgOQ0KcTYgMCA4IC0xbDE5NCAtNTNsMjU5IDI1OWwtNTA4IDI3OXEtMTQgOCAtMTcgMjRxLTIgMTYgOSAyN2wxMjggMTI4cTE0IDEzIDMwIDhsNjY1IC0xNTlsMTYwIDE2MHE3NiA3NiAxNzIgMTA4dDE0OCAtMTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjYWxlbmRhciIgdW5pY29kZT0iJiN4ZjA3MzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xMjggLTEyOGgyODh2Mjg4aC0yODh2LTI4OHpNNDgwIC0xMjhoMzIwdjI4OGgtMzIwdi0yODh6TTEyOCAyMjRoMjg4djMyMGgtMjg4di0zMjB6TTQ4MCAyMjRoMzIwdjMyMGgtMzIwdi0zMjB6TTEyOCA2MDhoMjg4djI4OGgtMjg4di0yODh6TTg2NCAtMTI4aDMyMHYyODhoLTMyMHYtMjg4ek00ODAgNjA4aDMyMHYyODhoLTMyMHYtMjg4ek0xMjQ4IC0xMjhoMjg4djI4OGgtMjg4di0yODh6TTg2NCAyMjRoMzIwdjMyMGgtMzIwdi0zMjB6DQpNNTEyIDEwODh2Mjg4cTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtNjRxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0yODhxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg2NHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xMjQ4IDIyNGgyODh2MzIwaC0yODh2LTMyMHpNODY0IDYwOGgzMjB2Mjg4aC0zMjB2LTI4OHpNMTI0OCA2MDhoMjg4djI4OGgtMjg4di0yODh6TTEyODAgMTA4OHYyODhxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC02NA0KcS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtMjg4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoNjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTY2NCAxMTUydi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3DQpoNjRxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyYW5kb20iIHVuaWNvZGU9IiYjeGYwNzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjY2IDEwNTVxLTYwIC05MiAtMTM3IC0yNzNxLTIyIDQ1IC0zNyA3Mi41dC00MC41IDYzLjV0LTUxIDU2LjV0LTYzIDM1dC04MS41IDE0LjVoLTIyNHEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMjI0cTI1MCAwIDQxMCAtMjI1ek0xNzkyIDI1NnEwIC0xNCAtOSAtMjNsLTMyMCAtMzIwcS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEtMzIgMCAtODUgLTAuNXQtODEgLTF0LTczIDENCnQtNzEgNXQtNjQgMTAuNXQtNjMgMTguNXQtNTggMjguNXQtNTkgNDB0LTU1IDUzLjV0LTU2IDY5LjVxNTkgOTMgMTM2IDI3M3EyMiAtNDUgMzcgLTcyLjV0NDAuNSAtNjMuNXQ1MSAtNTYuNXQ2MyAtMzV0ODEuNSAtMTQuNWgyNTZ2MTkycTAgMTQgOSAyM3QyMyA5cTEyIDAgMjQgLTEwbDMxOSAtMzE5cTkgLTkgOSAtMjN6TTE3OTIgMTE1MnEwIC0xNCAtOSAtMjNsLTMyMCAtMzIwcS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41DQp2MTkyaC0yNTZxLTQ4IDAgLTg3IC0xNXQtNjkgLTQ1dC01MSAtNjEuNXQtNDUgLTc3LjVxLTMyIC02MiAtNzggLTE3MXEtMjkgLTY2IC00OS41IC0xMTF0LTU0IC0xMDV0LTY0IC0xMDB0LTc0IC04M3QtOTAgLTY4LjV0LTEwNi41IC00MnQtMTI4IC0xNi41aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDIyNHE0OCAwIDg3IDE1dDY5IDQ1dDUxIDYxLjV0NDUgNzcuNXEzMiA2MiA3OCAxNzFxMjkgNjYgNDkuNSAxMTENCnQ1NCAxMDV0NjQgMTAwdDc0IDgzdDkwIDY4LjV0MTA2LjUgNDJ0MTI4IDE2LjVoMjU2djE5MnEwIDE0IDkgMjN0MjMgOXExMiAwIDI0IC0xMGwzMTkgLTMxOXE5IC05IDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudCIgdW5pY29kZT0iJiN4ZjA3NTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDY0MHEwIC0xNzQgLTEyMCAtMzIxLjV0LTMyNiAtMjMzdC00NTAgLTg1LjVxLTcwIDAgLTE0NSA4cS0xOTggLTE3NSAtNDYwIC0yNDJxLTQ5IC0xNCAtMTE0IC0yMnEtMTcgLTIgLTMwLjUgOXQtMTcuNSAyOXYxcS0zIDQgLTAuNSAxMnQyIDEwdDQuNSA5LjVsNiA5dDcgOC41dDggOXE3IDggMzEgMzQuNXQzNC41IDM4dDMxIDM5LjV0MzIuNSA1MXQyNyA1OXQyNiA3NnEtMTU3IDg5IC0yNDcuNSAyMjB0LTkwLjUgMjgxDQpxMCAxMzAgNzEgMjQ4LjV0MTkxIDIwNC41dDI4NiAxMzYuNXQzNDggNTAuNXEyNDQgMCA0NTAgLTg1LjV0MzI2IC0yMzN0MTIwIC0zMjEuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im1hZ25ldCIgdW5pY29kZT0iJiN4ZjA3NjsiIA0KZD0iTTE1MzYgNzA0di0xMjhxMCAtMjAxIC05OC41IC0zNjJ0LTI3NCAtMjUxLjV0LTM5NS41IC05MC41dC0zOTUuNSA5MC41dC0yNzQgMjUxLjV0LTk4LjUgMzYydjEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDM4NHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTEyOHEwIC01MiAyMy41IC05MHQ1My41IC01N3Q3MSAtMzB0NjQgLTEzdDQ0IC0ydDQ0IDJ0NjQgMTN0NzEgMzB0NTMuNSA1N3QyMy41IDkwdjEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDM4NA0KcTI2IDAgNDUgLTE5dDE5IC00NXpNNTEyIDEzNDR2LTM4NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTM4NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djM4NHEwIDI2IDE5IDQ1dDQ1IDE5aDM4NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE1MzYgMTM0NHYtMzg0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMzg0cS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloMzg0cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fdXAiIHVuaWNvZGU9IiYjeGYwNzc7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTY4MyAyMDVsLTE2NiAtMTY1cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTUzMSA1MzFsLTUzMSAtNTMxcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTE2NiAxNjVxLTE5IDE5IC0xOSA0NS41dDE5IDQ1LjVsNzQyIDc0MXExOSAxOSA0NSAxOXQ0NSAtMTlsNzQyIC03NDFxMTkgLTE5IDE5IC00NS41dC0xOSAtNDUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fZG93biIgdW5pY29kZT0iJiN4ZjA3ODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjgzIDcyOGwtNzQyIC03NDFxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtNzQyIDc0MXEtMTkgMTkgLTE5IDQ1LjV0MTkgNDUuNWwxNjYgMTY1cTE5IDE5IDQ1IDE5dDQ1IC0xOWw1MzEgLTUzMWw1MzEgNTMxcTE5IDE5IDQ1IDE5dDQ1IC0xOWwxNjYgLTE2NXExOSAtMTkgMTkgLTQ1LjV0LTE5IC00NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmV0d2VldCIgdW5pY29kZT0iJiN4ZjA3OTsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xMjgwIDMycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtOTYwcS04IDAgLTEzLjUgMnQtOSA3dC01LjUgOHQtMyAxMS41dC0xIDExLjV2MTN2MTF2MTYwdjQxNmgtMTkycS0yNiAwIC00NSAxOXQtMTkgNDVxMCAyNCAxNSA0MWwzMjAgMzg0cTE5IDIyIDQ5IDIydDQ5IC0yMmwzMjAgLTM4NHExNSAtMTcgMTUgLTQxcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTkydi0zODRoNTc2cTE2IDAgMjUgLTExbDE2MCAtMTkycTcgLTEwIDcgLTIxDQp6TTE5MjAgNDQ4cTAgLTI0IC0xNSAtNDFsLTMyMCAtMzg0cS0yMCAtMjMgLTQ5IC0yM3QtNDkgMjNsLTMyMCAzODRxLTE1IDE3IC0xNSA0MXEwIDI2IDE5IDQ1dDQ1IDE5aDE5MnYzODRoLTU3NnEtMTYgMCAtMjUgMTJsLTE2MCAxOTJxLTcgOSAtNyAyMHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDk2MHE4IDAgMTMuNSAtMnQ5IC03dDUuNSAtOHQzIC0xMS41dDEgLTExLjV2LTEzdi0xMXYtMTYwdi00MTZoMTkycTI2IDAgNDUgLTE5dDE5IC00NXoNCiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hvcHBpbmdfY2FydCIgdW5pY29kZT0iJiN4ZjA3YTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik02NDAgMHEwIC01MiAtMzggLTkwdC05MCAtMzh0LTkwIDM4dC0zOCA5MHQzOCA5MHQ5MCAzOHQ5MCAtMzh0MzggLTkwek0xNTM2IDBxMCAtNTIgLTM4IC05MHQtOTAgLTM4dC05MCAzOHQtMzggOTB0MzggOTB0OTAgMzh0OTAgLTM4dDM4IC05MHpNMTY2NCAxMDg4di01MTJxMCAtMjQgLTE2LjUgLTQyLjV0LTQwLjUgLTIxLjVsLTEwNDQgLTEyMnExMyAtNjAgMTMgLTcwcTAgLTE2IC0yNCAtNjRoOTIwcTI2IDAgNDUgLTE5dDE5IC00NQ0KdC0xOSAtNDV0LTQ1IC0xOWgtMTAyNHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTEgOCAzMS41dDE2IDM2dDIxLjUgNDB0MTUuNSAyOS41bC0xNzcgODIzaC0yMDRxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgyNTZxMTYgMCAyOC41IC02LjV0MTkuNSAtMTUuNXQxMyAtMjQuNXQ4IC0yNnQ1LjUgLTI5LjV0NC41IC0yNmgxMjAxcTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZvbGRlcl9jbG9zZSIgdW5pY29kZT0iJiN4ZjA3YjsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjY0IDkyOHYtNzA0cTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC0xMjE2cS05MiAwIC0xNTggNjZ0LTY2IDE1OHY5NjBxMCA5MiA2NiAxNTh0MTU4IDY2aDMyMHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNjcycTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9sZGVyX29wZW4iIHVuaWNvZGU9IiYjeGYwN2M7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTg3OSA1ODRxMCAtMzEgLTMxIC02NmwtMzM2IC0zOTZxLTQzIC01MSAtMTIwLjUgLTg2LjV0LTE0My41IC0zNS41aC0xMDg4cS0zNCAwIC02MC41IDEzdC0yNi41IDQzcTAgMzEgMzEgNjZsMzM2IDM5NnE0MyA1MSAxMjAuNSA4Ni41dDE0My41IDM1LjVoMTA4OHEzNCAwIDYwLjUgLTEzdDI2LjUgLTQzek0xNTM2IDkyOHYtMTYwaC04MzJxLTk0IDAgLTE5NyAtNDcuNXQtMTY0IC0xMTkuNWwtMzM3IC0zOTZsLTUgLTZxMCA0IC0wLjUgMTIuNQ0KdC0wLjUgMTIuNXY5NjBxMCA5MiA2NiAxNTh0MTU4IDY2aDMyMHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNTQ0cTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVzaXplX3ZlcnRpY2FsIiB1bmljb2RlPSImI3hmMDdkOyIgaG9yaXotYWR2LXg9Ijc2OCIgDQpkPSJNNzA0IDEyMTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjh2LTEwMjRoMTI4cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1bC0yNTYgLTI1NnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTloMTI4djEwMjRoLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDI1NiAyNTZxMTkgMTkgNDUgMTl0NDUgLTE5bDI1NiAtMjU2cTE5IC0xOSAxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXNpemVfaG9yaXpvbnRhbCIgdW5pY29kZT0iJiN4ZjA3ZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDY0MHEwIC0yNiAtMTkgLTQ1bC0yNTYgLTI1NnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5dC0xOSA0NXYxMjhoLTEwMjR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDV0MTkgNDVsMjU2IDI1NnExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjhoMTAyNHYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsMjU2IC0yNTZxMTkgLTE5IDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJhcl9jaGFydCIgdW5pY29kZT0iJiN4ZjA4MDsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik02NDAgNjQwdi01MTJoLTI1NnY1MTJoMjU2ek0xMDI0IDExNTJ2LTEwMjRoLTI1NnYxMDI0aDI1NnpNMjA0OCAwdi0xMjhoLTIwNDh2MTUzNmgxMjh2LTE0MDhoMTkyMHpNMTQwOCA4OTZ2LTc2OGgtMjU2djc2OGgyNTZ6TTE3OTIgMTI4MHYtMTE1MmgtMjU2djExNTJoMjU2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHdpdHRlcl9zaWduIiB1bmljb2RlPSImI3hmMDgxOyIgDQpkPSJNMTI4MCA5MjZxLTU2IC0yNSAtMTIxIC0zNHE2OCA0MCA5MyAxMTdxLTY1IC0zOCAtMTM0IC01MXEtNjEgNjYgLTE1MyA2NnEtODcgMCAtMTQ4LjUgLTYxLjV0LTYxLjUgLTE0OC41cTAgLTI5IDUgLTQ4cS0xMjkgNyAtMjQyIDY1dC0xOTIgMTU1cS0yOSAtNTAgLTI5IC0xMDZxMCAtMTE0IDkxIC0xNzVxLTQ3IDEgLTEwMCAyNnYtMnEwIC03NSA1MCAtMTMzLjV0MTIzIC03Mi41cS0yOSAtOCAtNTEgLThxLTEzIDAgLTM5IDQNCnEyMSAtNjMgNzQuNSAtMTA0dDEyMS41IC00MnEtMTE2IC05MCAtMjYxIC05MHEtMjYgMCAtNTAgM3ExNDggLTk0IDMyMiAtOTRxMTEyIDAgMjEwIDM1LjV0MTY4IDk1dDEyMC41IDEzN3Q3NSAxNjJ0MjQuNSAxNjguNXEwIDE4IC0xIDI3cTYzIDQ1IDEwNSAxMDl6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41DQp0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmYWNlYm9va19zaWduIiB1bmljb2RlPSImI3hmMDgyOyIgDQpkPSJNMTI0OCAxNDA4cTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41di05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTE4OHY1OTVoMTk5bDMwIDIzMmgtMjI5djE0OHEwIDU2IDIzLjUgODR0OTEuNSAyOGwxMjIgMXYyMDdxLTYzIDkgLTE3OCA5cS0xMzYgMCAtMjE3LjUgLTgwdC04MS41IC0yMjZ2LTE3MWgtMjAwdi0yMzJoMjAwdi01OTVoLTUzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwDQpxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhbWVyYV9yZXRybyIgdW5pY29kZT0iJiN4ZjA4MzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05MjggNzA0cTAgMTQgLTkgMjN0LTIzIDlxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTNxMCAtMTQgOSAtMjN0MjMgLTl0MjMgOXQ5IDIzcTAgNDAgMjggNjh0NjggMjhxMTQgMCAyMyA5dDkgMjN6TTExNTIgNTc0cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODF0NzUgMTgxdDE4MSA3NXQxODEgLTc1dDc1IC0xODF6TTEyOCAwaDE1MzZ2MTI4aC0xNTM2di0xMjh6TTEyODAgNTc0cTAgMTU5IC0xMTIuNSAyNzEuNQ0KdC0yNzEuNSAxMTIuNXQtMjcxLjUgLTExMi41dC0xMTIuNSAtMjcxLjV0MTEyLjUgLTI3MS41dDI3MS41IC0xMTIuNXQyNzEuNSAxMTIuNXQxMTIuNSAyNzEuNXpNMjU2IDEyMTZoMzg0djEyOGgtMzg0di0xMjh6TTEyOCAxMDI0aDE1MzZ2MTE4djEzOGgtODI4bC02NCAtMTI4aC02NDR2LTEyOHpNMTc5MiAxMjgwdi0xMjgwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41aC0xNTM2cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXYxMjgwDQpxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDE1MzZxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJrZXkiIHVuaWNvZGU9IiYjeGYwODQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODMyIDEwMjRxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZxMCAtNDIgMTkgLTgzcS00MSAxOSAtODMgMTlxLTgwIDAgLTEzNiAtNTZ0LTU2IC0xMzZ0NTYgLTEzNnQxMzYgLTU2dDEzNiA1NnQ1NiAxMzZxMCA0MiAtMTkgODNxNDEgLTE5IDgzIC0xOXE4MCAwIDEzNiA1NnQ1NiAxMzZ6TTE2ODMgMzIwcTAgLTE3IC00OSAtNjZ0LTY2IC00OXEtOSAwIC0yOC41IDE2dC0zNi41IDMzdC0zOC41IDQwdC0yNC41IDI2DQpsLTk2IC05NmwyMjAgLTIyMHEyOCAtMjggMjggLTY4cTAgLTQyIC0zOSAtODF0LTgxIC0zOXEtNDAgMCAtNjggMjhsLTY3MSA2NzFxLTE3NiAtMTMxIC0zNjUgLTEzMXEtMTYzIDAgLTI2NS41IDEwMi41dC0xMDIuNSAyNjUuNXEwIDE2MCA5NSAzMTN0MjQ4IDI0OHQzMTMgOTVxMTYzIDAgMjY1LjUgLTEwMi41dDEwMi41IC0yNjUuNXEwIC0xODkgLTEzMSAtMzY1bDM1NSAtMzU1bDk2IDk2cS0zIDMgLTI2IDI0LjV0LTQwIDM4LjV0LTMzIDM2LjUNCnQtMTYgMjguNXEwIDE3IDQ5IDY2dDY2IDQ5cTEzIDAgMjMgLTEwcTYgLTYgNDYgLTQ0LjV0ODIgLTc5LjV0ODYuNSAtODZ0NzMgLTc4dDI4LjUgLTQxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29ncyIgdW5pY29kZT0iJiN4ZjA4NTsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik04OTYgNjQwcTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMTY2NCAxMjhxMCA1MiAtMzggOTB0LTkwIDM4dC05MCAtMzh0LTM4IC05MHEwIC01MyAzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTY2NCAxMTUycTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTBxMCAtNTMgMzcuNSAtOTAuNXQ5MC41IC0zNy41DQp0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTI4MCA3MzF2LTE4NXEwIC0xMCAtNyAtMTkuNXQtMTYgLTEwLjVsLTE1NSAtMjRxLTExIC0zNSAtMzIgLTc2cTM0IC00OCA5MCAtMTE1cTcgLTExIDcgLTIwcTAgLTEyIC03IC0xOXEtMjMgLTMwIC04Mi41IC04OS41dC03OC41IC01OS41cS0xMSAwIC0yMSA3bC0xMTUgOTBxLTM3IC0xOSAtNzcgLTMxcS0xMSAtMTA4IC0yMyAtMTU1cS03IC0yNCAtMzAgLTI0aC0xODZxLTExIDAgLTIwIDcuNXQtMTAgMTcuNQ0KbC0yMyAxNTNxLTM0IDEwIC03NSAzMWwtMTE4IC04OXEtNyAtNyAtMjAgLTdxLTExIDAgLTIxIDhxLTE0NCAxMzMgLTE0NCAxNjBxMCA5IDcgMTlxMTAgMTQgNDEgNTN0NDcgNjFxLTIzIDQ0IC0zNSA4MmwtMTUyIDI0cS0xMCAxIC0xNyA5LjV0LTcgMTkuNXYxODVxMCAxMCA3IDE5LjV0MTYgMTAuNWwxNTUgMjRxMTEgMzUgMzIgNzZxLTM0IDQ4IC05MCAxMTVxLTcgMTEgLTcgMjBxMCAxMiA3IDIwcTIyIDMwIDgyIDg5dDc5IDU5cTExIDAgMjEgLTcNCmwxMTUgLTkwcTM0IDE4IDc3IDMycTExIDEwOCAyMyAxNTRxNyAyNCAzMCAyNGgxODZxMTEgMCAyMCAtNy41dDEwIC0xNy41bDIzIC0xNTNxMzQgLTEwIDc1IC0zMWwxMTggODlxOCA3IDIwIDdxMTEgMCAyMSAtOHExNDQgLTEzMyAxNDQgLTE2MHEwIC04IC03IC0xOXEtMTIgLTE2IC00MiAtNTR0LTQ1IC02MHEyMyAtNDggMzQgLTgybDE1MiAtMjNxMTAgLTIgMTcgLTEwLjV0NyAtMTkuNXpNMTkyMCAxOTh2LTE0MHEwIC0xNiAtMTQ5IC0zMQ0KcS0xMiAtMjcgLTMwIC01MnE1MSAtMTEzIDUxIC0xMzhxMCAtNCAtNCAtN3EtMTIyIC03MSAtMTI0IC03MXEtOCAwIC00NiA0N3QtNTIgNjhxLTIwIC0yIC0zMCAtMnQtMzAgMnEtMTQgLTIxIC01MiAtNjh0LTQ2IC00N3EtMiAwIC0xMjQgNzFxLTQgMyAtNCA3cTAgMjUgNTEgMTM4cS0xOCAyNSAtMzAgNTJxLTE0OSAxNSAtMTQ5IDMxdjE0MHEwIDE2IDE0OSAzMXExMyAyOSAzMCA1MnEtNTEgMTEzIC01MSAxMzhxMCA0IDQgN3E0IDIgMzUgMjANCnQ1OSAzNHQzMCAxNnE4IDAgNDYgLTQ2LjV0NTIgLTY3LjVxMjAgMiAzMCAydDMwIC0ycTUxIDcxIDkyIDExMmw2IDJxNCAwIDEyNCAtNzBxNCAtMyA0IC03cTAgLTI1IC01MSAtMTM4cTE3IC0yMyAzMCAtNTJxMTQ5IC0xNSAxNDkgLTMxek0xOTIwIDEyMjJ2LTE0MHEwIC0xNiAtMTQ5IC0zMXEtMTIgLTI3IC0zMCAtNTJxNTEgLTExMyA1MSAtMTM4cTAgLTQgLTQgLTdxLTEyMiAtNzEgLTEyNCAtNzFxLTggMCAtNDYgNDd0LTUyIDY4DQpxLTIwIC0yIC0zMCAtMnQtMzAgMnEtMTQgLTIxIC01MiAtNjh0LTQ2IC00N3EtMiAwIC0xMjQgNzFxLTQgMyAtNCA3cTAgMjUgNTEgMTM4cS0xOCAyNSAtMzAgNTJxLTE0OSAxNSAtMTQ5IDMxdjE0MHEwIDE2IDE0OSAzMXExMyAyOSAzMCA1MnEtNTEgMTEzIC01MSAxMzhxMCA0IDQgN3E0IDIgMzUgMjB0NTkgMzR0MzAgMTZxOCAwIDQ2IC00Ni41dDUyIC02Ny41cTIwIDIgMzAgMnQzMCAtMnE1MSA3MSA5MiAxMTJsNiAycTQgMCAxMjQgLTcwDQpxNCAtMyA0IC03cTAgLTI1IC01MSAtMTM4cTE3IC0yMyAzMCAtNTJxMTQ5IC0xNSAxNDkgLTMxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudHMiIHVuaWNvZGU9IiYjeGYwODY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTQwOCA3NjhxMCAtMTM5IC05NCAtMjU3dC0yNTYuNSAtMTg2LjV0LTM1My41IC02OC41cS04NiAwIC0xNzYgMTZxLTEyNCAtODggLTI3OCAtMTI4cS0zNiAtOSAtODYgLTE2aC0zcS0xMSAwIC0yMC41IDh0LTExLjUgMjFxLTEgMyAtMSA2LjV0MC41IDYuNXQyIDZsMi41IDV0My41IDUuNXQ0IDV0NC41IDV0NCA0LjVxNSA2IDIzIDI1dDI2IDI5LjV0MjIuNSAyOXQyNSAzOC41dDIwLjUgNDRxLTEyNCA3MiAtMTk1IDE3N3QtNzEgMjI0DQpxMCAxMzkgOTQgMjU3dDI1Ni41IDE4Ni41dDM1My41IDY4LjV0MzUzLjUgLTY4LjV0MjU2LjUgLTE4Ni41dDk0IC0yNTd6TTE3OTIgNTEycTAgLTEyMCAtNzEgLTIyNC41dC0xOTUgLTE3Ni41cTEwIC0yNCAyMC41IC00NHQyNSAtMzguNXQyMi41IC0yOXQyNiAtMjkuNXQyMyAtMjVxMSAtMSA0IC00LjV0NC41IC01dDQgLTV0My41IC01LjVsMi41IC01dDIgLTZ0MC41IC02LjV0LTEgLTYuNXEtMyAtMTQgLTEzIC0yMnQtMjIgLTcNCnEtNTAgNyAtODYgMTZxLTE1NCA0MCAtMjc4IDEyOHEtOTAgLTE2IC0xNzYgLTE2cS0yNzEgMCAtNDcyIDEzMnE1OCAtNCA4OCAtNHExNjEgMCAzMDkgNDV0MjY0IDEyOXExMjUgOTIgMTkyIDIxMnQ2NyAyNTRxMCA3NyAtMjMgMTUycTEyOSAtNzEgMjA0IC0xNzh0NzUgLTIzMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRodW1ic191cF9hbHQiIHVuaWNvZGU9IiYjeGYwODc7IiANCmQ9Ik0yNTYgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTQwOCA3NjhxMCA1MSAtMzkgODkuNXQtODkgMzguNWgtMzUycTAgNTggNDggMTU5LjV0NDggMTYwLjVxMCA5OCAtMzIgMTQ1dC0xMjggNDdxLTI2IC0yNiAtMzggLTg1dC0zMC41IC0xMjUuNXQtNTkuNSAtMTA5LjVxLTIyIC0yMyAtNzcgLTkxcS00IC01IC0yMyAtMzB0LTMxLjUgLTQxdC0zNC41IC00Mi41DQp0LTQwIC00NHQtMzguNSAtMzUuNXQtNDAgLTI3dC0zNS41IC05aC0zMnYtNjQwaDMycTEzIDAgMzEuNSAtM3QzMyAtNi41dDM4IC0xMXQzNSAtMTEuNXQzNS41IC0xMi41dDI5IC0xMC41cTIxMSAtNzMgMzQyIC03M2gxMjFxMTkyIDAgMTkyIDE2N3EwIDI2IC01IDU2cTMwIDE2IDQ3LjUgNTIuNXQxNy41IDczLjV0LTE4IDY5cTUzIDUwIDUzIDExOXEwIDI1IC0xMCA1NS41dC0yNSA0Ny41cTMyIDEgNTMuNSA0N3QyMS41IDgxek0xNTM2IDc2OQ0KcTAgLTg5IC00OSAtMTYzcTkgLTMzIDkgLTY5cTAgLTc3IC0zOCAtMTQ0cTMgLTIxIDMgLTQzcTAgLTEwMSAtNjAgLTE3OHExIC0xMzkgLTg1IC0yMTkuNXQtMjI3IC04MC41aC0zNmgtOTNxLTk2IDAgLTE4OS41IDIyLjV0LTIxNi41IDY1LjVxLTExNiA0MCAtMTM4IDQwaC0yODhxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41djY0MHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjVoMjc0cTM2IDI0IDEzNyAxNTVxNTggNzUgMTA3IDEyOA0KcTI0IDI1IDM1LjUgODUuNXQzMC41IDEyNi41dDYyIDEwOHEzOSAzNyA5MCAzN3E4NCAwIDE1MSAtMzIuNXQxMDIgLTEwMS41dDM1IC0xODZxMCAtOTMgLTQ4IC0xOTJoMTc2cTEwNCAwIDE4MCAtNzZ0NzYgLTE3OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRodW1ic19kb3duX2FsdCIgdW5pY29kZT0iJiN4ZjA4ODsiIA0KZD0iTTI1NiAxMDg4cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTQwOCA1MTJxMCAzNSAtMjEuNSA4MXQtNTMuNSA0N3ExNSAxNyAyNSA0Ny41dDEwIDU1LjVxMCA2OSAtNTMgMTE5cTE4IDMxIDE4IDY5cTAgMzcgLTE3LjUgNzMuNXQtNDcuNSA1Mi41cTUgMzAgNSA1NnEwIDg1IC00OSAxMjZ0LTEzNiA0MWgtMTI4cS0xMzEgMCAtMzQyIC03M3EtNSAtMiAtMjkgLTEwLjUNCnQtMzUuNSAtMTIuNXQtMzUgLTExLjV0LTM4IC0xMXQtMzMgLTYuNXQtMzEuNSAtM2gtMzJ2LTY0MGgzMnExNiAwIDM1LjUgLTl0NDAgLTI3dDM4LjUgLTM1LjV0NDAgLTQ0dDM0LjUgLTQyLjV0MzEuNSAtNDF0MjMgLTMwcTU1IC02OCA3NyAtOTFxNDEgLTQzIDU5LjUgLTEwOS41dDMwLjUgLTEyNS41dDM4IC04NXE5NiAwIDEyOCA0N3QzMiAxNDVxMCA1OSAtNDggMTYwLjV0LTQ4IDE1OS41aDM1MnE1MCAwIDg5IDM4LjV0MzkgODkuNXoNCk0xNTM2IDUxMXEwIC0xMDMgLTc2IC0xNzl0LTE4MCAtNzZoLTE3NnE0OCAtOTkgNDggLTE5MnEwIC0xMTggLTM1IC0xODZxLTM1IC02OSAtMTAyIC0xMDEuNXQtMTUxIC0zMi41cS01MSAwIC05MCAzN3EtMzQgMzMgLTU0IDgydC0yNS41IDkwLjV0LTE3LjUgODQuNXQtMzEgNjRxLTQ4IDUwIC0xMDcgMTI3cS0xMDEgMTMxIC0xMzcgMTU1aC0yNzRxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41djY0MHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjUNCmgyODhxMjIgMCAxMzggNDBxMTI4IDQ0IDIyMyA2NnQyMDAgMjJoMTEycTE0MCAwIDIyNi41IC03OXQ4NS41IC0yMTZ2LTVxNjAgLTc3IDYwIC0xNzhxMCAtMjIgLTMgLTQzcTM4IC02NyAzOCAtMTQ0cTAgLTM2IC05IC02OXE0OSAtNzMgNDkgLTE2M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0YXJfaGFsZiIgdW5pY29kZT0iJiN4ZjA4OTsiIGhvcml6LWFkdi14PSI4OTYiIA0KZD0iTTgzMiAxNTA0di0xMzM5bC00NDkgLTIzNnEtMjIgLTEyIC00MCAtMTJxLTIxIDAgLTMxLjUgMTQuNXQtMTAuNSAzNS41cTAgNiAyIDIwbDg2IDUwMGwtMzY0IDM1NHEtMjUgMjcgLTI1IDQ4cTAgMzcgNTYgNDZsNTAyIDczbDIyNSA0NTVxMTkgNDEgNDkgNDF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoZWFydF9lbXB0eSIgdW5pY29kZT0iJiN4ZjA4YTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjY0IDk0MHEwIDgxIC0yMS41IDE0M3QtNTUgOTguNXQtODEuNSA1OS41dC05NCAzMXQtOTggOHQtMTEyIC0yNS41dC0xMTAuNSAtNjR0LTg2LjUgLTcydC02MCAtNjEuNXEtMTggLTIyIC00OSAtMjJ0LTQ5IDIycS0yNCAyOCAtNjAgNjEuNXQtODYuNSA3MnQtMTEwLjUgNjR0LTExMiAyNS41dC05OCAtOHQtOTQgLTMxdC04MS41IC01OS41dC01NSAtOTguNXQtMjEuNSAtMTQzcTAgLTE2OCAxODcgLTM1NWw1ODEgLTU2MGw1ODAgNTU5DQpxMTg4IDE4OCAxODggMzU2ek0xNzkyIDk0MHEwIC0yMjEgLTIyOSAtNDUwbC02MjMgLTYwMHEtMTggLTE4IC00NCAtMTh0LTQ0IDE4bC02MjQgNjAycS0xMCA4IC0yNy41IDI2dC01NS41IDY1LjV0LTY4IDk3LjV0LTUzLjUgMTIxdC0yMy41IDEzOHEwIDIyMCAxMjcgMzQ0dDM1MSAxMjRxNjIgMCAxMjYuNSAtMjEuNXQxMjAgLTU4dDk1LjUgLTY4LjV0NzYgLTY4cTM2IDM2IDc2IDY4dDk1LjUgNjguNXQxMjAgNTh0MTI2LjUgMjEuNQ0KcTIyNCAwIDM1MSAtMTI0dDEyNyAtMzQ0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2lnbm91dCIgdW5pY29kZT0iJiN4ZjA4YjsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik02NDAgOTZxMCAtNCAxIC0yMHQwLjUgLTI2LjV0LTMgLTIzLjV0LTEwIC0xOS41dC0yMC41IC02LjVoLTMyMHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2NzA0cTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWgzMjBxMTMgMCAyMi41IC05LjV0OS41IC0yMi41cTAgLTQgMSAtMjB0MC41IC0yNi41dC0zIC0yMy41dC0xMCAtMTkuNXQtMjAuNSAtNi41aC0zMjBxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTcwNA0KcTAgLTY2IDQ3IC0xMTN0MTEzIC00N2gyODhoMTFoMTN0MTEuNSAtMXQxMS41IC0zdDggLTUuNXQ3IC05dDIgLTEzLjV6TTE1NjggNjQwcTAgLTI2IC0xOSAtNDVsLTU0NCAtNTQ0cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI4OGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloNDQ4djI4OHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWw1NDQgLTU0NHExOSAtMTkgMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlua2VkaW5fc2lnbiIgdW5pY29kZT0iJiN4ZjA4YzsiIA0KZD0iTTIzNyAxMjJoMjMxdjY5NGgtMjMxdi02OTR6TTQ4MyAxMDMwcS0xIDUyIC0zNiA4NnQtOTMgMzR0LTk0LjUgLTM0dC0zNi41IC04NnEwIC01MSAzNS41IC04NS41dDkyLjUgLTM0LjVoMXE1OSAwIDk1IDM0LjV0MzYgODUuNXpNMTA2OCAxMjJoMjMxdjM5OHEwIDE1NCAtNzMgMjMzdC0xOTMgNzlxLTEzNiAwIC0yMDkgLTExN2gydjEwMWgtMjMxcTMgLTY2IDAgLTY5NGgyMzF2Mzg4cTAgMzggNyA1NnExNSAzNSA0NSA1OS41dDc0IDI0LjUNCnExMTYgMCAxMTYgLTE1N3YtMzcxek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InB1c2hwaW4iIHVuaWNvZGU9IiYjeGYwOGQ7IiBob3Jpei1hZHYteD0iMTE1MiIgDQpkPSJNNDgwIDY3MnY0NDhxMCAxNCAtOSAyM3QtMjMgOXQtMjMgLTl0LTkgLTIzdi00NDhxMCAtMTQgOSAtMjN0MjMgLTl0MjMgOXQ5IDIzek0xMTUyIDMyMHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTQyOWwtNTEgLTQ4M3EtMiAtMTIgLTEwLjUgLTIwLjV0LTIwLjUgLTguNWgtMXEtMjcgMCAtMzIgMjdsLTc2IDQ4NWgtNDA0cS0yNiAwIC00NSAxOXQtMTkgNDVxMCAxMjMgNzguNSAyMjEuNXQxNzcuNSA5OC41djUxMnEtNTIgMCAtOTAgMzgNCnQtMzggOTB0MzggOTB0OTAgMzhoNjQwcTUyIDAgOTAgLTM4dDM4IC05MHQtMzggLTkwdC05MCAtMzh2LTUxMnE5OSAwIDE3Ny41IC05OC41dDc4LjUgLTIyMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXh0ZXJuYWxfbGluayIgdW5pY29kZT0iJiN4ZjA4ZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNDA4IDYwOHYtMzIwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC04MzJxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djgzMnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoNzA0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTcwNHEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzdjMyMA0KcTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgMTQ3MnYtNTEycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTlsLTE3NiAxNzZsLTY1MiAtNjUycS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTExNCAxMTRxLTEwIDEwIC0xMCAyM3QxMCAyM2w2NTIgNjUybC0xNzYgMTc2cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTloNTEycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNpZ25pbiIgdW5pY29kZT0iJiN4ZjA5MDsiIA0KZD0iTTExODQgNjQwcTAgLTI2IC0xOSAtNDVsLTU0NCAtNTQ0cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI4OGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloNDQ4djI4OHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWw1NDQgLTU0NHExOSAtMTkgMTkgLTQ1ek0xNTM2IDk5MnYtNzA0cTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC0zMjBxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNQ0KcTAgNCAtMSAyMHQtMC41IDI2LjV0MyAyMy41dDEwIDE5LjV0MjAuNSA2LjVoMzIwcTY2IDAgMTEzIDQ3dDQ3IDExM3Y3MDRxMCA2NiAtNDcgMTEzdC0xMTMgNDdoLTI4OGgtMTFoLTEzdC0xMS41IDF0LTExLjUgM3QtOCA1LjV0LTcgOXQtMiAxMy41cTAgNCAtMSAyMHQtMC41IDI2LjV0MyAyMy41dDEwIDE5LjV0MjAuNSA2LjVoMzIwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHJvcGh5IiB1bmljb2RlPSImI3hmMDkxOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTQ1OCA2NTNxLTc0IDE2MiAtNzQgMzcxaC0yNTZ2LTk2cTAgLTc4IDk0LjUgLTE2MnQyMzUuNSAtMTEzek0xNTM2IDkyOHY5NmgtMjU2cTAgLTIwOSAtNzQgLTM3MXExNDEgMjkgMjM1LjUgMTEzdDk0LjUgMTYyek0xNjY0IDEwNTZ2LTEyOHEwIC03MSAtNDEuNSAtMTQzdC0xMTIgLTEzMHQtMTczIC05Ny41dC0yMTUuNSAtNDQuNXEtNDIgLTU0IC05NSAtOTVxLTM4IC0zNCAtNTIuNSAtNzIuNXQtMTQuNSAtODkuNXEwIC01NCAzMC41IC05MQ0KdDk3LjUgLTM3cTc1IDAgMTMzLjUgLTQ1LjV0NTguNSAtMTE0LjV2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTgzMnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDY5IDU4LjUgMTE0LjV0MTMzLjUgNDUuNXE2NyAwIDk3LjUgMzd0MzAuNSA5MXEwIDUxIC0xNC41IDg5LjV0LTUyLjUgNzIuNXEtNTMgNDEgLTk1IDk1cS0xMTMgNSAtMjE1LjUgNDQuNXQtMTczIDk3LjV0LTExMiAxMzB0LTQxLjUgMTQzdjEyOHEwIDQwIDI4IDY4dDY4IDI4aDI4OHY5Ng0KcTAgNjYgNDcgMTEzdDExMyA0N2g1NzZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDI4OHE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnaXRodWJfc2lnbiIgdW5pY29kZT0iJiN4ZjA5MjsiIA0KZD0iTTUxOSAzMzZxNCA2IC0zIDEzcS05IDcgLTE0IDJxLTQgLTYgMyAtMTNxOSAtNyAxNCAtMnpNNDkxIDM3N3EtNSA3IC0xMiA0cS02IC00IDAgLTEycTcgLTggMTIgLTVxNiA0IDAgMTN6TTQ1MCA0MTdxMiA0IC01IDhxLTcgMiAtOCAtMnEtMyAtNSA0IC04cTggLTIgOSAyek00NzEgMzk0cTIgMSAxLjUgNC41dC0zLjUgNS41cS02IDcgLTEwIDN0MSAtMTFxNiAtNiAxMSAtMnpNNTU3IDMxOXEyIDcgLTkgMTFxLTkgMyAtMTMgLTQNCnEtMiAtNyA5IC0xMXE5IC0zIDEzIDR6TTU5OSAzMTZxMCA4IC0xMiA4cS0xMCAwIC0xMCAtOHQxMSAtOHQxMSA4ek02MzggMzIzcS0yIDcgLTEzIDV0LTkgLTlxMiAtOCAxMiAtNnQxMCAxMHpNMTI4MCA2NDBxMCAyMTIgLTE1MCAzNjJ0LTM2MiAxNTB0LTM2MiAtMTUwdC0xNTAgLTM2MnEwIC0xNjcgOTggLTMwMC41dDI1MiAtMTg1LjVxMTggLTMgMjYuNSA1dDguNSAyMHEwIDUyIC0xIDk1cS02IC0xIC0xNS41IC0yLjV0LTM1LjUgLTJ0LTQ4IDQNCnQtNDMuNSAyMHQtMjkuNSA0MS41cS0yMyA1OSAtNTcgNzRxLTIgMSAtNC41IDMuNWwtOCA4dC03IDkuNXQ0IDcuNXQxOS41IDMuNXE2IDAgMTUgLTJ0MzAgLTE1LjV0MzMgLTM1LjVxMTYgLTI4IDM3LjUgLTQydDQzLjUgLTE0dDM4IDMuNXQzMCA5LjVxNyA0NyAzMyA2OXEtNDkgNiAtODYgMTguNXQtNzMgMzl0LTU1LjUgNzZ0LTE5LjUgMTE5LjVxMCA3OSA1MyAxMzdxLTI0IDYyIDUgMTM2cTE5IDYgNTQuNSAtNy41dDYwLjUgLTI5LjVsMjYgLTE2DQpxNTggMTcgMTI4IDE3dDEyOCAtMTdxMTEgNyAyOC41IDE4dDU1LjUgMjZ0NTcgOXEyOSAtNzQgNSAtMTM2cTUzIC01OCA1MyAtMTM3cTAgLTU3IC0xNCAtMTAwLjV0LTM1LjUgLTcwdC01My41IC00NC41dC02Mi41IC0yNnQtNjguNSAtMTJxMzUgLTMxIDM1IC05NXEwIC00MCAtMC41IC04OXQtMC41IC01MXEwIC0xMiA4LjUgLTIwdDI2LjUgLTVxMTU0IDUyIDI1MiAxODUuNXQ5OCAzMDAuNXpNMTUzNiAxMTIwdi05NjANCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVwbG9hZF9hbHQiIHVuaWNvZGU9IiYjeGYwOTM7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTI4MCA2NHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE1MzYgNjRxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNjY0IDI4OHYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTQ3MnEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDQyN3EyMSAtNTYgNzAuNSAtOTINCnQxMTAuNSAtMzZoMjU2cTYxIDAgMTEwLjUgMzZ0NzAuNSA5Mmg0MjdxNDAgMCA2OCAtMjh0MjggLTY4ek0xMzM5IDkzNnEtMTcgLTQwIC01OSAtNDBoLTI1NnYtNDQ4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4aC0yNTZxLTQyIDAgLTU5IDQwcS0xNyAzOSAxNCA2OWw0NDggNDQ4cTE4IDE5IDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHEzMSAtMzAgMTQgLTY5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGVtb24iIHVuaWNvZGU9IiYjeGYwOTQ7IiANCmQ9Ik0xNDA3IDcxMHEwIDQ0IC03IDExMy41dC0xOCA5Ni41cS0xMiAzMCAtMTcgNDR0LTkgMzYuNXQtNCA0OC41cTAgMjMgNSA2OC41dDUgNjcuNXEwIDM3IC0xMCA1NXEtNCAxIC0xMyAxcS0xOSAwIC01OCAtNC41dC01OSAtNC41cS02MCAwIC0xNzYgMjR0LTE3NSAyNHEtNDMgMCAtOTQuNSAtMTEuNXQtODUgLTIzLjV0LTg5LjUgLTM0cS0xMzcgLTU0IC0yMDIgLTEwM3EtOTYgLTczIC0xNTkuNSAtMTg5LjV0LTg4IC0yMzZ0LTI0LjUgLTI0OC41DQpxMCAtNDAgMTIuNSAtMTIwdDEyLjUgLTEyMXEwIC0yMyAtMTEgLTY2LjV0LTExIC02NS41dDEyIC0zNi41dDM0IC0xNC41cTI0IDAgNzIuNSAxMXQ3My41IDExcTU3IDAgMTY5LjUgLTE1LjV0MTY5LjUgLTE1LjVxMTgxIDAgMjg0IDM2cTEyOSA0NSAyMzUuNSAxNTIuNXQxNjYgMjQ1LjV0NTkuNSAyNzV6TTE1MzUgNzEycTAgLTE2NSAtNzAgLTMyNy41dC0xOTYgLTI4OHQtMjgxIC0xODAuNXEtMTI0IC00NCAtMzI2IC00NA0KcS01NyAwIC0xNzAgMTQuNXQtMTY5IDE0LjVxLTI0IDAgLTcyLjUgLTE0LjV0LTczLjUgLTE0LjVxLTczIDAgLTEyMy41IDU1LjV0LTUwLjUgMTI4LjVxMCAyNCAxMSA2OHQxMSA2N3EwIDQwIC0xMi41IDEyMC41dC0xMi41IDEyMS41cTAgMTExIDE4IDIxNy41dDU0LjUgMjA5LjV0MTAwLjUgMTk0dDE1MCAxNTZxNzggNTkgMjMyIDEyMHExOTQgNzggMzE2IDc4cTYwIDAgMTc1LjUgLTI0dDE3My41IC0yNHExOSAwIDU3IDV0NTggNQ0KcTgxIDAgMTE4IC01MC41dDM3IC0xMzQuNXEwIC0yMyAtNSAtNjh0LTUgLTY4cTAgLTEzIDIgLTI1dDMuNSAtMTYuNXQ3LjUgLTIwLjV0OCAtMjBxMTYgLTQwIDI1IC0xMTguNXQ5IC0xMzYuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InBob25lIiB1bmljb2RlPSImI3hmMDk1OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTE0MDggMjk2cTAgLTI3IC0xMCAtNzAuNXQtMjEgLTY4LjVxLTIxIC01MCAtMTIyIC0xMDZxLTk0IC01MSAtMTg2IC01MXEtMjcgMCAtNTMgMy41dC01Ny41IDEyLjV0LTQ3IDE0LjV0LTU1LjUgMjAuNXQtNDkgMThxLTk4IDM1IC0xNzUgODNxLTEyNyA3OSAtMjY0IDIxNnQtMjE2IDI2NHEtNDggNzcgLTgzIDE3NXEtMyA5IC0xOCA0OXQtMjAuNSA1NS41dC0xNC41IDQ3dC0xMi41IDU3LjV0LTMuNSA1M3EwIDkyIDUxIDE4Ng0KcTU2IDEwMSAxMDYgMTIycTI1IDExIDY4LjUgMjF0NzAuNSAxMHExNCAwIDIxIC0zcTE4IC02IDUzIC03NnExMSAtMTkgMzAgLTU0dDM1IC02My41dDMxIC01My41cTMgLTQgMTcuNSAtMjV0MjEuNSAtMzUuNXQ3IC0yOC41cTAgLTIwIC0yOC41IC01MHQtNjIgLTU1dC02MiAtNTN0LTI4LjUgLTQ2cTAgLTkgNSAtMjIuNXQ4LjUgLTIwLjV0MTQgLTI0dDExLjUgLTE5cTc2IC0xMzcgMTc0IC0yMzV0MjM1IC0xNzRxMiAtMSAxOSAtMTEuNXQyNCAtMTQNCnQyMC41IC04LjV0MjIuNSAtNXExOCAwIDQ2IDI4LjV0NTMgNjJ0NTUgNjJ0NTAgMjguNXExNCAwIDI4LjUgLTd0MzUuNSAtMjEuNXQyNSAtMTcuNXEyNSAtMTUgNTMuNSAtMzF0NjMuNSAtMzV0NTQgLTMwcTcwIC0zNSA3NiAtNTNxMyAtNyAzIC0yMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZWNrX2VtcHR5IiB1bmljb2RlPSImI3hmMDk2OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTExMjAgMTI4MGgtODMycS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdi04MzJxMCAtNjYgNDcgLTExM3QxMTMgLTQ3aDgzMnE2NiAwIDExMyA0N3Q0NyAxMTN2ODMycTAgNjYgLTQ3IDExM3QtMTEzIDQ3ek0xNDA4IDExMjB2LTgzMnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtODMycS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY4MzJxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDgzMg0KcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYm9va21hcmtfZW1wdHkiIHVuaWNvZGU9IiYjeGYwOTc7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMTE1MiAxMjgwaC0xMDI0di0xMjQybDQyMyA0MDZsODkgODVsODkgLTg1bDQyMyAtNDA2djEyNDJ6TTExNjQgMTQwOHEyMyAwIDQ0IC05cTMzIC0xMyA1Mi41IC00MXQxOS41IC02MnYtMTI4OXEwIC0zNCAtMTkuNSAtNjJ0LTUyLjUgLTQxcS0xOSAtOCAtNDQgLThxLTQ4IDAgLTgzIDMybC00NDEgNDI0bC00NDEgLTQyNHEtMzYgLTMzIC04MyAtMzNxLTIzIDAgLTQ0IDlxLTMzIDEzIC01Mi41IDQxdC0xOS41IDYydjEyODkNCnEwIDM0IDE5LjUgNjJ0NTIuNSA0MXEyMSA5IDQ0IDloMTA0OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InBob25lX3NpZ24iIHVuaWNvZGU9IiYjeGYwOTg7IiANCmQ9Ik0xMjgwIDM0M3EwIDExIC0yIDE2dC0xOCAxNi41dC00MC41IDI1dC00Ny41IDI2LjV0LTQ1LjUgMjV0LTI4LjUgMTVxLTUgMyAtMTkgMTN0LTI1IDE1dC0yMSA1cS0xNSAwIC0zNi41IC0yMC41dC0zOS41IC00NXQtMzguNSAtNDV0LTMzLjUgLTIwLjVxLTcgMCAtMTYuNSAzLjV0LTE1LjUgNi41dC0xNyA5LjV0LTE0IDguNXEtOTkgNTUgLTE3MCAxMjYuNXQtMTI3IDE3MC41cS0yIDMgLTguNSAxNHQtOS41IDE3dC02LjUgMTUuNQ0KdC0zLjUgMTYuNXEwIDEzIDIwLjUgMzMuNXQ0NSAzOC41dDQ1IDM5LjV0MjAuNSAzNi41cTAgMTAgLTUgMjF0LTE1IDI1dC0xMyAxOXEtMyA2IC0xNSAyOC41dC0yNSA0NS41dC0yNi41IDQ3LjV0LTI1IDQwLjV0LTE2LjUgMTh0LTE2IDJxLTQ4IDAgLTEwMSAtMjJxLTQ2IC0yMSAtODAgLTk0LjV0LTM0IC0xMzAuNXEwIC0xNiAyLjUgLTM0dDUgLTMwLjV0OSAtMzN0MTAgLTI5LjV0MTIuNSAtMzN0MTEgLTMwcTYwIC0xNjQgMjE2LjUgLTMyMC41DQp0MzIwLjUgLTIxNi41cTYgLTIgMzAgLTExdDMzIC0xMi41dDI5LjUgLTEwdDMzIC05dDMwLjUgLTV0MzQgLTIuNXE1NyAwIDEzMC41IDM0dDk0LjUgODBxMjIgNTMgMjIgMTAxek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoNCiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHdpdHRlciIgdW5pY29kZT0iJiN4ZjA5OTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjIwIDExMjhxLTY3IC05OCAtMTYyIC0xNjdxMSAtMTQgMSAtNDJxMCAtMTMwIC0zOCAtMjU5LjV0LTExNS41IC0yNDguNXQtMTg0LjUgLTIxMC41dC0yNTggLTE0NnQtMzIzIC01NC41cS0yNzEgMCAtNDk2IDE0NXEzNSAtNCA3OCAtNHEyMjUgMCA0MDEgMTM4cS0xMDUgMiAtMTg4IDY0LjV0LTExNCAxNTkuNXEzMyAtNSA2MSAtNXE0MyAwIDg1IDExcS0xMTIgMjMgLTE4NS41IDExMS41dC03My41IDIwNS41djRxNjggLTM4IDE0NiAtNDENCnEtNjYgNDQgLTEwNSAxMTV0LTM5IDE1NHEwIDg4IDQ0IDE2M3ExMjEgLTE0OSAyOTQuNSAtMjM4LjV0MzcxLjUgLTk5LjVxLTggMzggLTggNzRxMCAxMzQgOTQuNSAyMjguNXQyMjguNSA5NC41cTE0MCAwIDIzNiAtMTAycTEwOSAyMSAyMDUgNzhxLTM3IC0xMTUgLTE0MiAtMTc4cTkzIDEwIDE4NiA1MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZhY2Vib29rIiB1bmljb2RlPSImI3hmMDlhOyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTk1OSAxNTI0di0yNjRoLTE1N3EtODYgMCAtMTE2IC0zNnQtMzAgLTEwOHYtMTg5aDI5M2wtMzkgLTI5NmgtMjU0di03NTloLTMwNnY3NTloLTI1NXYyOTZoMjU1djIxOHEwIDE4NiAxMDQgMjg4LjV0Mjc3IDEwMi41cTE0NyAwIDIyOCAtMTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnaXRodWIiIHVuaWNvZGU9IiYjeGYwOWI7IiANCmQ9Ik03NjggMTQwOHEyMDkgMCAzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41cTAgLTI1MSAtMTQ2LjUgLTQ1MS41dC0zNzguNSAtMjc3LjVxLTI3IC01IC00MCA3dC0xMyAzMHEwIDMgMC41IDc2LjV0MC41IDEzNC41cTAgOTcgLTUyIDE0MnE1NyA2IDEwMi41IDE4dDk0IDM5dDgxIDY2LjV0NTMgMTA1dDIwLjUgMTUwLjVxMCAxMTkgLTc5IDIwNnEzNyA5MSAtOCAyMDRxLTI4IDkgLTgxIC0xMXQtOTIgLTQ0bC0zOCAtMjQNCnEtOTMgMjYgLTE5MiAyNnQtMTkyIC0yNnEtMTYgMTEgLTQyLjUgMjd0LTgzLjUgMzguNXQtODUgMTMuNXEtNDUgLTExMyAtOCAtMjA0cS03OSAtODcgLTc5IC0yMDZxMCAtODUgMjAuNSAtMTUwdDUyLjUgLTEwNXQ4MC41IC02N3Q5NCAtMzl0MTAyLjUgLTE4cS0zOSAtMzYgLTQ5IC0xMDNxLTIxIC0xMCAtNDUgLTE1dC01NyAtNXQtNjUuNSAyMS41dC01NS41IDYyLjVxLTE5IDMyIC00OC41IDUydC00OS41IDI0bC0yMCAzcS0yMSAwIC0yOSAtNC41DQp0LTUgLTExLjV0OSAtMTR0MTMgLTEybDcgLTVxMjIgLTEwIDQzLjUgLTM4dDMxLjUgLTUxbDEwIC0yM3ExMyAtMzggNDQgLTYxLjV0NjcgLTMwdDY5LjUgLTd0NTUuNSAzLjVsMjMgNHEwIC0zOCAwLjUgLTg4LjV0MC41IC01NC41cTAgLTE4IC0xMyAtMzB0LTQwIC03cS0yMzIgNzcgLTM3OC41IDI3Ny41dC0xNDYuNSA0NTEuNXEwIDIwOSAxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzek0yOTEgMzA1cTMgNyAtNyAxMg0KcS0xMCAzIC0xMyAtMnEtMyAtNyA3IC0xMnE5IC02IDEzIDJ6TTMyMiAyNzFxNyA1IC0yIDE2cS0xMCA5IC0xNiAzcS03IC01IDIgLTE2cTEwIC0xMCAxNiAtM3pNMzUyIDIyNnE5IDcgMCAxOXEtOCAxMyAtMTcgNnEtOSAtNSAwIC0xOHQxNyAtN3pNMzk0IDE4NHE4IDggLTQgMTlxLTEyIDEyIC0yMCAzcS05IC04IDQgLTE5cTEyIC0xMiAyMCAtM3pNNDUxIDE1OXEzIDExIC0xMyAxNnEtMTUgNCAtMTkgLTd0MTMgLTE1cTE1IC02IDE5IDZ6DQpNNTE0IDE1NHEwIDEzIC0xNyAxMXEtMTYgMCAtMTYgLTExcTAgLTEzIDE3IC0xMXExNiAwIDE2IDExek01NzIgMTY0cS0yIDExIC0xOCA5cS0xNiAtMyAtMTQgLTE1dDE4IC04dDE0IDE0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5sb2NrIiB1bmljb2RlPSImI3hmMDljOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE2NjQgOTYwdi0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF2LTE5Mmg5NnE0MCAwIDY4IC0yOHQyOCAtNjh2LTU3NnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djU3NnEwIDQwIDI4IDY4dDY4IDI4aDY3MnYxOTJxMCAxODUgMTMxLjUgMzE2LjV0MzE2LjUgMTMxLjUNCnQzMTYuNSAtMTMxLjV0MTMxLjUgLTMxNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY3JlZGl0X2NhcmQiIHVuaWNvZGU9IiYjeGYwOWQ7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTc2MCAxNDA4cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNjAwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxNjAwek0xNjAgMTI4MHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTIyNGgxNjY0djIyNHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTE2MDB6TTE3NjAgMHExMyAwIDIyLjUgOS41dDkuNSAyMi41djYwOGgtMTY2NHYtNjA4DQpxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxNjAwek0yNTYgMTI4djEyOGgyNTZ2LTEyOGgtMjU2ek02NDAgMTI4djEyOGgzODR2LTEyOGgtMzg0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icnNzIiB1bmljb2RlPSImI3hmMDllOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTM4NCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek04OTYgNjlxMiAtMjggLTE3IC00OHEtMTggLTIxIC00NyAtMjFoLTEzNXEtMjUgMCAtNDMgMTYuNXQtMjAgNDEuNXEtMjIgMjI5IC0xODQuNSAzOTEuNXQtMzkxLjUgMTg0LjVxLTI1IDIgLTQxLjUgMjB0LTE2LjUgNDN2MTM1cTAgMjkgMjEgNDdxMTcgMTcgNDMgMTdoNXExNjAgLTEzIDMwNiAtODAuNQ0KdDI1OSAtMTgxLjVxMTE0IC0xMTMgMTgxLjUgLTI1OXQ4MC41IC0zMDZ6TTE0MDggNjdxMiAtMjcgLTE4IC00N3EtMTggLTIwIC00NiAtMjBoLTE0M3EtMjYgMCAtNDQuNSAxNy41dC0xOS41IDQyLjVxLTEyIDIxNSAtMTAxIDQwOC41dC0yMzEuNSAzMzZ0LTMzNiAyMzEuNXQtNDA4LjUgMTAycS0yNSAxIC00Mi41IDE5LjV0LTE3LjUgNDMuNXYxNDNxMCAyOCAyMCA0NnExOCAxOCA0NCAxOGgzcTI2MiAtMTMgNTAxLjUgLTEyMHQ0MjUuNSAtMjk0DQpxMTg3IC0xODYgMjk0IC00MjUuNXQxMjAgLTUwMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGRkIiB1bmljb2RlPSImI3hmMGEwOyIgDQpkPSJNMTA0MCAzMjBxMCAtMzMgLTIzLjUgLTU2LjV0LTU2LjUgLTIzLjV0LTU2LjUgMjMuNXQtMjMuNSA1Ni41dDIzLjUgNTYuNXQ1Ni41IDIzLjV0NTYuNSAtMjMuNXQyMy41IC01Ni41ek0xMjk2IDMyMHEwIC0zMyAtMjMuNSAtNTYuNXQtNTYuNSAtMjMuNXQtNTYuNSAyMy41dC0yMy41IDU2LjV0MjMuNSA1Ni41dDU2LjUgMjMuNXQ1Ni41IC0yMy41dDIzLjUgLTU2LjV6TTE0MDggMTYwdjMyMHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjUNCmgtMTIxNnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTMyMHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDEyMTZxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTc4IDY0MGgxMTgwbC0xNTcgNDgycS00IDEzIC0xNiAyMS41dC0yNiA4LjVoLTc4MnEtMTQgMCAtMjYgLTguNXQtMTYgLTIxLjV6TTE1MzYgNDgwdi0zMjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTEyMTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjMyMHEwIDI1IDE2IDc1DQpsMTk3IDYwNnExNyA1MyA2MyA4NnQxMDEgMzNoNzgycTU1IDAgMTAxIC0zM3Q2MyAtODZsMTk3IC02MDZxMTYgLTUwIDE2IC03NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJ1bGxob3JuIiB1bmljb2RlPSImI3hmMGExOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2NjQgODk2cTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41dC0zNy41IC05MC41dC05MC41IC0zNy41di0zODRxMCAtNTIgLTM4IC05MHQtOTAgLTM4cS00MTcgMzQ3IC04MTIgMzgwcS01OCAtMTkgLTkxIC02NnQtMzEgLTEwMC41dDQwIC05Mi41cS0yMCAtMzMgLTIzIC02NS41dDYgLTU4dDMzLjUgLTU1dDQ4IC01MHQ2MS41IC01MC41cS0yOSAtNTggLTExMS41IC04M3QtMTY4LjUgLTExLjV0LTEzMiA1NS41cS03IDIzIC0yOS41IDg3LjUNCnQtMzIgOTQuNXQtMjMgODl0LTE1IDEwMXQzLjUgOTguNXQyMiAxMTAuNWgtMTIycS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxOTJxMCA2NiA0NyAxMTN0MTEzIDQ3aDQ4MHE0MzUgMCA4OTYgMzg0cTUyIDAgOTAgLTM4dDM4IC05MHYtMzg0ek0xNTM2IDI5MnY5NTRxLTM5NCAtMzAyIC03NjggLTM0M3YtMjcwcTM3NyAtNDIgNzY4IC0zNDF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJiZWxsIiB1bmljb2RlPSImI3hmMGEyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTkxMiAtMTYwcTAgMTYgLTE2IDE2cS01OSAwIC0xMDEuNSA0Mi41dC00Mi41IDEwMS41cTAgMTYgLTE2IDE2dC0xNiAtMTZxMCAtNzMgNTEuNSAtMTI0LjV0MTI0LjUgLTUxLjVxMTYgMCAxNiAxNnpNMjQ2IDEyOGgxMzAwcS0yNjYgMzAwIC0yNjYgODMycTAgNTEgLTI0IDEwNXQtNjkgMTAzdC0xMjEuNSA4MC41dC0xNjkuNSAzMS41dC0xNjkuNSAtMzEuNXQtMTIxLjUgLTgwLjV0LTY5IC0xMDN0LTI0IC0xMDVxMCAtNTMyIC0yNjYgLTgzMnoNCk0xNzI4IDEyOHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTQ0OHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxaC00NDhxLTUyIDAgLTkwIDM4dC0zOCA5MHE1MCA0MiA5MSA4OHQ4NSAxMTkuNXQ3NC41IDE1OC41dDUwIDIwNnQxOS41IDI2MHEwIDE1MiAxMTcgMjgyLjV0MzA3IDE1OC41cS04IDE5IC04IDM5cTAgNDAgMjggNjh0NjggMjh0NjggLTI4dDI4IC02OHEwIC0yMCAtOCAtMzlxMTkwIC0yOCAzMDcgLTE1OC41DQp0MTE3IC0yODIuNXEwIC0xMzkgMTkuNSAtMjYwdDUwIC0yMDZ0NzQuNSAtMTU4LjV0ODUgLTExOS41dDkxIC04OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNlcnRpZmljYXRlIiB1bmljb2RlPSImI3hmMGEzOyIgDQpkPSJNMTM3NiA2NDBsMTM4IC0xMzVxMzAgLTI4IDIwIC03MHEtMTIgLTQxIC01MiAtNTFsLTE4OCAtNDhsNTMgLTE4NnExMiAtNDEgLTE5IC03MHEtMjkgLTMxIC03MCAtMTlsLTE4NiA1M2wtNDggLTE4OHEtMTAgLTQwIC01MSAtNTJxLTEyIC0yIC0xOSAtMnEtMzEgMCAtNTEgMjJsLTEzNSAxMzhsLTEzNSAtMTM4cS0yOCAtMzAgLTcwIC0yMHEtNDEgMTEgLTUxIDUybC00OCAxODhsLTE4NiAtNTNxLTQxIC0xMiAtNzAgMTlxLTMxIDI5IC0xOSA3MA0KbDUzIDE4NmwtMTg4IDQ4cS00MCAxMCAtNTIgNTFxLTEwIDQyIDIwIDcwbDEzOCAxMzVsLTEzOCAxMzVxLTMwIDI4IC0yMCA3MHExMiA0MSA1MiA1MWwxODggNDhsLTUzIDE4NnEtMTIgNDEgMTkgNzBxMjkgMzEgNzAgMTlsMTg2IC01M2w0OCAxODhxMTAgNDEgNTEgNTFxNDEgMTIgNzAgLTE5bDEzNSAtMTM5bDEzNSAxMzlxMjkgMzAgNzAgMTlxNDEgLTEwIDUxIC01MWw0OCAtMTg4bDE4NiA1M3E0MSAxMiA3MCAtMTlxMzEgLTI5IDE5IC03MA0KbC01MyAtMTg2bDE4OCAtNDhxNDAgLTEwIDUyIC01MXExMCAtNDIgLTIwIC03MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImhhbmRfcmlnaHQiIHVuaWNvZGU9IiYjeGYwYTQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjU2IDE5MnEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE2NjQgNzY4cTAgNTEgLTM5IDg5LjV0LTg5IDM4LjVoLTU3NnEwIDIwIDE1IDQ4LjV0MzMgNTV0MzMgNjh0MTUgODQuNXEwIDY3IC00NC41IDk3LjV0LTExNS41IDMwLjVxLTI0IDAgLTkwIC0xMzlxLTI0IC00NCAtMzcgLTY1cS00MCAtNjQgLTExMiAtMTQ1cS03MSAtODEgLTEwMSAtMTA2DQpxLTY5IC01NyAtMTQwIC01N2gtMzJ2LTY0MGgzMnE3MiAwIDE2NyAtMzJ0MTkzLjUgLTY0dDE3OS41IC0zMnExODkgMCAxODkgMTY3cTAgMjYgLTUgNTZxMzAgMTYgNDcuNSA1Mi41dDE3LjUgNzMuNXQtMTggNjlxNTMgNTAgNTMgMTE5cTAgMjUgLTEwIDU1LjV0LTI1IDQ3LjVoMzMxcTUyIDAgOTAgMzh0MzggOTB6TTE3OTIgNzY5cTAgLTEwNSAtNzUuNSAtMTgxdC0xODAuNSAtNzZoLTE2OXEtNCAtNjIgLTM3IC0xMTlxMyAtMjEgMyAtNDMNCnEwIC0xMDEgLTYwIC0xNzhxMSAtMTM5IC04NSAtMjE5LjV0LTIyNyAtODAuNXEtMTMzIDAgLTMyMiA2OXEtMTY0IDU5IC0yMjMgNTloLTI4OHEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjV2NjQwcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNWgyODhxMTAgMCAyMS41IDQuNXQyMy41IDE0dDIyLjUgMTh0MjQgMjIuNXQyMC41IDIxLjV0MTkgMjEuNXQxNCAxN3E2NSA3NCAxMDAgMTI5cTEzIDIxIDMzIDYydDM3IDcydDQwLjUgNjN0NTUgNDkuNQ0KdDY5LjUgMTcuNXExMjUgMCAyMDYuNSAtNjd0ODEuNSAtMTg5cTAgLTY4IC0yMiAtMTI4aDM3NHExMDQgMCAxODAgLTc2dDc2IC0xNzl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoYW5kX2xlZnQiIHVuaWNvZGU9IiYjeGYwYTU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTM3NiAxMjhoMzJ2NjQwaC0zMnEtMzUgMCAtNjcuNSAxMnQtNjIuNSAzN3QtNTAgNDZ0LTQ5IDU0cS04IDkgLTEyIDE0cS03MiA4MSAtMTEyIDE0NXEtMTQgMjIgLTM4IDY4cS0xIDMgLTEwLjUgMjIuNXQtMTguNSAzNnQtMjAgMzUuNXQtMjEuNSAzMC41dC0xOC41IDExLjVxLTcxIDAgLTExNS41IC0zMC41dC00NC41IC05Ny41cTAgLTQzIDE1IC04NC41dDMzIC02OHQzMyAtNTV0MTUgLTQ4LjVoLTU3NnEtNTAgMCAtODkgLTM4LjUNCnQtMzkgLTg5LjVxMCAtNTIgMzggLTkwdDkwIC0zOGgzMzFxLTE1IC0xNyAtMjUgLTQ3LjV0LTEwIC01NS41cTAgLTY5IDUzIC0xMTlxLTE4IC0zMiAtMTggLTY5dDE3LjUgLTczLjV0NDcuNSAtNTIuNXEtNCAtMjQgLTQgLTU2cTAgLTg1IDQ4LjUgLTEyNnQxMzUuNSAtNDFxODQgMCAxODMgMzJ0MTk0IDY0dDE2NyAzMnpNMTY2NCAxOTJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1eg0KTTE3OTIgNzY4di02NDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjVoLTI4OHEtNTkgMCAtMjIzIC01OXEtMTkwIC02OSAtMzE3IC02OXEtMTQyIDAgLTIzMCA3Ny41dC04NyAyMTcuNWwxIDVxLTYxIDc2IC02MSAxNzhxMCAyMiAzIDQzcS0zMyA1NyAtMzcgMTE5aC0xNjlxLTEwNSAwIC0xODAuNSA3NnQtNzUuNSAxODFxMCAxMDMgNzYgMTc5dDE4MCA3NmgzNzRxLTIyIDYwIC0yMiAxMjhxMCAxMjIgODEuNSAxODl0MjA2LjUgNjcNCnEzOCAwIDY5LjUgLTE3LjV0NTUgLTQ5LjV0NDAuNSAtNjN0MzcgLTcydDMzIC02MnEzNSAtNTUgMTAwIC0xMjlxMiAtMyAxNCAtMTd0MTkgLTIxLjV0MjAuNSAtMjEuNXQyNCAtMjIuNXQyMi41IC0xOHQyMy41IC0xNHQyMS41IC00LjVoMjg4cTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGFuZF91cCIgdW5pY29kZT0iJiN4ZjBhNjsiIA0KZD0iTTEyODAgLTY0cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTQwOCA3MDBxMCAxODkgLTE2NyAxODlxLTI2IDAgLTU2IC01cS0xNiAzMCAtNTIuNSA0Ny41dC03My41IDE3LjV0LTY5IC0xOHEtNTAgNTMgLTExOSA1M3EtMjUgMCAtNTUuNSAtMTB0LTQ3LjUgLTI1djMzMXEwIDUyIC0zOCA5MHQtOTAgMzhxLTUxIDAgLTg5LjUgLTM5dC0zOC41IC04OXYtNTc2DQpxLTIwIDAgLTQ4LjUgMTV0LTU1IDMzdC02OCAzM3QtODQuNSAxNXEtNjcgMCAtOTcuNSAtNDQuNXQtMzAuNSAtMTE1LjVxMCAtMjQgMTM5IC05MHE0NCAtMjQgNjUgLTM3cTY0IC00MCAxNDUgLTExMnE4MSAtNzEgMTA2IC0xMDFxNTcgLTY5IDU3IC0xNDB2LTMyaDY0MHYzMnEwIDcyIDMyIDE2N3Q2NCAxOTMuNXQzMiAxNzkuNXpNMTUzNiA3MDVxMCAtMTMzIC02OSAtMzIycS01OSAtMTY0IC01OSAtMjIzdi0yODhxMCAtNTMgLTM3LjUgLTkwLjUNCnQtOTAuNSAtMzcuNWgtNjQwcS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXYyODhxMCAxMCAtNC41IDIxLjV0LTE0IDIzLjV0LTE4IDIyLjV0LTIyLjUgMjR0LTIxLjUgMjAuNXQtMjEuNSAxOXQtMTcgMTRxLTc0IDY1IC0xMjkgMTAwcS0yMSAxMyAtNjIgMzN0LTcyIDM3dC02MyA0MC41dC00OS41IDU1dC0xNy41IDY5LjVxMCAxMjUgNjcgMjA2LjV0MTg5IDgxLjVxNjggMCAxMjggLTIydjM3NHEwIDEwNCA3NiAxODB0MTc5IDc2DQpxMTA1IDAgMTgxIC03NS41dDc2IC0xODAuNXYtMTY5cTYyIC00IDExOSAtMzdxMjEgMyA0MyAzcTEwMSAwIDE3OCAtNjBxMTM5IDEgMjE5LjUgLTg1dDgwLjUgLTIyN3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImhhbmRfZG93biIgdW5pY29kZT0iJiN4ZjBhNzsiIA0KZD0iTTE0MDggNTc2cTAgODQgLTMyIDE4M3QtNjQgMTk0dC0zMiAxNjd2MzJoLTY0MHYtMzJxMCAtMzUgLTEyIC02Ny41dC0zNyAtNjIuNXQtNDYgLTUwdC01NCAtNDlxLTkgLTggLTE0IC0xMnEtODEgLTcyIC0xNDUgLTExMnEtMjIgLTE0IC02OCAtMzhxLTMgLTEgLTIyLjUgLTEwLjV0LTM2IC0xOC41dC0zNS41IC0yMHQtMzAuNSAtMjEuNXQtMTEuNSAtMTguNXEwIC03MSAzMC41IC0xMTUuNXQ5Ny41IC00NC41cTQzIDAgODQuNSAxNXQ2OCAzMw0KdDU1IDMzdDQ4LjUgMTV2LTU3NnEwIC01MCAzOC41IC04OXQ4OS41IC0zOXE1MiAwIDkwIDM4dDM4IDkwdjMzMXE0NiAtMzUgMTAzIC0zNXE2OSAwIDExOSA1M3EzMiAtMTggNjkgLTE4dDczLjUgMTcuNXQ1Mi41IDQ3LjVxMjQgLTQgNTYgLTRxODUgMCAxMjYgNDguNXQ0MSAxMzUuNXpNMTI4MCAxMzQ0cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTUzNiA1ODANCnEwIC0xNDIgLTc3LjUgLTIzMHQtMjE3LjUgLTg3bC01IDFxLTc2IC02MSAtMTc4IC02MXEtMjIgMCAtNDMgM3EtNTQgLTMwIC0xMTkgLTM3di0xNjlxMCAtMTA1IC03NiAtMTgwLjV0LTE4MSAtNzUuNXEtMTAzIDAgLTE3OSA3NnQtNzYgMTgwdjM3NHEtNTQgLTIyIC0xMjggLTIycS0xMjEgMCAtMTg4LjUgODEuNXQtNjcuNSAyMDYuNXEwIDM4IDE3LjUgNjkuNXQ0OS41IDU1dDYzIDQwLjV0NzIgMzd0NjIgMzNxNTUgMzUgMTI5IDEwMA0KcTMgMiAxNyAxNHQyMS41IDE5dDIxLjUgMjAuNXQyMi41IDI0dDE4IDIyLjV0MTQgMjMuNXQ0LjUgMjEuNXYyODhxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDY0MHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXYtMjg4cTAgLTU5IDU5IC0yMjNxNjkgLTE5MCA2OSAtMzE3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2lyY2xlX2Fycm93X2xlZnQiIHVuaWNvZGU9IiYjeGYwYTg7IiANCmQ9Ik0xMjgwIDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC01MDJsMTg5IDE4OXExOSAxOSAxOSA0NXQtMTkgNDVsLTkxIDkxcS0xOCAxOCAtNDUgMTh0LTQ1IC0xOGwtMzYyIC0zNjJsLTkxIC05MXEtMTggLTE4IC0xOCAtNDV0MTggLTQ1bDkxIC05MWwzNjIgLTM2MnExOCAtMTggNDUgLTE4dDQ1IDE4bDkxIDkxcTE4IDE4IDE4IDQ1dC0xOCA0NWwtMTg5IDE4OWg1MDJxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNpcmNsZV9hcnJvd19yaWdodCIgdW5pY29kZT0iJiN4ZjBhOTsiIA0KZD0iTTEyODUgNjQwcTAgMjcgLTE4IDQ1bC05MSA5MWwtMzYyIDM2MnEtMTggMTggLTQ1IDE4dC00NSAtMThsLTkxIC05MXEtMTggLTE4IC0xOCAtNDV0MTggLTQ1bDE4OSAtMTg5aC01MDJxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg1MDJsLTE4OSAtMTg5cS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsOTEgLTkxcTE4IC0xOCA0NSAtMTh0NDUgMThsMzYyIDM2Mmw5MSA5MXExOCAxOCAxOCA0NXpNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNpcmNsZV9hcnJvd191cCIgdW5pY29kZT0iJiN4ZjBhYTsiIA0KZD0iTTEyODQgNjQxcTAgMjcgLTE4IDQ1bC0zNjIgMzYybC05MSA5MXEtMTggMTggLTQ1IDE4dC00NSAtMThsLTkxIC05MWwtMzYyIC0zNjJxLTE4IC0xOCAtMTggLTQ1dDE4IC00NWw5MSAtOTFxMTggLTE4IDQ1IC0xOHQ0NSAxOGwxODkgMTg5di01MDJxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXY1MDJsMTg5IC0xODlxMTkgLTE5IDQ1IC0xOXQ0NSAxOWw5MSA5MXExOCAxOCAxOCA0NXpNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNpcmNsZV9hcnJvd19kb3duIiB1bmljb2RlPSImI3hmMGFiOyIgDQpkPSJNMTI4NCA2MzlxMCAyNyAtMTggNDVsLTkxIDkxcS0xOCAxOCAtNDUgMTh0LTQ1IC0xOGwtMTg5IC0xODl2NTAycTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtNTAybC0xODkgMTg5cS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtOTEgLTkxcS0xOCAtMTggLTE4IC00NXQxOCAtNDVsMzYyIC0zNjJsOTEgLTkxcTE4IC0xOCA0NSAtMTh0NDUgMThsOTEgOTFsMzYyIDM2MnExOCAxOCAxOCA0NXpNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imdsb2JlIiB1bmljb2RlPSImI3hmMGFjOyIgDQpkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNMTA0MiA4ODdxLTIgLTEgLTkuNSAtOS41dC0xMy41IC05LjVxMiAwIDQuNSA1dDUgMTF0My41IDdxNiA3IDIyIDE1cTE0IDYgNTIgMTJxMzQgOCA1MSAtMTENCnEtMiAyIDkuNSAxM3QxNC41IDEycTMgMiAxNSA0LjV0MTUgNy41bDIgMjJxLTEyIC0xIC0xNy41IDd0LTYuNSAyMXEwIC0yIC02IC04cTAgNyAtNC41IDh0LTExLjUgLTF0LTkgLTFxLTEwIDMgLTE1IDcuNXQtOCAxNi41dC00IDE1cS0yIDUgLTkuNSAxMXQtOS41IDEwcS0xIDIgLTIuNSA1LjV0LTMgNi41dC00IDUuNXQtNS41IDIuNXQtNyAtNXQtNy41IC0xMHQtNC41IC01cS0zIDIgLTYgMS41dC00LjUgLTF0LTQuNSAtM3QtNSAtMy41DQpxLTMgLTIgLTguNSAtM3QtOC41IC0ycTE1IDUgLTEgMTFxLTEwIDQgLTE2IDNxOSA0IDcuNSAxMnQtOC41IDE0aDVxLTEgNCAtOC41IDguNXQtMTcuNSA4LjV0LTEzIDZxLTggNSAtMzQgOS41dC0zMyAwLjVxLTUgLTYgLTQuNSAtMTAuNXQ0IC0xNHQzLjUgLTEyLjVxMSAtNiAtNS41IC0xM3QtNi41IC0xMnEwIC03IDE0IC0xNS41dDEwIC0yMS41cS0zIC04IC0xNiAtMTZ0LTE2IC0xMnEtNSAtOCAtMS41IC0xOC41dDEwLjUgLTE2LjUNCnEyIC0yIDEuNSAtNHQtMy41IC00LjV0LTUuNSAtNHQtNi41IC0zLjVsLTMgLTJxLTExIC01IC0yMC41IDZ0LTEzLjUgMjZxLTcgMjUgLTE2IDMwcS0yMyA4IC0yOSAtMXEtNSAxMyAtNDEgMjZxLTI1IDkgLTU4IDRxNiAxIDAgMTVxLTcgMTUgLTE5IDEycTMgNiA0IDE3LjV0MSAxMy41cTMgMTMgMTIgMjNxMSAxIDcgOC41dDkuNSAxMy41dDAuNSA2cTM1IC00IDUwIDExcTUgNSAxMS41IDE3dDEwLjUgMTdxOSA2IDE0IDUuNXQxNC41IC01LjUNCnQxNC41IC01cTE0IC0xIDE1LjUgMTF0LTcuNSAyMHExMiAtMSAzIDE3cS00IDcgLTggOXEtMTIgNCAtMjcgLTVxLTggLTQgMiAtOHEtMSAxIC05LjUgLTEwLjV0LTE2LjUgLTE3LjV0LTE2IDVxLTEgMSAtNS41IDEzLjV0LTkuNSAxMy41cS04IDAgLTE2IC0xNXEzIDggLTExIDE1dC0yNCA4cTE5IDEyIC04IDI3cS03IDQgLTIwLjUgNXQtMTkuNSAtNHEtNSAtNyAtNS41IC0xMS41dDUgLTh0MTAuNSAtNS41dDExLjUgLTR0OC41IC0zDQpxMTQgLTEwIDggLTE0cS0yIC0xIC04LjUgLTMuNXQtMTEuNSAtNC41dC02IC00cS0zIC00IDAgLTE0dC0yIC0xNHEtNSA1IC05IDE3LjV0LTcgMTYuNXE3IC05IC0yNSAtNmwtMTAgMXEtNCAwIC0xNiAtMnQtMjAuNSAtMXQtMTMuNSA4cS00IDggMCAyMHExIDQgNCAycS00IDMgLTExIDkuNXQtMTAgOC41cS00NiAtMTUgLTk0IC00MXE2IC0xIDEyIDFxNSAyIDEzIDYuNXQxMCA1LjVxMzQgMTQgNDIgN2w1IDVxMTQgLTE2IDIwIC0yNQ0KcS03IDQgLTMwIDFxLTIwIC02IC0yMiAtMTJxNyAtMTIgNSAtMThxLTQgMyAtMTEuNSAxMHQtMTQuNSAxMXQtMTUgNXEtMTYgMCAtMjIgLTFxLTE0NiAtODAgLTIzNSAtMjIycTcgLTcgMTIgLThxNCAtMSA1IC05dDIuNSAtMTF0MTEuNSAzcTkgLTggMyAtMTlxMSAxIDQ0IC0yN3ExOSAtMTcgMjEgLTIxcTMgLTExIC0xMCAtMThxLTEgMiAtOSA5dC05IDRxLTMgLTUgMC41IC0xOC41dDEwLjUgLTEyLjVxLTcgMCAtOS41IC0xNnQtMi41IC0zNS41DQp0LTEgLTIzLjVsMiAtMXEtMyAtMTIgNS41IC0zNC41dDIxLjUgLTE5LjVxLTEzIC0zIDIwIC00M3E2IC04IDggLTlxMyAtMiAxMiAtNy41dDE1IC0xMHQxMCAtMTAuNXE0IC01IDEwIC0yMi41dDE0IC0yMy41cS0yIC02IDkuNSAtMjB0MTAuNSAtMjNxLTEgMCAtMi41IC0xdC0yLjUgLTFxMyAtNyAxNS41IC0xNHQxNS41IC0xM3ExIC0zIDIgLTEwdDMgLTExdDggLTJxMiAyMCAtMjQgNjJxLTE1IDI1IC0xNyAyOXEtMyA1IC01LjUgMTUuNQ0KdC00LjUgMTQuNXEyIDAgNiAtMS41dDguNSAtMy41dDcuNSAtNHQyIC0zcS0zIC03IDIgLTE3LjV0MTIgLTE4LjV0MTcgLTE5dDEyIC0xM3E2IC02IDE0IC0xOS41dDAgLTEzLjVxOSAwIDIwIC0xMC41dDE3IC0xOS41cTUgLTggOCAtMjZ0NSAtMjRxMiAtNyA4LjUgLTEzLjV0MTIuNSAtOS41bDE2IC04dDEzIC03cTUgLTIgMTguNSAtMTAuNXQyMS41IC0xMS41cTEwIC00IDE2IC00dDE0LjUgMi41dDEzLjUgMy41cTE1IDIgMjkgLTE1dDIxIC0yMQ0KcTM2IC0xOSA1NSAtMTFxLTIgLTEgMC41IC03LjV0OCAtMTUuNXQ5IC0xNC41dDUuNSAtOC41cTUgLTYgMTggLTE1dDE4IC0xNXE2IDQgNyA5cS0zIC04IDcgLTIwdDE4IC0xMHExNCAzIDE0IDMycS0zMSAtMTUgLTQ5IDE4cTAgMSAtMi41IDUuNXQtNCA4LjV0LTIuNSA4LjV0MCA3LjV0NSAzcTkgMCAxMCAzLjV0LTIgMTIuNXQtNCAxM3EtMSA4IC0xMSAyMHQtMTIgMTVxLTUgLTkgLTE2IC04dC0xNiA5cTAgLTEgLTEuNSAtNS41dC0xLjUgLTYuNQ0KcS0xMyAwIC0xNSAxcTEgMyAyLjUgMTcuNXQzLjUgMjIuNXExIDQgNS41IDEydDcuNSAxNC41dDQgMTIuNXQtNC41IDkuNXQtMTcuNSAyLjVxLTE5IC0xIC0yNiAtMjBxLTEgLTMgLTMgLTEwLjV0LTUgLTExLjV0LTkgLTdxLTcgLTMgLTI0IC0ydC0yNCA1cS0xMyA4IC0yMi41IDI5dC05LjUgMzdxMCAxMCAyLjUgMjYuNXQzIDI1dC01LjUgMjQuNXEzIDIgOSA5LjV0MTAgMTAuNXEyIDEgNC41IDEuNXQ0LjUgMHQ0IDEuNXQzIDZxLTEgMSAtNCAzDQpxLTMgMyAtNCAzcTcgLTMgMjguNSAxLjV0MjcuNSAtMS41cTE1IC0xMSAyMiAycTAgMSAtMi41IDkuNXQtMC41IDEzLjVxNSAtMjcgMjkgLTlxMyAtMyAxNS41IC01dDE3LjUgLTVxMyAtMiA3IC01LjV0NS41IC00LjV0NSAwLjV0OC41IDYuNXExMCAtMTQgMTIgLTI0cTExIC00MCAxOSAtNDRxNyAtMyAxMSAtMnQ0LjUgOS41dDAgMTR0LTEuNSAxMi41bC0xIDh2MThsLTEgOHEtMTUgMyAtMTguNSAxMnQxLjUgMTguNXQxNSAxOC41cTEgMSA4IDMuNQ0KdDE1LjUgNi41dDEyLjUgOHEyMSAxOSAxNSAzNXE3IDAgMTEgOXEtMSAwIC01IDN0LTcuNSA1dC00LjUgMnE5IDUgMiAxNnE1IDMgNy41IDExdDcuNSAxMHE5IC0xMiAyMSAtMnE4IDggMSAxNnE1IDcgMjAuNSAxMC41dDE4LjUgOS41cTcgLTIgOCAydDEgMTJ0MyAxMnE0IDUgMTUgOXQxMyA1bDE3IDExcTMgNCAwIDRxMTggLTIgMzEgMTFxMTAgMTEgLTYgMjBxMyA2IC0zIDkuNXQtMTUgNS41cTMgMSAxMS41IDAuNXQxMC41IDEuNQ0KcTE1IDEwIC03IDE2cS0xNyA1IC00MyAtMTJ6TTg3OSAxMHEyMDYgMzYgMzUxIDE4OXEtMyAzIC0xMi41IDQuNXQtMTIuNSAzLjVxLTE4IDcgLTI0IDhxMSA3IC0yLjUgMTN0LTggOXQtMTIuNSA4dC0xMSA3cS0yIDIgLTcgNnQtNyA1LjV0LTcuNSA0LjV0LTguNSAydC0xMCAtMWwtMyAtMXEtMyAtMSAtNS41IC0yLjV0LTUuNSAtM3QtNCAtM3QwIC0yLjVxLTIxIDE3IC0zNiAyMnEtNSAxIC0xMSA1LjV0LTEwLjUgN3QtMTAgMS41dC0xMS41IC03DQpxLTUgLTUgLTYgLTE1dC0yIC0xM3EtNyA1IDAgMTcuNXQyIDE4LjVxLTMgNiAtMTAuNSA0LjV0LTEyIC00LjV0LTExLjUgLTguNXQtOSAtNi41dC04LjUgLTUuNXQtOC41IC03LjVxLTMgLTQgLTYgLTEydC01IC0xMXEtMiA0IC0xMS41IDYuNXQtOS41IDUuNXEyIC0xMCA0IC0zNXQ1IC0zOHE3IC0zMSAtMTIgLTQ4cS0yNyAtMjUgLTI5IC00MHEtNCAtMjIgMTIgLTI2cTAgLTcgLTggLTIwLjV0LTcgLTIxLjVxMCAtNiAyIC0xNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9IndyZW5jaCIgdW5pY29kZT0iJiN4ZjBhZDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0zODQgNjRxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xMDI4IDQ4NGwtNjgyIC02ODJxLTM3IC0zNyAtOTAgLTM3cS01MiAwIC05MSAzN2wtMTA2IDEwOHEtMzggMzYgLTM4IDkwcTAgNTMgMzggOTFsNjgxIDY4MXEzOSAtOTggMTE0LjUgLTE3My41dDE3My41IC0xMTQuNXpNMTY2MiA5MTlxMCAtMzkgLTIzIC0xMDZxLTQ3IC0xMzQgLTE2NC41IC0yMTcuNQ0KdC0yNTguNSAtODMuNXEtMTg1IDAgLTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXQxMzEuNSAzMTYuNXQzMTYuNSAxMzEuNXE1OCAwIDEyMS41IC0xNi41dDEwNy41IC00Ni41cTE2IC0xMSAxNiAtMjh0LTE2IC0yOGwtMjkzIC0xNjl2LTIyNGwxOTMgLTEwN3E1IDMgNzkgNDguNXQxMzUuNSA4MXQ3MC41IDM1LjVxMTUgMCAyMy41IC0xMHQ4LjUgLTI1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGFza3MiIHVuaWNvZGU9IiYjeGYwYWU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTAyNCAxMjhoNjQwdjEyOGgtNjQwdi0xMjh6TTY0MCA2NDBoMTAyNHYxMjhoLTEwMjR2LTEyOHpNMTI4MCAxMTUyaDM4NHYxMjhoLTM4NHYtMTI4ek0xNzkyIDMyMHYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDgzMnYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTkNCnQtMTkgNDV2MjU2cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgMTM0NHYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsdGVyIiB1bmljb2RlPSImI3hmMGIwOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTE0MDMgMTI0MXExNyAtNDEgLTE0IC03MGwtNDkzIC00OTN2LTc0MnEwIC00MiAtMzkgLTU5cS0xMyAtNSAtMjUgLTVxLTI3IDAgLTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDV2NDg2bC00OTMgNDkzcS0zMSAyOSAtMTQgNzBxMTcgMzkgNTkgMzloMTI4MHE0MiAwIDU5IC0zOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJyaWVmY2FzZSIgdW5pY29kZT0iJiN4ZjBiMTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02NDAgMTI4MGg1MTJ2MTI4aC01MTJ2LTEyOHpNMTc5MiA2NDB2LTQ4MHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTQ3MnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2NDgwaDY3MnYtMTYwcTAgLTI2IDE5IC00NXQ0NSAtMTloMzIwcTI2IDAgNDUgMTl0MTkgNDV2MTYwaDY3MnpNMTAyNCA2NDB2LTEyOGgtMjU2djEyOGgyNTZ6TTE3OTIgMTEyMHYtMzg0aC0xNzkydjM4NHEwIDY2IDQ3IDExM3QxMTMgNDdoMzUydjE2MHEwIDQwIDI4IDY4DQp0NjggMjhoNTc2cTQwIDAgNjggLTI4dDI4IC02OHYtMTYwaDM1MnE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZ1bGxzY3JlZW4iIHVuaWNvZGU9IiYjeGYwYjI7IiANCmQ9Ik0xMjgzIDk5NWwtMzU1IC0zNTVsMzU1IC0zNTVsMTQ0IDE0NHEyOSAzMSA3MCAxNHEzOSAtMTcgMzkgLTU5di00NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC00NDhxLTQyIDAgLTU5IDQwcS0xNyAzOSAxNCA2OWwxNDQgMTQ0bC0zNTUgMzU1bC0zNTUgLTM1NWwxNDQgLTE0NHEzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgNDIgNDAgNTlxMzkgMTcgNjkgLTE0bDE0NCAtMTQ0DQpsMzU1IDM1NWwtMzU1IDM1NWwtMTQ0IC0xNDRxLTE5IC0xOSAtNDUgLTE5cS0xMiAwIC0yNCA1cS00MCAxNyAtNDAgNTl2NDQ4cTAgMjYgMTkgNDV0NDUgMTloNDQ4cTQyIDAgNTkgLTQwcTE3IC0zOSAtMTQgLTY5bC0xNDQgLTE0NGwzNTUgLTM1NWwzNTUgMzU1bC0xNDQgMTQ0cS0zMSAzMCAtMTQgNjlxMTcgNDAgNTkgNDBoNDQ4cTI2IDAgNDUgLTE5dDE5IC00NXYtNDQ4cTAgLTQyIC0zOSAtNTlxLTEzIC01IC0yNSAtNXEtMjYgMCAtNDUgMTl6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imdyb3VwIiB1bmljb2RlPSImI3hmMGMwOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTU5MyA2NDBxLTE2MiAtNSAtMjY1IC0xMjhoLTEzNHEtODIgMCAtMTM4IDQwLjV0LTU2IDExOC41cTAgMzUzIDEyNCAzNTNxNiAwIDQzLjUgLTIxdDk3LjUgLTQyLjV0MTE5IC0yMS41cTY3IDAgMTMzIDIzcS01IC0zNyAtNSAtNjZxMCAtMTM5IDgxIC0yNTZ6TTE2NjQgM3EwIC0xMjAgLTczIC0xODkuNXQtMTk0IC02OS41aC04NzRxLTEyMSAwIC0xOTQgNjkuNXQtNzMgMTg5LjVxMCA1MyAzLjUgMTAzLjV0MTQgMTA5dDI2LjUgMTA4LjUNCnQ0MyA5Ny41dDYyIDgxdDg1LjUgNTMuNXQxMTEuNSAyMHExMCAwIDQzIC0yMS41dDczIC00OHQxMDcgLTQ4dDEzNSAtMjEuNXQxMzUgMjEuNXQxMDcgNDh0NzMgNDh0NDMgMjEuNXE2MSAwIDExMS41IC0yMHQ4NS41IC01My41dDYyIC04MXQ0MyAtOTcuNXQyNi41IC0xMDguNXQxNCAtMTA5dDMuNSAtMTAzLjV6TTY0MCAxMjgwcTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODF0NzUgMTgxdDE4MSA3NXQxODEgLTc1DQp0NzUgLTE4MXpNMTM0NCA4OTZxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXQtMjcxLjUgMTEyLjV0LTExMi41IDI3MS41dDExMi41IDI3MS41dDI3MS41IDExMi41dDI3MS41IC0xMTIuNXQxMTIuNSAtMjcxLjV6TTE5MjAgNjcxcTAgLTc4IC01NiAtMTE4LjV0LTEzOCAtNDAuNWgtMTM0cS0xMDMgMTIzIC0yNjUgMTI4cTgxIDExNyA4MSAyNTZxMCAyOSAtNSA2NnE2NiAtMjMgMTMzIC0yM3E1OSAwIDExOSAyMS41dDk3LjUgNDIuNQ0KdDQzLjUgMjFxMTI0IDAgMTI0IC0zNTN6TTE3OTIgMTI4MHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxdDc1IDE4MXQxODEgNzV0MTgxIC03NXQ3NSAtMTgxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGluayIgdW5pY29kZT0iJiN4ZjBjMTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNDU2IDMyMHEwIDQwIC0yOCA2OGwtMjA4IDIwOHEtMjggMjggLTY4IDI4cS00MiAwIC03MiAtMzJxMyAtMyAxOSAtMTguNXQyMS41IC0yMS41dDE1IC0xOXQxMyAtMjUuNXQzLjUgLTI3LjVxMCAtNDAgLTI4IC02OHQtNjggLTI4cS0xNSAwIC0yNy41IDMuNXQtMjUuNSAxM3QtMTkgMTV0LTIxLjUgMjEuNXQtMTguNSAxOXEtMzMgLTMxIC0zMyAtNzNxMCAtNDAgMjggLTY4bDIwNiAtMjA3cTI3IC0yNyA2OCAtMjdxNDAgMCA2OCAyNg0KbDE0NyAxNDZxMjggMjggMjggNjd6TTc1MyAxMDI1cTAgNDAgLTI4IDY4bC0yMDYgMjA3cS0yOCAyOCAtNjggMjhxLTM5IDAgLTY4IC0yN2wtMTQ3IC0xNDZxLTI4IC0yOCAtMjggLTY3cTAgLTQwIDI4IC02OGwyMDggLTIwOHEyNyAtMjcgNjggLTI3cTQyIDAgNzIgMzFxLTMgMyAtMTkgMTguNXQtMjEuNSAyMS41dC0xNSAxOXQtMTMgMjUuNXQtMy41IDI3LjVxMCA0MCAyOCA2OHQ2OCAyOHExNSAwIDI3LjUgLTMuNXQyNS41IC0xM3QxOSAtMTUNCnQyMS41IC0yMS41dDE4LjUgLTE5cTMzIDMxIDMzIDczek0xNjQ4IDMyMHEwIC0xMjAgLTg1IC0yMDNsLTE0NyAtMTQ2cS04MyAtODMgLTIwMyAtODNxLTEyMSAwIC0yMDQgODVsLTIwNiAyMDdxLTgzIDgzIC04MyAyMDNxMCAxMjMgODggMjA5bC04OCA4OHEtODYgLTg4IC0yMDggLTg4cS0xMjAgMCAtMjA0IDg0bC0yMDggMjA4cS04NCA4NCAtODQgMjA0dDg1IDIwM2wxNDcgMTQ2cTgzIDgzIDIwMyA4M3ExMjEgMCAyMDQgLTg1bDIwNiAtMjA3DQpxODMgLTgzIDgzIC0yMDNxMCAtMTIzIC04OCAtMjA5bDg4IC04OHE4NiA4OCAyMDggODhxMTIwIDAgMjA0IC04NGwyMDggLTIwOHE4NCAtODQgODQgLTIwNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNsb3VkIiB1bmljb2RlPSImI3hmMGMyOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTE5MjAgMzg0cTAgLTE1OSAtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjVoLTEwODhxLTE4NSAwIC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxMzIgNzEgMjQxLjV0MTg3IDE2My41cS0yIDI4IC0yIDQzcTAgMjEyIDE1MCAzNjJ0MzYyIDE1MHExNTggMCAyODYuNSAtODh0MTg3LjUgLTIzMHE3MCA2MiAxNjYgNjJxMTA2IDAgMTgxIC03NXQ3NSAtMTgxcTAgLTc1IC00MSAtMTM4cTEyOSAtMzAgMjEzIC0xMzQuNXQ4NCAtMjM5LjV6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJlYWtlciIgdW5pY29kZT0iJiN4ZjBjMzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNTI3IDg4cTU2IC04OSAyMS41IC0xNTIuNXQtMTQwLjUgLTYzLjVoLTExNTJxLTEwNiAwIC0xNDAuNSA2My41dDIxLjUgMTUyLjVsNTAzIDc5M3YzOTloLTY0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloNTEycTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTY0di0zOTl6TTc0OCA4MTNsLTI3MiAtNDI5aDcxMmwtMjcyIDQyOWwtMjAgMzF2Mzd2Mzk5aC0xMjh2LTM5OXYtMzd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjdXQiIHVuaWNvZGU9IiYjeGYwYzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNOTYwIDY0MHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTEyNjAgNTc2bDUwNyAtMzk4cTI4IC0yMCAyNSAtNTZxLTUgLTM1IC0zNSAtNTFsLTEyOCAtNjRxLTEzIC03IC0yOSAtN3EtMTcgMCAtMzEgOGwtNjkwIDM4N2wtMTEwIC02NnEtOCAtNCAtMTIgLTVxMTQgLTQ5IDEwIC05N3EtNyAtNzcgLTU2IC0xNDcuNXQtMTMyIC0xMjMuNXEtMTMyIC04NCAtMjc3IC04NA0KcS0xMzYgMCAtMjIyIDc4cS05MCA4NCAtNzkgMjA3cTcgNzYgNTYgMTQ3dDEzMSAxMjRxMTMyIDg0IDI3OCA4NHE4MyAwIDE1MSAtMzFxOSAxMyAyMiAyMmwxMjIgNzNsLTEyMiA3M3EtMTMgOSAtMjIgMjJxLTY4IC0zMSAtMTUxIC0zMXEtMTQ2IDAgLTI3OCA4NHEtODIgNTMgLTEzMSAxMjR0LTU2IDE0N3EtNSA1OSAxNS41IDExM3Q2My41IDkzcTg1IDc5IDIyMiA3OXExNDUgMCAyNzcgLTg0cTgzIC01MiAxMzIgLTEyM3Q1NiAtMTQ4DQpxNCAtNDggLTEwIC05N3E0IC0xIDEyIC01bDExMCAtNjZsNjkwIDM4N3ExNCA4IDMxIDhxMTYgMCAyOSAtN2wxMjggLTY0cTMwIC0xNiAzNSAtNTFxMyAtMzYgLTI1IC01NnpNNTc5IDgzNnE0NiA0MiAyMSAxMDh0LTEwNiAxMTdxLTkyIDU5IC0xOTIgNTlxLTc0IDAgLTExMyAtMzZxLTQ2IC00MiAtMjEgLTEwOHQxMDYgLTExN3E5MiAtNTkgMTkyIC01OXE3NCAwIDExMyAzNnpNNDk0IDkxcTgxIDUxIDEwNiAxMTd0LTIxIDEwOA0KcS0zOSAzNiAtMTEzIDM2cS0xMDAgMCAtMTkyIC01OXEtODEgLTUxIC0xMDYgLTExN3QyMSAtMTA4cTM5IC0zNiAxMTMgLTM2cTEwMCAwIDE5MiA1OXpNNjcyIDcwNGw5NiAtNTh2MTFxMCAzNiAzMyA1NmwxNCA4bC03OSA0N2wtMjYgLTI2cS0zIC0zIC0xMCAtMTF0LTEyIC0xMnEtMiAtMiAtNCAtMy41dC0zIC0yLjV6TTg5NiA0ODBsOTYgLTMybDczNiA1NzZsLTEyOCA2NGwtNzY4IC00MzF2LTExM2wtMTYwIC05Nmw5IC04cTIgLTIgNyAtNg0KcTQgLTQgMTEgLTEydDExIC0xMmwyNiAtMjZ6TTE2MDAgNjRsMTI4IDY0bC01MjAgNDA4bC0xNzcgLTEzOHEtMiAtMyAtMTMgLTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb3B5IiB1bmljb2RlPSImI3hmMGM1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2OTYgMTE1MnE0MCAwIDY4IC0yOHQyOCAtNjh2LTEyMTZxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYyODhoLTU0NHEtNDAgMCAtNjggMjh0LTI4IDY4djY3MnEwIDQwIDIwIDg4dDQ4IDc2bDQwOCA0MDhxMjggMjggNzYgNDh0ODggMjBoNDE2cTQwIDAgNjggLTI4dDI4IC02OHYtMzI4cTY4IDQwIDEyOCA0MGg0MTZ6TTExNTIgOTM5bC0yOTkgLTI5OWgyOTl2Mjk5ek01MTIgMTMyM2wtMjk5IC0yOTkNCmgyOTl2Mjk5ek03MDggNjc2bDMxNiAzMTZ2NDE2aC0zODR2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTQxNnYtNjQwaDUxMnYyNTZxMCA0MCAyMCA4OHQ0OCA3NnpNMTY2NCAtMTI4djExNTJoLTM4NHYtNDE2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtNDE2di02NDBoODk2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGFwZXJfY2xpcCIgdW5pY29kZT0iJiN4ZjBjNjsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xNDA0IDE1MXEwIC0xMTcgLTc5IC0xOTZ0LTE5NiAtNzlxLTEzNSAwIC0yMzUgMTAwbC03NzcgNzc2cS0xMTMgMTE1IC0xMTMgMjcxcTAgMTU5IDExMCAyNzB0MjY5IDExMXExNTggMCAyNzMgLTExM2w2MDUgLTYwNnExMCAtMTAgMTAgLTIycTAgLTE2IC0zMC41IC00Ni41dC00Ni41IC0zMC41cS0xMyAwIC0yMyAxMGwtNjA2IDYwN3EtNzkgNzcgLTE4MSA3N3EtMTA2IDAgLTE3OSAtNzV0LTczIC0xODFxMCAtMTA1IDc2IC0xODENCmw3NzYgLTc3N3E2MyAtNjMgMTQ1IC02M3E2NCAwIDEwNiA0MnQ0MiAxMDZxMCA4MiAtNjMgMTQ1bC01ODEgNTgxcS0yNiAyNCAtNjAgMjRxLTI5IDAgLTQ4IC0xOXQtMTkgLTQ4cTAgLTMyIDI1IC01OWw0MTAgLTQxMHExMCAtMTAgMTAgLTIycTAgLTE2IC0zMSAtNDd0LTQ3IC0zMXEtMTIgMCAtMjIgMTBsLTQxMCA0MTBxLTYzIDYxIC02MyAxNDlxMCA4MiA1NyAxMzl0MTM5IDU3cTg4IDAgMTQ5IC02M2w1ODEgLTU4MXExMDAgLTk4IDEwMCAtMjM1DQp6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzYXZlIiB1bmljb2RlPSImI3hmMGM3OyIgDQpkPSJNMzg0IDBoNzY4djM4NGgtNzY4di0zODR6TTEyODAgMGgxMjh2ODk2cTAgMTQgLTEwIDM4LjV0LTIwIDM0LjVsLTI4MSAyODFxLTEwIDEwIC0zNCAyMHQtMzkgMTB2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTU3NnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtMTI4di0xMjgwaDEyOHY0MTZxMCA0MCAyOCA2OHQ2OCAyOGg4MzJxNDAgMCA2OCAtMjh0MjggLTY4di00MTZ6TTg5NiA5Mjh2MzIwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNQ0KaC0xOTJxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0zMjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxOTJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTUzNiA4OTZ2LTkyOHEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxMzQ0cTAgNDAgMjggNjh0NjggMjhoOTI4cTQwIDAgODggLTIwdDc2IC00OGwyODAgLTI4MHEyOCAtMjggNDggLTc2dDIwIC04OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNpZ25fYmxhbmsiIHVuaWNvZGU9IiYjeGYwYzg7IiANCmQ9Ik0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJlb3JkZXIiIHVuaWNvZGU9IiYjeGYwYzk7IiANCmQ9Ik0xNTM2IDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNTM2IDcwNHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNTM2IDEyMTZ2LTEyOHEwIC0yNiAtMTkgLTQ1DQp0LTQ1IC0xOWgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idWwiIHVuaWNvZGU9IiYjeGYwY2E7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMzg0IDEyOHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTM4NCA2NDBxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNzkyIDIyNHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTIxNnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41DQp0MjIuNSA5LjVoMTIxNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTM4NCAxMTUycTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMTc5MiA3MzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEyMTZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMjE2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoNCk0xNzkyIDEyNDh2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEyMTZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMjE2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im9sIiB1bmljb2RlPSImI3hmMGNiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTM4MSAtODRxMCAtODAgLTU0LjUgLTEyNnQtMTM1LjUgLTQ2cS0xMDYgMCAtMTcyIDY2bDU3IDg4cTQ5IC00NSAxMDYgLTQ1cTI5IDAgNTAuNSAxNC41dDIxLjUgNDIuNXEwIDY0IC0xMDUgNTZsLTI2IDU2cTggMTAgMzIuNSA0My41dDQyLjUgNTR0MzcgMzguNXYxcS0xNiAwIC00OC41IC0xdC00OC41IC0xdi01M2gtMTA2djE1MmgzMzN2LTg4bC05NSAtMTE1cTUxIC0xMiA4MSAtNDl0MzAgLTg4ek0zODMgNTQzdi0xNTloLTM2Mg0KcS02IDM2IC02IDU0cTAgNTEgMjMuNSA5M3Q1Ni41IDY4dDY2IDQ3LjV0NTYuNSA0My41dDIzLjUgNDVxMCAyNSAtMTQuNSAzOC41dC0zOS41IDEzLjVxLTQ2IDAgLTgxIC01OGwtODUgNTlxMjQgNTEgNzEuNSA3OS41dDEwNS41IDI4LjVxNzMgMCAxMjMgLTQxLjV0NTAgLTExMi41cTAgLTUwIC0zNCAtOTEuNXQtNzUgLTY0LjV0LTc1LjUgLTUwLjV0LTM1LjUgLTUyLjVoMTI3djYwaDEwNXpNMTc5MiAyMjR2LTE5MnEwIC0xMyAtOS41IC0yMi41DQp0LTIyLjUgLTkuNWgtMTIxNnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDE0IDkgMjN0MjMgOWgxMjE2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDExMjN2LTk5aC0zMzV2OTloMTA3cTAgNDEgMC41IDEyMS41dDAuNSAxMjEuNXYxMmgtMnEtOCAtMTcgLTUwIC01NGwtNzEgNzZsMTM2IDEyN2gxMDZ2LTQwNGgxMDh6TTE3OTIgNzM2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMjE2DQpxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxNCA5IDIzdDIzIDloMTIxNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgMTI0OHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTIxNnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEyMTZxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RyaWtldGhyb3VnaCIgdW5pY29kZT0iJiN4ZjBjYzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzYwIDY0MHExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNzI4cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE3Mjh6TTQ4MyA3MDRxLTI4IDM1IC01MSA4MHEtNDggOTggLTQ4IDE4OHEwIDE4MSAxMzQgMzA5cTEzMyAxMjcgMzkzIDEyN3E1MCAwIDE2NyAtMTlxNjYgLTEyIDE3NyAtNDhxMTAgLTM4IDIxIC0xMThxMTQgLTEyMyAxNCAtMTgzcTAgLTE4IC01IC00NWwtMTIgLTNsLTg0IDYNCmwtMTQgMnEtNTAgMTQ5IC0xMDMgMjA1cS04OCA5MSAtMjEwIDkxcS0xMTQgMCAtMTgyIC01OXEtNjcgLTU4IC02NyAtMTQ2cTAgLTczIDY2IC0xNDB0Mjc5IC0xMjlxNjkgLTIwIDE3MyAtNjZxNTggLTI4IDk1IC01MmgtNzQzek05OTAgNDQ4aDQxMXE3IC0zOSA3IC05MnEwIC0xMTEgLTQxIC0yMTJxLTIzIC01NiAtNzEgLTEwNHEtMzcgLTM1IC0xMDkgLTgxcS04MCAtNDggLTE1MyAtNjZxLTgwIC0yMSAtMjAzIC0yMXEtMTE0IDAgLTE5NSAyMw0KbC0xNDAgNDBxLTU3IDE2IC03MiAyOHEtOCA4IC04IDIydjEzcTAgMTA4IC0yIDE1NnEtMSAzMCAwIDY4bDIgMzd2NDRsMTAyIDJxMTUgLTM0IDMwIC03MXQyMi41IC01NnQxMi41IC0yN3EzNSAtNTcgODAgLTk0cTQzIC0zNiAxMDUgLTU3cTU5IC0yMiAxMzIgLTIycTY0IDAgMTM5IDI3cTc3IDI2IDEyMiA4NnE0NyA2MSA0NyAxMjlxMCA4NCAtODEgMTU3cS0zNCAyOSAtMTM3IDcxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5kZXJsaW5lIiB1bmljb2RlPSImI3hmMGNkOyIgDQpkPSJNNDggMTMxM3EtMzcgMiAtNDUgNGwtMyA4OHExMyAxIDQwIDFxNjAgMCAxMTIgLTRxMTMyIC03IDE2NiAtN3E4NiAwIDE2OCAzcTExNiA0IDE0NiA1cTU2IDAgODYgMmwtMSAtMTRsMiAtNjR2LTlxLTYwIC05IC0xMjQgLTlxLTYwIDAgLTc5IC0yNXEtMTMgLTE0IC0xMyAtMTMycTAgLTEzIDAuNSAtMzIuNXQwLjUgLTI1LjVsMSAtMjI5bDE0IC0yODBxNiAtMTI0IDUxIC0yMDJxMzUgLTU5IDk2IC05MnE4OCAtNDcgMTc3IC00Nw0KcTEwNCAwIDE5MSAyOHE1NiAxOCA5OSA1MXE0OCAzNiA2NSA2NHEzNiA1NiA1MyAxMTRxMjEgNzMgMjEgMjI5cTAgNzkgLTMuNSAxMjh0LTExIDEyMi41dC0xMy41IDE1OS41bC00IDU5cS01IDY3IC0yNCA4OHEtMzQgMzUgLTc3IDM0bC0xMDAgLTJsLTE0IDNsMiA4Nmg4NGwyMDUgLTEwcTc2IC0zIDE5NiAxMGwxOCAtMnE2IC0zOCA2IC01MXEwIC03IC00IC0zMXEtNDUgLTEyIC04NCAtMTNxLTczIC0xMSAtNzkgLTE3cS0xNSAtMTUgLTE1IC00MQ0KcTAgLTcgMS41IC0yN3QxLjUgLTMxcTggLTE5IDIyIC0zOTZxNiAtMTk1IC0xNSAtMzA0cS0xNSAtNzYgLTQxIC0xMjJxLTM4IC02NSAtMTEyIC0xMjNxLTc1IC01NyAtMTgyIC04OXEtMTA5IC0zMyAtMjU1IC0zM3EtMTY3IDAgLTI4NCA0NnEtMTE5IDQ3IC0xNzkgMTIycS02MSA3NiAtODMgMTk1cS0xNiA4MCAtMTYgMjM3djMzM3EwIDE4OCAtMTcgMjEzcS0yNSAzNiAtMTQ3IDM5ek0xNTM2IC05NnY2NHEwIDE0IC05IDIzdC0yMyA5aC0xNDcyDQpxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloMTQ3MnExNCAwIDIzIDl0OSAyM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRhYmxlIiB1bmljb2RlPSImI3hmMGNlOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTUxMiAxNjB2MTkycTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek01MTIgNTQ0djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkycTAgLTE0IDkgLTIzdDIzIC05aDMyMHExNCAwIDIzIDl0OSAyM3pNMTAyNCAxNjB2MTkycTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzDQp2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTUxMiA5Mjh2MTkycTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xMDI0IDU0NHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgMTYwdjE5Mg0KcTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xMDI0IDkyOHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgNTQ0djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkyDQpxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xNTM2IDkyOHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTI0OHYtMTA4OHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTM0NHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTM0NHE2NiAwIDExMyAtNDd0NDcgLTExMw0KeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWFnaWMiIHVuaWNvZGU9IiYjeGYwZDA7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTE5MCA5NTVsMjkzIDI5M2wtMTA3IDEwN2wtMjkzIC0yOTN6TTE2MzcgMTI0OHEwIC0yNyAtMTggLTQ1bC0xMjg2IC0xMjg2cS0xOCAtMTggLTQ1IC0xOHQtNDUgMThsLTE5OCAxOThxLTE4IDE4IC0xOCA0NXQxOCA0NWwxMjg2IDEyODZxMTggMTggNDUgMTh0NDUgLTE4bDE5OCAtMTk4cTE4IC0xOCAxOCAtNDV6TTI4NiAxNDM4bDk4IC0zMGwtOTggLTMwbC0zMCAtOThsLTMwIDk4bC05OCAzMGw5OCAzMGwzMCA5OHpNNjM2IDEyNzYNCmwxOTYgLTYwbC0xOTYgLTYwbC02MCAtMTk2bC02MCAxOTZsLTE5NiA2MGwxOTYgNjBsNjAgMTk2ek0xNTY2IDc5OGw5OCAtMzBsLTk4IC0zMGwtMzAgLTk4bC0zMCA5OGwtOTggMzBsOTggMzBsMzAgOTh6TTkyNiAxNDM4bDk4IC0zMGwtOTggLTMwbC0zMCAtOThsLTMwIDk4bC05OCAzMGw5OCAzMGwzMCA5OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRydWNrIiB1bmljb2RlPSImI3hmMGQxOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTY0MCAxMjhxMCA1MiAtMzggOTB0LTkwIDM4dC05MCAtMzh0LTM4IC05MHQzOCAtOTB0OTAgLTM4dDkwIDM4dDM4IDkwek0yNTYgNjQwaDM4NHYyNTZoLTE1OHEtMTMgMCAtMjIgLTlsLTE5NSAtMTk1cS05IC05IC05IC0yMnYtMzB6TTE1MzYgMTI4cTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTB0MzggLTkwdDkwIC0zOHQ5MCAzOHQzOCA5MHpNMTc5MiAxMjE2di0xMDI0cTAgLTE1IC00IC0yNi41dC0xMy41IC0xOC41DQp0LTE2LjUgLTExLjV0LTIzLjUgLTZ0LTIyLjUgLTJ0LTI1LjUgMHQtMjIuNSAwLjVxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODEgNzV0LTc1IDE4MWgtMzg0cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTY0cS0zIDAgLTIyLjUgLTAuNXQtMjUuNSAwdC0yMi41IDJ0LTIzLjUgNnQtMTYuNSAxMS41dC0xMy41IDE4LjV0LTQgMjYuNXEwIDI2IDE5IDQ1dDQ1IDE5djMyMHEwIDggLTAuNSAzNXQwIDM4DQp0Mi41IDM0LjV0Ni41IDM3dDE0IDMwLjV0MjIuNSAzMGwxOTggMTk4cTE5IDE5IDUwLjUgMzJ0NTguNSAxM2gxNjB2MTkycTAgMjYgMTkgNDV0NDUgMTloMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwaW50ZXJlc3QiIHVuaWNvZGU9IiYjeGYwZDI7IiANCmQ9Ik0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3EtMTExIDAgLTIxOCAzMnE1OSA5MyA3OCAxNjRxOSAzNCA1NCAyMTFxMjAgLTM5IDczIC02Ny41dDExNCAtMjguNXExMjEgMCAyMTYgNjguNXQxNDcgMTg4LjV0NTIgMjcwcTAgMTE0IC01OS41IDIxNHQtMTcyLjUgMTYzdC0yNTUgNjNxLTEwNSAwIC0xOTYgLTI5dC0xNTQuNSAtNzd0LTEwOSAtMTEwLjV0LTY3IC0xMjkuNXQtMjEuNSAtMTM0DQpxMCAtMTA0IDQwIC0xODN0MTE3IC0xMTFxMzAgLTEyIDM4IDIwcTIgNyA4IDMxdDggMzBxNiAyMyAtMTEgNDNxLTUxIDYxIC01MSAxNTFxMCAxNTEgMTA0LjUgMjU5LjV0MjczLjUgMTA4LjVxMTUxIDAgMjM1LjUgLTgydDg0LjUgLTIxM3EwIC0xNzAgLTY4LjUgLTI4OXQtMTc1LjUgLTExOXEtNjEgMCAtOTggNDMuNXQtMjMgMTA0LjVxOCAzNSAyNi41IDkzLjV0MzAgMTAzdDExLjUgNzUuNXEwIDUwIC0yNyA4M3QtNzcgMzMNCnEtNjIgMCAtMTA1IC01N3QtNDMgLTE0MnEwIC03MyAyNSAtMTIybC05OSAtNDE4cS0xNyAtNzAgLTEzIC0xNzdxLTIwNiA5MSAtMzMzIDI4MXQtMTI3IDQyM3EwIDIwOSAxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwaW50ZXJlc3Rfc2lnbiIgdW5pY29kZT0iJiN4ZjBkMzsiIA0KZD0iTTEyNDggMTQwOHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC03MjVxODUgMTIyIDEwOCAyMTBxOSAzNCA1MyAyMDlxMjEgLTM5IDczLjUgLTY3dDExMi41IC0yOHExODEgMCAyOTUuNSAxNDcuNXQxMTQuNSAzNzMuNXEwIDg0IC0zNSAxNjIuNXQtOTYuNSAxMzl0LTE1Mi41IDk3dC0xOTcgMzYuNXEtMTA0IDAgLTE5NC41IC0yOC41dC0xNTMgLTc2LjUNCnQtMTA3LjUgLTEwOS41dC02Ni41IC0xMjh0LTIxLjUgLTEzMi41cTAgLTEwMiAzOS41IC0xODB0MTE2LjUgLTExMHExMyAtNSAyMy41IDB0MTQuNSAxOXExMCA0NCAxNSA2MXE2IDIzIC0xMSA0MnEtNTAgNjIgLTUwIDE1MHEwIDE1MCAxMDMuNSAyNTYuNXQyNzAuNSAxMDYuNXExNDkgMCAyMzIuNSAtODF0ODMuNSAtMjEwcTAgLTE2OCAtNjcuNSAtMjg2dC0xNzMuNSAtMTE4cS02MCAwIC05NyA0My41dC0yMyAxMDMuNXE4IDM0IDI2LjUgOTIuNQ0KdDI5LjUgMTAydDExIDc0LjVxMCA0OSAtMjYuNSA4MS41dC03NS41IDMyLjVxLTYxIDAgLTEwMy41IC01Ni41dC00Mi41IC0xMzkuNXEwIC03MiAyNCAtMTIxbC05OCAtNDE0cS0yNCAtMTAwIC03IC0yNTRoLTE4M3EtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnb29nbGVfcGx1c19zaWduIiB1bmljb2RlPSImI3hmMGQ0OyIgDQpkPSJNOTE3IDYzMXEwIDI2IC02IDY0aC0zNjJ2LTEzMmgyMTdxLTMgLTI0IC0xNi41IC01MHQtMzcuNSAtNTN0LTY2LjUgLTQ0LjV0LTk2LjUgLTE3LjVxLTk5IDAgLTE2OSA3MXQtNzAgMTcxdDcwIDE3MXQxNjkgNzFxOTIgMCAxNTMgLTU5bDEwNCAxMDFxLTEwOCAxMDAgLTI1NyAxMDBxLTE2MCAwIC0yNzIgLTExMi41dC0xMTIgLTI3MS41dDExMiAtMjcxLjV0MjcyIC0xMTIuNXExNjUgMCAyNjYuNSAxMDV0MTAxLjUgMjcwek0xMjYyIDU4NQ0KaDEwOXYxMTBoLTEwOXYxMTBoLTExMHYtMTEwaC0xMTB2LTExMGgxMTB2LTExMGgxMTB2MTEwek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imdvb2dsZV9wbHVzIiB1bmljb2RlPSImI3hmMGQ1OyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTE0MzcgNjIzcTAgLTIwOCAtODcgLTM3MC41dC0yNDggLTI1NHQtMzY5IC05MS41cS0xNDkgMCAtMjg1IDU4dC0yMzQgMTU2dC0xNTYgMjM0dC01OCAyODV0NTggMjg1dDE1NiAyMzR0MjM0IDE1NnQyODUgNThxMjg2IDAgNDkxIC0xOTJsLTE5OSAtMTkxcS0xMTcgMTEzIC0yOTIgMTEzcS0xMjMgMCAtMjI3LjUgLTYydC0xNjUuNSAtMTY4LjV0LTYxIC0yMzIuNXQ2MSAtMjMyLjV0MTY1LjUgLTE2OC41dDIyNy41IC02Mg0KcTgzIDAgMTUyLjUgMjN0MTE0LjUgNTcuNXQ3OC41IDc4LjV0NDkgODN0MjEuNSA3NGgtNDE2djI1Mmg2OTJxMTIgLTYzIDEyIC0xMjJ6TTIzMDQgNzQ1di0yMTBoLTIwOXYtMjA5aC0yMTB2MjA5aC0yMDl2MjEwaDIwOXYyMDloMjEwdi0yMDloMjA5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibW9uZXkiIHVuaWNvZGU9IiYjeGYwZDY7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNNzY4IDM4NGgzODR2OTZoLTEyOHY0NDhoLTExNGwtMTQ4IC0xMzdsNzcgLTgwcTQyIDM3IDU1IDU3aDJ2LTI4OGgtMTI4di05NnpNMTI4MCA2NDBxMCAtNzAgLTIxIC0xNDJ0LTU5LjUgLTEzNHQtMTAxLjUgLTEwMXQtMTM4IC0zOXQtMTM4IDM5dC0xMDEuNSAxMDF0LTU5LjUgMTM0dC0yMSAxNDJ0MjEgMTQydDU5LjUgMTM0dDEwMS41IDEwMXQxMzggMzl0MTM4IC0zOXQxMDEuNSAtMTAxdDU5LjUgLTEzNHQyMSAtMTQyek0xNzkyIDM4NA0KdjUxMnEtMTA2IDAgLTE4MSA3NXQtNzUgMTgxaC0xMTUycTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXYtNTEycTEwNiAwIDE4MSAtNzV0NzUgLTE4MWgxMTUycTAgMTA2IDc1IDE4MXQxODEgNzV6TTE5MjAgMTIxNnYtMTE1MnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE3OTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMTUycTAgMjYgMTkgNDV0NDUgMTloMTc5MnEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjYXJldF9kb3duIiB1bmljb2RlPSImI3hmMGQ3OyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTEwMjQgODMycTAgLTI2IC0xOSAtNDVsLTQ0OCAtNDQ4cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTQ0OCA0NDhxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOWg4OTZxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2FyZXRfdXAiIHVuaWNvZGU9IiYjeGYwZDg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMTAyNCAzMjBxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC04OTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NWw0NDggNDQ4cTE5IDE5IDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHExOSAtMTkgMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2FyZXRfbGVmdCIgdW5pY29kZT0iJiN4ZjBkOTsiIGhvcml6LWFkdi14PSI2NDAiIA0KZD0iTTY0MCAxMDg4di04OTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtNDQ4IDQ0OHEtMTkgMTkgLTE5IDQ1dDE5IDQ1bDQ0OCA0NDhxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhcmV0X3JpZ2h0IiB1bmljb2RlPSImI3hmMGRhOyIgaG9yaXotYWR2LXg9IjY0MCIgDQpkPSJNNTc2IDY0MHEwIC0yNiAtMTkgLTQ1bC00NDggLTQ0OHEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5dC0xOSA0NXY4OTZxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsNDQ4IC00NDhxMTkgLTE5IDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvbHVtbnMiIHVuaWNvZGU9IiYjeGYwZGI7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTYwIDBoNjA4djExNTJoLTY0MHYtMTEyMHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41ek0xNTM2IDMydjExMjBoLTY0MHYtMTE1Mmg2MDhxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTY2NCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMzQ0cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxMzQ0cTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydCIgdW5pY29kZT0iJiN4ZjBkYzsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0xMDI0IDQ0OHEwIC0yNiAtMTkgLTQ1bC00NDggLTQ0OHEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC00NDggNDQ4cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTloODk2cTI2IDAgNDUgLTE5dDE5IC00NXpNMTAyNCA4MzJxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC04OTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NWw0NDggNDQ4cTE5IDE5IDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHExOSAtMTkgMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydF9kb3duIiB1bmljb2RlPSImI3hmMGRkOyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTEwMjQgNDQ4cTAgLTI2IC0xOSAtNDVsLTQ0OCAtNDQ4cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTQ0OCA0NDhxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOWg4OTZxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydF91cCIgdW5pY29kZT0iJiN4ZjBkZTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0xMDI0IDgzMnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTg5NnEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDQ0OCA0NDhxMTkgMTkgNDUgMTl0NDUgLTE5bDQ0OCAtNDQ4cTE5IC0xOSAxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbnZlbG9wZV9hbHQiIHVuaWNvZGU9IiYjeGYwZTA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiA4MjZ2LTc5NHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTQ3MnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2Nzk0cTQ0IC00OSAxMDEgLTg3cTM2MiAtMjQ2IDQ5NyAtMzQ1cTU3IC00MiA5Mi41IC02NS41dDk0LjUgLTQ4dDExMCAtMjQuNWgxaDFxNTEgMCAxMTAgMjQuNXQ5NC41IDQ4dDkyLjUgNjUuNXExNzAgMTIzIDQ5OCAzNDVxNTcgMzkgMTAwIDg3ek0xNzkyIDExMjBxMCAtNzkgLTQ5IC0xNTF0LTEyMiAtMTIzDQpxLTM3NiAtMjYxIC00NjggLTMyNXEtMTAgLTcgLTQyLjUgLTMwLjV0LTU0IC0zOHQtNTIgLTMyLjV0LTU3LjUgLTI3dC01MCAtOWgtMWgtMXEtMjMgMCAtNTAgOXQtNTcuNSAyN3QtNTIgMzIuNXQtNTQgMzh0LTQyLjUgMzAuNXEtOTEgNjQgLTI2MiAxODIuNXQtMjA1IDE0Mi41cS02MiA0MiAtMTE3IDExNS41dC01NSAxMzYuNXEwIDc4IDQxLjUgMTMwdDExOC41IDUyaDE0NzJxNjUgMCAxMTIuNSAtNDd0NDcuNSAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlua2VkaW4iIHVuaWNvZGU9IiYjeGYwZTE7IiANCmQ9Ik0zNDkgOTExdi05OTFoLTMzMHY5OTFoMzMwek0zNzAgMTIxN3ExIC03MyAtNTAuNSAtMTIydC0xMzUuNSAtNDloLTJxLTgyIDAgLTEzMiA0OXQtNTAgMTIycTAgNzQgNTEuNSAxMjIuNXQxMzQuNSA0OC41dDEzMyAtNDguNXQ1MSAtMTIyLjV6TTE1MzYgNDg4di01NjhoLTMyOXY1MzBxMCAxMDUgLTQwLjUgMTY0LjV0LTEyNi41IDU5LjVxLTYzIDAgLTEwNS41IC0zNC41dC02My41IC04NS41cS0xMSAtMzAgLTExIC04MXYtNTUzaC0zMjkNCnEyIDM5OSAyIDY0N3QtMSAyOTZsLTEgNDhoMzI5di0xNDRoLTJxMjAgMzIgNDEgNTZ0NTYuNSA1MnQ4NyA0My41dDExNC41IDE1LjVxMTcxIDAgMjc1IC0xMTMuNXQxMDQgLTMzMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5kbyIgdW5pY29kZT0iJiN4ZjBlMjsiIA0KZD0iTTE1MzYgNjQwcTAgLTE1NiAtNjEgLTI5OHQtMTY0IC0yNDV0LTI0NSAtMTY0dC0yOTggLTYxcS0xNzIgMCAtMzI3IDcyLjV0LTI2NCAyMDQuNXEtNyAxMCAtNi41IDIyLjV0OC41IDIwLjVsMTM3IDEzOHExMCA5IDI1IDlxMTYgLTIgMjMgLTEycTczIC05NSAxNzkgLTE0N3QyMjUgLTUycTEwNCAwIDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXQtNDAuNSAxOTguNXQtMTA5LjUgMTYzLjUNCnQtMTYzLjUgMTA5LjV0LTE5OC41IDQwLjVxLTk4IDAgLTE4OCAtMzUuNXQtMTYwIC0xMDEuNWwxMzcgLTEzOHEzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgNDIgNDAgNTlxMzkgMTcgNjkgLTE0bDEzMCAtMTI5cTEwNyAxMDEgMjQ0LjUgMTU2LjV0Mjg0LjUgNTUuNXExNTYgMCAyOTggLTYxdDI0NSAtMTY0dDE2NCAtMjQ1dDYxIC0yOTh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsZWdhbCIgdW5pY29kZT0iJiN4ZjBlMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzcxIDBxMCAtNTMgLTM3IC05MGwtMTA3IC0xMDhxLTM5IC0zNyAtOTEgLTM3cS01MyAwIC05MCAzN2wtMzYzIDM2NHEtMzggMzYgLTM4IDkwcTAgNTMgNDMgOTZsLTI1NiAyNTZsLTEyNiAtMTI2cS0xNCAtMTQgLTM0IC0xNHQtMzQgMTRxMiAtMiAxMi41IC0xMnQxMi41IC0xM3QxMCAtMTEuNXQxMCAtMTMuNXQ2IC0xMy41dDUuNSAtMTYuNXQxLjUgLTE4cTAgLTM4IC0yOCAtNjhxLTMgLTMgLTE2LjUgLTE4dC0xOSAtMjAuNQ0KdC0xOC41IC0xNi41dC0yMiAtMTUuNXQtMjIgLTl0LTI2IC00LjVxLTQwIDAgLTY4IDI4bC00MDggNDA4cS0yOCAyOCAtMjggNjhxMCAxMyA0LjUgMjZ0OSAyMnQxNS41IDIydDE2LjUgMTguNXQyMC41IDE5dDE4IDE2LjVxMzAgMjggNjggMjhxMTAgMCAxOCAtMS41dDE2LjUgLTUuNXQxMy41IC02dDEzLjUgLTEwdDExLjUgLTEwdDEzIC0xMi41dDEyIC0xMi41cS0xNCAxNCAtMTQgMzR0MTQgMzRsMzQ4IDM0OHExNCAxNCAzNCAxNHQzNCAtMTQNCnEtMiAyIC0xMi41IDEydC0xMi41IDEzdC0xMCAxMS41dC0xMCAxMy41dC02IDEzLjV0LTUuNSAxNi41dC0xLjUgMThxMCAzOCAyOCA2OHEzIDMgMTYuNSAxOHQxOSAyMC41dDE4LjUgMTYuNXQyMiAxNS41dDIyIDl0MjYgNC41cTQwIDAgNjggLTI4bDQwOCAtNDA4cTI4IC0yOCAyOCAtNjhxMCAtMTMgLTQuNSAtMjZ0LTkgLTIydC0xNS41IC0yMnQtMTYuNSAtMTguNXQtMjAuNSAtMTl0LTE4IC0xNi41cS0zMCAtMjggLTY4IC0yOA0KcS0xMCAwIC0xOCAxLjV0LTE2LjUgNS41dC0xMy41IDZ0LTEzLjUgMTB0LTExLjUgMTB0LTEzIDEyLjV0LTEyIDEyLjVxMTQgLTE0IDE0IC0zNHQtMTQgLTM0bC0xMjYgLTEyNmwyNTYgLTI1NnE0MyA0MyA5NiA0M3E1MiAwIDkxIC0zN2wzNjMgLTM2M3EzNyAtMzkgMzcgLTkxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZGFzaGJvYXJkIiB1bmljb2RlPSImI3hmMGU0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTM4NCAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTU3NiA4MzJxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMDQgMzUxbDEwMSAzODJxNiAyNiAtNy41IDQ4LjV0LTM4LjUgMjkuNQ0KdC00OCAtNi41dC0zMCAtMzkuNWwtMTAxIC0zODJxLTYwIC01IC0xMDcgLTQzLjV0LTYzIC05OC41cS0yMCAtNzcgMjAgLTE0NnQxMTcgLTg5dDE0NiAyMHQ4OSAxMTdxMTYgNjAgLTYgMTE3dC03MiA5MXpNMTY2NCAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMjQgMTAyNHEwIDUzIC0zNy41IDkwLjUNCnQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNDcyIDgzMnEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTc5MiAzODRxMCAtMjYxIC0xNDEgLTQ4M3EtMTkgLTI5IC01NCAtMjloLTE0MDJxLTM1IDAgLTU0IDI5DQpxLTE0MSAyMjEgLTE0MSA0ODNxMCAxODIgNzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudF9hbHQiIHVuaWNvZGU9IiYjeGYwZTU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODk2IDExNTJxLTIwNCAwIC0zODEuNSAtNjkuNXQtMjgyIC0xODcuNXQtMTA0LjUgLTI1NXEwIC0xMTIgNzEuNSAtMjEzLjV0MjAxLjUgLTE3NS41bDg3IC01MGwtMjcgLTk2cS0yNCAtOTEgLTcwIC0xNzJxMTUyIDYzIDI3NSAxNzFsNDMgMzhsNTcgLTZxNjkgLTggMTMwIC04cTIwNCAwIDM4MS41IDY5LjV0MjgyIDE4Ny41dDEwNC41IDI1NXQtMTA0LjUgMjU1dC0yODIgMTg3LjV0LTM4MS41IDY5LjV6TTE3OTIgNjQwDQpxMCAtMTc0IC0xMjAgLTMyMS41dC0zMjYgLTIzM3QtNDUwIC04NS41cS03MCAwIC0xNDUgOHEtMTk4IC0xNzUgLTQ2MCAtMjQycS00OSAtMTQgLTExNCAtMjJoLTVxLTE1IDAgLTI3IDEwLjV0LTE2IDI3LjV2MXEtMyA0IC0wLjUgMTJ0MiAxMHQ0LjUgOS41bDYgOXQ3IDguNXQ4IDlxNyA4IDMxIDM0LjV0MzQuNSAzOHQzMSAzOS41dDMyLjUgNTF0MjcgNTl0MjYgNzZxLTE1NyA4OSAtMjQ3LjUgMjIwdC05MC41IDI4MXEwIDE3NCAxMjAgMzIxLjUNCnQzMjYgMjMzdDQ1MCA4NS41dDQ1MCAtODUuNXQzMjYgLTIzM3QxMjAgLTMyMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudHNfYWx0IiB1bmljb2RlPSImI3hmMGU2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTcwNCAxMTUycS0xNTMgMCAtMjg2IC01MnQtMjExLjUgLTE0MXQtNzguNSAtMTkxcTAgLTgyIDUzIC0xNTh0MTQ5IC0xMzJsOTcgLTU2bC0zNSAtODRxMzQgMjAgNjIgMzlsNDQgMzFsNTMgLTEwcTc4IC0xNCAxNTMgLTE0cTE1MyAwIDI4NiA1MnQyMTEuNSAxNDF0NzguNSAxOTF0LTc4LjUgMTkxdC0yMTEuNSAxNDF0LTI4NiA1MnpNNzA0IDEyODBxMTkxIDAgMzUzLjUgLTY4LjV0MjU2LjUgLTE4Ni41dDk0IC0yNTd0LTk0IC0yNTcNCnQtMjU2LjUgLTE4Ni41dC0zNTMuNSAtNjguNXEtODYgMCAtMTc2IDE2cS0xMjQgLTg4IC0yNzggLTEyOHEtMzYgLTkgLTg2IC0xNmgtM3EtMTEgMCAtMjAuNSA4dC0xMS41IDIxcS0xIDMgLTEgNi41dDAuNSA2LjV0MiA2bDIuNSA1dDMuNSA1LjV0NCA1dDQuNSA1dDQgNC41cTUgNiAyMyAyNXQyNiAyOS41dDIyLjUgMjl0MjUgMzguNXQyMC41IDQ0cS0xMjQgNzIgLTE5NSAxNzd0LTcxIDIyNHEwIDEzOSA5NCAyNTd0MjU2LjUgMTg2LjUNCnQzNTMuNSA2OC41ek0xNTI2IDExMXExMCAtMjQgMjAuNSAtNDR0MjUgLTM4LjV0MjIuNSAtMjl0MjYgLTI5LjV0MjMgLTI1cTEgLTEgNCAtNC41dDQuNSAtNXQ0IC01dDMuNSAtNS41bDIuNSAtNXQyIC02dDAuNSAtNi41dC0xIC02LjVxLTMgLTE0IC0xMyAtMjJ0LTIyIC03cS01MCA3IC04NiAxNnEtMTU0IDQwIC0yNzggMTI4cS05MCAtMTYgLTE3NiAtMTZxLTI3MSAwIC00NzIgMTMycTU4IC00IDg4IC00cTE2MSAwIDMwOSA0NXQyNjQgMTI5DQpxMTI1IDkyIDE5MiAyMTJ0NjcgMjU0cTAgNzcgLTIzIDE1MnExMjkgLTcxIDIwNCAtMTc4dDc1IC0yMzBxMCAtMTIwIC03MSAtMjI0LjV0LTE5NSAtMTc2LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJib2x0IiB1bmljb2RlPSImI3hmMGU3OyIgaG9yaXotYWR2LXg9Ijg5NiIgDQpkPSJNODg1IDk3MHExOCAtMjAgNyAtNDRsLTU0MCAtMTE1N3EtMTMgLTI1IC00MiAtMjVxLTQgMCAtMTQgMnEtMTcgNSAtMjUuNSAxOXQtNC41IDMwbDE5NyA4MDhsLTQwNiAtMTAxcS00IC0xIC0xMiAtMXEtMTggMCAtMzEgMTFxLTE4IDE1IC0xMyAzOWwyMDEgODI1cTQgMTQgMTYgMjN0MjggOWgzMjhxMTkgMCAzMiAtMTIuNXQxMyAtMjkuNXEwIC04IC01IC0xOGwtMTcxIC00NjNsMzk2IDk4cTggMiAxMiAycTE5IDAgMzQgLTE1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2l0ZW1hcCIgdW5pY29kZT0iJiN4ZjBlODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDI4OHYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MzIwcTAgNDAgMjggNjh0NjggMjhoOTZ2MTkyaC01MTJ2LTE5Mmg5NnE0MCAwIDY4IC0yOHQyOCAtNjh2LTMyMHEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDk2djE5MmgtNTEydi0xOTJoOTZxNDAgMCA2OCAtMjh0MjggLTY4di0zMjANCnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDk2djE5MnEwIDUyIDM4IDkwdDkwIDM4aDUxMnYxOTJoLTk2cS00MCAwIC02OCAyOHQtMjggNjh2MzIwcTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTZ2LTE5Mmg1MTJxNTIgMCA5MCAtMzh0MzggLTkwdi0xOTJoOTZxNDAgMCA2OCAtMjh0MjggLTY4DQp6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bWJyZWxsYSIgdW5pY29kZT0iJiN4ZjBlOTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik04OTYgNzA4di01ODBxMCAtMTA0IC03NiAtMTgwdC0xODAgLTc2dC0xODAgNzZ0LTc2IDE4MHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDVxMCAtNTAgMzkgLTg5dDg5IC0zOXQ4OSAzOXQzOSA4OXY1ODBxMzMgMTEgNjQgMTF0NjQgLTExek0xNjY0IDY4MXEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTExIDAgLTIzIDEwcS00OSA0NiAtOTMgNjl0LTEwMiAyM3EtNjggMCAtMTI4IC0zN3QtMTAzIC05Nw0KcS03IC0xMCAtMTcuNSAtMjh0LTE0LjUgLTI0cS0xMSAtMTcgLTI4IC0xN3EtMTggMCAtMjkgMTdxLTQgNiAtMTQuNSAyNHQtMTcuNSAyOHEtNDMgNjAgLTEwMi41IDk3dC0xMjcuNSAzN3QtMTI3LjUgLTM3dC0xMDIuNSAtOTdxLTcgLTEwIC0xNy41IC0yOHQtMTQuNSAtMjRxLTExIC0xNyAtMjkgLTE3cS0xNyAwIC0yOCAxN3EtNCA2IC0xNC41IDI0dC0xNy41IDI4cS00MyA2MCAtMTAzIDk3dC0xMjggMzdxLTU4IDAgLTEwMiAtMjN0LTkzIC02OQ0KcS0xMiAtMTAgLTIzIC0xMHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41cTAgNSAxIDdxNDUgMTgzIDE3Mi41IDMxOS41dDI5OCAyMDQuNXQzNjAuNSA2OHExNDAgMCAyNzQuNSAtNDB0MjQ2LjUgLTExMy41dDE5NC41IC0xODd0MTE1LjUgLTI1MS41cTEgLTIgMSAtN3pNODk2IDE0MDh2LTk4cS00MiAyIC02NCAydC02NCAtMnY5OHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwYXN0ZSIgdW5pY29kZT0iJiN4ZjBlYTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik03NjggLTEyOGg4OTZ2NjQwaC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTM4NHYtMTE1MnpNMTAyNCAxMzEydjY0cTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtNzA0cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtNjRxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg3MDRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTI4MCA2NDBoMjk5bC0yOTkgMjk5di0yOTl6TTE3OTIgNTEydi02NzJxMCAtNDAgLTI4IC02OHQtNjggLTI4DQpoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MGgtNTQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTM0NHEwIDQwIDI4IDY4dDY4IDI4aDEwODhxNDAgMCA2OCAtMjh0MjggLTY4di0zMjhxMjEgLTEzIDM2IC0yOGw0MDggLTQwOHEyOCAtMjggNDggLTc2dDIwIC04OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImxpZ2h0X2J1bGIiIHVuaWNvZGU9IiYjeGYwZWI7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNzM2IDk2MHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjV0LTIyLjUgOS41dC05LjUgMjIuNXEwIDQ2IC01NCA3MXQtMTA2IDI1cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV0OS41IDIyLjV0MjIuNSA5LjVxNTAgMCA5OS41IC0xNnQ4NyAtNTR0MzcuNSAtOTB6TTg5NiA5NjBxMCA3MiAtMzQuNSAxMzR0LTkwIDEwMS41dC0xMjMgNjJ0LTEzNi41IDIyLjV0LTEzNi41IC0yMi41dC0xMjMgLTYydC05MCAtMTAxLjV0LTM0LjUgLTEzNA0KcTAgLTEwMSA2OCAtMTgwcTEwIC0xMSAzMC41IC0zM3QzMC41IC0zM3ExMjggLTE1MyAxNDEgLTI5OGgyMjhxMTMgMTQ1IDE0MSAyOThxMTAgMTEgMzAuNSAzM3QzMC41IDMzcTY4IDc5IDY4IDE4MHpNMTAyNCA5NjBxMCAtMTU1IC0xMDMgLTI2OHEtNDUgLTQ5IC03NC41IC04N3QtNTkuNSAtOTUuNXQtMzQgLTEwNy41cTQ3IC0yOCA0NyAtODJxMCAtMzcgLTI1IC02NHEyNSAtMjcgMjUgLTY0cTAgLTUyIC00NSAtODFxMTMgLTIzIDEzIC00Nw0KcTAgLTQ2IC0zMS41IC03MXQtNzcuNSAtMjVxLTIwIC00NCAtNjAgLTcwdC04NyAtMjZ0LTg3IDI2dC02MCA3MHEtNDYgMCAtNzcuNSAyNXQtMzEuNSA3MXEwIDI0IDEzIDQ3cS00NSAyOSAtNDUgODFxMCAzNyAyNSA2NHEtMjUgMjcgLTI1IDY0cTAgNTQgNDcgODJxLTQgNTAgLTM0IDEwNy41dC01OS41IDk1LjV0LTc0LjUgODdxLTEwMyAxMTMgLTEwMyAyNjhxMCA5OSA0NC41IDE4NC41dDExNyAxNDJ0MTY0IDg5dDE4Ni41IDMyLjUNCnQxODYuNSAtMzIuNXQxNjQgLTg5dDExNyAtMTQydDQ0LjUgLTE4NC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXhjaGFuZ2UiIHVuaWNvZGU9IiYjeGYwZWM7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiAzNTJ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEzNzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTEyIDAgLTI0IDEwbC0zMTkgMzIwcS05IDkgLTkgMjJxMCAxNCA5IDIzbDMyMCAzMjBxOSA5IDIzIDlxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xOTJoMTM3NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgODk2cTAgLTE0IC05IC0yM2wtMzIwIC0zMjBxLTkgLTkgLTIzIC05DQpxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJoLTEzNzZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzc2djE5MnEwIDE0IDkgMjN0MjMgOXExMiAwIDI0IC0xMGwzMTkgLTMxOXE5IC05IDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2xvdWRfZG93bmxvYWQiIHVuaWNvZGU9IiYjeGYwZWQ7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTI4MCA2MDhxMCAxNCAtOSAyM3QtMjMgOWgtMjI0djM1MnEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTE5MnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTM1MmgtMjI0cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXEwIC0xNCA5IC0yM2wzNTIgLTM1MnE5IC05IDIzIC05dDIzIDlsMzUxIDM1MXExMCAxMiAxMCAyNHpNMTkyMCAzODRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtMTA4OA0KcS0xODUgMCAtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTMwIDcwIDI0MHQxODggMTY1cS0yIDMwIC0yIDQzcTAgMjEyIDE1MCAzNjJ0MzYyIDE1MHExNTYgMCAyODUuNSAtODd0MTg4LjUgLTIzMXE3MSA2MiAxNjYgNjJxMTA2IDAgMTgxIC03NXQ3NSAtMTgxcTAgLTc2IC00MSAtMTM4cTEzMCAtMzEgMjEzLjUgLTEzNS41dDgzLjUgLTIzOC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2xvdWRfdXBsb2FkIiB1bmljb2RlPSImI3hmMGVlOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTEyODAgNjcycTAgMTQgLTkgMjNsLTM1MiAzNTJxLTkgOSAtMjMgOXQtMjMgLTlsLTM1MSAtMzUxcS0xMCAtMTIgLTEwIC0yNHEwIC0xNCA5IC0yM3QyMyAtOWgyMjR2LTM1MnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE5MnExMyAwIDIyLjUgOS41dDkuNSAyMi41djM1MmgyMjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTkyMCAzODRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtMTA4OA0KcS0xODUgMCAtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTMwIDcwIDI0MHQxODggMTY1cS0yIDMwIC0yIDQzcTAgMjEyIDE1MCAzNjJ0MzYyIDE1MHExNTYgMCAyODUuNSAtODd0MTg4LjUgLTIzMXE3MSA2MiAxNjYgNjJxMTA2IDAgMTgxIC03NXQ3NSAtMTgxcTAgLTc2IC00MSAtMTM4cTEzMCAtMzEgMjEzLjUgLTEzNS41dDgzLjUgLTIzOC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idXNlcl9tZCIgdW5pY29kZT0iJiN4ZjBmMDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0zODQgMTkycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTE0MDggMTMxcTAgLTEyMSAtNzMgLTE5MHQtMTk0IC02OWgtODc0cS0xMjEgMCAtMTk0IDY5dC03MyAxOTBxMCA2OCA1LjUgMTMxdDI0IDEzOHQ0Ny41IDEzMi41dDgxIDEwM3QxMjAgNjAuNXEtMjIgLTUyIC0yMiAtMTIwdi0yMDNxLTU4IC0yMCAtOTMgLTcwdC0zNSAtMTExcTAgLTgwIDU2IC0xMzZ0MTM2IC01Ng0KdDEzNiA1NnQ1NiAxMzZxMCA2MSAtMzUuNSAxMTF0LTkyLjUgNzB2MjAzcTAgNjIgMjUgOTNxMTMyIC0xMDQgMjk1IC0xMDR0Mjk1IDEwNHEyNSAtMzEgMjUgLTkzdi02NHEtMTA2IDAgLTE4MSAtNzV0LTc1IC0xODF2LTg5cS0zMiAtMjkgLTMyIC03MXEwIC00MCAyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4cTAgNDIgLTMyIDcxdjg5cTAgNTIgMzggOTB0OTAgMzh0OTAgLTM4dDM4IC05MHYtODlxLTMyIC0yOSAtMzIgLTcxcTAgLTQwIDI4IC02OA0KdDY4IC0yOHQ2OCAyOHQyOCA2OHEwIDQyIC0zMiA3MXY4OXEwIDY4IC0zNC41IDEyNy41dC05My41IDkzLjVxMCAxMCAwLjUgNDIuNXQwIDQ4dC0yLjUgNDEuNXQtNyA0N3QtMTMgNDBxNjggLTE1IDEyMCAtNjAuNXQ4MSAtMTAzdDQ3LjUgLTEzMi41dDI0IC0xMzh0NS41IC0xMzF6TTEwODggMTAyNHEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41dC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjUNCnQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RldGhvc2NvcGUiIHVuaWNvZGU9IiYjeGYwZjE7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMTI4MCA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNDA4IDgzMnEwIC02MiAtMzUuNSAtMTExdC05Mi41IC03MHYtMzk1cTAgLTE1OSAtMTMxLjUgLTI3MS41dC0zMTYuNSAtMTEyLjV0LTMxNi41IDExMi41dC0xMzEuNSAyNzEuNXYxMzJxLTE2NCAyMCAtMjc0IDEyOHQtMTEwIDI1MnY1MTJxMCAyNiAxOSA0NXQ0NSAxOXE2IDAgMTYgLTJxMTcgMzAgNDcgNDgNCnQ2NSAxOHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXQtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXEtMzMgMCAtNjQgMTh2LTQwMnEwIC0xMDYgOTQgLTE4MXQyMjYgLTc1dDIyNiA3NXQ5NCAxODF2NDAycS0zMSAtMTggLTY0IC0xOHEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXEzNSAwIDY1IC0xOHQ0NyAtNDhxMTAgMiAxNiAycTI2IDAgNDUgLTE5dDE5IC00NXYtNTEycTAgLTE0NCAtMTEwIC0yNTINCnQtMjc0IC0xMjh2LTEzMnEwIC0xMDYgOTQgLTE4MXQyMjYgLTc1dDIyNiA3NXQ5NCAxODF2Mzk1cS01NyAyMSAtOTIuNSA3MHQtMzUuNSAxMTFxMCA4MCA1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN1aXRjYXNlIiB1bmljb2RlPSImI3hmMGYyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTY0MCAxMTUyaDUxMnYxMjhoLTUxMnYtMTI4ek0yODggMTE1MnYtMTI4MGgtNjRxLTkyIDAgLTE1OCA2NnQtNjYgMTU4djgzMnEwIDkyIDY2IDE1OHQxNTggNjZoNjR6TTE0MDggMTE1MnYtMTI4MGgtMTAyNHYxMjgwaDEyOHYxNjBxMCA0MCAyOCA2OHQ2OCAyOGg1NzZxNDAgMCA2OCAtMjh0MjggLTY4di0xNjBoMTI4ek0xNzkyIDkyOHYtODMycTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC02NHYxMjgwaDY0cTkyIDAgMTU4IC02Ng0KdDY2IC0xNTh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJiZWxsX2FsdCIgdW5pY29kZT0iJiN4ZjBmMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05MTIgLTE2MHEwIDE2IC0xNiAxNnEtNTkgMCAtMTAxLjUgNDIuNXQtNDIuNSAxMDEuNXEwIDE2IC0xNiAxNnQtMTYgLTE2cTAgLTczIDUxLjUgLTEyNC41dDEyNC41IC01MS41cTE2IDAgMTYgMTZ6TTE3MjggMTI4cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNDQ4cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTQ0OHEtNTIgMCAtOTAgMzh0LTM4IDkwcTUwIDQyIDkxIDg4dDg1IDExOS41dDc0LjUgMTU4LjUNCnQ1MCAyMDZ0MTkuNSAyNjBxMCAxNTIgMTE3IDI4Mi41dDMwNyAxNTguNXEtOCAxOSAtOCAzOXEwIDQwIDI4IDY4dDY4IDI4dDY4IC0yOHQyOCAtNjhxMCAtMjAgLTggLTM5cTE5MCAtMjggMzA3IC0xNTguNXQxMTcgLTI4Mi41cTAgLTEzOSAxOS41IC0yNjB0NTAgLTIwNnQ3NC41IC0xNTguNXQ4NSAtMTE5LjV0OTEgLTg4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29mZmVlIiB1bmljb2RlPSImI3hmMGY0OyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTE2NjQgODk2cTAgODAgLTU2IDEzNnQtMTM2IDU2aC02NHYtMzg0aDY0cTgwIDAgMTM2IDU2dDU2IDEzNnpNMCAxMjhoMTc5MnEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzVoLTEyODBxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXpNMTg1NiA4OTZxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtNjR2LTMycTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC03MDRxLTkyIDAgLTE1OCA2NnQtNjYgMTU4djczNnEwIDI2IDE5IDQ1DQp0NDUgMTloMTE1MnExNTkgMCAyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9vZCIgdW5pY29kZT0iJiN4ZjBmNTsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik02NDAgMTQ3MnYtNjQwcTAgLTYxIC0zNS41IC0xMTF0LTkyLjUgLTcwdi03NzlxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0xMjhxLTUyIDAgLTkwIDM4dC0zOCA5MHY3NzlxLTU3IDIwIC05Mi41IDcwdC0zNS41IDExMXY2NDBxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di00MTZxMCAtMjYgMTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXY0MTZxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di00MTZxMCAtMjYgMTkgLTQ1DQp0NDUgLTE5dDQ1IDE5dDE5IDQ1djQxNnEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTE0MDggMTQ3MnYtMTYwMHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTEyOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjUxMmgtMjI0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2ODAwcTAgMTMyIDk0IDIyNnQyMjYgOTRoMjU2cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZpbGVfdGV4dF9hbHQiIHVuaWNvZGU9IiYjeGYwZjY7IiANCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgweg0KTTM4NCA3MzZxMCAxNCA5IDIzdDIzIDloNzA0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTcwNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHpNMTEyMCA1MTJxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNzA0cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDcwNHpNMTEyMCAyNTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNzA0DQpxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNzA0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnVpbGRpbmciIHVuaWNvZGU9IiYjeGYwZjc7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMzg0IDIyNHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgNDgwdi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNNjQwIDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNMTE1MiAyMjR2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNODk2IDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTY0MCA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDk5MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTExNTIgNDgwdi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTg5NiA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoNCk02NDAgOTkydi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTM4NCAxMjQ4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNMTE1MiA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNODk2IDk5MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTY0MCAxMjQ4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgOTkydi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNODk2IDEyNDh2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTE1MiAxMjQ4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNODk2IC0xMjhoMzg0djE1MzZoLTExNTJ2LTE1MzZoMzg0djIyNHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDMyMHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTIyNHpNMTQwOCAxNDcydi0xNjY0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djE2NjRxMCAyNiAxOSA0NXQ0NSAxOWgxMjgwcTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imhvc3BpdGFsIiB1bmljb2RlPSImI3hmMGY4OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTM4NCAyMjR2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTY0MCA0ODB2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTExNTIgMjI0di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTg5NiA0ODB2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoNCk02NDAgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgNDgwdi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNODk2IDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xMTUyIDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTg5NiAtMTI4aDM4NHYxMTUyaC0yNTZ2LTMycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtNDQ4cS00MCAwIC02OCAyOHQtMjggNjh2MzJoLTI1NnYtMTE1MmgzODR2MjI0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzIwcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMjI0ek04OTYgMTA1NnYzMjBxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC02NHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2aC0xMjh2OTZxMCAxMyAtOS41IDIyLjUNCnQtMjIuNSA5LjVoLTY0cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtMzIwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoNjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXY5NmgxMjh2LTk2cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoNjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTQwOCAxMDg4di0xMjgwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyODBxMCAyNiAxOSA0NXQ0NSAxOWgzMjANCnYyODhxMCA0MCAyOCA2OHQ2OCAyOGg0NDhxNDAgMCA2OCAtMjh0MjggLTY4di0yODhoMzIwcTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFtYnVsYW5jZSIgdW5pY29kZT0iJiN4ZjBmOTsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik02NDAgMTI4cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0yNTYgNjQwaDM4NHYyNTZoLTE1OHEtMTQgLTIgLTIyIC05bC0xOTUgLTE5NXEtNyAtMTIgLTkgLTIydi0zMHpNMTUzNiAxMjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41DQp0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTY2NCA4MDB2MTkycTAgMTQgLTkgMjN0LTIzIDloLTIyNHYyMjRxMCAxNCAtOSAyM3QtMjMgOWgtMTkycS0xNCAwIC0yMyAtOXQtOSAtMjN2LTIyNGgtMjI0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgyMjR2LTIyNHEwIC0xNCA5IC0yM3QyMyAtOWgxOTJxMTQgMCAyMyA5dDkgMjN2MjI0aDIyNHExNCAwIDIzIDl0OSAyM3pNMTkyMCAxMzQ0di0xMTUyDQpxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xOTJxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODEgNzV0LTc1IDE4MWgtMzg0cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5djQxNnEwIDI2IDEzIDU4dDMyIDUxbDE5OCAxOThxMTkgMTkgNTEgMzJ0NTggMTNoMTYwdjMyMHEwIDI2IDE5IDQ1dDQ1IDE5aDExNTJxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWVka2l0IiB1bmljb2RlPSImI3hmMGZhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyODAgNDE2djE5MnEwIDE0IC05IDIzdC0yMyA5aC0yMjR2MjI0cTAgMTQgLTkgMjN0LTIzIDloLTE5MnEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yMjRoLTIyNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMjI0di0yMjRxMCAtMTQgOSAtMjN0MjMgLTloMTkycTE0IDAgMjMgOXQ5IDIzdjIyNGgyMjRxMTQgMCAyMyA5dDkgMjN6TTY0MCAxMTUyaDUxMnYxMjhoLTUxMnYtMTI4ek0yNTYgMTE1MnYtMTI4MGgtMzINCnEtOTIgMCAtMTU4IDY2dC02NiAxNTh2ODMycTAgOTIgNjYgMTU4dDE1OCA2NmgzMnpNMTQ0MCAxMTUydi0xMjgwaC0xMDg4djEyODBoMTYwdjE2MHEwIDQwIDI4IDY4dDY4IDI4aDU3NnE0MCAwIDY4IC0yOHQyOCAtNjh2LTE2MGgxNjB6TTE3OTIgOTI4di04MzJxMCAtOTIgLTY2IC0xNTh0LTE1OCAtNjZoLTMydjEyODBoMzJxOTIgMCAxNTggLTY2dDY2IC0xNTh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmaWdodGVyX2pldCIgdW5pY29kZT0iJiN4ZjBmYjsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xOTIwIDU3NnEtMSAtMzIgLTI4OCAtOTZsLTM1MiAtMzJsLTIyNCAtNjRoLTY0bC0yOTMgLTM1Mmg2OXEyNiAwIDQ1IC00LjV0MTkgLTExLjV0LTE5IC0xMS41dC00NSAtNC41aC05NmgtMTYwaC02NHYzMmg2NHY0MTZoLTE2MGwtMTkyIC0yMjRoLTk2bC0zMiAzMnYxOTJoMzJ2MzJoMTI4djhsLTE5MiAyNHYxMjhsMTkyIDI0djhoLTEyOHYzMmgtMzJ2MTkybDMyIDMyaDk2bDE5MiAtMjI0aDE2MHY0MTZoLTY0djMyaDY0aDE2MGg5Ng0KcTI2IDAgNDUgLTQuNXQxOSAtMTEuNXQtMTkgLTExLjV0LTQ1IC00LjVoLTY5bDI5MyAtMzUyaDY0bDIyNCAtNjRsMzUyIC0zMnExMjggLTI4IDIwMCAtNTJ0ODAgLTM0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmVlciIgdW5pY29kZT0iJiN4ZjBmYzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik02NDAgNjQwdjM4NGgtMjU2di0yNTZxMCAtNTMgMzcuNSAtOTAuNXQ5MC41IC0zNy41aDEyOHpNMTY2NCAxOTJ2LTE5MmgtMTE1MnYxOTJsMTI4IDE5MmgtMTI4cS0xNTkgMCAtMjcxLjUgMTEyLjV0LTExMi41IDI3MS41djMyMGwtNjQgNjRsMzIgMTI4aDQ4MGwzMiAxMjhoOTYwbDMyIC0xOTJsLTY0IC0zMnYtODAweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaF9zaWduIiB1bmljb2RlPSImI3hmMGZkOyIgDQpkPSJNMTI4MCAxOTJ2ODk2cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMzIwaC01MTJ2MzIwcTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtODk2cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV2MzIwaDUxMnYtMzIwcTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgMTEyMHYtOTYwDQpxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMGZlIiB1bmljb2RlPSImI3hmMGZlOyIgDQpkPSJNMTI4MCA1NzZ2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMzIwdjMyMHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTMyMGgtMzIwcS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMzIwdi0zMjBxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXYzMjBoMzIwcTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgMTEyMHYtOTYwDQpxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3VibGVfYW5nbGVfbGVmdCIgdW5pY29kZT0iJiN4ZjEwMDsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik02MjcgMTYwcTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMzkzIC0zOTNsMzkzIC0zOTNxMTAgLTEwIDEwIC0yM3pNMTAxMSAxNjBxMCAtMTMgLTEwIC0yM2wtNTAgLTUwcS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTQ2NiA0NjZxLTEwIDEwIC0xMCAyMw0KdDEwIDIzbDQ2NiA0NjZxMTAgMTAgMjMgMTB0MjMgLTEwbDUwIC01MHExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTM5MyAtMzkzbDM5MyAtMzkzcTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3VibGVfYW5nbGVfcmlnaHQiIHVuaWNvZGU9IiYjeGYxMDE7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNTk1IDU3NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDM5MyAzOTNsLTM5MyAzOTNxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsNDY2IC00NjZxMTAgLTEwIDEwIC0yM3pNOTc5IDU3NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzDQpsMzkzIDM5M2wtMzkzIDM5M3EtMTAgMTAgLTEwIDIzdDEwIDIzbDUwIDUwcTEwIDEwIDIzIDEwdDIzIC0xMGw0NjYgLTQ2NnExMCAtMTAgMTAgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZG91YmxlX2FuZ2xlX3VwIiB1bmljb2RlPSImI3hmMTAyOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTEwNzUgMjI0cTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0zOTMgMzkzbC0zOTMgLTM5M3EtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDQ2NiA0NjZxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN6TTEwNzUgNjA4cTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0zOTMgMzkzbC0zOTMgLTM5Mw0KcS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTUwIDUwcS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNDY2IC00NjZxMTAgLTEwIDEwIC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImRvdWJsZV9hbmdsZV9kb3duIiB1bmljb2RlPSImI3hmMTAzOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTEwNzUgNjcycTAgLTEzIC0xMCAtMjNsLTQ2NiAtNDY2cS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTQ2NiA0NjZxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsMzkzIC0zOTNsMzkzIDM5M3ExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN6TTEwNzUgMTA1NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjMNCnQxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsMzkzIC0zOTNsMzkzIDM5M3ExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbmdsZV9sZWZ0IiB1bmljb2RlPSImI3hmMTA0OyIgaG9yaXotYWR2LXg9IjY0MCIgDQpkPSJNNjI3IDk5MnEwIC0xMyAtMTAgLTIzbC0zOTMgLTM5M2wzOTMgLTM5M3ExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbmdsZV9yaWdodCIgdW5pY29kZT0iJiN4ZjEwNTsiIGhvcml6LWFkdi14PSI2NDAiIA0KZD0iTTU5NSA1NzZxMCAtMTMgLTEwIC0yM2wtNDY2IC00NjZxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtNTAgNTBxLTEwIDEwIC0xMCAyM3QxMCAyM2wzOTMgMzkzbC0zOTMgMzkzcS0xMCAxMCAtMTAgMjN0MTAgMjNsNTAgNTBxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbmdsZV91cCIgdW5pY29kZT0iJiN4ZjEwNjsiIGhvcml6LWFkdi14PSIxMTUyIiANCmQ9Ik0xMDc1IDM1MnEwIC0xMyAtMTAgLTIzbC01MCAtNTBxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMzkzIDM5M2wtMzkzIC0zOTNxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtNTAgNTBxLTEwIDEwIC0xMCAyM3QxMCAyM2w0NjYgNDY2cTEwIDEwIDIzIDEwdDIzIC0xMGw0NjYgLTQ2NnExMCAtMTAgMTAgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYW5nbGVfZG93biIgdW5pY29kZT0iJiN4ZjEwNzsiIGhvcml6LWFkdi14PSIxMTUyIiANCmQ9Ik0xMDc1IDgwMHEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNTAgNTBxMTAgMTAgMjMgMTB0MjMgLTEwbDM5MyAtMzkzbDM5MyAzOTNxMTAgMTAgMjMgMTB0MjMgLTEwbDUwIC01MHExMCAtMTAgMTAgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZGVza3RvcCIgdW5pY29kZT0iJiN4ZjEwODsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xNzkyIDU0NHY4MzJxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC0xNjAwcS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtODMycTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTYwMHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xOTIwIDEzNzZ2LTEwODhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTU0NHEwIC0zNyAxNiAtNzcuNXQzMiAtNzF0MTYgLTQzLjVxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5DQp0LTE5IDQ1cTAgMTQgMTYgNDR0MzIgNzB0MTYgNzhoLTU0NHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTYwMHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImxhcHRvcCIgdW5pY29kZT0iJiN4ZjEwOTsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik00MTYgMjU2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y3MDRxMCA2NiA0NyAxMTN0MTEzIDQ3aDEwODhxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTcwNHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTA4OHpNMzg0IDExMjB2LTcwNHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDEwODhxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXY3MDRxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC0xMDg4cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXoNCk0xNzYwIDE5MmgxNjB2LTk2cTAgLTQwIC00NyAtNjh0LTExMyAtMjhoLTE2MDBxLTY2IDAgLTExMyAyOHQtNDcgNjh2OTZoMTYwaDE2MDB6TTEwNDAgOTZxMTYgMCAxNiAxNnQtMTYgMTZoLTE2MHEtMTYgMCAtMTYgLTE2dDE2IC0xNmgxNjB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0YWJsZXQiIHVuaWNvZGU9IiYjeGYxMGE7IiBob3Jpei1hZHYteD0iMTE1MiIgDQpkPSJNNjQwIDEyOHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTEwMjQgMjg4djk2MHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTgzMnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2MHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDgzMnExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xMTUyIDEyNDh2LTEwODhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTgzMg0KcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2g4MzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtb2JpbGVfcGhvbmUiIHVuaWNvZGU9IiYjeGYxMGI7IiBob3Jpei1hZHYteD0iNzY4IiANCmQ9Ik00NjQgMTI4cTAgMzMgLTIzLjUgNTYuNXQtNTYuNSAyMy41dC01Ni41IC0yMy41dC0yMy41IC01Ni41dDIzLjUgLTU2LjV0NTYuNSAtMjMuNXQ1Ni41IDIzLjV0MjMuNSA1Ni41ek02NzIgMjg4djcwNHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTUxMnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTcwNHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDUxMnExMyAwIDIyLjUgOS41dDkuNSAyMi41ek00ODAgMTEzNg0KcTAgMTYgLTE2IDE2aC0xNjBxLTE2IDAgLTE2IC0xNnQxNiAtMTZoMTYwcTE2IDAgMTYgMTZ6TTc2OCAxMTUydi0xMDI0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNTEycS01MiAwIC05MCAzOHQtMzggOTB2MTAyNHEwIDUyIDM4IDkwdDkwIDM4aDUxMnE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaXJjbGVfYmxhbmsiIHVuaWNvZGU9IiYjeGYxMGM7IiANCmQ9Ik03NjggMTE4NHEtMTQ4IDAgLTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzN0LTczIDI3M3QtMTk4IDE5OHQtMjczIDczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwMw0KdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icXVvdGVfbGVmdCIgdW5pY29kZT0iJiN4ZjEwZDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik03NjggNTc2di0zODRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZoLTM4NHEtODAgMCAtMTM2IDU2dC01NiAxMzZ2NzA0cTAgMTA0IDQwLjUgMTk4LjV0MTA5LjUgMTYzLjV0MTYzLjUgMTA5LjV0MTk4LjUgNDAuNWg2NHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTY0cS0xMDYgMCAtMTgxIC03NXQtNzUgLTE4MXYtMzJxMCAtNDAgMjggLTY4dDY4IC0yOGgyMjRxODAgMCAxMzYgLTU2dDU2IC0xMzZ6DQpNMTY2NCA1NzZ2LTM4NHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NmgtMzg0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnY3MDRxMCAxMDQgNDAuNSAxOTguNXQxMDkuNSAxNjMuNXQxNjMuNSAxMDkuNXQxOTguNSA0MC41aDY0cTI2IDAgNDUgLTE5dDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNjRxLTEwNiAwIC0xODEgLTc1dC03NSAtMTgxdi0zMnEwIC00MCAyOCAtNjh0NjggLTI4aDIyNHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InF1b3RlX3JpZ2h0IiB1bmljb2RlPSImI3hmMTBlOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTc2OCAxMjE2di03MDRxMCAtMTA0IC00MC41IC0xOTguNXQtMTA5LjUgLTE2My41dC0xNjMuNSAtMTA5LjV0LTE5OC41IC00MC41aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDY0cTEwNiAwIDE4MSA3NXQ3NSAxODF2MzJxMCA0MCAtMjggNjh0LTY4IDI4aC0yMjRxLTgwIDAgLTEzNiA1NnQtNTYgMTM2djM4NHEwIDgwIDU2IDEzNnQxMzYgNTZoMzg0cTgwIDAgMTM2IC01NnQ1NiAtMTM2ek0xNjY0IDEyMTYNCnYtNzA0cTAgLTEwNCAtNDAuNSAtMTk4LjV0LTEwOS41IC0xNjMuNXQtMTYzLjUgLTEwOS41dC0xOTguNSAtNDAuNWgtNjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWg2NHExMDYgMCAxODEgNzV0NzUgMTgxdjMycTAgNDAgLTI4IDY4dC02OCAyOGgtMjI0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnYzODRxMCA4MCA1NiAxMzZ0MTM2IDU2aDM4NHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNwaW5uZXIiIHVuaWNvZGU9IiYjeGYxMTA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNTI2IDE0MnEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXEtNTIgMCAtOTAgMzh0LTM4IDkwcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTEwMjQgLTY0cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMzIwIDY0MHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNQ0KdC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTUyMiAxNDJxMCAtNTIgLTM4IC05MHQtOTAgLTM4cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNNTU4IDExMzhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDd0LTExMyA0N3QtNDcgMTEzdDQ3IDExM3QxMTMgNDd0MTEzIC00N3Q0NyAtMTEzeg0KTTE3MjggNjQwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTA4OCAxMzQ0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMTYxOCAxMTM4cTAgLTkzIC02NiAtMTU4LjV0LTE1OCAtNjUuNXEtOTMgMCAtMTU4LjUgNjUuNXQtNjUuNSAxNTguNQ0KcTAgOTIgNjUuNSAxNTh0MTU4LjUgNjZxOTIgMCAxNTggLTY2dDY2IC0xNTh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaXJjbGUiIHVuaWNvZGU9IiYjeGYxMTE7IiANCmQ9Ik0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJlcGx5IiB1bmljb2RlPSImI3hmMTEyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNDE2cTAgLTE2NiAtMTI3IC00NTFxLTMgLTcgLTEwLjUgLTI0dC0xMy41IC0zMHQtMTMgLTIycS0xMiAtMTcgLTI4IC0xN3EtMTUgMCAtMjMuNSAxMHQtOC41IDI1cTAgOSAyLjUgMjYuNXQyLjUgMjMuNXE1IDY4IDUgMTIzcTAgMTAxIC0xNy41IDE4MXQtNDguNSAxMzguNXQtODAgMTAxdC0xMDUuNSA2OS41dC0xMzMgNDIuNXQtMTU0IDIxLjV0LTE3NS41IDZoLTIyNHYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTkNCmwtNTEyIDUxMnEtMTkgMTkgLTE5IDQ1dDE5IDQ1bDUxMiA1MTJxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXYtMjU2aDIyNHE3MTMgMCA4NzUgLTQwM3E1MyAtMTM0IDUzIC0zMzN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnaXRodWJfYWx0IiB1bmljb2RlPSImI3hmMTEzOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTY0MCAzMjBxMCAtNDAgLTEyLjUgLTgydC00MyAtNzZ0LTcyLjUgLTM0dC03Mi41IDM0dC00MyA3NnQtMTIuNSA4MnQxMi41IDgydDQzIDc2dDcyLjUgMzR0NzIuNSAtMzR0NDMgLTc2dDEyLjUgLTgyek0xMjgwIDMyMHEwIC00MCAtMTIuNSAtODJ0LTQzIC03NnQtNzIuNSAtMzR0LTcyLjUgMzR0LTQzIDc2dC0xMi41IDgydDEyLjUgODJ0NDMgNzZ0NzIuNSAzNHQ3Mi41IC0zNHQ0MyAtNzZ0MTIuNSAtODJ6TTE0NDAgMzIwDQpxMCAxMjAgLTY5IDIwNHQtMTg3IDg0cS00MSAwIC0xOTUgLTIxcS03MSAtMTEgLTE1NyAtMTF0LTE1NyAxMXEtMTUyIDIxIC0xOTUgMjFxLTExOCAwIC0xODcgLTg0dC02OSAtMjA0cTAgLTg4IDMyIC0xNTMuNXQ4MSAtMTAzdDEyMiAtNjB0MTQwIC0yOS41dDE0OSAtN2gxNjhxODIgMCAxNDkgN3QxNDAgMjkuNXQxMjIgNjB0ODEgMTAzdDMyIDE1My41ek0xNjY0IDQ5NnEwIC0yMDcgLTYxIC0zMzFxLTM4IC03NyAtMTA1LjUgLTEzM3QtMTQxIC04Ng0KdC0xNzAgLTQ3LjV0LTE3MS41IC0yMnQtMTY3IC00LjVxLTc4IDAgLTE0MiAzdC0xNDcuNSAxMi41dC0xNTIuNSAzMHQtMTM3IDUxLjV0LTEyMSA4MXQtODYgMTE1cS02MiAxMjMgLTYyIDMzMXEwIDIzNyAxMzYgMzk2cS0yNyA4MiAtMjcgMTcwcTAgMTE2IDUxIDIxOHExMDggMCAxOTAgLTM5LjV0MTg5IC0xMjMuNXExNDcgMzUgMzA5IDM1cTE0OCAwIDI4MCAtMzJxMTA1IDgyIDE4NyAxMjF0MTg5IDM5cTUxIC0xMDIgNTEgLTIxOA0KcTAgLTg3IC0yNyAtMTY4cTEzNiAtMTYwIDEzNiAtMzk4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9sZGVyX2Nsb3NlX2FsdCIgdW5pY29kZT0iJiN4ZjExNDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNTM2IDIyNHY3MDRxMCA0MCAtMjggNjh0LTY4IDI4aC03MDRxLTQwIDAgLTY4IDI4dC0yOCA2OHY2NHEwIDQwIC0yOCA2OHQtNjggMjhoLTMyMHEtNDAgMCAtNjggLTI4dC0yOCAtNjh2LTk2MHEwIC00MCAyOCAtNjh0NjggLTI4aDEyMTZxNDAgMCA2OCAyOHQyOCA2OHpNMTY2NCA5Mjh2LTcwNHEwIC05MiAtNjYgLTE1OHQtMTU4IC02NmgtMTIxNnEtOTIgMCAtMTU4IDY2dC02NiAxNTh2OTYwcTAgOTIgNjYgMTU4dDE1OCA2NmgzMjANCnE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNjcycTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9sZGVyX29wZW5fYWx0IiB1bmljb2RlPSImI3hmMTE1OyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTE3ODEgNjA1cTAgMzUgLTUzIDM1aC0xMDg4cS00MCAwIC04NS41IC0yMS41dC03MS41IC01Mi41bC0yOTQgLTM2M3EtMTggLTI0IC0xOCAtNDBxMCAtMzUgNTMgLTM1aDEwODhxNDAgMCA4NiAyMnQ3MSA1M2wyOTQgMzYzcTE4IDIyIDE4IDM5ek02NDAgNzY4aDc2OHYxNjBxMCA0MCAtMjggNjh0LTY4IDI4aC01NzZxLTQwIDAgLTY4IDI4dC0yOCA2OHY2NHEwIDQwIC0yOCA2OHQtNjggMjhoLTMyMHEtNDAgMCAtNjggLTI4dC0yOCAtNjgNCnYtODUzbDI1NiAzMTVxNDQgNTMgMTE2IDg3LjV0MTQwIDM0LjV6TTE5MDkgNjA1cTAgLTYyIC00NiAtMTIwbC0yOTUgLTM2M3EtNDMgLTUzIC0xMTYgLTg3LjV0LTE0MCAtMzQuNWgtMTA4OHEtOTIgMCAtMTU4IDY2dC02NiAxNTh2OTYwcTAgOTIgNjYgMTU4dDE1OCA2NmgzMjBxOTIgMCAxNTggLTY2dDY2IC0xNTh2LTMyaDU0NHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMTYwaDE5MnE1NCAwIDk5IC0yNC41dDY3IC03MC41cTE1IC0zMiAxNSAtNjh6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImV4cGFuZF9hbHQiIHVuaWNvZGU9IiYjeGYxMTY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29sbGFwc2VfYWx0IiB1bmljb2RlPSImI3hmMTE3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNtaWxlIiB1bmljb2RlPSImI3hmMTE4OyIgDQpkPSJNMTEzNCA0NjFxLTM3IC0xMjEgLTEzOCAtMTk1dC0yMjggLTc0dC0yMjggNzR0LTEzOCAxOTVxLTggMjUgNCA0OC41dDM4IDMxLjVxMjUgOCA0OC41IC00dDMxLjUgLTM4cTI1IC04MCA5Mi41IC0xMjkuNXQxNTEuNSAtNDkuNXQxNTEuNSA0OS41dDkyLjUgMTI5LjVxOCAyNiAzMiAzOHQ0OSA0dDM3IC0zMS41dDQgLTQ4LjV6TTY0MCA4OTZxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41DQp0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTExNTIgODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTQwOCA2NDBxMCAxMzAgLTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF0LTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41DQp0NTEgLTI0OC41dDEzNi41IC0yMDR0MjA0IC0xMzYuNXQyNDguNSAtNTF0MjQ4LjUgNTF0MjA0IDEzNi41dDEzNi41IDIwNHQ1MSAyNDguNXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmcm93biIgdW5pY29kZT0iJiN4ZjExOTsiIA0KZD0iTTExMzQgMzA3cTggLTI1IC00IC00OC41dC0zNyAtMzEuNXQtNDkgNHQtMzIgMzhxLTI1IDgwIC05Mi41IDEyOS41dC0xNTEuNSA0OS41dC0xNTEuNSAtNDkuNXQtOTIuNSAtMTI5LjVxLTggLTI2IC0zMS41IC0zOHQtNDguNSAtNHEtMjYgOCAtMzggMzEuNXQtNCA0OC41cTM3IDEyMSAxMzggMTk1dDIyOCA3NHQyMjggLTc0dDEzOCAtMTk1ek02NDAgODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjUNCnQtMzcuNSA5MC41dDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xMTUyIDg5NnEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE0MDggNjQwcTAgMTMwIC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxdC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDQNCnQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWVoIiB1bmljb2RlPSImI3hmMTFhOyIgDQpkPSJNMTE1MiA0NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NDBxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWg2NDBxMjYgMCA0NSAtMTl0MTkgLTQ1ek02NDAgODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTE1MiA4OTZxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNQ0KdC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE0MDggNjQwcTAgMTMwIC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxdC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDR0LTUxIC0yNDguNXQ1MSAtMjQ4LjV0MTM2LjUgLTIwNHQyMDQgLTEzNi41dDI0OC41IC01MXQyNDguNSA1MXQyMDQgMTM2LjV0MTM2LjUgMjA0dDUxIDI0OC41ek0xNTM2IDY0MA0KcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2FtZXBhZCIgdW5pY29kZT0iJiN4ZjExYjsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik04MzIgNDQ4djEyOHEwIDE0IC05IDIzdC0yMyA5aC0xOTJ2MTkycTAgMTQgLTkgMjN0LTIzIDloLTEyOHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJoLTE5MnEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xMjhxMCAtMTQgOSAtMjN0MjMgLTloMTkydi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMTI4cTE0IDAgMjMgOXQ5IDIzdjE5MmgxOTJxMTQgMCAyMyA5dDkgMjN6TTE0MDggMzg0cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41DQp0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE2NjQgNjQwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xOTIwIDUxMnEwIC0yMTIgLTE1MCAtMzYydC0zNjIgLTE1MHEtMTkyIDAgLTMzOCAxMjhoLTIyMHEtMTQ2IC0xMjggLTMzOCAtMTI4cS0yMTIgMCAtMzYyIDE1MA0KdC0xNTAgMzYydDE1MCAzNjJ0MzYyIDE1MGg4OTZxMjEyIDAgMzYyIC0xNTB0MTUwIC0zNjJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJrZXlib2FyZCIgdW5pY29kZT0iJiN4ZjExYzsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0zODQgMzY4di05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNNTEyIDYyNHYtOTZxMCAtMTYgLTE2IC0xNmgtMjI0cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDIyNHExNiAwIDE2IC0xNnpNMzg0IDg4MHYtOTZxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTE0MDggMzY4di05NnEwIC0xNiAtMTYgLTE2DQpoLTg2NHEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg4NjRxMTYgMCAxNiAtMTZ6TTc2OCA2MjR2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek02NDAgODgwdi05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTAyNCA2MjR2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2DQpoOTZxMTYgMCAxNiAtMTZ6TTg5NiA4ODB2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek0xMjgwIDYyNHYtOTZxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTE2NjQgMzY4di05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTE1MiA4ODB2LTk2DQpxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTE0MDggODgwdi05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTY2NCA4ODB2LTM1MnEwIC0xNiAtMTYgLTE2aC0yMjRxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoMTEydjI0MHEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek0xNzkyIDEyOHY4OTZoLTE2NjR2LTg5Ng0KaDE2NjR6TTE5MjAgMTAyNHYtODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41aC0xNjY0cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXY4OTZxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDE2NjRxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmbGFnX2FsdCIgdW5pY29kZT0iJiN4ZjExZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjY0IDQ5MXY2MTZxLTE2OSAtOTEgLTMwNiAtOTFxLTgyIDAgLTE0NSAzMnEtMTAwIDQ5IC0xODQgNzYuNXQtMTc4IDI3LjVxLTE3MyAwIC00MDMgLTEyN3YtNTk5cTI0NSAxMTMgNDMzIDExM3E1NSAwIDEwMy41IC03LjV0OTggLTI2dDc3IC0zMXQ4Mi41IC0zOS41bDI4IC0xNHE0NCAtMjIgMTAxIC0yMnExMjAgMCAyOTMgOTJ6TTMyMCAxMjgwcTAgLTM1IC0xNy41IC02NHQtNDYuNSAtNDZ2LTEyNjZxMCAtMTQgLTkgLTIzdC0yMyAtOQ0KaC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMjY2cS0yOSAxNyAtNDYuNSA0NnQtMTcuNSA2NHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xNzkyIDEyMTZ2LTc2M3EwIC0zOSAtMzUgLTU3cS0xMCAtNSAtMTcgLTlxLTIxOCAtMTE2IC0zNjkgLTExNnEtODggMCAtMTU4IDM1bC0yOCAxNHEtNjQgMzMgLTk5IDQ4dC05MSAyOXQtMTE0IDE0cS0xMDIgMCAtMjM1LjUgLTQ0dC0yMjguNSAtMTAyDQpxLTE1IC05IC0zMyAtOXEtMTYgMCAtMzIgOHEtMzIgMTkgLTMyIDU2djc0MnEwIDM1IDMxIDU1cTM1IDIxIDc4LjUgNDIuNXQxMTQgNTJ0MTUyLjUgNDkuNXQxNTUgMTlxMTEyIDAgMjA5IC0zMXQyMDkgLTg2cTM4IC0xOSA4OSAtMTlxMTIyIDAgMzEwIDExMnEyMiAxMiAzMSAxN3EzMSAxNiA2MiAtMnEzMSAtMjAgMzEgLTU1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmxhZ19jaGVja2VyZWQiIHVuaWNvZGU9IiYjeGYxMWU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODMyIDUzNnYxOTJxLTE4MSAtMTYgLTM4NCAtMTE3di0xODVxMjA1IDk2IDM4NCAxMTB6TTgzMiA5NTR2MTk3cS0xNzIgLTggLTM4NCAtMTI2di0xODlxMjE1IDExMSAzODQgMTE4ek0xNjY0IDQ5MXYxODRxLTIzNSAtMTE2IC0zODQgLTcxdjIyNHEtMjAgNiAtMzkgMTVxLTUgMyAtMzMgMTd0LTM0LjUgMTd0LTMxLjUgMTV0LTM0LjUgMTUuNXQtMzIuNSAxM3QtMzYgMTIuNXQtMzUgOC41dC0zOS41IDcuNXQtMzkuNSA0dC00NCAyDQpxLTIzIDAgLTQ5IC0zdi0yMjJoMTlxMTAyIDAgMTkyLjUgLTI5dDE5Ny41IC04MnExOSAtOSAzOSAtMTV2LTE4OHE0MiAtMTcgOTEgLTE3cTEyMCAwIDI5MyA5MnpNMTY2NCA5MTh2MTg5cS0xNjkgLTkxIC0zMDYgLTkxcS00NSAwIC03OCA4di0xOTZxMTQ4IC00MiAzODQgOTB6TTMyMCAxMjgwcTAgLTM1IC0xNy41IC02NHQtNDYuNSAtNDZ2LTEyNjZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTI2Ng0KcS0yOSAxNyAtNDYuNSA0NnQtMTcuNSA2NHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xNzkyIDEyMTZ2LTc2M3EwIC0zOSAtMzUgLTU3cS0xMCAtNSAtMTcgLTlxLTIxOCAtMTE2IC0zNjkgLTExNnEtODggMCAtMTU4IDM1bC0yOCAxNHEtNjQgMzMgLTk5IDQ4dC05MSAyOXQtMTE0IDE0cS0xMDIgMCAtMjM1LjUgLTQ0dC0yMjguNSAtMTAycS0xNSAtOSAtMzMgLTlxLTE2IDAgLTMyIDgNCnEtMzIgMTkgLTMyIDU2djc0MnEwIDM1IDMxIDU1cTM1IDIxIDc4LjUgNDIuNXQxMTQgNTJ0MTUyLjUgNDkuNXQxNTUgMTlxMTEyIDAgMjA5IC0zMXQyMDkgLTg2cTM4IC0xOSA4OSAtMTlxMTIyIDAgMzEwIDExMnEyMiAxMiAzMSAxN3EzMSAxNiA2MiAtMnEzMSAtMjAgMzEgLTU1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGVybWluYWwiIHVuaWNvZGU9IiYjeGYxMjA7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNNTg1IDU1M2wtNDY2IC00NjZxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtNTAgNTBxLTEwIDEwIC0xMCAyM3QxMCAyM2wzOTMgMzkzbC0zOTMgMzkzcS0xMCAxMCAtMTAgMjN0MTAgMjNsNTAgNTBxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN0LTEwIC0yM3pNMTY2NCA5NnYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTYwcS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2MHExNCAwIDIzIC05DQp0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb2RlIiB1bmljb2RlPSImI3hmMTIxOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTYxNyAxMzdsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMzkzIC0zOTNsMzkzIC0zOTNxMTAgLTEwIDEwIC0yM3QtMTAgLTIzek0xMjA4IDEyMDRsLTM3MyAtMTI5MXEtNCAtMTMgLTE1LjUgLTE5LjV0LTIzLjUgLTIuNWwtNjIgMTdxLTEzIDQgLTE5LjUgMTUuNXQtMi41IDI0LjUNCmwzNzMgMTI5MXE0IDEzIDE1LjUgMTkuNXQyMy41IDIuNWw2MiAtMTdxMTMgLTQgMTkuNSAtMTUuNXQyLjUgLTI0LjV6TTE4NjUgNTUzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDM5MyAzOTNsLTM5MyAzOTNxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsNDY2IC00NjZxMTAgLTEwIDEwIC0yM3QtMTAgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVwbHlfYWxsIiB1bmljb2RlPSImI3hmMTIyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTY0MCA0NTR2LTcwcTAgLTQyIC0zOSAtNTlxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDUgMTlsLTUxMiA1MTJxLTE5IDE5IC0xOSA0NXQxOSA0NWw1MTIgNTEycTI5IDMxIDcwIDE0cTM5IC0xNyAzOSAtNTl2LTY5bC0zOTcgLTM5OHEtMTkgLTE5IC0xOSAtNDV0MTkgLTQ1ek0xNzkyIDQxNnEwIC01OCAtMTcgLTEzMy41dC0zOC41IC0xMzh0LTQ4IC0xMjV0LTQwLjUgLTkwLjVsLTIwIC00MHEtOCAtMTcgLTI4IC0xN3EtNiAwIC05IDENCnEtMjUgOCAtMjMgMzRxNDMgNDAwIC0xMDYgNTY1cS02NCA3MSAtMTcwLjUgMTEwLjV0LTI2Ny41IDUyLjV2LTI1MXEwIC00MiAtMzkgLTU5cS0xMyAtNSAtMjUgLTVxLTI3IDAgLTQ1IDE5bC01MTIgNTEycS0xOSAxOSAtMTkgNDV0MTkgNDVsNTEyIDUxMnEyOSAzMSA3MCAxNHEzOSAtMTcgMzkgLTU5di0yNjJxNDExIC0yOCA1OTkgLTIyMXExNjkgLTE3MyAxNjkgLTUwOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0YXJfaGFsZl9lbXB0eSIgdW5pY29kZT0iJiN4ZjEyMzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xMTg2IDU3OWwyNTcgMjUwbC0zNTYgNTJsLTY2IDEwbC0zMCA2MGwtMTU5IDMyMnYtOTYzbDU5IC0zMWwzMTggLTE2OGwtNjAgMzU1bC0xMiA2NnpNMTYzOCA4NDFsLTM2MyAtMzU0bDg2IC01MDBxNSAtMzMgLTYgLTUxLjV0LTM0IC0xOC41cS0xNyAwIC00MCAxMmwtNDQ5IDIzNmwtNDQ5IC0yMzZxLTIzIC0xMiAtNDAgLTEycS0yMyAwIC0zNCAxOC41dC02IDUxLjVsODYgNTAwbC0zNjQgMzU0cS0zMiAzMiAtMjMgNTkuNXQ1NCAzNC41DQpsNTAyIDczbDIyNSA0NTVxMjAgNDEgNDkgNDFxMjggMCA0OSAtNDFsMjI1IC00NTVsNTAyIC03M3E0NSAtNyA1NCAtMzQuNXQtMjQgLTU5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb2NhdGlvbl9hcnJvdyIgdW5pY29kZT0iJiN4ZjEyNDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xNDAxIDExODdsLTY0MCAtMTI4MHEtMTcgLTM1IC01NyAtMzVxLTUgMCAtMTUgMnEtMjIgNSAtMzUuNSAyMi41dC0xMy41IDM5LjV2NTc2aC01NzZxLTIyIDAgLTM5LjUgMTMuNXQtMjIuNSAzNS41dDQgNDJ0MjkgMzBsMTI4MCA2NDBxMTMgNyAyOSA3cTI3IDAgNDUgLTE5cTE1IC0xNCAxOC41IC0zNC41dC02LjUgLTM5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjcm9wIiB1bmljb2RlPSImI3hmMTI1OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTU1NyAyNTZoNTk1djU5NXpNNTEyIDMwMWw1OTUgNTk1aC01OTV2LTU5NXpNMTY2NCAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0yMjR2LTIyNHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC04NjRxLTE0IDAgLTIzIDl0LTkgMjN2ODY0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDIyNHYyMjRxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjMNCnYtMjI0aDg1MWwyNDYgMjQ3cTEwIDkgMjMgOXQyMyAtOXE5IC0xMCA5IC0yM3QtOSAtMjNsLTI0NyAtMjQ2di04NTFoMjI0cTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb2RlX2ZvcmsiIHVuaWNvZGU9IiYjeGYxMjY7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMjg4IDY0cTAgNDAgLTI4IDY4dC02OCAyOHQtNjggLTI4dC0yOCAtNjh0MjggLTY4dDY4IC0yOHQ2OCAyOHQyOCA2OHpNMjg4IDEyMTZxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek05MjggMTA4OHEwIDQwIC0yOCA2OHQtNjggMjh0LTY4IC0yOHQtMjggLTY4dDI4IC02OHQ2OCAtMjh0NjggMjh0MjggNjh6TTEwMjQgMTA4OHEwIC01MiAtMjYgLTk2LjV0LTcwIC02OS41DQpxLTIgLTI4NyAtMjI2IC00MTRxLTY3IC0zOCAtMjAzIC04MXEtMTI4IC00MCAtMTY5LjUgLTcxdC00MS41IC0xMDB2LTI2cTQ0IC0yNSA3MCAtNjkuNXQyNiAtOTYuNXEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZxMCA1MiAyNiA5Ni41dDcwIDY5LjV2ODIwcS00NCAyNSAtNzAgNjkuNXQtMjYgOTYuNXEwIDgwIDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2cTAgLTUyIC0yNiAtOTYuNXQtNzAgLTY5LjV2LTQ5Nw0KcTU0IDI2IDE1NCA1N3E1NSAxNyA4Ny41IDI5LjV0NzAuNSAzMXQ1OSAzOS41dDQwLjUgNTF0MjggNjkuNXQ4LjUgOTEuNXEtNDQgMjUgLTcwIDY5LjV0LTI2IDk2LjVxMCA4MCA1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVubGluayIgdW5pY29kZT0iJiN4ZjEyNzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik00MzkgMjY1bC0yNTYgLTI1NnEtMTEgLTkgLTIzIC05dC0yMyA5cS05IDEwIC05IDIzdDkgMjNsMjU2IDI1NnExMCA5IDIzIDl0MjMgLTlxOSAtMTAgOSAtMjN0LTkgLTIzek02MDggMjI0di0zMjBxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3YzMjBxMCAxNCA5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTM4NCA0NDhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMzIwcS0xNCAwIC0yMyA5dC05IDIzdDkgMjN0MjMgOWgzMjANCnExNCAwIDIzIC05dDkgLTIzek0xNjQ4IDMyMHEwIC0xMjAgLTg1IC0yMDNsLTE0NyAtMTQ2cS04MyAtODMgLTIwMyAtODNxLTEyMSAwIC0yMDQgODVsLTMzNCAzMzVxLTIxIDIxIC00MiA1NmwyMzkgMThsMjczIC0yNzRxMjcgLTI3IDY4IC0yNy41dDY4IDI2LjVsMTQ3IDE0NnEyOCAyOCAyOCA2N3EwIDQwIC0yOCA2OGwtMjc0IDI3NWwxOCAyMzlxMzUgLTIxIDU2IC00MmwzMzYgLTMzNnE4NCAtODYgODQgLTIwNHpNMTAzMSAxMDQ0bC0yMzkgLTE4DQpsLTI3MyAyNzRxLTI4IDI4IC02OCAyOHEtMzkgMCAtNjggLTI3bC0xNDcgLTE0NnEtMjggLTI4IC0yOCAtNjdxMCAtNDAgMjggLTY4bDI3NCAtMjc0bC0xOCAtMjQwcS0zNSAyMSAtNTYgNDJsLTMzNiAzMzZxLTg0IDg2IC04NCAyMDRxMCAxMjAgODUgMjAzbDE0NyAxNDZxODMgODMgMjAzIDgzcTEyMSAwIDIwNCAtODVsMzM0IC0zMzVxMjEgLTIxIDQyIC01NnpNMTY2NCA5NjBxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMzIwcS0xNCAwIC0yMyA5DQp0LTkgMjN0OSAyM3QyMyA5aDMyMHExNCAwIDIzIC05dDkgLTIzek0xMTIwIDE1MDR2LTMyMHEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdjMyMHEwIDE0IDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNMTUyNyAxMzUzbC0yNTYgLTI1NnEtMTEgLTkgLTIzIC05dC0yMyA5cS05IDEwIC05IDIzdDkgMjNsMjU2IDI1NnExMCA5IDIzIDl0MjMgLTlxOSAtMTAgOSAtMjN0LTkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icXVlc3Rpb24iIHVuaWNvZGU9IiYjeGYxMjg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNzA0IDI4MHYtMjQwcTAgLTE2IC0xMiAtMjh0LTI4IC0xMmgtMjQwcS0xNiAwIC0yOCAxMnQtMTIgMjh2MjQwcTAgMTYgMTIgMjh0MjggMTJoMjQwcTE2IDAgMjggLTEydDEyIC0yOHpNMTAyMCA4ODBxMCAtNTQgLTE1LjUgLTEwMXQtMzUgLTc2LjV0LTU1IC01OS41dC01Ny41IC00My41dC02MSAtMzUuNXEtNDEgLTIzIC02OC41IC02NXQtMjcuNSAtNjdxMCAtMTcgLTEyIC0zMi41dC0yOCAtMTUuNWgtMjQwcS0xNSAwIC0yNS41IDE4LjUNCnQtMTAuNSAzNy41djQ1cTAgODMgNjUgMTU2LjV0MTQzIDEwOC41cTU5IDI3IDg0IDU2dDI1IDc2cTAgNDIgLTQ2LjUgNzR0LTEwNy41IDMycS02NSAwIC0xMDggLTI5cS0zNSAtMjUgLTEwNyAtMTE1cS0xMyAtMTYgLTMxIC0xNnEtMTIgMCAtMjUgOGwtMTY0IDEyNXEtMTMgMTAgLTE1LjUgMjV0NS41IDI4cTE2MCAyNjYgNDY0IDI2NnE4MCAwIDE2MSAtMzF0MTQ2IC04M3QxMDYgLTEyNy41dDQxIC0xNTguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8yNzkiIHVuaWNvZGU9IiYjeGYxMjk7IiBob3Jpei1hZHYteD0iNjQwIiANCmQ9Ik02NDAgMTkydi0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWg2NHYzODRoLTY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMzg0cTI2IDAgNDUgLTE5dDE5IC00NXYtNTc2aDY0cTI2IDAgNDUgLTE5dDE5IC00NXpNNTEyIDEzNDR2LTE5MnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTI1NnEtMjYgMCAtNDUgMTl0LTE5IDQ1djE5Mg0KcTAgMjYgMTkgNDV0NDUgMTloMjU2cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImV4Y2xhbWF0aW9uIiB1bmljb2RlPSImI3hmMTJhOyIgaG9yaXotYWR2LXg9IjY0MCIgDQpkPSJNNTEyIDI4OHYtMjI0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2MjI0cTAgMjYgMTkgNDV0NDUgMTloMjU2cTI2IDAgNDUgLTE5dDE5IC00NXpNNTQyIDEzNDRsLTI4IC03NjhxLTEgLTI2IC0yMC41IC00NXQtNDUuNSAtMTloLTI1NnEtMjYgMCAtNDUuNSAxOXQtMjAuNSA0NWwtMjggNzY4cS0xIDI2IDE3LjUgNDV0NDQuNSAxOWgzMjBxMjYgMCA0NC41IC0xOXQxNy41IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN1cGVyc2NyaXB0IiB1bmljb2RlPSImI3hmMTJiOyIgDQpkPSJNODk3IDE2N3YtMTY3aC0yNDhsLTE1OSAyNTJsLTI0IDQycS04IDkgLTExIDIxaC0zcS0xIC0zIC0yLjUgLTYuNXQtMy41IC04dC0zIC02LjVxLTEwIC0yMCAtMjUgLTQ0bC0xNTUgLTI1MGgtMjU4djE2N2gxMjhsMTk3IDI5MWwtMTg1IDI3MmgtMTM3djE2OGgyNzZsMTM5IC0yMjhxMiAtNCAyMyAtNDJxOCAtOSAxMSAtMjFoM3EzIDkgMTEgMjFsMjUgNDJsMTQwIDIyOGgyNTd2LTE2OGgtMTI1bC0xODQgLTI2N2wyMDQgLTI5NmgxMDl6DQpNMTUzNCA4NDZ2LTIwNmgtNTE0bC0zIDI3cS00IDI4IC00IDQ2cTAgNjQgMjYgMTE3dDY1IDg2LjV0ODQgNjV0ODQgNTQuNXQ2NSA1NHQyNiA2NHEwIDM4IC0yOS41IDYyLjV0LTcwLjUgMjQuNXEtNTEgMCAtOTcgLTM5cS0xNCAtMTEgLTM2IC0zOGwtMTA1IDkycTI2IDM3IDYzIDY2cTgzIDY1IDE4OCA2NXExMTAgMCAxNzggLTU5LjV0NjggLTE1OC41cTAgLTU2IC0yNC41IC0xMDN0LTYyIC03Ni41dC04MS41IC01OC41dC04MiAtNTAuNQ0KdC02NS41IC01MS41dC0zMC41IC02M2gyMzJ2ODBoMTI2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3Vic2NyaXB0IiB1bmljb2RlPSImI3hmMTJjOyIgDQpkPSJNODk3IDE2N3YtMTY3aC0yNDhsLTE1OSAyNTJsLTI0IDQycS04IDkgLTExIDIxaC0zcS0xIC0zIC0yLjUgLTYuNXQtMy41IC04dC0zIC02LjVxLTEwIC0yMCAtMjUgLTQ0bC0xNTUgLTI1MGgtMjU4djE2N2gxMjhsMTk3IDI5MWwtMTg1IDI3MmgtMTM3djE2OGgyNzZsMTM5IC0yMjhxMiAtNCAyMyAtNDJxOCAtOSAxMSAtMjFoM3EzIDkgMTEgMjFsMjUgNDJsMTQwIDIyOGgyNTd2LTE2OGgtMTI1bC0xODQgLTI2N2wyMDQgLTI5NmgxMDl6DQpNMTUzNiAtNTB2LTIwNmgtNTE0bC00IDI3cS0zIDQ1IC0zIDQ2cTAgNjQgMjYgMTE3dDY1IDg2LjV0ODQgNjV0ODQgNTQuNXQ2NSA1NHQyNiA2NHEwIDM4IC0yOS41IDYyLjV0LTcwLjUgMjQuNXEtNTEgMCAtOTcgLTM5cS0xNCAtMTEgLTM2IC0zOGwtMTA1IDkycTI2IDM3IDYzIDY2cTgwIDY1IDE4OCA2NXExMTAgMCAxNzggLTU5LjV0NjggLTE1OC41cTAgLTY2IC0zNC41IC0xMTguNXQtODQgLTg2dC05OS41IC02Mi41dC04NyAtNjN0LTQxIC03Mw0KaDIzMnY4MGgxMjZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMjgzIiB1bmljb2RlPSImI3hmMTJkOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTg5NiAxMjhsMzM2IDM4NGgtNzY4bC0zMzYgLTM4NGg3Njh6TTE5MDkgMTIwNXExNSAtMzQgOS41IC03MS41dC0zMC41IC02NS41bC04OTYgLTEwMjRxLTM4IC00NCAtOTYgLTQ0aC03NjhxLTM4IDAgLTY5LjUgMjAuNXQtNDcuNSA1NC41cS0xNSAzNCAtOS41IDcxLjV0MzAuNSA2NS41bDg5NiAxMDI0cTM4IDQ0IDk2IDQ0aDc2OHEzOCAwIDY5LjUgLTIwLjV0NDcuNSAtNTQuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InB1enpsZV9waWVjZSIgdW5pY29kZT0iJiN4ZjEyZTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjY0IDQzOHEwIC04MSAtNDQuNSAtMTM1dC0xMjMuNSAtNTRxLTQxIDAgLTc3LjUgMTcuNXQtNTkgMzh0LTU2LjUgMzh0LTcxIDE3LjVxLTExMCAwIC0xMTAgLTEyNHEwIC0zOSAxNiAtMTE1dDE1IC0xMTV2LTVxLTIyIDAgLTMzIC0xcS0zNCAtMyAtOTcuNSAtMTEuNXQtMTE1LjUgLTEzLjV0LTk4IC01cS02MSAwIC0xMDMgMjYuNXQtNDIgODMuNXEwIDM3IDE3LjUgNzF0MzggNTYuNXQzOCA1OXQxNy41IDc3LjVxMCA3OSAtNTQgMTIzLjUNCnQtMTM1IDQ0LjVxLTg0IDAgLTE0MyAtNDUuNXQtNTkgLTEyNy41cTAgLTQzIDE1IC04M3QzMy41IC02NC41dDMzLjUgLTUzdDE1IC01MC41cTAgLTQ1IC00NiAtODlxLTM3IC0zNSAtMTE3IC0zNXEtOTUgMCAtMjQ1IDI0cS05IDIgLTI3LjUgNHQtMjcuNSA0bC0xMyAycS0xIDAgLTMgMXEtMiAwIC0yIDF2MTAyNHEyIC0xIDE3LjUgLTMuNXQzNCAtNXQyMS41IC0zLjVxMTUwIC0yNCAyNDUgLTI0cTgwIDAgMTE3IDM1cTQ2IDQ0IDQ2IDg5DQpxMCAyMiAtMTUgNTAuNXQtMzMuNSA1M3QtMzMuNSA2NC41dC0xNSA4M3EwIDgyIDU5IDEyNy41dDE0NCA0NS41cTgwIDAgMTM0IC00NC41dDU0IC0xMjMuNXEwIC00MSAtMTcuNSAtNzcuNXQtMzggLTU5dC0zOCAtNTYuNXQtMTcuNSAtNzFxMCAtNTcgNDIgLTgzLjV0MTAzIC0yNi41cTY0IDAgMTgwIDE1dDE2MyAxN3YtMnEtMSAtMiAtMy41IC0xNy41dC01IC0zNHQtMy41IC0yMS41cS0yNCAtMTUwIC0yNCAtMjQ1cTAgLTgwIDM1IC0xMTcNCnE0NCAtNDYgODkgLTQ2cTIyIDAgNTAuNSAxNXQ1MyAzMy41dDY0LjUgMzMuNXQ4MyAxNXE4MiAwIDEyNy41IC01OXQ0NS41IC0xNDN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtaWNyb3Bob25lIiB1bmljb2RlPSImI3hmMTMwOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTExNTIgODMydi0xMjhxMCAtMjIxIC0xNDcuNSAtMzg0LjV0LTM2NC41IC0xODcuNXYtMTMyaDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC02NDBxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgyNTZ2MTMycS0yMTcgMjQgLTM2NC41IDE4Ny41dC0xNDcuNSAzODQuNXYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjhxMCAtMTg1IDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjUNCnQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1ek04OTYgMTIxNnYtNTEycTAgLTEzMiAtOTQgLTIyNnQtMjI2IC05NHQtMjI2IDk0dC05NCAyMjZ2NTEycTAgMTMyIDk0IDIyNnQyMjYgOTR0MjI2IC05NHQ5NCAtMjI2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWljcm9waG9uZV9vZmYiIHVuaWNvZGU9IiYjeGYxMzE7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMjcxIDU5MWwtMTAxIC0xMDFxLTQyIDEwMyAtNDIgMjE0djEyOHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV2LTEyOHEwIC01MyAxNSAtMTEzek0xMzg1IDExOTNsLTM2MSAtMzYxdi0xMjhxMCAtMTMyIC05NCAtMjI2dC0yMjYgLTk0cS01NSAwIC0xMDkgMTlsLTk2IC05NnE5NyAtNTEgMjA1IC01MXExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjgNCnEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di0xMzJoMjU2cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTY0MHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDI1NnYxMzJxLTEyNSAxMyAtMjM1IDgxbC0yNTQgLTI1NHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC04MiA4MnEtMTAgMTAgLTEwIDIzdDEwIDIzbDEyMzQgMTIzNHExMCAxMCAyMyAxMHQyMyAtMTBsODIgLTgycTEwIC0xMCAxMCAtMjMNCnQtMTAgLTIzek0xMDA1IDEzMjVsLTYyMSAtNjIxdjUxMnEwIDEzMiA5NCAyMjZ0MjI2IDk0cTEwMiAwIDE4NC41IC01OXQxMTYuNSAtMTUyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hpZWxkIiB1bmljb2RlPSImI3hmMTMyOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEwODggNTc2djY0MGgtNDQ4di0xMTM3cTExOSA2MyAyMTMgMTM3cTIzNSAxODQgMjM1IDM2MHpNMTI4MCAxMzQ0di03NjhxMCAtODYgLTMzLjUgLTE3MC41dC04MyAtMTUwdC0xMTggLTEyNy41dC0xMjYuNSAtMTAzdC0xMjEgLTc3LjV0LTg5LjUgLTQ5LjV0LTQyLjUgLTIwcS0xMiAtNiAtMjYgLTZ0LTI2IDZxLTE2IDcgLTQyLjUgMjB0LTg5LjUgNDkuNXQtMTIxIDc3LjV0LTEyNi41IDEwM3QtMTE4IDEyNy41dC04MyAxNTANCnQtMzMuNSAxNzAuNXY3NjhxMCAyNiAxOSA0NXQ0NSAxOWgxMTUycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhbGVuZGFyX2VtcHR5IiB1bmljb2RlPSImI3hmMTMzOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTEyOCAtMTI4aDE0MDh2MTAyNGgtMTQwOHYtMTAyNHpNNTEyIDEwODh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTI4MCAxMDg4djI4OHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTE1MnYtMTI4MA0KcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgxMjhxNTIgMCA5MCAtMzh0MzggLTkweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlyZV9leHRpbmd1aXNoZXIiIHVuaWNvZGU9IiYjeGYxMzQ7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNNTEyIDEzNDRxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNDA4IDEzNzZ2LTMyMHEwIC0xNiAtMTIgLTI1cS04IC03IC0yMCAtN3EtNCAwIC03IDFsLTQ0OCA5NnEtMTEgMiAtMTggMTF0LTcgMjBoLTI1NnYtMTAycTExMSAtMjMgMTgzLjUgLTExMXQ3Mi41IC0yMDN2LTgwMHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTUxMnEtMjYgMCAtNDUgMTl0LTE5IDQ1djgwMA0KcTAgMTA2IDYyLjUgMTkwLjV0MTYxLjUgMTE0LjV2MTExaC0zMnEtNTkgMCAtMTE1IC0yMy41dC05MS41IC01M3QtNjYgLTY2LjV0LTQwLjUgLTUzLjV0LTE0IC0yNC41cS0xNyAtMzUgLTU3IC0zNXEtMTYgMCAtMjkgN3EtMjMgMTIgLTMxLjUgMzd0My41IDQ5cTUgMTAgMTQuNSAyNnQzNy41IDUzLjV0NjAuNSA3MHQ4NSA2N3QxMDguNSA1Mi41cS0yNSA0MiAtMjUgODZxMCA2NiA0NyAxMTN0MTEzIDQ3dDExMyAtNDd0NDcgLTExMw0KcTAgLTMzIC0xNCAtNjRoMzAycTAgMTEgNyAyMHQxOCAxMWw0NDggOTZxMyAxIDcgMXExMiAwIDIwIC03cTEyIC05IDEyIC0yNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJvY2tldCIgdW5pY29kZT0iJiN4ZjEzNTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNDQwIDEwODhxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek0xNjY0IDEzNzZxMCAtMjQ5IC03NS41IC00MzAuNXQtMjUzLjUgLTM2MC41cS04MSAtODAgLTE5NSAtMTc2bC0yMCAtMzc5cS0yIC0xNiAtMTYgLTI2bC0zODQgLTIyNHEtNyAtNCAtMTYgLTRxLTEyIDAgLTIzIDlsLTY0IDY0cS0xMyAxNCAtOCAzMmw4NSAyNzZsLTI4MSAyODFsLTI3NiAtODVxLTMgLTEgLTkgLTENCnEtMTQgMCAtMjMgOWwtNjQgNjRxLTE3IDE5IC01IDM5bDIyNCAzODRxMTAgMTQgMjYgMTZsMzc5IDIwcTk2IDExNCAxNzYgMTk1cTE4OCAxODcgMzU4IDI1OHQ0MzEgNzFxMTQgMCAyNCAtOS41dDEwIC0yMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWF4Y2RuIiB1bmljb2RlPSImI3hmMTM2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NDUgNzYzbC0xNjQgLTc2M2gtMzM0bDE3OCA4MzJxMTMgNTYgLTE1IDg4cS0yNyAzMyAtODMgMzNoLTE2OWwtMjA0IC05NTNoLTMzNGwyMDQgOTUzaC0yODZsLTIwNCAtOTUzaC0zMzRsMjA0IDk1M2wtMTUzIDMyN2gxMjc2cTEwMSAwIDE4OS41IC00MC41dDE0Ny41IC0xMTMuNXE2MCAtNzMgODEgLTE2OC41dDAgLTE5NC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9zaWduX2xlZnQiIHVuaWNvZGU9IiYjeGYxMzc7IiANCmQ9Ik05MDkgMTQxbDEwMiAxMDJxMTkgMTkgMTkgNDV0LTE5IDQ1bC0zMDcgMzA3bDMwNyAzMDdxMTkgMTkgMTkgNDV0LTE5IDQ1bC0xMDIgMTAycS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtNDU0IC00NTRxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWw0NTQgLTQ1NHExOSAtMTkgNDUgLTE5dDQ1IDE5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNQ0KdC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9zaWduX3JpZ2h0IiB1bmljb2RlPSImI3hmMTM4OyIgDQpkPSJNNzE3IDE0MWw0NTQgNDU0cTE5IDE5IDE5IDQ1dC0xOSA0NWwtNDU0IDQ1NHEtMTkgMTkgLTQ1IDE5dC00NSAtMTlsLTEwMiAtMTAycS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsMzA3IC0zMDdsLTMwNyAtMzA3cS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsMTAyIC0xMDJxMTkgLTE5IDQ1IC0xOXQ0NSAxOXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjUNCnQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fc2lnbl91cCIgdW5pY29kZT0iJiN4ZjEzOTsiIA0KZD0iTTExNjUgMzk3bDEwMiAxMDJxMTkgMTkgMTkgNDV0LTE5IDQ1bC00NTQgNDU0cS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtNDU0IC00NTRxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWwxMDIgLTEwMnExOSAtMTkgNDUgLTE5dDQ1IDE5bDMwNyAzMDdsMzA3IC0zMDdxMTkgLTE5IDQ1IC0xOXQ0NSAxOXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjUNCnQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fc2lnbl9kb3duIiB1bmljb2RlPSImI3hmMTNhOyIgDQpkPSJNODEzIDIzN2w0NTQgNDU0cTE5IDE5IDE5IDQ1dC0xOSA0NWwtMTAyIDEwMnEtMTkgMTkgLTQ1IDE5dC00NSAtMTlsLTMwNyAtMzA3bC0zMDcgMzA3cS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtMTAyIC0xMDJxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWw0NTQgLTQ1NHExOSAtMTkgNDUgLTE5dDQ1IDE5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNQ0KdC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaHRtbDUiIHVuaWNvZGU9IiYjeGYxM2I7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMTEzMCA5MzlsMTYgMTc1aC04ODRsNDcgLTUzNGg2MTJsLTIyIC0yMjhsLTE5NyAtNTNsLTE5NiA1M2wtMTMgMTQwaC0xNzVsMjIgLTI3OGwzNjIgLTEwMGg0djFsMzU5IDk5bDUwIDU0NGgtNjQ0bC0xNSAxODFoNjc0ek0wIDE0MDhoMTQwOGwtMTI4IC0xNDM4bC01NzggLTE2MmwtNTc0IDE2MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNzczMiIHVuaWNvZGU9IiYjeGYxM2M7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjc1IDE0MDhoMTUwNWwtMjY2IC0xMzMzbC04MDQgLTI2N2wtNjk4IDI2N2w3MSAzNTZoMjk3bC0yOSAtMTQ3bDQyMiAtMTYxbDQ4NiAxNjFsNjggMzM5aC0xMjA4bDU4IDI5N2gxMjA5bDM4IDE5MWgtMTIwOHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFuY2hvciIgdW5pY29kZT0iJiN4ZjEzZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05NjAgMTI4MHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE3OTIgMzUydi0zNTJxMCAtMjIgLTIwIC0zMHEtOCAtMiAtMTIgLTJxLTEyIDAgLTIzIDlsLTkzIDkzcS0xMTkgLTE0MyAtMzE4LjUgLTIyNi41dC00MjkuNSAtODMuNXQtNDI5LjUgODMuNXQtMzE4LjUgMjI2LjVsLTkzIC05M3EtOSAtOSAtMjMgLTlxLTQgMCAtMTIgMnEtMjAgOCAtMjAgMzB2MzUyDQpxMCAxNCA5IDIzdDIzIDloMzUycTIyIDAgMzAgLTIwcTggLTE5IC03IC0zNWwtMTAwIC0xMDBxNjcgLTkxIDE4OS41IC0xNTMuNXQyNzEuNSAtODIuNXY2NDdoLTE5MnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE5MnYxNjNxLTU4IDM0IC05MyA5Mi41dC0zNSAxMjguNXEwIDEwNiA3NSAxODF0MTgxIDc1dDE4MSAtNzV0NzUgLTE4MXEwIC03MCAtMzUgLTEyOC41dC05MyAtOTIuNXYtMTYzaDE5MnEyNiAwIDQ1IC0xOQ0KdDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTkydi02NDdxMTQ5IDIwIDI3MS41IDgyLjV0MTg5LjUgMTUzLjVsLTEwMCAxMDBxLTE1IDE2IC03IDM1cTggMjAgMzAgMjBoMzUycTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmxvY2tfYWx0IiB1bmljb2RlPSImI3hmMTNlOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTEwNTYgNzY4cTQwIDAgNjggLTI4dDI4IC02OHYtNTc2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTYwcS00MCAwIC02OCAyOHQtMjggNjh2NTc2cTAgNDAgMjggNjh0NjggMjhoMzJ2MzIwcTAgMTg1IDEzMS41IDMxNi41dDMxNi41IDEzMS41dDMxNi41IC0xMzEuNXQxMzEuNSAtMzE2LjVxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MQ0Kdi0zMjBoNzM2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnVsbHNleWUiIHVuaWNvZGU9IiYjeGYxNDA7IiANCmQ9Ik0xMDI0IDY0MHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxdDc1IDE4MXQxODEgNzV0MTgxIC03NXQ3NSAtMTgxek0xMTUyIDY0MHEwIDE1OSAtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41dC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjV0MjcxLjUgLTExMi41dDI3MS41IDExMi41dDExMi41IDI3MS41ek0xMjgwIDY0MHEwIC0yMTIgLTE1MCAtMzYydC0zNjIgLTE1MHQtMzYyIDE1MA0KdC0xNTAgMzYydDE1MCAzNjJ0MzYyIDE1MHQzNjIgLTE1MHQxNTAgLTM2MnpNMTQwOCA2NDBxMCAxMzAgLTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF0LTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV6TTE1MzYgNjQwDQpxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbGxpcHNpc19ob3Jpem9udGFsIiB1bmljb2RlPSImI3hmMTQxOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTM4NCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6TTg5NiA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6TTE0MDggODAwdi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xOTINCnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbGxpcHNpc192ZXJ0aWNhbCIgdW5pY29kZT0iJiN4ZjE0MjsiIGhvcml6LWFkdi14PSIzODQiIA0KZD0iTTM4NCAyODh2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6TTM4NCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6TTM4NCAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xOTINCnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzAzIiB1bmljb2RlPSImI3hmMTQzOyIgDQpkPSJNNTEyIDI1NnEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNODYzIDE2MnEtMTMgMjMzIC0xNzYuNSAzOTYuNXQtMzk2LjUgMTc2LjVxLTE0IDEgLTI0IC05dC0xMCAtMjN2LTEyOHEwIC0xMyA4LjUgLTIydDIxLjUgLTEwcTE1NCAtMTEgMjY0IC0xMjF0MTIxIC0yNjRxMSAtMTMgMTAgLTIxLjV0MjIgLTguNWgxMjgNCnExMyAwIDIzIDEwdDkgMjR6TTEyNDcgMTYxcS01IDE1NCAtNTYgMjk3LjV0LTEzOS41IDI2MHQtMjA1IDIwNXQtMjYwIDEzOS41dC0yOTcuNSA1NnEtMTQgMSAtMjMgLTlxLTEwIC0xMCAtMTAgLTIzdi0xMjhxMCAtMTMgOSAtMjJ0MjIgLTEwcTIwNCAtNyAzNzggLTExMS41dDI3OC41IC0yNzguNXQxMTEuNSAtMzc4cTEgLTEzIDEwIC0yMnQyMiAtOWgxMjhxMTMgMCAyMyAxMHExMSA5IDkgMjN6TTE1MzYgMTEyMHYtOTYwDQpxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbGF5X3NpZ24iIHVuaWNvZGU9IiYjeGYxNDQ7IiANCmQ9Ik03NjggMTQwOHEyMDkgMCAzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41dC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzek0xMTUyIDU4NXEzMiAxOCAzMiA1NXQtMzIgNTVsLTU0NCAzMjBxLTMxIDE5IC02NCAxcS0zMiAtMTkgLTMyIC01NnYtNjQwcTAgLTM3IDMyIC01Ng0KcTE2IC04IDMyIC04cTE3IDAgMzIgOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRpY2tldCIgdW5pY29kZT0iJiN4ZjE0NTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMDI0IDEwODRsMzE2IC0zMTZsLTU3MiAtNTcybC0zMTYgMzE2ek04MTMgMTA1bDYxOCA2MThxMTkgMTkgMTkgNDV0LTE5IDQ1bC0zNjIgMzYycS0xOCAxOCAtNDUgMTh0LTQ1IC0xOGwtNjE4IC02MThxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWwzNjIgLTM2MnExOCAtMTggNDUgLTE4dDQ1IDE4ek0xNzAyIDc0MmwtOTA3IC05MDhxLTM3IC0zNyAtOTAuNSAtMzd0LTkwLjUgMzdsLTEyNiAxMjZxNTYgNTYgNTYgMTM2dC01NiAxMzYNCnQtMTM2IDU2dC0xMzYgLTU2bC0xMjUgMTI2cS0zNyAzNyAtMzcgOTAuNXQzNyA5MC41bDkwNyA5MDZxMzcgMzcgOTAuNSAzN3Q5MC41IC0zN2wxMjUgLTEyNXEtNTYgLTU2IC01NiAtMTM2dDU2IC0xMzZ0MTM2IC01NnQxMzYgNTZsMTI2IC0xMjVxMzcgLTM3IDM3IC05MC41dC0zNyAtOTAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im1pbnVzX3NpZ25fYWx0IiB1bmljb2RlPSImI3hmMTQ2OyIgDQpkPSJNMTI4MCA1NzZ2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtODk2cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloODk2cTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41DQp0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGVja19taW51cyIgdW5pY29kZT0iJiN4ZjE0NzsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xMTUyIDczNnYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtODMycS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDgzMnExNCAwIDIzIC05dDkgLTIzek0xMjgwIDI4OHY4MzJxMCA2NiAtNDcgMTEzdC0xMTMgNDdoLTgzMnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzek0xNDA4IDExMjB2LTgzMnEwIC0xMTkgLTg0LjUgLTIwMy41DQp0LTIwMy41IC04NC41aC04MzJxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djgzMnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoODMycTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGV2ZWxfdXAiIHVuaWNvZGU9IiYjeGYxNDg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMTAxOCA5MzNxLTE4IC0zNyAtNTggLTM3aC0xOTJ2LTg2NHEwIC0xNCAtOSAtMjN0LTIzIC05aC03MDRxLTIxIDAgLTI5IDE4cS04IDIwIDQgMzVsMTYwIDE5MnE5IDExIDI1IDExaDMyMHY2NDBoLTE5MnEtNDAgMCAtNTggMzdxLTE3IDM3IDkgNjhsMzIwIDM4NHExOCAyMiA0OSAyMnQ0OSAtMjJsMzIwIC0zODRxMjcgLTMyIDkgLTY4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGV2ZWxfZG93biIgdW5pY29kZT0iJiN4ZjE0OTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0zMiAxMjgwaDcwNHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIzLjV2LTg2M2gxOTJxNDAgMCA1OCAtMzd0LTkgLTY5bC0zMjAgLTM4NHEtMTggLTIyIC00OSAtMjJ0LTQ5IDIybC0zMjAgMzg0cS0yNiAzMSAtOSA2OXExOCAzNyA1OCAzN2gxOTJ2NjQwaC0zMjBxLTE0IDAgLTI1IDExbC0xNjAgMTkycS0xMyAxNCAtNCAzNHE5IDE5IDI5IDE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hlY2tfc2lnbiIgdW5pY29kZT0iJiN4ZjE0YTsiIA0KZD0iTTY4NSAyMzdsNjE0IDYxNHExOSAxOSAxOSA0NXQtMTkgNDVsLTEwMiAxMDJxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC00NjcgLTQ2N2wtMjExIDIxMXEtMTkgMTkgLTQ1IDE5dC00NSAtMTlsLTEwMiAtMTAycS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsMzU4IC0zNThxMTkgLTE5IDQ1IC0xOXQ0NSAxOXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjUNCnQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImVkaXRfc2lnbiIgdW5pY29kZT0iJiN4ZjE0YjsiIA0KZD0iTTQwNCA0MjhsMTUyIC0xNTJsLTUyIC01MmgtNTZ2OTZoLTk2djU2ek04MTggODE4cTE0IC0xMyAtMyAtMzBsLTI5MSAtMjkxcS0xNyAtMTcgLTMwIC0zcS0xNCAxMyAzIDMwbDI5MSAyOTFxMTcgMTcgMzAgM3pNNTQ0IDEyOGw1NDQgNTQ0bC0yODggMjg4bC01NDQgLTU0NHYtMjg4aDI4OHpNMTE1MiA3MzZsOTIgOTJxMjggMjggMjggNjh0LTI4IDY4bC0xNTIgMTUycS0yOCAyOCAtNjggMjh0LTY4IC0yOGwtOTIgLTkyek0xNTM2IDExMjANCnYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzMxMiIgdW5pY29kZT0iJiN4ZjE0YzsiIA0KZD0iTTEyODAgNjA4djQ4MHEwIDI2IC0xOSA0NXQtNDUgMTloLTQ4MHEtNDIgMCAtNTkgLTM5cS0xNyAtNDEgMTQgLTcwbDE0NCAtMTQ0bC01MzQgLTUzNHEtMTkgLTE5IC0xOSAtNDV0MTkgLTQ1bDEwMiAtMTAycTE5IC0xOSA0NSAtMTl0NDUgMTlsNTM0IDUzNGwxNDQgLTE0NHExOCAtMTkgNDUgLTE5cTEyIDAgMjUgNXEzOSAxNyAzOSA1OXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MA0KcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNoYXJlX3NpZ24iIHVuaWNvZGU9IiYjeGYxNGQ7IiANCmQ9Ik0xMDA1IDQzNWwzNTIgMzUycTE5IDE5IDE5IDQ1dC0xOSA0NWwtMzUyIDM1MnEtMzAgMzEgLTY5IDE0cS00MCAtMTcgLTQwIC01OXYtMTYwcS0xMTkgMCAtMjE2IC0xOS41dC0xNjIuNSAtNTF0LTExNCAtNzl0LTc2LjUgLTk1LjV0LTQ0LjUgLTEwOXQtMjEuNSAtMTExLjV0LTUgLTExMC41cTAgLTE4MSAxNjcgLTQwNHExMSAtMTIgMjUgLTEycTcgMCAxMyAzcTIyIDkgMTkgMzNxLTQ0IDM1NCA2MiA0NzNxNDYgNTIgMTMwIDc1LjUNCnQyMjQgMjMuNXYtMTYwcTAgLTQyIDQwIC01OXExMiAtNSAyNCAtNXEyNiAwIDQ1IDE5ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvbXBhc3MiIHVuaWNvZGU9IiYjeGYxNGU7IiANCmQ9Ik02NDAgNDQ4bDI1NiAxMjhsLTI1NiAxMjh2LTI1NnpNMTAyNCAxMDM5di01NDJsLTUxMiAtMjU2djU0MnpNMTMxMiA2NDBxMCAxNDggLTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzDQp0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29sbGFwc2UiIHVuaWNvZGU9IiYjeGYxNTA7IiANCmQ9Ik0xMTQ1IDg2MXExOCAtMzUgLTUgLTY2bC0zMjAgLTQ0OHEtMTkgLTI3IC01MiAtMjd0LTUyIDI3bC0zMjAgNDQ4cS0yMyAzMSAtNSA2NnExNyAzNSA1NyAzNWg2NDBxNDAgMCA1NyAtMzV6TTEyODAgMTYwdjk2MHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTk2MHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2MHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDk2MHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNTM2IDExMjANCnYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29sbGFwc2VfdG9wIiB1bmljb2RlPSImI3hmMTUxOyIgDQpkPSJNMTE0NSA0MTlxLTE3IC0zNSAtNTcgLTM1aC02NDBxLTQwIDAgLTU3IDM1cS0xOCAzNSA1IDY2bDMyMCA0NDhxMTkgMjcgNTIgMjd0NTIgLTI3bDMyMCAtNDQ4cTIzIC0zMSA1IC02NnpNMTI4MCAxNjB2OTYwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtOTYwcS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtOTYwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoOTYwcTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTE1MzYgMTEyMHYtOTYwDQpxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzE3IiB1bmljb2RlPSImI3hmMTUyOyIgDQpkPSJNMTA4OCA2NDBxMCAtMzMgLTI3IC01MmwtNDQ4IC0zMjBxLTMxIC0yMyAtNjYgLTVxLTM1IDE3IC0zNSA1N3Y2NDBxMCA0MCAzNSA1N3EzNSAxOCA2NiAtNWw0NDggLTMyMHEyNyAtMTkgMjcgLTUyek0xMjgwIDE2MHY5NjBxMCAxNCAtOSAyM3QtMjMgOWgtOTYwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2MHEwIC0xNCA5IC0yM3QyMyAtOWg5NjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjUNCnQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJldXIiIHVuaWNvZGU9IiYjeGYxNTM7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNOTc2IDIyOWwzNSAtMTU5cTMgLTEyIC0zIC0yMi41dC0xNyAtMTQuNWwtNSAtMXEtNCAtMiAtMTAuNSAtMy41dC0xNiAtNC41dC0yMS41IC01LjV0LTI1LjUgLTV0LTMwIC01dC0zMy41IC00LjV0LTM2LjUgLTN0LTM4LjUgLTFxLTIzNCAwIC00MDkgMTMwLjV0LTIzOCAzNTEuNWgtOTVxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxMTNxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NnEtMiA1NyAxIDEwNWgtNjdxLTE0IDAgLTIzIDkNCnQtOSAyM3YxMTRxMCAxNCA5IDIzdDIzIDloOThxNjcgMjEwIDI0My41IDMzOHQ0MDAuNSAxMjhxMTAyIDAgMTk0IC0yM3ExMSAtMyAyMCAtMTVxNiAtMTEgMyAtMjRsLTQzIC0xNTlxLTMgLTEzIC0xNCAtMTkuNXQtMjQgLTIuNWwtNCAxcS00IDEgLTExLjUgMi41bC0xNy41IDMuNXQtMjIuNSAzLjV0LTI2IDN0LTI5IDIuNXQtMjkuNSAxcS0xMjYgMCAtMjI2IC02NHQtMTUwIC0xNzZoNDY4cTE2IDAgMjUgLTEycTEwIC0xMiA3IC0yNg0KbC0yNCAtMTE0cS01IC0yNiAtMzIgLTI2aC00ODhxLTMgLTM3IDAgLTEwNWg0NTlxMTUgMCAyNSAtMTJxOSAtMTIgNiAtMjdsLTI0IC0xMTJxLTIgLTExIC0xMSAtMTguNXQtMjAgLTcuNWgtMzg3cTQ4IC0xMTcgMTQ5LjUgLTE4NS41dDIyOC41IC02OC41cTE4IDAgMzYgMS41dDMzLjUgMy41dDI5LjUgNC41dDI0LjUgNXQxOC41IDQuNWwxMiAzbDUgMnExMyA1IDI2IC0ycTEyIC03IDE1IC0yMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImdicCIgdW5pY29kZT0iJiN4ZjE1NDsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0xMDIwIDM5OXYtMzY3cTAgLTE0IC05IC0yM3QtMjMgLTloLTk1NnEtMTQgMCAtMjMgOXQtOSAyM3YxNTBxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg5N3YzODNoLTk1cS0xNCAwIC0yMyA5LjV0LTkgMjIuNXYxMzFxMCAxNCA5IDIzdDIzIDloOTV2MjIzcTAgMTcxIDEyMy41IDI4MnQzMTQuNSAxMTFxMTg1IDAgMzM1IC0xMjVxOSAtOCAxMCAtMjAuNXQtNyAtMjIuNWwtMTAzIC0xMjdxLTkgLTExIC0yMiAtMTJxLTEzIC0yIC0yMyA3DQpxLTUgNSAtMjYgMTl0LTY5IDMydC05MyAxOHEtODUgMCAtMTM3IC00N3QtNTIgLTEyM3YtMjE1aDMwNXExMyAwIDIyLjUgLTl0OS41IC0yM3YtMTMxcTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMzA1di0zNzloNDE0djE4MXEwIDEzIDkgMjIuNXQyMyA5LjVoMTYycTE0IDAgMjMgLTkuNXQ5IC0yMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idXNkIiB1bmljb2RlPSImI3hmMTU1OyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTk3OCAzNTFxMCAtMTUzIC05OS41IC0yNjMuNXQtMjU4LjUgLTEzNi41di0xNzVxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTM1cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTc1cS02NiA5IC0xMjcuNSAzMXQtMTAxLjUgNDQuNXQtNzQgNDh0LTQ2LjUgMzcuNXQtMTcuNSAxOHEtMTcgMjEgLTIgNDFsMTAzIDEzNXE3IDEwIDIzIDEycTE1IDIgMjQgLTlsMiAtMnExMTMgLTk5IDI0MyAtMTI1cTM3IC04IDc0IC04cTgxIDAgMTQyLjUgNDMNCnQ2MS41IDEyMnEwIDI4IC0xNSA1M3QtMzMuNSA0MnQtNTguNSAzNy41dC02NiAzMnQtODAgMzIuNXEtMzkgMTYgLTYxLjUgMjV0LTYxLjUgMjYuNXQtNjIuNSAzMXQtNTYuNSAzNS41dC01My41IDQyLjV0LTQzLjUgNDl0LTM1LjUgNTh0LTIxIDY2LjV0LTguNSA3OHEwIDEzOCA5OCAyNDJ0MjU1IDEzNHYxODBxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzVxMTQgMCAyMyAtOXQ5IC0yM3YtMTc2cTU3IC02IDExMC41IC0yM3Q4NyAtMzMuNQ0KdDYzLjUgLTM3LjV0MzkgLTI5dDE1IC0xNHExNyAtMTggNSAtMzhsLTgxIC0xNDZxLTggLTE1IC0yMyAtMTZxLTE0IC0zIC0yNyA3cS0zIDMgLTE0LjUgMTJ0LTM5IDI2LjV0LTU4LjUgMzJ0LTc0LjUgMjZ0LTg1LjUgMTEuNXEtOTUgMCAtMTU1IC00M3QtNjAgLTExMXEwIC0yNiA4LjUgLTQ4dDI5LjUgLTQxLjV0MzkuNSAtMzN0NTYgLTMxdDYwLjUgLTI3dDcwIC0yNy41cTUzIC0yMCA4MSAtMzEuNXQ3NiAtMzV0NzUuNSAtNDIuNXQ2MiAtNTANCnQ1MyAtNjMuNXQzMS41IC03Ni41dDEzIC05NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImluciIgdW5pY29kZT0iJiN4ZjE1NjsiIGhvcml6LWFkdi14PSI4OTgiIA0KZD0iTTg5OCAxMDY2di0xMDJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTY4cS0yMyAtMTQ0IC0xMjkgLTIzNHQtMjc2IC0xMTBxMTY3IC0xNzggNDU5IC01MzZxMTQgLTE2IDQgLTM0cS04IC0xOCAtMjkgLTE4aC0xOTVxLTE2IDAgLTI1IDEycS0zMDYgMzY3IC00OTggNTcxcS05IDkgLTkgMjJ2MTI3cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTEycTEzMiAwIDIxMi41IDQzdDEwMi41IDEyNWgtNDI3cS0xNCAwIC0yMyA5dC05IDIzdjEwMg0KcTAgMTQgOSAyM3QyMyA5aDQxM3EtNTcgMTEzIC0yNjggMTEzaC0xNDVxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxMzNxMCAxNCA5IDIzdDIzIDloODMycTE0IDAgMjMgLTl0OSAtMjN2LTEwMnEwIC0xNCAtOSAtMjN0LTIzIC05aC0yMzNxNDcgLTYxIDY0IC0xNDRoMTcxcTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJqcHkiIHVuaWNvZGU9IiYjeGYxNTc7IiBob3Jpei1hZHYteD0iMTAyNyIgDQpkPSJNNjAzIDBoLTE3MnEtMTMgMCAtMjIuNSA5dC05LjUgMjN2MzMwaC0yODhxLTEzIDAgLTIyLjUgOXQtOS41IDIzdjEwM3EwIDEzIDkuNSAyMi41dDIyLjUgOS41aDI4OHY4NWgtMjg4cS0xMyAwIC0yMi41IDl0LTkuNSAyM3YxMDRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgyMTRsLTMyMSA1NzhxLTggMTYgMCAzMnExMCAxNiAyOCAxNmgxOTRxMTkgMCAyOSAtMThsMjE1IC00MjVxMTkgLTM4IDU2IC0xMjVxMTAgMjQgMzAuNSA2OHQyNy41IDYxDQpsMTkxIDQyMHE4IDE5IDI5IDE5aDE5MXExNyAwIDI3IC0xNnE5IC0xNCAxIC0zMWwtMzEzIC01NzloMjE1cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMTA0cTAgLTE0IC05LjUgLTIzdC0yMi41IC05aC0yOTB2LTg1aDI5MHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTEwM3EwIC0xNCAtOS41IC0yM3QtMjIuNSAtOWgtMjkwdi0zMzBxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icnViIiB1bmljb2RlPSImI3hmMTU4OyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEwNDMgOTcxcTAgMTAwIC02NSAxNjJ0LTE3MSA2MmgtMzIwdi00NDhoMzIwcTEwNiAwIDE3MSA2MnQ2NSAxNjJ6TTEyODAgOTcxcTAgLTE5MyAtMTI2LjUgLTMxNXQtMzI2LjUgLTEyMmgtMzQwdi0xMThoNTA1cTE0IDAgMjMgLTl0OSAtMjN2LTEyOHEwIC0xNCAtOSAtMjN0LTIzIC05aC01MDV2LTE5MnEwIC0xNCAtOS41IC0yM3QtMjIuNSAtOWgtMTY3cS0xNCAwIC0yMyA5dC05IDIzdjE5MmgtMjI0cS0xNCAwIC0yMyA5dC05IDIzdjEyOA0KcTAgMTQgOSAyM3QyMyA5aDIyNHYxMThoLTIyNHEtMTQgMCAtMjMgOXQtOSAyM3YxNDlxMCAxMyA5IDIyLjV0MjMgOS41aDIyNHY2MjlxMCAxNCA5IDIzdDIzIDloNTM5cTIwMCAwIDMyNi41IC0xMjJ0MTI2LjUgLTMxNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImtydyIgdW5pY29kZT0iJiN4ZjE1OTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik01MTQgMzQxbDgxIDI5OWgtMTU5bDc1IC0zMDBxMSAtMSAxIC0zdDEgLTNxMCAxIDAuNSAzLjV0MC41IDMuNXpNNjMwIDc2OGwzNSAxMjhoLTI5MmwzMiAtMTI4aDIyNXpNODIyIDc2OGgxMzlsLTM1IDEyOGgtNzB6TTEyNzEgMzQwbDc4IDMwMGgtMTYybDgxIC0yOTlxMCAtMSAwLjUgLTMuNXQxLjUgLTMuNXEwIDEgMC41IDN0MC41IDN6TTEzODIgNzY4bDMzIDEyOGgtMjk3bDM0IC0xMjhoMjMwek0xNzkyIDczNnYtNjRxMCAtMTQgLTkgLTIzDQp0LTIzIC05aC0yMTNsLTE2NCAtNjE2cS03IC0yNCAtMzEgLTI0aC0xNTlxLTI0IDAgLTMxIDI0bC0xNjYgNjE2aC0yMDlsLTE2NyAtNjE2cS03IC0yNCAtMzEgLTI0aC0xNTlxLTExIDAgLTE5LjUgN3QtMTAuNSAxN2wtMTYwIDYxNmgtMjA4cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE3NWwtMzMgMTI4aC0xNDJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTA5bC04OSAzNDRxLTUgMTUgNSAyOA0KcTEwIDEyIDI2IDEyaDEzN3EyNiAwIDMxIC0yNGw5MCAtMzYwaDM1OWw5NyAzNjBxNyAyNCAzMSAyNGgxMjZxMjQgMCAzMSAtMjRsOTggLTM2MGgzNjVsOTMgMzYwcTUgMjQgMzEgMjRoMTM3cTE2IDAgMjYgLTEycTEwIC0xMyA1IC0yOGwtOTEgLTM0NGgxMTFxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTQ1bC0zNCAtMTI4aDE3OXExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnRjIiB1bmljb2RlPSImI3hmMTVhOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTExNjcgODk2cTE4IC0xODIgLTEzMSAtMjU4cTExNyAtMjggMTc1IC0xMDN0NDUgLTIxNHEtNyAtNzEgLTMyLjUgLTEyNXQtNjQuNSAtODl0LTk3IC01OC41dC0xMjEuNSAtMzQuNXQtMTQ1LjUgLTE1di0yNTVoLTE1NHYyNTFxLTgwIDAgLTEyMiAxdi0yNTJoLTE1NHYyNTVxLTE4IDAgLTU0IDAuNXQtNTUgMC41aC0yMDBsMzEgMTgzaDExMXE1MCAwIDU4IDUxdjQwMmgxNnEtNiAxIC0xNiAxdjI4N3EtMTMgNjggLTg5IDY4aC0xMTF2MTY0DQpsMjEyIC0xcTY0IDAgOTcgMXYyNTJoMTU0di0yNDdxODIgMiAxMjIgMnYyNDVoMTU0di0yNTJxNzkgLTcgMTQwIC0yMi41dDExMyAtNDV0ODIuNSAtNzh0MzYuNSAtMTE0LjV6TTk1MiAzNTFxMCAzNiAtMTUgNjR0LTM3IDQ2dC01Ny41IDMwLjV0LTY1LjUgMTguNXQtNzQgOXQtNjkgM3QtNjQuNSAtMXQtNDcuNSAtMXYtMzM4cTggMCAzNyAtMC41dDQ4IC0wLjV0NTMgMS41dDU4LjUgNHQ1NyA4LjV0NTUuNSAxNHQ0Ny41IDIxdDM5LjUgMzANCnQyNC41IDQwdDkuNSA1MXpNODgxIDgyN3EwIDMzIC0xMi41IDU4LjV0LTMwLjUgNDJ0LTQ4IDI4dC01NSAxNi41dC02MS41IDh0LTU4IDIuNXQtNTQgLTF0LTM5LjUgLTAuNXYtMzA3cTUgMCAzNC41IC0wLjV0NDYuNSAwdDUwIDJ0NTUgNS41dDUxLjUgMTF0NDguNSAxOC41dDM3IDI3dDI3IDM4LjV0OSA1MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZpbGUiIHVuaWNvZGU9IiYjeGYxNWI7IiANCmQ9Ik0xMDI0IDEwMjR2NDcycTIyIC0xNCAzNiAtMjhsNDA4IC00MDhxMTQgLTE0IDI4IC0zNmgtNDcyek04OTYgOTkycTAgLTQwIDI4IC02OHQ2OCAtMjhoNTQ0di0xMDU2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4MDB2LTU0NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZpbGVfdGV4dCIgdW5pY29kZT0iJiN4ZjE1YzsiIA0KZD0iTTE0NjggMTA2MHExNCAtMTQgMjggLTM2aC00NzJ2NDcycTIyIC0xNCAzNiAtMjh6TTk5MiA4OTZoNTQ0di0xMDU2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4MDB2LTU0NHEwIC00MCAyOCAtNjh0NjggLTI4ek0xMTUyIDE2MHY2NHEwIDE0IC05IDIzdC0yMyA5aC03MDRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNzA0DQpxMTQgMCAyMyA5dDkgMjN6TTExNTIgNDE2djY0cTAgMTQgLTkgMjN0LTIzIDloLTcwNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg3MDRxMTQgMCAyMyA5dDkgMjN6TTExNTIgNjcydjY0cTAgMTQgLTkgMjN0LTIzIDloLTcwNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg3MDRxMTQgMCAyMyA5dDkgMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzb3J0X2J5X2FscGhhYmV0IiB1bmljb2RlPSImI3hmMTVkOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTExOTEgMTEyOGgxNzdsLTcyIDIxOGwtMTIgNDdxLTIgMTYgLTIgMjBoLTRsLTMgLTIwcTAgLTEgLTMuNSAtMTh0LTcuNSAtMjl6TTczNiA5NnEwIC0xMiAtMTAgLTI0bC0zMTkgLTMxOXEtMTAgLTkgLTIzIC05cS0xMiAwIC0yMyA5bC0zMjAgMzIwcS0xNSAxNiAtNyAzNXE4IDIwIDMwIDIwaDE5MnYxMzc2cTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzdi0xMzc2aDE5MnExNCAwIDIzIC05dDkgLTIzek0xNTcyIC0yMw0Kdi0yMzNoLTU4NHY5MGwzNjkgNTI5cTEyIDE4IDIxIDI3bDExIDl2M3EtMiAwIC02LjUgLTAuNXQtNy41IC0wLjVxLTEyIC0zIC0zMCAtM2gtMjMydi0xMTVoLTEyMHYyMjloNTY3di04OWwtMzY5IC01MzBxLTYgLTggLTIxIC0yNmwtMTEgLTExdi0ybDE0IDJxOSAyIDMwIDJoMjQ4djExOWgxMjF6TTE2NjEgODc0di0xMDZoLTI4OHYxMDZoNzVsLTQ3IDE0NGgtMjQzbC00NyAtMTQ0aDc1di0xMDZoLTI4N3YxMDZoNzBsMjMwIDY2MmgxNjINCmwyMzAgLTY2Mmg3MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zMjkiIHVuaWNvZGU9IiYjeGYxNWU7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTE5MSAxMDRoMTc3bC03MiAyMThsLTEyIDQ3cS0yIDE2IC0yIDIwaC00bC0zIC0yMHEwIC0xIC0zLjUgLTE4dC03LjUgLTI5ek03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTY2MSAtMTUwDQp2LTEwNmgtMjg4djEwNmg3NWwtNDcgMTQ0aC0yNDNsLTQ3IC0xNDRoNzV2LTEwNmgtMjg3djEwNmg3MGwyMzAgNjYyaDE2MmwyMzAgLTY2Mmg3MHpNMTU3MiAxMDAxdi0yMzNoLTU4NHY5MGwzNjkgNTI5cTEyIDE4IDIxIDI3bDExIDl2M3EtMiAwIC02LjUgLTAuNXQtNy41IC0wLjVxLTEyIC0zIC0zMCAtM2gtMjMydi0xMTVoLTEyMHYyMjloNTY3di04OWwtMzY5IC01MzBxLTYgLTggLTIxIC0yNmwtMTEgLTEwdi0zbDE0IDNxOSAxIDMwIDFoMjQ4DQp2MTE5aDEyMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNvcnRfYnlfYXR0cmlidXRlcyIgdW5pY29kZT0iJiN4ZjE2MDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiAtMzJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC04MzJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDgzMg0KcTE0IDAgMjMgLTl0OSAtMjN6TTE2MDAgNDgwdi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjQwcS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWg2NDBxMTQgMCAyMyAtOXQ5IC0yM3pNMTQwOCA5OTJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC00NDhxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDQ0OHExNCAwIDIzIC05dDkgLTIzek0xMjE2IDE1MDR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0yNTYNCnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMjU2cTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0IiB1bmljb2RlPSImI3hmMTYxOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyMTYgLTMydi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMjU2cS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgyNTZxMTQgMCAyMyAtOXQ5IC0yM3pNNzM2IDk2cTAgLTEyIC0xMCAtMjRsLTMxOSAtMzE5cS0xMCAtOSAtMjMgLTlxLTEyIDAgLTIzIDlsLTMyMCAzMjBxLTE1IDE2IC03IDM1cTggMjAgMzAgMjBoMTkydjEzNzZxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTEzNzZoMTkyDQpxMTQgMCAyMyAtOXQ5IC0yM3pNMTQwOCA0ODB2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC00NDhxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDQ0OHExNCAwIDIzIC05dDkgLTIzek0xNjAwIDk5MnYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTY0MHEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloNjQwcTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgMTUwNHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTgzMg0KcS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWg4MzJxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNvcnRfYnlfb3JkZXIiIHVuaWNvZGU9IiYjeGYxNjI7IiANCmQ9Ik0xMzQ2IDIyM3EwIDYzIC00NCAxMTZ0LTEwMyA1M3EtNTIgMCAtODMgLTM3dC0zMSAtOTR0MzYuNSAtOTV0MTA0LjUgLTM4cTUwIDAgODUgMjd0MzUgNjh6TTczNiA5NnEwIC0xMiAtMTAgLTI0bC0zMTkgLTMxOXEtMTAgLTkgLTIzIC05cS0xMiAwIC0yMyA5bC0zMjAgMzIwcS0xNSAxNiAtNyAzNXE4IDIwIDMwIDIwaDE5MnYxMzc2cTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzdi0xMzc2aDE5MnExNCAwIDIzIC05dDkgLTIzDQp6TTE0ODYgMTY1cTAgLTYyIC0xMyAtMTIxLjV0LTQxIC0xMTR0LTY4IC05NS41dC05OC41IC02NS41dC0xMjcuNSAtMjQuNXEtNjIgMCAtMTA4IDE2cS0yNCA4IC00MiAxNWwzOSAxMTNxMTUgLTcgMzEgLTExcTM3IC0xMyA3NSAtMTNxODQgMCAxMzQuNSA1OC41dDY2LjUgMTQ1LjVoLTJxLTIxIC0yMyAtNjEuNSAtMzd0LTg0LjUgLTE0cS0xMDYgMCAtMTczIDcxLjV0LTY3IDE3Mi41cTAgMTA1IDcyIDE3OHQxODEgNzNxMTIzIDAgMjA1IC05NC41DQp0ODIgLTI1Mi41ek0xNDU2IDg4MnYtMTE0aC00Njl2MTE0aDE2N3Y0MzJxMCA3IDAuNSAxOXQwLjUgMTd2MTZoLTJsLTcgLTEycS04IC0xMyAtMjYgLTMxbC02MiAtNThsLTgyIDg2bDE5MiAxODVoMTIzdi02NTRoMTY1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydF9ieV9vcmRlcl9hbHQiIHVuaWNvZGU9IiYjeGYxNjM7IiANCmQ9Ik0xMzQ2IDEyNDdxMCA2MyAtNDQgMTE2dC0xMDMgNTNxLTUyIDAgLTgzIC0zN3QtMzEgLTk0dDM2LjUgLTk1dDEwNC41IC0zOHE1MCAwIDg1IDI3dDM1IDY4ek03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOQ0KdDkgLTIzek0xNDU2IC0xNDJ2LTExNGgtNDY5djExNGgxNjd2NDMycTAgNyAwLjUgMTl0MC41IDE3djE2aC0ybC03IC0xMnEtOCAtMTMgLTI2IC0zMWwtNjIgLTU4bC04MiA4NmwxOTIgMTg1aDEyM3YtNjU0aDE2NXpNMTQ4NiAxMTg5cTAgLTYyIC0xMyAtMTIxLjV0LTQxIC0xMTR0LTY4IC05NS41dC05OC41IC02NS41dC0xMjcuNSAtMjQuNXEtNjIgMCAtMTA4IDE2cS0yNCA4IC00MiAxNWwzOSAxMTNxMTUgLTcgMzEgLTExcTM3IC0xMyA3NSAtMTMNCnE4NCAwIDEzNC41IDU4LjV0NjYuNSAxNDUuNWgtMnEtMjEgLTIzIC02MS41IC0zN3QtODQuNSAtMTRxLTEwNiAwIC0xNzMgNzEuNXQtNjcgMTcyLjVxMCAxMDUgNzIgMTc4dDE4MSA3M3ExMjMgMCAyMDUgLTk0LjV0ODIgLTI1Mi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzMzNCIgdW5pY29kZT0iJiN4ZjE2NDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0yNTYgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXEtMjcgMCAtNDUuNSAtMTl0LTE4LjUgLTQ1cTAgLTI3IDE4LjUgLTQ1LjV0NDUuNSAtMTguNXEyNiAwIDQ1IDE4LjV0MTkgNDUuNXpNNDE2IDcwNHYtNjQwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjg4cS0yNiAwIC00NSAxOXQtMTkgNDV2NjQwcTAgMjYgMTkgNDV0NDUgMTloMjg4cTI2IDAgNDUgLTE5dDE5IC00NXpNMTYwMCA3MDRxMCAtODYgLTU1IC0xNDlxMTUgLTQ0IDE1IC03Ng0KcTMgLTc2IC00MyAtMTM3cTE3IC01NiAwIC0xMTdxLTE1IC01NyAtNTQgLTk0cTkgLTExMiAtNDkgLTE4MXEtNjQgLTc2IC0xOTcgLTc4aC0zNmgtNzZoLTE3cS02NiAwIC0xNDQgMTUuNXQtMTIxLjUgMjl0LTEyMC41IDM5LjVxLTEyMyA0MyAtMTU4IDQ0cS0yNiAxIC00NSAxOS41dC0xOSA0NC41djY0MXEwIDI1IDE4IDQzLjV0NDMgMjAuNXEyNCAyIDc2IDU5dDEwMSAxMjFxNjggODcgMTAxIDEyMHExOCAxOCAzMSA0OHQxNy41IDQ4LjUNCnQxMy41IDYwLjVxNyAzOSAxMi41IDYxdDE5LjUgNTJ0MzQgNTBxMTkgMTkgNDUgMTlxNDYgMCA4Mi41IC0xMC41dDYwIC0yNnQ0MCAtNDAuNXQyNCAtNDV0MTIgLTUwdDUgLTQ1dDAuNSAtMzlxMCAtMzggLTkuNSAtNzZ0LTE5IC02MHQtMjcuNSAtNTZxLTMgLTYgLTEwIC0xOHQtMTEgLTIydC04IC0yNGgyNzdxNzggMCAxMzUgLTU3dDU3IC0xMzV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzM1IiB1bmljb2RlPSImI3hmMTY1OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTI1NiA5NjBxMCAtMjYgLTE5IC00NXQtNDUgLTE5cS0yNyAwIC00NS41IDE5dC0xOC41IDQ1cTAgMjcgMTguNSA0NS41dDQ1LjUgMTguNXEyNiAwIDQ1IC0xOC41dDE5IC00NS41ek00MTYgNDQ4djY0MHEwIDI2IC0xOSA0NXQtNDUgMTloLTI4OHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTY0MHEwIC0yNiAxOSAtNDV0NDUgLTE5aDI4OHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNTQ1IDU5N3E1NSAtNjEgNTUgLTE0OXEtMSAtNzggLTU3LjUgLTEzNQ0KdC0xMzQuNSAtNTdoLTI3N3E0IC0xNCA4IC0yNHQxMSAtMjJ0MTAgLTE4cTE4IC0zNyAyNyAtNTd0MTkgLTU4LjV0MTAgLTc2LjVxMCAtMjQgLTAuNSAtMzl0LTUgLTQ1dC0xMiAtNTB0LTI0IC00NXQtNDAgLTQwLjV0LTYwIC0yNnQtODIuNSAtMTAuNXEtMjYgMCAtNDUgMTlxLTIwIDIwIC0zNCA1MHQtMTkuNSA1MnQtMTIuNSA2MXEtOSA0MiAtMTMuNSA2MC41dC0xNy41IDQ4LjV0LTMxIDQ4cS0zMyAzMyAtMTAxIDEyMHEtNDkgNjQgLTEwMSAxMjENCnQtNzYgNTlxLTI1IDIgLTQzIDIwLjV0LTE4IDQzLjV2NjQxcTAgMjYgMTkgNDQuNXQ0NSAxOS41cTM1IDEgMTU4IDQ0cTc3IDI2IDEyMC41IDM5LjV0MTIxLjUgMjl0MTQ0IDE1LjVoMTdoNzZoMzZxMTMzIC0yIDE5NyAtNzhxNTggLTY5IDQ5IC0xODFxMzkgLTM3IDU0IC05NHExNyAtNjEgMCAtMTE3cTQ2IC02MSA0MyAtMTM3cTAgLTMyIC0xNSAtNzZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ5b3V0dWJlX3NpZ24iIHVuaWNvZGU9IiYjeGYxNjY7IiANCmQ9Ik05MTkgMjMzdjE1N3EwIDUwIC0yOSA1MHEtMTcgMCAtMzMgLTE2di0yMjRxMTYgLTE2IDMzIC0xNnEyOSAwIDI5IDQ5ek0xMTAzIDM1NWg2NnYzNHEwIDUxIC0zMyA1MXQtMzMgLTUxdi0zNHpNNTMyIDYyMXYtNzBoLTgwdi00MjNoLTc0djQyM2gtNzh2NzBoMjMyek03MzMgNDk1di0zNjdoLTY3djQwcS0zOSAtNDUgLTc2IC00NXEtMzMgMCAtNDIgMjhxLTYgMTcgLTYgNTR2MjkwaDY2di0yNzBxMCAtMjQgMSAtMjZxMSAtMTUgMTUgLTE1DQpxMjAgMCA0MiAzMXYyODBoNjd6TTk4NSAzODR2LTE0NnEwIC01MiAtNyAtNzNxLTEyIC00MiAtNTMgLTQycS0zNSAwIC02OCA0MXYtMzZoLTY3djQ5M2g2N3YtMTYxcTMyIDQwIDY4IDQwcTQxIDAgNTMgLTQycTcgLTIxIDcgLTc0ek0xMjM2IDI1NXYtOXEwIC0yOSAtMiAtNDNxLTMgLTIyIC0xNSAtNDBxLTI3IC00MCAtODAgLTQwcS01MiAwIC04MSAzOHEtMjEgMjcgLTIxIDg2djEyOXEwIDU5IDIwIDg2cTI5IDM4IDgwIDM4dDc4IC0zOA0KcTIxIC0yOSAyMSAtODZ2LTc2aC0xMzN2LTY1cTAgLTUxIDM0IC01MXEyNCAwIDMwIDI2cTAgMSAwLjUgN3QwLjUgMTYuNXYyMS41aDY4ek03ODUgMTA3OXYtMTU2cTAgLTUxIC0zMiAtNTF0LTMyIDUxdjE1NnEwIDUyIDMyIDUydDMyIC01MnpNMTMxOCAzNjZxMCAxNzcgLTE5IDI2MHEtMTAgNDQgLTQzIDczLjV0LTc2IDM0LjVxLTEzNiAxNSAtNDEyIDE1cS0yNzUgMCAtNDExIC0xNXEtNDQgLTUgLTc2LjUgLTM0LjV0LTQyLjUgLTczLjUNCnEtMjAgLTg3IC0yMCAtMjYwcTAgLTE3NiAyMCAtMjYwcTEwIC00MyA0Mi41IC03M3Q3NS41IC0zNXExMzcgLTE1IDQxMiAtMTV0NDEyIDE1cTQzIDUgNzUuNSAzNXQ0Mi41IDczcTIwIDg0IDIwIDI2MHpNNTYzIDEwMTdsOTAgMjk2aC03NWwtNTEgLTE5NWwtNTMgMTk1aC03OHE3IC0yMyAyMyAtNjlsMjQgLTY5cTM1IC0xMDMgNDYgLTE1OHYtMjAxaDc0djIwMXpNODUyIDkzNnYxMzBxMCA1OCAtMjEgODdxLTI5IDM4IC03OCAzOA0KcS01MSAwIC03OCAtMzhxLTIxIC0yOSAtMjEgLTg3di0xMzBxMCAtNTggMjEgLTg3cTI3IC0zOCA3OCAtMzhxNDkgMCA3OCAzOHEyMSAyNyAyMSA4N3pNMTAzMyA4MTZoNjd2MzcwaC02N3YtMjgzcS0yMiAtMzEgLTQyIC0zMXEtMTUgMCAtMTYgMTZxLTEgMiAtMSAyNnYyNzJoLTY3di0yOTNxMCAtMzcgNiAtNTVxMTEgLTI3IDQzIC0yN3EzNiAwIDc3IDQ1di00MHpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjUNCmgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InlvdXR1YmUiIHVuaWNvZGU9IiYjeGYxNjc7IiANCmQ9Ik05NzEgMjkydi0yMTFxMCAtNjcgLTM5IC02N3EtMjMgMCAtNDUgMjJ2MzAxcTIyIDIyIDQ1IDIycTM5IDAgMzkgLTY3ek0xMzA5IDI5MXYtNDZoLTkwdjQ2cTAgNjggNDUgNjh0NDUgLTY4ek0zNDMgNTA5aDEwN3Y5NGgtMzEydi05NGgxMDV2LTU2OWgxMDB2NTY5ek02MzEgLTYwaDg5djQ5NGgtODl2LTM3OHEtMzAgLTQyIC01NyAtNDJxLTE4IDAgLTIxIDIxcS0xIDMgLTEgMzV2MzY0aC04OXYtMzkxcTAgLTQ5IDggLTczDQpxMTIgLTM3IDU4IC0zN3E0OCAwIDEwMiA2MXYtNTR6TTEwNjAgODh2MTk3cTAgNzMgLTkgOTlxLTE3IDU2IC03MSA1NnEtNTAgMCAtOTMgLTU0djIxN2gtODl2LTY2M2g4OXY0OHE0NSAtNTUgOTMgLTU1cTU0IDAgNzEgNTVxOSAyNyA5IDEwMHpNMTM5OCA5OHYxM2gtOTFxMCAtNTEgLTIgLTYxcS03IC0zNiAtNDAgLTM2cS00NiAwIC00NiA2OXY4N2gxNzl2MTAzcTAgNzkgLTI3IDExNnEtMzkgNTEgLTEwNiA1MXEtNjggMCAtMTA3IC01MQ0KcS0yOCAtMzcgLTI4IC0xMTZ2LTE3M3EwIC03OSAyOSAtMTE2cTM5IC01MSAxMDggLTUxcTcyIDAgMTA4IDUzcTE4IDI3IDIxIDU0cTIgOSAyIDU4ek03OTAgMTAxMXYyMTBxMCA2OSAtNDMgNjl0LTQzIC02OXYtMjEwcTAgLTcwIDQzIC03MHQ0MyA3MHpNMTUwOSAyNjBxMCAtMjM0IC0yNiAtMzUwcS0xNCAtNTkgLTU4IC05OXQtMTAyIC00NnEtMTg0IC0yMSAtNTU1IC0yMXQtNTU1IDIxcS01OCA2IC0xMDIuNSA0NnQtNTcuNSA5OQ0KcS0yNiAxMTIgLTI2IDM1MHEwIDIzNCAyNiAzNTBxMTQgNTkgNTggOTl0MTAzIDQ3cTE4MyAyMCA1NTQgMjB0NTU1IC0yMHE1OCAtNyAxMDIuNSAtNDd0NTcuNSAtOTlxMjYgLTExMiAyNiAtMzUwek01MTEgMTUzNmgxMDJsLTEyMSAtMzk5di0yNzFoLTEwMHYyNzFxLTE0IDc0IC02MSAyMTJxLTM3IDEwMyAtNjUgMTg3aDEwNmw3MSAtMjYzek04ODEgMTIwM3YtMTc1cTAgLTgxIC0yOCAtMTE4cS0zOCAtNTEgLTEwNiAtNTFxLTY3IDAgLTEwNSA1MQ0KcS0yOCAzOCAtMjggMTE4djE3NXEwIDgwIDI4IDExN3EzOCA1MSAxMDUgNTFxNjggMCAxMDYgLTUxcTI4IC0zNyAyOCAtMTE3ek0xMjE2IDEzNjV2LTQ5OWgtOTF2NTVxLTUzIC02MiAtMTAzIC02MnEtNDYgMCAtNTkgMzdxLTggMjQgLTggNzV2Mzk0aDkxdi0zNjdxMCAtMzMgMSAtMzVxMyAtMjIgMjEgLTIycTI3IDAgNTcgNDN2MzgxaDkxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieGluZyIgdW5pY29kZT0iJiN4ZjE2ODsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik01OTcgODY5cS0xMCAtMTggLTI1NyAtNDU2cS0yNyAtNDYgLTY1IC00NmgtMjM5cS0yMSAwIC0zMSAxN3QwIDM2bDI1MyA0NDhxMSAwIDAgMWwtMTYxIDI3OXEtMTIgMjIgLTEgMzdxOSAxNSAzMiAxNWgyMzlxNDAgMCA2NiAtNDV6TTE0MDMgMTUxMXExMSAtMTYgMCAtMzdsLTUyOCAtOTM0di0xbDMzNiAtNjE1cTExIC0yMCAxIC0zN3EtMTAgLTE1IC0zMiAtMTVoLTIzOXEtNDIgMCAtNjYgNDVsLTMzOSA2MjJxMTggMzIgNTMxIDk0Mg0KcTI1IDQ1IDY0IDQ1aDI0MXEyMiAwIDMxIC0xNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Inhpbmdfc2lnbiIgdW5pY29kZT0iJiN4ZjE2OTsiIA0KZD0iTTY4NSA3NzFxMCAxIC0xMjYgMjIycS0yMSAzNCAtNTIgMzRoLTE4NHEtMTggMCAtMjYgLTExcS03IC0xMiAxIC0yOWwxMjUgLTIxNnYtMWwtMTk2IC0zNDZxLTkgLTE0IDAgLTI4cTggLTEzIDI0IC0xM2gxODVxMzEgMCA1MCAzNnpNMTMwOSAxMjY4cS03IDEyIC0yNCAxMmgtMTg3cS0zMCAwIC00OSAtMzVsLTQxMSAtNzI5cTEgLTIgMjYyIC00ODFxMjAgLTM1IDUyIC0zNWgxODRxMTggMCAyNSAxMnE4IDEzIC0xIDI4bC0yNjAgNDc2djENCmw0MDkgNzIzcTggMTYgMCAyOHpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ5b3V0dWJlX3BsYXkiIHVuaWNvZGU9IiYjeGYxNmE7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNzExIDQwOGw0ODQgMjUwbC00ODQgMjUzdi01MDN6TTg5NiAxMjcwcTE2OCAwIDMyNC41IC00LjV0MjI5LjUgLTkuNWw3MyAtNHExIDAgMTcgLTEuNXQyMyAtM3QyMy41IC00LjV0MjguNSAtOHQyOCAtMTN0MzEgLTE5LjV0MjkgLTI2LjVxNiAtNiAxNS41IC0xOC41dDI5IC01OC41dDI2LjUgLTEwMXE4IC02NCAxMi41IC0xMzYuNXQ1LjUgLTExMy41di00MHYtMTM2cTEgLTE0NSAtMTggLTI5MHEtNyAtNTUgLTI1IC05OS41dC0zMiAtNjEuNQ0KbC0xNCAtMTdxLTE0IC0xNSAtMjkgLTI2LjV0LTMxIC0xOXQtMjggLTEyLjV0LTI4LjUgLTh0LTI0IC00LjV0LTIzIC0zdC0xNi41IC0xLjVxLTI1MSAtMTkgLTYyNyAtMTlxLTIwNyAyIC0zNTkuNSA2LjV0LTIwMC41IDcuNWwtNDkgNGwtMzYgNHEtMzYgNSAtNTQuNSAxMHQtNTEgMjF0LTU2LjUgNDFxLTYgNiAtMTUuNSAxOC41dC0yOSA1OC41dC0yNi41IDEwMXEtOCA2NCAtMTIuNSAxMzYuNXQtNS41IDExMy41djQwdjEzNg0KcS0xIDE0NSAxOCAyOTBxNyA1NSAyNSA5OS41dDMyIDYxLjVsMTQgMTdxMTQgMTUgMjkgMjYuNXQzMSAxOS41dDI4IDEzdDI4LjUgOHQyMy41IDQuNXQyMyAzdDE3IDEuNXEyNTEgMTggNjI3IDE4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZHJvcGJveCIgdW5pY29kZT0iJiN4ZjE2YjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik00MDIgODI5bDQ5NCAtMzA1bC0zNDIgLTI4NWwtNDkwIDMxOXpNMTM4OCAyNzR2LTEwOGwtNDkwIC0yOTN2LTFsLTEgMWwtMSAtMXYxbC00ODkgMjkzdjEwOGwxNDcgLTk2bDM0MiAyODR2MmwxIC0xbDEgMXYtMmwzNDMgLTI4NHpNNTU0IDE0MThsMzQyIC0yODVsLTQ5NCAtMzA0bC0zMzggMjcwek0xMzkwIDgyOWwzMzggLTI3MWwtNDg5IC0zMTlsLTM0MyAyODV6TTEyMzkgMTQxOGw0ODkgLTMxOWwtMzM4IC0yNzBsLTQ5NCAzMDR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGFja2V4Y2hhbmdlIiB1bmljb2RlPSImI3hmMTZjOyIgDQpkPSJNMTI4OSAtOTZoLTExMTh2NDgwaC0xNjB2LTY0MGgxNDM4djY0MGgtMTYwdi00ODB6TTM0NyA0MjhsMzMgMTU3bDc4MyAtMTY1bC0zMyAtMTU2ek00NTAgODAybDY3IDE0Nmw3MjUgLTMzOWwtNjcgLTE0NXpNNjUxIDExNThsMTAyIDEyM2w2MTQgLTUxM2wtMTAyIC0xMjN6TTEwNDggMTUzNmw0NzcgLTY0MWwtMTI4IC05NmwtNDc3IDY0MXpNMzMwIDY1djE1OWg4MDB2LTE1OWgtODAweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaW5zdGFncmFtIiB1bmljb2RlPSImI3hmMTZkOyIgDQpkPSJNMTAyNCA2NDBxMCAxMDYgLTc1IDE4MXQtMTgxIDc1dC0xODEgLTc1dC03NSAtMTgxdDc1IC0xODF0MTgxIC03NXQxODEgNzV0NzUgMTgxek0xMTYyIDY0MHEwIC0xNjQgLTExNSAtMjc5dC0yNzkgLTExNXQtMjc5IDExNXQtMTE1IDI3OXQxMTUgMjc5dDI3OSAxMTV0Mjc5IC0xMTV0MTE1IC0yNzl6TTEyNzAgMTA1MHEwIC0zOCAtMjcgLTY1dC02NSAtMjd0LTY1IDI3dC0yNyA2NXQyNyA2NXQ2NSAyN3Q2NSAtMjd0MjcgLTY1ek03NjggMTI3MA0KcS03IDAgLTc2LjUgMC41dC0xMDUuNSAwdC05Ni41IC0zdC0xMDMgLTEwdC03MS41IC0xOC41cS01MCAtMjAgLTg4IC01OHQtNTggLTg4cS0xMSAtMjkgLTE4LjUgLTcxLjV0LTEwIC0xMDN0LTMgLTk2LjV0MCAtMTA1LjV0MC41IC03Ni41dC0wLjUgLTc2LjV0MCAtMTA1LjV0MyAtOTYuNXQxMCAtMTAzdDE4LjUgLTcxLjVxMjAgLTUwIDU4IC04OHQ4OCAtNThxMjkgLTExIDcxLjUgLTE4LjV0MTAzIC0xMHQ5Ni41IC0zdDEwNS41IDB0NzYuNSAwLjUNCnQ3Ni41IC0wLjV0MTA1LjUgMHQ5Ni41IDN0MTAzIDEwdDcxLjUgMTguNXE1MCAyMCA4OCA1OHQ1OCA4OHExMSAyOSAxOC41IDcxLjV0MTAgMTAzdDMgOTYuNXQwIDEwNS41dC0wLjUgNzYuNXQwLjUgNzYuNXQwIDEwNS41dC0zIDk2LjV0LTEwIDEwM3QtMTguNSA3MS41cS0yMCA1MCAtNTggODh0LTg4IDU4cS0yOSAxMSAtNzEuNSAxOC41dC0xMDMgMTB0LTk2LjUgM3QtMTA1LjUgMHQtNzYuNSAtMC41ek0xNTM2IDY0MHEwIC0yMjkgLTUgLTMxNw0KcS0xMCAtMjA4IC0xMjQgLTMyMnQtMzIyIC0xMjRxLTg4IC01IC0zMTcgLTV0LTMxNyA1cS0yMDggMTAgLTMyMiAxMjR0LTEyNCAzMjJxLTUgODggLTUgMzE3dDUgMzE3cTEwIDIwOCAxMjQgMzIydDMyMiAxMjRxODggNSAzMTcgNXQzMTcgLTVxMjA4IC0xMCAzMjIgLTEyNHQxMjQgLTMyMnE1IC04OCA1IC0zMTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmbGlja3IiIHVuaWNvZGU9IiYjeGYxNmU7IiANCmQ9Ik0xMjQ4IDE0MDhxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHpNNjk4IDY0MHEwIDg4IC02MiAxNTB0LTE1MCA2MnQtMTUwIC02MnQtNjIgLTE1MHQ2MiAtMTUwdDE1MCAtNjJ0MTUwIDYydDYyIDE1MHpNMTI2MiA2NDBxMCA4OCAtNjIgMTUwDQp0LTE1MCA2MnQtMTUwIC02MnQtNjIgLTE1MHQ2MiAtMTUwdDE1MCAtNjJ0MTUwIDYydDYyIDE1MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFkbiIgdW5pY29kZT0iJiN4ZjE3MDsiIA0KZD0iTTc2OCA5MTRsMjAxIC0zMDZoLTQwMnpNMTEzMyAzODRoOTRsLTQ1OSA2OTFsLTQ1OSAtNjkxaDk0bDEwNCAxNjBoNTIyek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxNzEiIHVuaWNvZGU9IiYjeGYxNzE7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNODE1IDY3N3E4IC02MyAtNTAuNSAtMTAxdC0xMTEuNSAtNnEtMzkgMTcgLTUzLjUgNTh0LTAuNSA4MnQ1MiA1OHEzNiAxOCA3Mi41IDEydDY0IC0zNS41dDI3LjUgLTY3LjV6TTkyNiA2OThxLTE0IDEwNyAtMTEzIDE2NHQtMTk3IDEzcS02MyAtMjggLTEwMC41IC04OC41dC0zNC41IC0xMjkuNXE0IC05MSA3Ny41IC0xNTV0MTY1LjUgLTU2cTkxIDggMTUyIDg0dDUwIDE2OHpNMTE2NSAxMjQwcS0yMCAyNyAtNTYgNDQuNXQtNTggMjINCnQtNzEgMTIuNXEtMjkxIDQ3IC01NjYgLTJxLTQzIC03IC02NiAtMTJ0LTU1IC0yMnQtNTAgLTQzcTMwIC0yOCA3NiAtNDUuNXQ3My41IC0yMnQ4Ny41IC0xMS41cTIyOCAtMjkgNDQ4IC0xcTYzIDggODkuNSAxMnQ3Mi41IDIxLjV0NzUgNDYuNXpNMTIyMiAyMDVxLTggLTI2IC0xNS41IC03Ni41dC0xNCAtODR0LTI4LjUgLTcwdC01OCAtNTYuNXEtODYgLTQ4IC0xODkuNSAtNzEuNXQtMjAyIC0yMnQtMjAxLjUgMTguNXEtNDYgOCAtODEuNSAxOA0KdC03Ni41IDI3dC03MyA0My41dC01MiA2MS41cS0yNSA5NiAtNTcgMjkybDYgMTZsMTggOXEyMjMgLTE0OCA1MDYuNSAtMTQ4dDUwNy41IDE0OHEyMSAtNiAyNCAtMjN0LTUgLTQ1dC04IC0zN3pNMTQwMyAxMTY2cS0yNiAtMTY3IC0xMTEgLTY1NXEtNSAtMzAgLTI3IC01NnQtNDMuNSAtNDB0LTU0LjUgLTMxcS0yNTIgLTEyNiAtNjEwIC04OHEtMjQ4IDI3IC0zOTQgMTM5cS0xNSAxMiAtMjUuNSAyNi41dC0xNyAzNXQtOSAzNHQtNiAzOS41DQp0LTUuNSAzNXEtOSA1MCAtMjYuNSAxNTB0LTI4IDE2MS41dC0yMy41IDE0Ny41dC0yMiAxNThxMyAyNiAxNy41IDQ4LjV0MzEuNSAzNy41dDQ1IDMwdDQ2IDIyLjV0NDggMTguNXExMjUgNDYgMzEzIDY0cTM3OSAzNyA2NzYgLTUwcTE1NSAtNDYgMjE1IC0xMjJxMTYgLTIwIDE2LjUgLTUxdC01LjUgLTU0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYml0YnVja2V0X3NpZ24iIHVuaWNvZGU9IiYjeGYxNzI7IiANCmQ9Ik04NDggNjY2cTAgNDMgLTQxIDY2dC03NyAxcS00MyAtMjAgLTQyLjUgLTcyLjV0NDMuNSAtNzAuNXEzOSAtMjMgODEgNHQzNiA3MnpNOTI4IDY4MnE4IC02NiAtMzYgLTEyMXQtMTEwIC02MXQtMTE5IDQwdC01NiAxMTNxLTIgNDkgMjUuNSA5M3Q3Mi41IDY0cTcwIDMxIDE0MS41IC0xMHQ4MS41IC0xMTh6TTExMDAgMTA3M3EtMjAgLTIxIC01My41IC0zNHQtNTMgLTE2dC02My41IC04cS0xNTUgLTIwIC0zMjQgMHEtNDQgNiAtNjMgOS41DQp0LTUyLjUgMTZ0LTU0LjUgMzIuNXExMyAxOSAzNiAzMXQ0MCAxNS41dDQ3IDguNXExOTggMzUgNDA4IDFxMzMgLTUgNTEgLTguNXQ0MyAtMTZ0MzkgLTMxLjV6TTExNDIgMzI3cTAgNyA1LjUgMjYuNXQzIDMydC0xNy41IDE2LjVxLTE2MSAtMTA2IC0zNjUgLTEwNnQtMzY2IDEwNmwtMTIgLTZsLTUgLTEycTI2IC0xNTQgNDEgLTIxMHE0NyAtODEgMjA0IC0xMDhxMjQ5IC00NiA0MjggNTNxMzQgMTkgNDkgNTEuNXQyMi41IDg1LjV0MTIuNSA3MXoNCk0xMjcyIDEwMjBxOSA1MyAtOCA3NXEtNDMgNTUgLTE1NSA4OHEtMjE2IDYzIC00ODcgMzZxLTEzMiAtMTIgLTIyNiAtNDZxLTM4IC0xNSAtNTkuNSAtMjV0LTQ3IC0zNHQtMjkuNSAtNTRxOCAtNjggMTkgLTEzOHQyOSAtMTcxdDI0IC0xMzdxMSAtNSA1IC0zMXQ3IC0zNnQxMiAtMjd0MjIgLTI4cTEwNSAtODAgMjg0IC0xMDBxMjU5IC0yOCA0NDAgNjNxMjQgMTMgMzkuNSAyM3QzMSAyOXQxOS41IDQwcTQ4IDI2NyA4MCA0NzN6TTE1MzYgMTEyMA0Kdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0dW1ibHIiIHVuaWNvZGU9IiYjeGYxNzM7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNOTQ0IDIwN2w4MCAtMjM3cS0yMyAtMzUgLTExMSAtNjZ0LTE3NyAtMzJxLTEwNCAtMiAtMTkwLjUgMjZ0LTE0Mi41IDc0dC05NSAxMDZ0LTU1LjUgMTIwdC0xNi41IDExOHY1NDRoLTE2OHYyMTVxNzIgMjYgMTI5IDY5LjV0OTEgOTB0NTggMTAydDM0IDk5dDE1IDg4LjVxMSA1IDQuNSA4LjV0Ny41IDMuNWgyNDR2LTQyNGgzMzN2LTI1MmgtMzM0di01MThxMCAtMzAgNi41IC01NnQyMi41IC01Mi41dDQ5LjUgLTQxLjV0ODEuNSAtMTQNCnE3OCAyIDEzNCAyOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InR1bWJscl9zaWduIiB1bmljb2RlPSImI3hmMTc0OyIgDQpkPSJNMTEzNiA3NWwtNjIgMTgzcS00NCAtMjIgLTEwMyAtMjJxLTM2IC0xIC02MiAxMC41dC0zOC41IDMxLjV0LTE3LjUgNDAuNXQtNSA0My41djM5OGgyNTd2MTk0aC0yNTZ2MzI2aC0xODhxLTggMCAtOSAtMTBxLTUgLTQ0IC0xNy41IC04N3QtMzkgLTk1dC03NyAtOTV0LTExOC41IC02OHYtMTY1aDEzMHYtNDE4cTAgLTU3IDIxLjUgLTExNXQ2NSAtMTExdDEyMSAtODUuNXQxNzYuNSAtMzAuNXE2OSAxIDEzNi41IDI1dDg1LjUgNTB6DQpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb25nX2Fycm93X2Rvd24iIHVuaWNvZGU9IiYjeGYxNzU7IiBob3Jpei1hZHYteD0iNzY4IiANCmQ9Ik03NjUgMjM3cTggLTE5IC01IC0zNWwtMzUwIC0zODRxLTEwIC0xMCAtMjMgLTEwcS0xNCAwIC0yNCAxMGwtMzU1IDM4NHEtMTMgMTYgLTUgMzVxOSAxOSAyOSAxOWgyMjR2MTI0OHEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTI0OGgyMjRxMjEgMCAyOSAtMTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb25nX2Fycm93X3VwIiB1bmljb2RlPSImI3hmMTc2OyIgaG9yaXotYWR2LXg9Ijc2OCIgDQpkPSJNNzY1IDEwNDNxLTkgLTE5IC0yOSAtMTloLTIyNHYtMTI0OHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTI0OGgtMjI0cS0yMSAwIC0yOSAxOXQ1IDM1bDM1MCAzODRxMTAgMTAgMjMgMTBxMTQgMCAyNCAtMTBsMzU1IC0zODRxMTMgLTE2IDUgLTM1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibG9uZ19hcnJvd19sZWZ0IiB1bmljb2RlPSImI3hmMTc3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNzM2di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTI0OHYtMjI0cTAgLTIxIC0xOSAtMjl0LTM1IDVsLTM4NCAzNTBxLTEwIDEwIC0xMCAyM3EwIDE0IDEwIDI0bDM4NCAzNTRxMTYgMTQgMzUgNnExOSAtOSAxOSAtMjl2LTIyNGgxMjQ4cTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb25nX2Fycm93X3JpZ2h0IiB1bmljb2RlPSImI3hmMTc4OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3MjggNjQzcTAgLTE0IC0xMCAtMjRsLTM4NCAtMzU0cS0xNiAtMTQgLTM1IC02cS0xOSA5IC0xOSAyOXYyMjRoLTEyNDhxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDEyNDh2MjI0cTAgMjEgMTkgMjl0MzUgLTVsMzg0IC0zNTBxMTAgLTEwIDEwIC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFwcGxlIiB1bmljb2RlPSImI3hmMTc5OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTEzOTMgMzIxcS0zOSAtMTI1IC0xMjMgLTI1MHEtMTI5IC0xOTYgLTI1NyAtMTk2cS00OSAwIC0xNDAgMzJxLTg2IDMyIC0xNTEgMzJxLTYxIDAgLTE0MiAtMzNxLTgxIC0zNCAtMTMyIC0zNHEtMTUyIDAgLTMwMSAyNTlxLTE0NyAyNjEgLTE0NyA1MDNxMCAyMjggMTEzIDM3NHExMTMgMTQ0IDI4NCAxNDRxNzIgMCAxNzcgLTMwcTEwNCAtMzAgMTM4IC0zMHE0NSAwIDE0MyAzNHExMDIgMzQgMTczIDM0cTExOSAwIDIxMyAtNjUNCnE1MiAtMzYgMTA0IC0xMDBxLTc5IC02NyAtMTE0IC0xMThxLTY1IC05NCAtNjUgLTIwN3EwIC0xMjQgNjkgLTIyM3QxNTggLTEyNnpNMTAxNyAxNDk0cTAgLTYxIC0yOSAtMTM2cS0zMCAtNzUgLTkzIC0xMzhxLTU0IC01NCAtMTA4IC03MnEtMzcgLTExIC0xMDQgLTE3cTMgMTQ5IDc4IDI1N3E3NCAxMDcgMjUwIDE0OHExIC0zIDIuNSAtMTF0Mi41IC0xMXEwIC00IDAuNSAtMTB0MC41IC0xMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9IndpbmRvd3MiIHVuaWNvZGU9IiYjeGYxN2E7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNNjgyIDUzMHYtNjUxbC02ODIgOTR2NTU3aDY4MnpNNjgyIDEyNzN2LTY1OWgtNjgydjU2NXpNMTY2NCA1MzB2LTc4NmwtOTA3IDEyNXY2NjFoOTA3ek0xNjY0IDE0MDh2LTc5NGgtOTA3djY2OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFuZHJvaWQiIHVuaWNvZGU9IiYjeGYxN2I7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNNDkzIDEwNTNxMTYgMCAyNy41IDExLjV0MTEuNSAyNy41dC0xMS41IDI3LjV0LTI3LjUgMTEuNXQtMjcgLTExLjV0LTExIC0yNy41dDExIC0yNy41dDI3IC0xMS41ek05MTUgMTA1M3ExNiAwIDI3IDExLjV0MTEgMjcuNXQtMTEgMjcuNXQtMjcgMTEuNXQtMjcuNSAtMTEuNXQtMTEuNSAtMjcuNXQxMS41IC0yNy41dDI3LjUgLTExLjV6TTEwMyA4NjlxNDIgMCA3MiAtMzB0MzAgLTcydi00MzBxMCAtNDMgLTI5LjUgLTczdC03Mi41IC0zMA0KdC03MyAzMHQtMzAgNzN2NDMwcTAgNDIgMzAgNzJ0NzMgMzB6TTExNjMgODUwdi02NjZxMCAtNDYgLTMyIC03OHQtNzcgLTMyaC03NXYtMjI3cTAgLTQzIC0zMCAtNzN0LTczIC0zMHQtNzMgMzB0LTMwIDczdjIyN2gtMTM4di0yMjdxMCAtNDMgLTMwIC03M3QtNzMgLTMwcS00MiAwIC03MiAzMHQtMzAgNzNsLTEgMjI3aC03NHEtNDYgMCAtNzggMzJ0LTMyIDc4djY2Nmg5MTh6TTkzMSAxMjU1cTEwNyAtNTUgMTcxIC0xNTMuNXQ2NCAtMjE1LjUNCmgtOTI1cTAgMTE3IDY0IDIxNS41dDE3MiAxNTMuNWwtNzEgMTMxcS03IDEzIDUgMjBxMTMgNiAyMCAtNmw3MiAtMTMycTk1IDQyIDIwMSA0MnQyMDEgLTQybDcyIDEzMnE3IDEyIDIwIDZxMTIgLTcgNSAtMjB6TTE0MDggNzY3di00MzBxMCAtNDMgLTMwIC03M3QtNzMgLTMwcS00MiAwIC03MiAzMHQtMzAgNzN2NDMwcTAgNDMgMzAgNzIuNXQ3MiAyOS41cTQzIDAgNzMgLTI5LjV0MzAgLTcyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsaW51eCIgdW5pY29kZT0iJiN4ZjE3YzsiIA0KZD0iTTY2MyAxMTI1cS0xMSAtMSAtMTUuNSAtMTAuNXQtOC41IC05LjVxLTUgLTEgLTUgNXEwIDEyIDE5IDE1aDEwek03NTAgMTExMXEtNCAtMSAtMTEuNSA2LjV0LTE3LjUgNC41cTI0IDExIDMyIC0ycTMgLTYgLTMgLTl6TTM5OSA2ODRxLTQgMSAtNiAtM3QtNC41IC0xMi41dC01LjUgLTEzLjV0LTEwIC0xM3EtMTAgLTExIC0xIC0xMnE0IC0xIDEyLjUgN3QxMi41IDE4cTEgMyAyIDd0MiA2dDEuNSA0LjV0MC41IDR2M3QtMSAyLjV0LTMgMnoNCk0xMjU0IDMyNXEwIDE4IC01NSA0MnE0IDE1IDcuNSAyNy41dDUgMjZ0MyAyMS41dDAuNSAyMi41dC0xIDE5LjV0LTMuNSAyMnQtNCAyMC41dC01IDI1dC01LjUgMjYuNXEtMTAgNDggLTQ3IDEwM3QtNzIgNzVxMjQgLTIwIDU3IC04M3E4NyAtMTYyIDU0IC0yNzhxLTExIC00MCAtNTAgLTQycS0zMSAtNCAtMzguNSAxOC41dC04IDgzLjV0LTExLjUgMTA3cS05IDM5IC0xOS41IDY5dC0xOS41IDQ1LjV0LTE1LjUgMjQuNXQtMTMgMTV0LTcuNSA3DQpxLTE0IDYyIC0zMSAxMDN0LTI5LjUgNTZ0LTIzLjUgMzN0LTE1IDQwcS00IDIxIDYgNTMuNXQ0LjUgNDkuNXQtNDQuNSAyNXEtMTUgMyAtNDQuNSAxOHQtMzUuNSAxNnEtOCAxIC0xMSAyNnQ4IDUxdDM2IDI3cTM3IDMgNTEgLTMwdDQgLTU4cS0xMSAtMTkgLTIgLTI2LjV0MzAgLTAuNXExMyA0IDEzIDM2djM3cS01IDMwIC0xMy41IDUwdC0yMSAzMC41dC0yMy41IDE1dC0yNyA3LjVxLTEwNyAtOCAtODkgLTEzNHEwIC0xNSAtMSAtMTUNCnEtOSA5IC0yOS41IDEwLjV0LTMzIC0wLjV0LTE1LjUgNXExIDU3IC0xNiA5MHQtNDUgMzRxLTI3IDEgLTQxLjUgLTI3LjV0LTE2LjUgLTU5LjVxLTEgLTE1IDMuNSAtMzd0MTMgLTM3LjV0MTUuNSAtMTMuNXExMCAzIDE2IDE0cTQgOSAtNyA4cS03IDAgLTE1LjUgMTQuNXQtOS41IDMzLjVxLTEgMjIgOSAzN3QzNCAxNHExNyAwIDI3IC0yMXQ5LjUgLTM5dC0xLjUgLTIycS0yMiAtMTUgLTMxIC0yOXEtOCAtMTIgLTI3LjUgLTIzLjUNCnQtMjAuNSAtMTIuNXEtMTMgLTE0IC0xNS41IC0yN3Q3LjUgLTE4cTE0IC04IDI1IC0xOS41dDE2IC0xOXQxOC41IC0xM3QzNS41IC02LjVxNDcgLTIgMTAyIDE1cTIgMSAyMyA3dDM0LjUgMTAuNXQyOS41IDEzdDIxIDE3LjVxOSAxNCAyMCA4cTUgLTMgNi41IC04LjV0LTMgLTEydC0xNi41IC05LjVxLTIwIC02IC01Ni41IC0yMS41dC00NS41IC0xOS41cS00NCAtMTkgLTcwIC0yM3EtMjUgLTUgLTc5IDJxLTEwIDIgLTkgLTJ0MTcgLTE5DQpxMjUgLTIzIDY3IC0yMnExNyAxIDM2IDd0MzYgMTR0MzMuNSAxNy41dDMwIDE3dDI0LjUgMTJ0MTcuNSAyLjV0OC41IC0xMXEwIC0yIC0xIC00LjV0LTQgLTV0LTYgLTQuNXQtOC41IC01dC05IC00LjV0LTEwIC01dC05LjUgLTQuNXEtMjggLTE0IC02Ny41IC00NHQtNjYuNSAtNDN0LTQ5IC0xcS0yMSAxMSAtNjMgNzNxLTIyIDMxIC0yNSAyMnEtMSAtMyAtMSAtMTBxMCAtMjUgLTE1IC01Ni41dC0yOS41IC01NS41dC0yMSAtNTh0MTEuNSAtNjMNCnEtMjMgLTYgLTYyLjUgLTkwdC00Ny41IC0xNDFxLTIgLTE4IC0xLjUgLTY5dC01LjUgLTU5cS04IC0yNCAtMjkgLTNxLTMyIDMxIC0zNiA5NHEtMiAyOCA0IDU2cTQgMTkgLTEgMThxLTIgLTEgLTQgLTVxLTM2IC02NSAxMCAtMTY2cTUgLTEyIDI1IC0yOHQyNCAtMjBxMjAgLTIzIDEwNCAtOTAuNXQ5MyAtNzYuNXExNiAtMTUgMTcuNSAtMzh0LTE0IC00M3QtNDUuNSAtMjNxOCAtMTUgMjkgLTQ0LjV0MjggLTU0dDcgLTcwLjVxNDYgMjQgNyA5Mg0KcS00IDggLTEwLjUgMTZ0LTkuNSAxMnQtMiA2cTMgNSAxMyA5LjV0MjAgLTIuNXE0NiAtNTIgMTY2IC0zNnExMzMgMTUgMTc3IDg3cTIzIDM4IDM0IDMwcTEyIC02IDEwIC01MnEtMSAtMjUgLTIzIC05MnEtOSAtMjMgLTYgLTM3LjV0MjQgLTE1LjVxMyAxOSAxNC41IDc3dDEzLjUgOTBxMiAyMSAtNi41IDczLjV0LTcuNSA5N3QyMyA3MC41cTE1IDE4IDUxIDE4cTEgMzcgMzQuNSA1M3Q3Mi41IDEwLjV0NjAgLTIyLjV6TTYyNiAxMTUyDQpxMyAxNyAtMi41IDMwdC0xMS41IDE1cS05IDIgLTkgLTdxMiAtNSA1IC02cTEwIDAgNyAtMTVxLTMgLTIwIDggLTIwcTMgMCAzIDN6TTEwNDUgOTU1cS0yIDggLTYuNSAxMS41dC0xMyA1dC0xNC41IDUuNXEtNSAzIC05LjUgOHQtNyA4dC01LjUgNi41dC00IDR0LTQgLTEuNXEtMTQgLTE2IDcgLTQzLjV0MzkgLTMxLjVxOSAtMSAxNC41IDh0My41IDIwek04NjcgMTE2OHEwIDExIC01IDE5LjV0LTExIDEyLjV0LTkgM3EtNiAwIC04IC0ydDAgLTQNCnQ1IC0zcTE0IC00IDE4IC0zMXEwIC0zIDggMnEyIDIgMiAzek05MjEgMTQwMXEwIDIgLTIuNSA1dC05IDd0LTkuNSA2cS0xNSAxNSAtMjQgMTVxLTkgLTEgLTExLjUgLTcuNXQtMSAtMTN0LTAuNSAtMTIuNXEtMSAtNCAtNiAtMTAuNXQtNiAtOXQzIC04LjVxNCAtMyA4IDB0MTEgOXQxNSA5cTEgMSA5IDF0MTUgMnQ5IDd6TTE0ODYgNjBxMjAgLTEyIDMxIC0yNC41dDEyIC0yNHQtMi41IC0yMi41dC0xNS41IC0yMnQtMjMuNSAtMTkuNQ0KdC0zMCAtMTguNXQtMzEuNSAtMTYuNXQtMzIgLTE1LjV0LTI3IC0xM3EtMzggLTE5IC04NS41IC01NnQtNzUuNSAtNjRxLTE3IC0xNiAtNjggLTE5LjV0LTg5IDE0LjVxLTE4IDkgLTI5LjUgMjMuNXQtMTYuNSAyNS41dC0yMiAxOS41dC00NyA5LjVxLTQ0IDEgLTEzMCAxcS0xOSAwIC01NyAtMS41dC01OCAtMi41cS00NCAtMSAtNzkuNSAtMTV0LTUzLjUgLTMwdC00My41IC0yOC41dC01My41IC0xMS41cS0yOSAxIC0xMTEgMzF0LTE0NiA0Mw0KcS0xOSA0IC01MSA5LjV0LTUwIDl0LTM5LjUgOS41dC0zMy41IDE0LjV0LTE3IDE5LjVxLTEwIDIzIDcgNjYuNXQxOCA1NC41cTEgMTYgLTQgNDB0LTEwIDQyLjV0LTQuNSAzNi41dDEwLjUgMjdxMTQgMTIgNTcgMTR0NjAgMTJxMzAgMTggNDIgMzV0MTIgNTFxMjEgLTczIC0zMiAtMTA2cS0zMiAtMjAgLTgzIC0xNXEtMzQgMyAtNDMgLTEwcS0xMyAtMTUgNSAtNTdxMiAtNiA4IC0xOHQ4LjUgLTE4dDQuNSAtMTd0MSAtMjJxMCAtMTUgLTE3IC00OQ0KdC0xNCAtNDhxMyAtMTcgMzcgLTI2cTIwIC02IDg0LjUgLTE4LjV0OTkuNSAtMjAuNXEyNCAtNiA3NCAtMjJ0ODIuNSAtMjN0NTUuNSAtNHE0MyA2IDY0LjUgMjh0MjMgNDh0LTcuNSA1OC41dC0xOSA1MnQtMjAgMzYuNXEtMTIxIDE5MCAtMTY5IDI0MnEtNjggNzQgLTExMyA0MHEtMTEgLTkgLTE1IDE1cS0zIDE2IC0yIDM4cTEgMjkgMTAgNTJ0MjQgNDd0MjIgNDJxOCAyMSAyNi41IDcydDI5LjUgNzh0MzAgNjF0MzkgNTQNCnExMTAgMTQzIDEyNCAxOTVxLTEyIDExMiAtMTYgMzEwcS0yIDkwIDI0IDE1MS41dDEwNiAxMDQuNXEzOSAyMSAxMDQgMjFxNTMgMSAxMDYgLTEzLjV0ODkgLTQxLjVxNTcgLTQyIDkxLjUgLTEyMS41dDI5LjUgLTE0Ny41cS01IC05NSAzMCAtMjE0cTM0IC0xMTMgMTMzIC0yMThxNTUgLTU5IDk5LjUgLTE2M3Q1OS41IC0xOTFxOCAtNDkgNSAtODQuNXQtMTIgLTU1LjV0LTIwIC0yMnEtMTAgLTIgLTIzLjUgLTE5dC0yNyAtMzUuNQ0KdC00MC41IC0zMy41dC02MSAtMTRxLTE4IDEgLTMxLjUgNXQtMjIuNSAxMy41dC0xMy41IDE1LjV0LTExLjUgMjAuNXQtOSAxOS41cS0yMiAzNyAtNDEgMzB0LTI4IC00OXQ3IC05N3EyMCAtNzAgMSAtMTk1cS0xMCAtNjUgMTggLTEwMC41dDczIC0zM3Q4NSAzNS41cTU5IDQ5IDg5LjUgNjYuNXQxMDMuNSA0Mi41cTUzIDE4IDc3IDM2LjV0MTguNSAzNC41dC0yNSAyOC41dC01MS41IDIzLjVxLTMzIDExIC00OS41IDQ4dC0xNSA3Mi41DQp0MTUuNSA0Ny41cTEgLTMxIDggLTU2LjV0MTQuNSAtNDAuNXQyMC41IC0yOC41dDIxIC0xOXQyMS41IC0xM3QxNi41IC05LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkcmliYmxlIiB1bmljb2RlPSImI3hmMTdkOyIgDQpkPSJNMTAyNCAzNnEtNDIgMjQxIC0xNDAgNDk4aC0ybC0yIC0xcS0xNiAtNiAtNDMgLTE2LjV0LTEwMSAtNDl0LTEzNyAtODJ0LTEzMSAtMTE0LjV0LTEwMyAtMTQ4bC0xNSAxMXExODQgLTE1MCA0MTggLTE1MHExMzIgMCAyNTYgNTJ6TTgzOSA2NDNxLTIxIDQ5IC01MyAxMTFxLTMxMSAtOTMgLTY3MyAtOTNxLTEgLTcgLTEgLTIxcTAgLTEyNCA0NCAtMjM2LjV0MTI0IC0yMDEuNXE1MCA4OSAxMjMuNSAxNjYuNXQxNDIuNSAxMjQuNXQxMzAuNSA4MQ0KdDk5LjUgNDhsMzcgMTNxNCAxIDEzIDMuNXQxMyA0LjV6TTczMiA4NTVxLTEyMCAyMTMgLTI0NCAzNzhxLTEzOCAtNjUgLTIzNCAtMTg2dC0xMjggLTI3MnEzMDIgMCA2MDYgODB6TTE0MTYgNTM2cS0yMTAgNjAgLTQwOSAyOXE4NyAtMjM5IDEyOCAtNDY5cTExMSA3NSAxODUgMTg5LjV0OTYgMjUwLjV6TTYxMSAxMjc3cS0xIDAgLTIgLTFxMSAxIDIgMXpNMTIwMSAxMTMycS0xODUgMTY0IC00MzMgMTY0cS03NiAwIC0xNTUgLTE5DQpxMTMxIC0xNzAgMjQ2IC0zODJxNjkgMjYgMTMwIDYwLjV0OTYuNSA2MS41dDY1LjUgNTd0MzcuNSA0MC41ek0xNDI0IDY0N3EtMyAyMzIgLTE0OSA0MTBsLTEgLTFxLTkgLTEyIC0xOSAtMjQuNXQtNDMuNSAtNDQuNXQtNzEgLTYwLjV0LTEwMCAtNjV0LTEzMS41IC02NC41cTI1IC01MyA0NCAtOTVxMiAtNSA2LjUgLTE3dDcuNSAtMTdxMzYgNSA3NC41IDd0NzMuNSAydDY5IC0xLjV0NjQgLTR0NTYuNSAtNS41dDQ4IC02LjV0MzYuNSAtNg0KdDI1IC00LjV6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2t5cGUiIHVuaWNvZGU9IiYjeGYxN2U7IiANCmQ9Ik0xMTczIDQ3M3EwIDUwIC0xOS41IDkxLjV0LTQ4LjUgNjguNXQtNzMgNDl0LTgyLjUgMzR0LTg3LjUgMjNsLTEwNCAyNHEtMzAgNyAtNDQgMTAuNXQtMzUgMTEuNXQtMzAgMTZ0LTE2LjUgMjF0LTcuNSAzMHEwIDc3IDE0NCA3N3E0MyAwIDc3IC0xMnQ1NCAtMjguNXQzOCAtMzMuNXQ0MCAtMjl0NDggLTEycTQ3IDAgNzUuNSAzMnQyOC41IDc3cTAgNTUgLTU2IDk5LjV0LTE0MiA2Ny41dC0xODIgMjNxLTY4IDAgLTEzMiAtMTUuNQ0KdC0xMTkuNSAtNDd0LTg5IC04N3QtMzMuNSAtMTI4LjVxMCAtNjEgMTkgLTEwNi41dDU2IC03NS41dDgwIC00OC41dDEwMyAtMzIuNWwxNDYgLTM2cTkwIC0yMiAxMTIgLTM2cTMyIC0yMCAzMiAtNjBxMCAtMzkgLTQwIC02NC41dC0xMDUgLTI1LjVxLTUxIDAgLTkxLjUgMTZ0LTY1IDM4LjV0LTQ1LjUgNDV0LTQ2IDM4LjV0LTU0IDE2cS01MCAwIC03NS41IC0zMHQtMjUuNSAtNzVxMCAtOTIgMTIyIC0xNTcuNXQyOTEgLTY1LjUNCnE3MyAwIDE0MCAxOC41dDEyMi41IDUzLjV0ODguNSA5My41dDMzIDEzMS41ek0xNTM2IDI1NnEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41cS0xMzAgMCAtMjM0IDgwcS03NyAtMTYgLTE1MCAtMTZxLTE0MyAwIC0yNzMuNSA1NS41dC0yMjUgMTUwdC0xNTAgMjI1dC01NS41IDI3My41cTAgNzMgMTYgMTUwcS04MCAxMDQgLTgwIDIzNHEwIDE1OSAxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNXExMzAgMCAyMzQgLTgwDQpxNzcgMTYgMTUwIDE2cTE0MyAwIDI3My41IC01NS41dDIyNSAtMTUwdDE1MCAtMjI1dDU1LjUgLTI3My41cTAgLTczIC0xNiAtMTUwcTgwIC0xMDQgODAgLTIzNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZvdXJzcXVhcmUiIHVuaWNvZGU9IiYjeGYxODA7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMTAwMCAxMTAybDM3IDE5NHE1IDIzIC05IDQwdC0zNSAxN2gtNzEycS0yMyAwIC0zOC41IC0xN3QtMTUuNSAtMzd2LTExMDFxMCAtNyA2IC0xbDI5MSAzNTJxMjMgMjYgMzggMzMuNXQ0OCA3LjVoMjM5cTIyIDAgMzcgMTQuNXQxOCAyOS41cTI0IDEzMCAzNyAxOTFxNCAyMSAtMTEuNSA0MHQtMzYuNSAxOWgtMjk0cS0yOSAwIC00OCAxOXQtMTkgNDh2NDJxMCAyOSAxOSA0Ny41dDQ4IDE4LjVoMzQ2cTE4IDAgMzUgMTMuNXQyMCAyOS41eg0KTTEyMjcgMTMyNHEtMTUgLTczIC01My41IC0yNjYuNXQtNjkuNSAtMzUwdC0zNSAtMTczLjVxLTYgLTIyIC05IC0zMi41dC0xNCAtMzIuNXQtMjQuNSAtMzN0LTM4LjUgLTIxdC01OCAtMTBoLTI3MXEtMTMgMCAtMjIgLTEwcS04IC05IC00MjYgLTQ5NHEtMjIgLTI1IC01OC41IC0yOC41dC00OC41IDUuNXEtNTUgMjIgLTU1IDk4djE0MTBxMCA1NSAzOCAxMDIuNXQxMjAgNDcuNWg4ODhxOTUgMCAxMjcgLTUzdDEwIC0xNTl6TTEyMjcgMTMyNA0KbC0xNTggLTc5MHE0IDE3IDM1IDE3My41dDY5LjUgMzUwdDUzLjUgMjY2LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0cmVsbG8iIHVuaWNvZGU9IiYjeGYxODE7IiANCmQ9Ik03MDQgMTkydjEwMjRxMCAxNCAtOSAyM3QtMjMgOWgtNDgwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEwMjRxMCAtMTQgOSAtMjN0MjMgLTloNDgwcTE0IDAgMjMgOXQ5IDIzek0xMzc2IDU3NnY2NDBxMCAxNCAtOSAyM3QtMjMgOWgtNDgwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0MHEwIC0xNCA5IC0yM3QyMyAtOWg0ODBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgMTM0NHYtMTQwOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE0MDgNCnEtMjYgMCAtNDUgMTl0LTE5IDQ1djE0MDhxMCAyNiAxOSA0NXQ0NSAxOWgxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZlbWFsZSIgdW5pY29kZT0iJiN4ZjE4MjsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMjgwIDQ4MHEwIC00MCAtMjggLTY4dC02OCAtMjhxLTUxIDAgLTgwIDQzbC0yMjcgMzQxaC00NXYtMTMybDI0NyAtNDExcTkgLTE1IDkgLTMzcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTkydi0yNzJxMCAtNDYgLTMzIC03OXQtNzkgLTMzaC0xNjBxLTQ2IDAgLTc5IDMzdC0zMyA3OXYyNzJoLTE5MnEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTggOSAzM2wyNDcgNDExdjEzMmgtNDVsLTIyNyAtMzQxcS0yOSAtNDMgLTgwIC00Mw0KcS00MCAwIC02OCAyOHQtMjggNjhxMCAyOSAxNiA1M2wyNTYgMzg0cTczIDEwNyAxNzYgMTA3aDM4NHExMDMgMCAxNzYgLTEwN2wyNTYgLTM4NHExNiAtMjQgMTYgLTUzek04NjQgMTI4MHEwIC05MyAtNjUuNSAtMTU4LjV0LTE1OC41IC02NS41dC0xNTguNSA2NS41dC02NS41IDE1OC41dDY1LjUgMTU4LjV0MTU4LjUgNjUuNXQxNTguNSAtNjUuNXQ2NS41IC0xNTguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im1hbGUiIHVuaWNvZGU9IiYjeGYxODM7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMTAyNCA4MzJ2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjh0LTY4IDI4dC0yOCA2OHYzNTJoLTY0di05MTJxMCAtNDYgLTMzIC03OXQtNzkgLTMzdC03OSAzM3QtMzMgNzl2NDY0aC02NHYtNDY0cTAgLTQ2IC0zMyAtNzl0LTc5IC0zM3QtNzkgMzN0LTMzIDc5djkxMmgtNjR2LTM1MnEwIC00MCAtMjggLTY4dC02OCAtMjh0LTY4IDI4dC0yOCA2OHY0MTZxMCA4MCA1NiAxMzZ0MTM2IDU2aDY0MHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnoNCk03MzYgMTI4MHEwIC05MyAtNjUuNSAtMTU4LjV0LTE1OC41IC02NS41dC0xNTguNSA2NS41dC02NS41IDE1OC41dDY1LjUgMTU4LjV0MTU4LjUgNjUuNXQxNTguNSAtNjUuNXQ2NS41IC0xNTguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImdpdHRpcCIgdW5pY29kZT0iJiN4ZjE4NDsiIA0KZD0iTTc3MyAyMzRsMzUwIDQ3M3ExNiAyMiAyNC41IDU5dC02IDg1dC02MS41IDc5cS00MCAyNiAtODMgMjUuNXQtNzMuNSAtMTcuNXQtNTQuNSAtNDVxLTM2IC00MCAtOTYgLTQwcS01OSAwIC05NSA0MHEtMjQgMjggLTU0LjUgNDV0LTczLjUgMTcuNXQtODQgLTI1LjVxLTQ2IC0zMSAtNjAuNSAtNzl0LTYgLTg1dDI0LjUgLTU5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzDQp0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3VuIiB1bmljb2RlPSImI3hmMTg1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE0NzIgNjQwcTAgMTE3IC00NS41IDIyMy41dC0xMjMgMTg0dC0xODQgMTIzdC0yMjMuNSA0NS41dC0yMjMuNSAtNDUuNXQtMTg0IC0xMjN0LTEyMyAtMTg0dC00NS41IC0yMjMuNXQ0NS41IC0yMjMuNXQxMjMgLTE4NHQxODQgLTEyM3QyMjMuNSAtNDUuNXQyMjMuNSA0NS41dDE4NCAxMjN0MTIzIDE4NHQ0NS41IDIyMy41ek0xNzQ4IDM2M3EtNCAtMTUgLTIwIC0yMGwtMjkyIC05NnYtMzA2cTAgLTE2IC0xMyAtMjZxLTE1IC0xMCAtMjkgLTQNCmwtMjkyIDk0bC0xODAgLTI0OHEtMTAgLTEzIC0yNiAtMTN0LTI2IDEzbC0xODAgMjQ4bC0yOTIgLTk0cS0xNCAtNiAtMjkgNHEtMTMgMTAgLTEzIDI2djMwNmwtMjkyIDk2cS0xNiA1IC0yMCAyMHEtNSAxNyA0IDI5bDE4MCAyNDhsLTE4MCAyNDhxLTkgMTMgLTQgMjlxNCAxNSAyMCAyMGwyOTIgOTZ2MzA2cTAgMTYgMTMgMjZxMTUgMTAgMjkgNGwyOTIgLTk0bDE4MCAyNDhxOSAxMiAyNiAxMnQyNiAtMTJsMTgwIC0yNDhsMjkyIDk0DQpxMTQgNiAyOSAtNHExMyAtMTAgMTMgLTI2di0zMDZsMjkyIC05NnExNiAtNSAyMCAtMjBxNSAtMTYgLTQgLTI5bC0xODAgLTI0OGwxODAgLTI0OHE5IC0xMiA0IC0yOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zNjYiIHVuaWNvZGU9IiYjeGYxODY7IiANCmQ9Ik0xMjYyIDIzM3EtNTQgLTkgLTExMCAtOXEtMTgyIDAgLTMzNyA5MHQtMjQ1IDI0NXQtOTAgMzM3cTAgMTkyIDEwNCAzNTdxLTIwMSAtNjAgLTMyOC41IC0yMjl0LTEyNy41IC0zODRxMCAtMTMwIDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxcTE0NCAwIDI3My41IDYxLjV0MjIwLjUgMTcxLjV6TTE0NjUgMzE4cS05NCAtMjAzIC0yODMuNSAtMzI0LjV0LTQxMy41IC0xMjEuNXEtMTU2IDAgLTI5OCA2MQ0KdC0yNDUgMTY0dC0xNjQgMjQ1dC02MSAyOThxMCAxNTMgNTcuNSAyOTIuNXQxNTYgMjQxLjV0MjM1LjUgMTY0LjV0MjkwIDY4LjVxNDQgMiA2MSAtMzlxMTggLTQxIC0xNSAtNzJxLTg2IC03OCAtMTMxLjUgLTE4MS41dC00NS41IC0yMTguNXEwIC0xNDggNzMgLTI3M3QxOTggLTE5OHQyNzMgLTczcTExOCAwIDIyOCA1MXE0MSAxOCA3MiAtMTNxMTQgLTE0IDE3LjUgLTM0dC00LjUgLTM4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYXJjaGl2ZSIgdW5pY29kZT0iJiN4ZjE4NzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMDg4IDcwNHEwIDI2IC0xOSA0NXQtNDUgMTloLTI1NnEtMjYgMCAtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOWgyNTZxMjYgMCA0NSAxOXQxOSA0NXpNMTY2NCA4OTZ2LTk2MHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE0MDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY5NjBxMCAyNiAxOSA0NXQ0NSAxOWgxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXpNMTcyOCAxMzQ0di0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNTM2DQpxLTI2IDAgLTQ1IDE5dC0xOSA0NXYyNTZxMCAyNiAxOSA0NXQ0NSAxOWgxNTM2cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJ1ZyIgdW5pY29kZT0iJiN4ZjE4ODsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjMyIDU3NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTIyNHEwIC0xNzEgLTY3IC0yOTBsMjA4IC0yMDlxMTkgLTE5IDE5IC00NXQtMTkgLTQ1cS0xOCAtMTkgLTQ1IC0xOXQtNDUgMTlsLTE5OCAxOTdxLTUgLTUgLTE1IC0xM3QtNDIgLTI4LjV0LTY1IC0zNi41dC04MiAtMjl0LTk3IC0xM3Y4OTZoLTEyOHYtODk2cS01MSAwIC0xMDEuNSAxMy41dC04NyAzM3QtNjYgMzl0LTQzLjUgMzIuNWwtMTUgMTRsLTE4MyAtMjA3DQpxLTIwIC0yMSAtNDggLTIxcS0yNCAwIC00MyAxNnEtMTkgMTggLTIwLjUgNDQuNXQxNS41IDQ2LjVsMjAyIDIyN3EtNTggMTE0IC01OCAyNzRoLTIyNHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDIyNHYyOTRsLTE3MyAxNzNxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTlsMTczIC0xNzNoODQ0bDE3MyAxNzNxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXQtMTkgLTQ1bC0xNzMgLTE3M3YtMjk0aDIyNHEyNiAwIDQ1IC0xOQ0KdDE5IC00NXpNMTE1MiAxMTUyaC02NDBxMCAxMzMgOTMuNSAyMjYuNXQyMjYuNSA5My41dDIyNi41IC05My41dDkzLjUgLTIyNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idmsiIHVuaWNvZGU9IiYjeGYxODk7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTkxNyAxMDE2cTIzIC02NCAtMTUwIC0yOTRxLTI0IC0zMiAtNjUgLTg1cS00MCAtNTEgLTU1IC03MnQtMzAuNSAtNDkuNXQtMTIgLTQydDEzIC0zNC41dDMyLjUgLTQzdDU3IC01M3E0IC0yIDUgLTRxMTQxIC0xMzEgMTkxIC0yMjFxMyAtNSA2LjUgLTEyLjV0NyAtMjYuNXQtMC41IC0zNHQtMjUgLTI3LjV0LTU5IC0xMi41bC0yNTYgLTRxLTI0IC01IC01NiA1dC01MiAyMmwtMjAgMTJxLTMwIDIxIC03MCA2NHQtNjguNSA3Ny41dC02MSA1OA0KdC01Ni41IDE1LjVxLTMgLTEgLTggLTMuNXQtMTcgLTE0LjV0LTIxLjUgLTI5LjV0LTE3IC01MnQtNi41IC03Ny41cTAgLTE1IC0zLjUgLTI3LjV0LTcuNSAtMTguNWwtNCAtNXEtMTggLTE5IC01MyAtMjJoLTExNXEtNzEgLTQgLTE0NiAxNi41dC0xMzEuNSA1M3QtMTAzIDY2dC03MC41IDU3LjVsLTI1IDI0cS0xMCAxMCAtMjcuNSAzMHQtNzEuNSA5MXQtMTA2IDE1MXQtMTIyLjUgMjExdC0xMzAuNSAyNzJxLTYgMTYgLTYgMjd0MyAxNmw0IDYNCnExNSAxOSA1NyAxOWwyNzQgMnExMiAtMiAyMyAtNi41dDE2IC04LjVsNSAtM3ExNiAtMTEgMjQgLTMycTIwIC01MCA0NiAtMTAzLjV0NDEgLTgxLjVsMTYgLTI5cTI5IC02MCA1NiAtMTA0dDQ4LjUgLTY4LjV0NDEuNSAtMzguNXQzNCAtMTR0MjcgNXEyIDEgNSA1dDEyIDIydDEzLjUgNDd0OS41IDgxdDAgMTI1cS0yIDQwIC05IDczdC0xNCA0NmwtNiAxMnEtMjUgMzQgLTg1IDQzcS0xMyAyIDUgMjRxMTYgMTkgMzggMzBxNTMgMjYgMjM5IDI0DQpxODIgLTEgMTM1IC0xM3EyMCAtNSAzMy41IC0xMy41dDIwLjUgLTI0dDEwLjUgLTMydDMuNSAtNDUuNXQtMSAtNTV0LTIuNSAtNzAuNXQtMS41IC04Mi41cTAgLTExIC0xIC00MnQtMC41IC00OHQzLjUgLTQwLjV0MTEuNSAtMzl0MjIuNSAtMjQuNXE4IC0yIDE3IC00dDI2IDExdDM4IDM0LjV0NTIgNjd0NjggMTA3LjVxNjAgMTA0IDEwNyAyMjVxNCAxMCAxMCAxNy41dDExIDEwLjVsNCAzbDUgMi41dDEzIDN0MjAgMC41bDI4OCAyDQpxMzkgNSA2NCAtMi41dDMxIC0xNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0id2VpYm8iIHVuaWNvZGU9IiYjeGYxOGE7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjc1IDI1MnEyMSAzNCAxMSA2OXQtNDUgNTBxLTM0IDE0IC03MyAxdC02MCAtNDZxLTIyIC0zNCAtMTMgLTY4LjV0NDMgLTUwLjV0NzQuNSAtMi41dDYyLjUgNDcuNXpNNzY5IDM3M3E4IDEzIDMuNSAyNi41dC0xNy41IDE4LjVxLTE0IDUgLTI4LjUgLTAuNXQtMjEuNSAtMTguNXEtMTcgLTMxIDEzIC00NXExNCAtNSAyOSAwLjV0MjIgMTguNXpNOTQzIDI2NnEtNDUgLTEwMiAtMTU4IC0xNTB0LTIyNCAtMTINCnEtMTA3IDM0IC0xNDcuNSAxMjYuNXQ2LjUgMTg3LjVxNDcgOTMgMTUxLjUgMTM5dDIxMC41IDE5cTExMSAtMjkgMTU4LjUgLTExOS41dDIuNSAtMTkwLjV6TTEyNTUgNDI2cS05IDk2IC04OSAxNzB0LTIwOC41IDEwOXQtMjc0LjUgMjFxLTIyMyAtMjMgLTM2OS41IC0xNDEuNXQtMTMyLjUgLTI2NC41cTkgLTk2IDg5IC0xNzB0MjA4LjUgLTEwOXQyNzQuNSAtMjFxMjIzIDIzIDM2OS41IDE0MS41dDEzMi41IDI2NC41ek0xNTYzIDQyMg0KcTAgLTY4IC0zNyAtMTM5LjV0LTEwOSAtMTM3dC0xNjguNSAtMTE3LjV0LTIyNiAtODN0LTI3MC41IC0zMXQtMjc1IDMzLjV0LTI0MC41IDkzdC0xNzEuNSAxNTF0LTY1IDE5OS41cTAgMTE1IDY5LjUgMjQ1dDE5Ny41IDI1OHExNjkgMTY5IDM0MS41IDIzNnQyNDYuNSAtN3E2NSAtNjQgMjAgLTIwOXEtNCAtMTQgLTEgLTIwdDEwIC03dDE0LjUgMC41dDEzLjUgMy41bDYgMnExMzkgNTkgMjQ2IDU5dDE1MyAtNjFxNDUgLTYzIDAgLTE3OA0KcS0yIC0xMyAtNC41IC0yMHQ0LjUgLTEyLjV0MTIgLTcuNXQxNyAtNnE1NyAtMTggMTAzIC00N3Q4MCAtODEuNXQzNCAtMTE2LjV6TTE0ODkgMTA0NnE0MiAtNDcgNTQuNSAtMTA4LjV0LTYuNSAtMTE3LjVxLTggLTIzIC0yOS41IC0zNHQtNDQuNSAtNHEtMjMgOCAtMzQgMjkuNXQtNCA0NC41cTIwIDYzIC0yNCAxMTF0LTEwNyAzNXEtMjQgLTUgLTQ1IDh0LTI1IDM3cS01IDI0IDggNDQuNXQzNyAyNS41cTYwIDEzIDExOSAtNS41dDEwMSAtNjUuNXoNCk0xNjcwIDEyMDlxODcgLTk2IDExMi41IC0yMjIuNXQtMTMuNSAtMjQxLjVxLTkgLTI3IC0zNCAtNDB0LTUyIC00dC00MCAzNHQtNSA1MnEyOCA4MiAxMCAxNzJ0LTgwIDE1OHEtNjIgNjkgLTE0OCA5NS41dC0xNzMgOC41cS0yOCAtNiAtNTIgOS41dC0zMCA0My41dDkuNSA1MS41dDQzLjUgMjkuNXExMjMgMjYgMjQ0IC0xMS41dDIwOCAtMTM0LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZW5yZW4iIHVuaWNvZGU9IiYjeGYxOGI7IiANCmQ9Ik0xMTMzIC0zNHEtMTcxIC05NCAtMzY4IC05NHEtMTk2IDAgLTM2NyA5NHExMzggODcgMjM1LjUgMjExdDEzMS41IDI2OHEzNSAtMTQ0IDEzMi41IC0yNjh0MjM1LjUgLTIxMXpNNjM4IDEzOTR2LTQ4NXEwIC0yNTIgLTEyNi41IC00NTkuNXQtMzMwLjUgLTMwNi41cS0xODEgMjE1IC0xODEgNDk1cTAgMTg3IDgzLjUgMzQ5LjV0MjI5LjUgMjY5LjV0MzI1IDEzN3pNMTUzNiA2MzhxMCAtMjgwIC0xODEgLTQ5NQ0KcS0yMDQgOTkgLTMzMC41IDMwNi41dC0xMjYuNSA0NTkuNXY0ODVxMTc5IC0zMCAzMjUgLTEzN3QyMjkuNSAtMjY5LjV0ODMuNSAtMzQ5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzcyIiB1bmljb2RlPSImI3hmMThjOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTE0MDIgNDMzcS0zMiAtODAgLTc2IC0xMzh0LTkxIC04OC41dC05OSAtNDYuNXQtMTAxLjUgLTE0LjV0LTk2LjUgOC41dC04Ni41IDIydC02OS41IDI3LjV0LTQ2IDIyLjVsLTE3IDEwcS0xMTMgLTIyOCAtMjg5LjUgLTM1OS41dC0zODQuNSAtMTMyLjVxLTE5IDAgLTMyIDEzdC0xMyAzMnQxMyAzMS41dDMyIDEyLjVxMTczIDEgMzIyLjUgMTA3LjV0MjUxLjUgMjk0LjVxLTM2IC0xNCAtNzIgLTIzdC04MyAtMTN0LTkxIDIuNXQtOTMgMjguNQ0KdC05MiA1OXQtODQuNSAxMDB0LTc0LjUgMTQ2cTExNCA0NyAyMTQgNTd0MTY3LjUgLTcuNXQxMjQuNSAtNTYuNXQ4OC41IC03N3Q1Ni41IC04MnE1MyAxMzEgNzkgMjkxcS03IC0xIC0xOCAtMi41dC00Ni41IC0yLjV0LTY5LjUgMC41dC04MS41IDEwdC04OC41IDIzdC04NCA0Mi41dC03NSA2NXQtNTQuNSA5NC41dC0yOC41IDEyNy41cTcwIDI4IDEzMy41IDM2LjV0MTEyLjUgLTF0OTIgLTMwdDczLjUgLTUwdDU2IC02MXQ0MiAtNjN0MjcuNSAtNTYNCnQxNiAtMzkuNWw0IC0xNnExMiAxMjIgMTIgMTk1cS04IDYgLTIxLjUgMTZ0LTQ5IDQ0LjV0LTYzLjUgNzEuNXQtNTQgOTN0LTMzIDExMi41dDEyIDEyN3Q3MCAxMzguNXE3MyAtMjUgMTI3LjUgLTYxLjV0ODQuNSAtNzYuNXQ0OCAtODV0MjAuNSAtODl0LTAuNSAtODUuNXQtMTMgLTc2LjV0LTE5IC02MnQtMTcgLTQybC03IC0xNXExIC00IDEgLTUwdC0xIC03MnEzIDcgMTAgMTguNXQzMC41IDQzdDUwLjUgNTh0NzEgNTUuNXQ5MS41IDQ0LjUNCnQxMTIgMTQuNXQxMzIuNSAtMjRxLTIgLTc4IC0yMS41IC0xNDEuNXQtNTAgLTEwNC41dC02OS41IC03MS41dC04MS41IC00NS41dC04NC41IC0yNHQtODAgLTkuNXQtNjcuNSAxdC00Ni41IDQuNWwtMTcgM3EtMjMgLTE0NyAtNzMgLTI4M3E2IDcgMTggMTguNXQ0OS41IDQxdDc3LjUgNTIuNXQ5OS41IDQydDExNy41IDIwdDEyOSAtMjMuNXQxMzcgLTc3LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGFja19leGNoYW5nZSIgdW5pY29kZT0iJiN4ZjE4ZDsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMjU5IDI4M3YtNjZxMCAtODUgLTU3LjUgLTE0NC41dC0xMzguNSAtNTkuNWgtNTdsLTI2MCAtMjY5djI2OWgtNTI5cS04MSAwIC0xMzguNSA1OS41dC01Ny41IDE0NC41djY2aDEyMzh6TTEyNTkgNjA5di0yNTVoLTEyMzh2MjU1aDEyMzh6TTEyNTkgOTM3di0yNTVoLTEyMzh2MjU1aDEyMzh6TTEyNTkgMTA3N3YtNjdoLTEyMzh2NjdxMCA4NCA1Ny41IDE0My41dDEzOC41IDU5LjVoODQ2cTgxIDAgMTM4LjUgLTU5LjV0NTcuNSAtMTQzLjV6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zNzQiIHVuaWNvZGU9IiYjeGYxOGU7IiANCmQ9Ik0xMTUyIDY0MHEwIC0xNCAtOSAtMjNsLTMyMCAtMzIwcS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MmgtMzUycS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzUydjE5MnEwIDE0IDkgMjN0MjMgOXExMiAwIDI0IC0xMGwzMTkgLTMxOXE5IC05IDkgLTIzek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4DQp0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvd19jaXJjbGVfYWx0X2xlZnQiIHVuaWNvZGU9IiYjeGYxOTA7IiANCmQ9Ik0xMTUyIDczNnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMzUydi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOXEtMTIgMCAtMjQgMTBsLTMxOSAzMTlxLTkgOSAtOSAyM3Q5IDIzbDMyMCAzMjBxOSA5IDIzIDlxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xOTJoMzUycTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTMxMiA2NDBxMCAxNDggLTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OA0KdC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM3NiIgdW5pY29kZT0iJiN4ZjE5MTsiIA0KZD0iTTEwMjQgOTYwdi02NDBxMCAtMjYgLTE5IC00NXQtNDUgLTE5cS0yMCAwIC0zNyAxMmwtNDQ4IDMyMHEtMjcgMTkgLTI3IDUydDI3IDUybDQ0OCAzMjBxMTcgMTIgMzcgMTJxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xMjgwIDE2MHY5NjBxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC05NjBxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di05NjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg5NjBxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXoNCk0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImRvdF9jaXJjbGVfYWx0IiB1bmljb2RlPSImI3hmMTkyOyIgDQpkPSJNMTAyNCA2NDBxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODEgNzV0LTc1IDE4MXQ3NSAxODF0MTgxIDc1dDE4MSAtNzV0NzUgLTE4MXpNNzY4IDExODRxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczdC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjUNCnQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zNzgiIHVuaWNvZGU9IiYjeGYxOTM7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTAyMyAzNDlsMTAyIC0yMDRxLTU4IC0xNzkgLTIxMCAtMjkwdC0zMzkgLTExMXEtMTU2IDAgLTI4OC41IDc3LjV0LTIxMCAyMTB0LTc3LjUgMjg4LjVxMCAxODEgMTA0LjUgMzMwdDI3NC41IDIxMWwxNyAtMTMxcS0xMjIgLTU0IC0xOTUgLTE2NS41dC03MyAtMjQ0LjVxMCAtMTg1IDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjVxMTI2IDAgMjMyLjUgNjV0MTY1IDE3NS41dDQ5LjUgMjM2LjV6TTE1NzEgMjQ5bDU4IC0xMTRsLTI1NiAtMTI4DQpxLTEzIC03IC0yOSAtN3EtNDAgMCAtNTcgMzVsLTIzOSA0NzdoLTQ3MnEtMjQgMCAtNDIuNSAxNi41dC0yMS41IDQwLjVsLTk2IDc3OXEtMiAxNyA2IDQycTE0IDUxIDU3IDgyLjV0OTcgMzEuNXE2NiAwIDExMyAtNDd0NDcgLTExM3EwIC02OSAtNTIgLTExNy41dC0xMjAgLTQxLjVsMzcgLTI4OWg0MjN2LTEyOGgtNDA3bDE2IC0xMjhoNDU1cTQwIDAgNTcgLTM1bDIyOCAtNDU1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idmltZW9fc3F1YXJlIiB1bmljb2RlPSImI3hmMTk0OyIgDQpkPSJNMTI5MiA4OThxMTAgMjE2IC0xNjEgMjIycS0yMzEgOCAtMzEyIC0yNjFxNDQgMTkgODIgMTlxODUgMCA3NCAtOTZxLTQgLTU3IC03NCAtMTY3dC0xMDUgLTExMHEtNDMgMCAtODIgMTY5cS0xMyA1NCAtNDUgMjU1cS0zMCAxODkgLTE2MCAxNzdxLTU5IC03IC0xNjQgLTEwMGwtODEgLTcybC04MSAtNzJsNTIgLTY3cTc2IDUyIDg3IDUycTU3IDAgMTA3IC0xNzlxMTUgLTU1IDQ1IC0xNjQuNXQ0NSAtMTY0LjVxNjggLTE3OSAxNjQgLTE3OQ0KcTE1NyAwIDM4MyAyOTRxMjIwIDI4MyAyMjYgNDQ0ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zODAiIHVuaWNvZGU9IiYjeGYxOTU7IiBob3Jpei1hZHYteD0iMTE1MiIgDQpkPSJNMTE1MiA3MDRxMCAtMTkxIC05NC41IC0zNTN0LTI1Ni41IC0yNTYuNXQtMzUzIC05NC41aC0xNjBxLTE0IDAgLTIzIDl0LTkgMjN2NjExbC0yMTUgLTY2cS0zIC0xIC05IC0xcS0xMCAwIC0xOSA2cS0xMyAxMCAtMTMgMjZ2MTI4cTAgMjMgMjMgMzFsMjMzIDcxdjkzbC0yMTUgLTY2cS0zIC0xIC05IC0xcS0xMCAwIC0xOSA2cS0xMyAxMCAtMTMgMjZ2MTI4cTAgMjMgMjMgMzFsMjMzIDcxdjI1MHEwIDE0IDkgMjN0MjMgOWgxNjANCnExNCAwIDIzIC05dDkgLTIzdi0xODFsMzc1IDExNnExNSA1IDI4IC01dDEzIC0yNnYtMTI4cTAgLTIzIC0yMyAtMzFsLTM5MyAtMTIxdi05M2wzNzUgMTE2cTE1IDUgMjggLTV0MTMgLTI2di0xMjhxMCAtMjMgLTIzIC0zMWwtMzkzIC0xMjF2LTQ4N3ExODggMTMgMzE4IDE1MXQxMzAgMzI4cTAgMTQgOSAyM3QyMyA5aDE2MHExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGx1c19zcXVhcmVfbyIgdW5pY29kZT0iJiN4ZjE5NjsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xMTUyIDczNnYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMzUydi0zNTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MzUyaC0zNTJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMzUydjM1MnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi0zNTJoMzUycTE0IDAgMjMgLTl0OSAtMjN6TTEyODAgMjg4djgzMnEwIDY2IC00NyAxMTN0LTExMyA0N2gtODMyDQpxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTgzMnEwIC02NiA0NyAtMTEzdDExMyAtNDdoODMycTY2IDAgMTEzIDQ3dDQ3IDExM3pNMTQwOCAxMTIwdi04MzJxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg4MzJxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzgyIiB1bmljb2RlPSImI3hmMTk3OyIgaG9yaXotYWR2LXg9IjIxNzYiIA0KZD0iTTYyMCA0MTZxLTExMCAtNjQgLTI2OCAtNjRoLTEyOHY2NGgtNjRxLTEzIDAgLTIyLjUgMjMuNXQtOS41IDU2LjVxMCAyNCA3IDQ5cS01OCAyIC05Ni41IDEwLjV0LTM4LjUgMjAuNXQzOC41IDIwLjV0OTYuNSAxMC41cS03IDI1IC03IDQ5cTAgMzMgOS41IDU2LjV0MjIuNSAyMy41aDY0djY0aDEyOHExNTggMCAyNjggLTY0aDExMTNxNDIgLTcgMTA2LjUgLTE4dDgwLjUgLTE0cTg5IC0xNSAxNTAgLTQwLjV0ODMuNSAtNDcuNXQyMi41IC00MA0KdC0yMi41IC00MHQtODMuNSAtNDcuNXQtMTUwIC00MC41cS0xNiAtMyAtODAuNSAtMTR0LTEwNi41IC0xOGgtMTExM3pNMTczOSA2NjhxNTMgLTM2IDUzIC05MnQtNTMgLTkybDgxIC0zMHE2OCA0OCA2OCAxMjJ0LTY4IDEyMnpNNjI1IDQwMGgxMDE1cS0yMTcgLTM4IC00NTYgLTgwcS01NyAwIC0xMTMgLTI0dC04MyAtNDhsLTI4IC0yNGwtMjg4IC0yODhxLTI2IC0yNiAtNzAuNSAtNDV0LTg5LjUgLTE5aC05NmwtOTMgNDY0aDI5DQpxMTU3IDAgMjczIDY0ek0zNTIgODE2aC0yOWw5MyA0NjRoOTZxNDYgMCA5MCAtMTl0NzAgLTQ1bDI4OCAtMjg4cTQgLTQgMTEgLTEwLjV0MzAuNSAtMjN0NDguNSAtMjl0NjEuNSAtMjN0NzIuNSAtMTAuNWw0NTYgLTgwaC0xMDE1cS0xMTYgNjQgLTI3MyA2NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zODMiIHVuaWNvZGU9IiYjeGYxOTg7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTUxOSA3NjBxNjIgMCAxMDMuNSAtNDAuNXQ0MS41IC0xMDEuNXEwIC05NyAtOTMgLTEzMGwtMTcyIC01OWw1NiAtMTY3cTcgLTIxIDcgLTQ3cTAgLTU5IC00MiAtMTAydC0xMDEgLTQzcS00NyAwIC04NS41IDI3dC01My41IDcybC01NSAxNjVsLTMxMCAtMTA2bDU1IC0xNjRxOCAtMjQgOCAtNDdxMCAtNTkgLTQyIC0xMDJ0LTEwMiAtNDNxLTQ3IDAgLTg1IDI3dC01MyA3MmwtNTUgMTYzbC0xNTMgLTUzcS0yOSAtOSAtNTAgLTkNCnEtNjEgMCAtMTAxLjUgNDB0LTQwLjUgMTAxcTAgNDcgMjcuNSA4NXQ3MS41IDUzbDE1NiA1M2wtMTA1IDMxM2wtMTU2IC01NHEtMjYgLTggLTQ4IC04cS02MCAwIC0xMDEgNDAuNXQtNDEgMTAwLjVxMCA0NyAyNy41IDg1dDcxLjUgNTNsMTU3IDUzbC01MyAxNTlxLTggMjQgLTggNDdxMCA2MCA0MiAxMDIuNXQxMDIgNDIuNXE0NyAwIDg1IC0yN3Q1MyAtNzJsNTQgLTE2MGwzMTAgMTA1bC01NCAxNjBxLTggMjQgLTggNDdxMCA1OSA0Mi41IDEwMg0KdDEwMS41IDQzcTQ3IDAgODUuNSAtMjcuNXQ1My41IC03MS41bDUzIC0xNjFsMTYyIDU1cTIxIDYgNDMgNnE2MCAwIDEwMi41IC0zOS41dDQyLjUgLTk4LjVxMCAtNDUgLTMwIC04MS41dC03NCAtNTEuNWwtMTU3IC01NGwxMDUgLTMxNmwxNjQgNTZxMjQgOCA0NiA4ek03MjUgNDk4bDMxMCAxMDVsLTEwNSAzMTVsLTMxMCAtMTA3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4NCIgdW5pY29kZT0iJiN4ZjE5OTsiIA0KZD0iTTEyNDggMTQwOHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwek0xMjgwIDM1MnY0MzZxLTMxIC0zNSAtNjQgLTU1cS0zNCAtMjIgLTEzMi41IC04NXQtMTUxLjUgLTk5cS05OCAtNjkgLTE2NCAtNjl2MHYwcS02NiAwIC0xNjQgNjkNCnEtNDcgMzIgLTE0MiA5Mi41dC0xNDIgOTIuNXEtMTIgOCAtMzMgMjd0LTMxIDI3di00MzZxMCAtNDAgMjggLTY4dDY4IC0yOGg4MzJxNDAgMCA2OCAyOHQyOCA2OHpNMTI4MCA5MjVxMCA0MSAtMjcuNSA3MHQtNjguNSAyOWgtODMycS00MCAwIC02OCAtMjh0LTI4IC02OHEwIC0zNyAzMC41IC03Ni41dDY3LjUgLTY0LjVxNDcgLTMyIDEzNy41IC04OXQxMjkuNSAtODNxMyAtMiAxNyAtMTEuNXQyMSAtMTR0MjEgLTEzdDIzLjUgLTEzDQp0MjEuNSAtOS41dDIyLjUgLTcuNXQyMC41IC0yLjV0MjAuNSAyLjV0MjIuNSA3LjV0MjEuNSA5LjV0MjMuNSAxM3QyMSAxM3QyMSAxNHQxNyAxMS41bDI2NyAxNzRxMzUgMjMgNjYuNSA2Mi41dDMxLjUgNzMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zODUiIHVuaWNvZGU9IiYjeGYxOWE7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTI3IDY0MHEwIDE2MyA2NyAzMTNsMzY3IC0xMDA1cS0xOTYgOTUgLTMxNSAyODF0LTExOSA0MTF6TTE0MTUgNjc5cTAgLTE5IC0yLjUgLTM4LjV0LTEwIC00OS41dC0xMS41IC00NHQtMTcuNSAtNTl0LTE3LjUgLTU4bC03NiAtMjU2bC0yNzggODI2cTQ2IDMgODggOHExOSAyIDI2IDE4LjV0LTIuNSAzMXQtMjguNSAxMy41bC0yMDUgLTEwcS03NSAxIC0yMDIgMTBxLTEyIDEgLTIwLjUgLTV0LTExLjUgLTE1dC0xLjUgLTE4LjV0OSAtMTYuNQ0KdDE5LjUgLThsODAgLThsMTIwIC0zMjhsLTE2OCAtNTA0bC0yODAgODMycTQ2IDMgODggOHExOSAyIDI2IDE4LjV0LTIuNSAzMXQtMjguNSAxMy41bC0yMDUgLTEwcS03IDAgLTIzIDAuNXQtMjYgMC41cTEwNSAxNjAgMjc0LjUgMjUzLjV0MzY3LjUgOTMuNXExNDcgMCAyODAuNSAtNTN0MjM4LjUgLTE0OWgtMTBxLTU1IDAgLTkyIC00MC41dC0zNyAtOTUuNXEwIC0xMiAyIC0yNHQ0IC0yMS41dDggLTIzdDkgLTIxdDEyIC0yMi41dDEyLjUgLTIxDQp0MTQuNSAtMjR0MTQgLTIzcTYzIC0xMDcgNjMgLTIxMnpNOTA5IDU3M2wyMzcgLTY0N3ExIC02IDUgLTExcS0xMjYgLTQ0IC0yNTUgLTQ0cS0xMTIgMCAtMjE3IDMyek0xNTcwIDEwMDlxOTUgLTE3NCA5NSAtMzY5cTAgLTIwOSAtMTA0IC0zODUuNXQtMjc5IC0yNzguNWwyMzUgNjc4cTU5IDE2OSA1OSAyNzZxMCA0MiAtNiA3OXpNODk2IDE1MzZxMTgyIDAgMzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4dC03MSAtMzQ4dC0xOTEgLTI4Ng0KdC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTg5NiAtMjE1cTE3MyAwIDMzMS41IDY4dDI3MyAxODIuNXQxODIuNSAyNzN0NjggMzMxLjV0LTY4IDMzMS41dC0xODIuNSAyNzN0LTI3MyAxODIuNXQtMzMxLjUgNjh0LTMzMS41IC02OHQtMjczIC0xODIuNXQtMTgyLjUgLTI3M3QtNjggLTMzMS41dDY4IC0zMzEuNXQxODIuNSAtMjczDQp0MjczIC0xODIuNXQzMzEuNSAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzg2IiB1bmljb2RlPSImI3hmMTliOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwODYgMTUzNnYtMTUzNmwtMjcyIC0xMjhxLTIyOCAyMCAtNDE0IDEwMnQtMjkzIDIwOC41dC0xMDcgMjcyLjVxMCAxNDAgMTAwLjUgMjYzLjV0Mjc1IDIwNS41dDM5MS41IDEwOHYtMTcycS0yMTcgLTM4IC0zNTYuNSAtMTUwdC0xMzkuNSAtMjU1cTAgLTE1MiAxNTQuNSAtMjY3dDM4OC41IC0xNDV2MTM2MHpNMTc1NSA5NTRsMzcgLTM5MGwtNTI1IDExNGwxNDcgODNxLTExOSA3MCAtMjgwIDk5djE3MnEyNzcgLTMzIDQ4MSAtMTU3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4NyIgdW5pY29kZT0iJiN4ZjE5YzsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik05NjAgMTUzNmw5NjAgLTM4NHYtMTI4aC0xMjhxMCAtMjYgLTIwLjUgLTQ1dC00OC41IC0xOWgtMTUyNnEtMjggMCAtNDguNSAxOXQtMjAuNSA0NWgtMTI4djEyOHpNMjU2IDg5NmgyNTZ2LTc2OGgxMjh2NzY4aDI1NnYtNzY4aDEyOHY3NjhoMjU2di03NjhoMTI4djc2OGgyNTZ2LTc2OGg1OXEyOCAwIDQ4LjUgLTE5dDIwLjUgLTQ1di02NGgtMTY2NHY2NHEwIDI2IDIwLjUgNDV0NDguNSAxOWg1OXY3Njh6TTE4NTEgLTY0DQpxMjggMCA0OC41IC0xOXQyMC41IC00NXYtMTI4aC0xOTIwdjEyOHEwIDI2IDIwLjUgNDV0NDguNSAxOWgxNzgyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4OCIgdW5pY29kZT0iJiN4ZjE5ZDsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0xNzc0IDcwMGwxOCAtMzE2cTQgLTY5IC04MiAtMTI4dC0yMzUgLTkzLjV0LTMyMyAtMzQuNXQtMzIzIDM0LjV0LTIzNSA5My41dC04MiAxMjhsMTggMzE2bDU3NCAtMTgxcTIyIC03IDQ4IC03dDQ4IDd6TTIzMDQgMTAyNHEwIC0yMyAtMjIgLTMxbC0xMTIwIC0zNTJxLTQgLTEgLTEwIC0xdC0xMCAxbC02NTIgMjA2cS00MyAtMzQgLTcxIC0xMTEuNXQtMzQgLTE3OC41cTYzIC0zNiA2MyAtMTA5cTAgLTY5IC01OCAtMTA3bDU4IC00MzMNCnEyIC0xNCAtOCAtMjVxLTkgLTExIC0yNCAtMTFoLTE5MnEtMTUgMCAtMjQgMTFxLTEwIDExIC04IDI1bDU4IDQzM3EtNTggMzggLTU4IDEwN3EwIDczIDY1IDExMXExMSAyMDcgOTggMzMwbC0zMzMgMTA0cS0yMiA4IC0yMiAzMXQyMiAzMWwxMTIwIDM1MnE0IDEgMTAgMXQxMCAtMWwxMTIwIC0zNTJxMjIgLTggMjIgLTMxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4OSIgdW5pY29kZT0iJiN4ZjE5ZTsiIA0KZD0iTTg1OSA1NzlsMTMgLTcwN3EtNjIgMTEgLTEwNSAxMXEtNDEgMCAtMTA1IC0xMWwxMyA3MDdxLTQwIDY5IC0xNjguNSAyOTUuNXQtMjE2LjUgMzc0LjV0LTE4MSAyODdxNTggLTE1IDEwOCAtMTVxNDQgMCAxMTEgMTVxNjMgLTExMSAxMzMuNSAtMjI5LjV0MTY3IC0yNzYuNXQxMzguNSAtMjI3cTM3IDYxIDEwOS41IDE3Ny41dDExNy41IDE5MHQxMDUgMTc2dDEwNyAxODkuNXE1NCAtMTQgMTA3IC0xNHE1NiAwIDExNCAxNHYwDQpxLTI4IC0zOSAtNjAgLTg4LjV0LTQ5LjUgLTc4LjV0LTU2LjUgLTk2dC00OSAtODRxLTE0NiAtMjQ4IC0zNTMgLTYxMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxQTAiIHVuaWNvZGU9IiYjeGYxYTA7IiANCmQ9Ik03NjggNzUwaDcyNXExMiAtNjcgMTIgLTEyOHEwIC0yMTcgLTkxIC0zODcuNXQtMjU5LjUgLTI2Ni41dC0zODYuNSAtOTZxLTE1NyAwIC0yOTkgNjAuNXQtMjQ1IDE2My41dC0xNjMuNSAyNDV0LTYwLjUgMjk5dDYwLjUgMjk5dDE2My41IDI0NXQyNDUgMTYzLjV0Mjk5IDYwLjVxMzAwIDAgNTE1IC0yMDFsLTIwOSAtMjAxcS0xMjMgMTE5IC0zMDYgMTE5cS0xMjkgMCAtMjM4LjUgLTY1dC0xNzMuNSAtMTc2LjV0LTY0IC0yNDMuNQ0KdDY0IC0yNDMuNXQxNzMuNSAtMTc2LjV0MjM4LjUgLTY1cTg3IDAgMTYwIDI0dDEyMCA2MHQ4MiA4MnQ1MS41IDg3dDIyLjUgNzhoLTQzNnYyNjR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMWExIiB1bmljb2RlPSImI3hmMWExOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwOTUgMzY5cTE2IC0xNiAwIC0zMXEtNjIgLTYyIC0xOTkgLTYydC0xOTkgNjJxLTE2IDE1IDAgMzFxNiA2IDE1IDZ0MTUgLTZxNDggLTQ5IDE2OSAtNDlxMTIwIDAgMTY5IDQ5cTYgNiAxNSA2dDE1IC02ek03ODggNTUwcTAgLTM3IC0yNiAtNjN0LTYzIC0yNnQtNjMuNSAyNnQtMjYuNSA2M3EwIDM4IDI2LjUgNjR0NjMuNSAyNnQ2MyAtMjYuNXQyNiAtNjMuNXpNMTE4MyA1NTBxMCAtMzcgLTI2LjUgLTYzdC02My41IC0yNnQtNjMgMjYNCnQtMjYgNjN0MjYgNjMuNXQ2MyAyNi41dDYzLjUgLTI2dDI2LjUgLTY0ek0xNDM0IDY3MHEwIDQ5IC0zNSA4NHQtODUgMzV0LTg2IC0zNnEtMTMwIDkwIC0zMTEgOTZsNjMgMjgzbDIwMCAtNDVxMCAtMzcgMjYgLTYzdDYzIC0yNnQ2My41IDI2LjV0MjYuNSA2My41dC0yNi41IDYzLjV0LTYzLjUgMjYuNXEtNTQgMCAtODAgLTUwbC0yMjEgNDlxLTE5IDUgLTI1IC0xNmwtNjkgLTMxMnEtMTgwIC03IC0zMDkgLTk3cS0zNSAzNyAtODcgMzcNCnEtNTAgMCAtODUgLTM1dC0zNSAtODRxMCAtMzUgMTguNSAtNjR0NDkuNSAtNDRxLTYgLTI3IC02IC01NnEwIC0xNDIgMTQwIC0yNDN0MzM3IC0xMDFxMTk4IDAgMzM4IDEwMXQxNDAgMjQzcTAgMzIgLTcgNTdxMzAgMTUgNDggNDMuNXQxOCA2My41ek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MQ0KdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzkyIiB1bmljb2RlPSImI3hmMWEyOyIgDQpkPSJNOTM5IDQwN3ExMyAtMTMgMCAtMjZxLTUzIC01MyAtMTcxIC01M3QtMTcxIDUzcS0xMyAxMyAwIDI2cTUgNiAxMyA2dDEzIC02cTQyIC00MiAxNDUgLTQydDE0NSA0MnE1IDYgMTMgNnQxMyAtNnpNNjc2IDU2M3EwIC0zMSAtMjMgLTU0dC01NCAtMjN0LTU0IDIzdC0yMyA1NHEwIDMyIDIyLjUgNTQuNXQ1NC41IDIyLjV0NTQuNSAtMjIuNXQyMi41IC01NC41ek0xMDE0IDU2M3EwIC0zMSAtMjMgLTU0dC01NCAtMjN0LTU0IDIzdC0yMyA1NA0KcTAgMzIgMjIuNSA1NC41dDU0LjUgMjIuNXQ1NC41IC0yMi41dDIyLjUgLTU0LjV6TTEyMjkgNjY2cTAgNDIgLTMwIDcydC03MyAzMHEtNDIgMCAtNzMgLTMxcS0xMTMgNzggLTI2NyA4Mmw1NCAyNDNsMTcxIC0zOXExIC0zMiAyMy41IC01NHQ1My41IC0yMnEzMiAwIDU0LjUgMjIuNXQyMi41IDU0LjV0LTIyLjUgNTQuNXQtNTQuNSAyMi41cS00OCAwIC02OSAtNDNsLTE4OSA0MnEtMTcgNSAtMjEgLTEzbC02MCAtMjY4cS0xNTQgLTYgLTI2NSAtODMNCnEtMzAgMzIgLTc0IDMycS00MyAwIC03MyAtMzB0LTMwIC03MnEwIC0zMCAxNiAtNTV0NDIgLTM4cS01IC0yNSAtNSAtNDhxMCAtMTIyIDEyMCAtMjA4LjV0Mjg5IC04Ni41cTE3MCAwIDI5MCA4Ni41dDEyMCAyMDguNXEwIDI1IC02IDQ5cTI1IDEzIDQwLjUgMzcuNXQxNS41IDU0LjV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MA0KcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzkzIiB1bmljb2RlPSImI3hmMWEzOyIgDQpkPSJNODY2IDY5N2w5MCAyN3Y2MnEwIDc5IC01OCAxMzV0LTEzOCA1NnQtMTM4IC01NS41dC01OCAtMTM0LjV2LTI4M3EwIC0yMCAtMTQgLTMzLjV0LTMzIC0xMy41dC0zMi41IDEzLjV0LTEzLjUgMzMuNXYxMjBoLTE1MXYtMTIycTAgLTgyIDU3LjUgLTEzOXQxMzkuNSAtNTdxODEgMCAxMzguNSA1Ni41dDU3LjUgMTM2LjV2MjgwcTAgMTkgMTMuNSAzM3QzMy41IDE0cTE5IDAgMzIuNSAtMTR0MTMuNSAtMzN2LTU0ek0xMTk5IDUwMnYxMjJoLTE1MA0Kdi0xMjZxMCAtMjAgLTEzLjUgLTMzLjV0LTMzLjUgLTEzLjVxLTE5IDAgLTMyLjUgMTR0LTEzLjUgMzN2MTIzbC05MCAtMjZsLTYwIDI4di0xMjNxMCAtODAgNTggLTEzN3QxMzkgLTU3dDEzOC41IDU3dDU3LjUgMTM5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDMNCnQzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjFhNCIgdW5pY29kZT0iJiN4ZjFhNDsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xMDYyIDgyNHYxMThxMCA0MiAtMzAgNzJ0LTcyIDMwdC03MiAtMzB0LTMwIC03MnYtNjEycTAgLTE3NSAtMTI2IC0yOTl0LTMwMyAtMTI0cS0xNzggMCAtMzAzLjUgMTI1LjV0LTEyNS41IDMwMy41djI2NmgzMjh2LTI2MnEwIC00MyAzMCAtNzIuNXQ3MiAtMjkuNXQ3MiAyOS41dDMwIDcyLjV2NjIwcTAgMTcxIDEyNi41IDI5MnQzMDEuNSAxMjFxMTc2IDAgMzAyIC0xMjJ0MTI2IC0yOTR2LTEzNmwtMTk1IC01OHpNMTU5MiA2MDJoMzI4DQp2LTI2NnEwIC0xNzggLTEyNS41IC0zMDMuNXQtMzAzLjUgLTEyNS41cS0xNzcgMCAtMzAzIDEyNC41dC0xMjYgMzAwLjV2MjY4bDEzMSAtNjFsMTk1IDU4di0yNzBxMCAtNDIgMzAgLTcxLjV0NzIgLTI5LjV0NzIgMjkuNXQzMCA3MS41djI3NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zOTUiIHVuaWNvZGU9IiYjeGYxYTU7IiANCmQ9Ik0xNDcyIDE2MHY0ODBoLTcwNHY3MDRoLTQ4MHEtOTMgMCAtMTU4LjUgLTY1LjV0LTY1LjUgLTE1OC41di00ODBoNzA0di03MDRoNDgwcTkzIDAgMTU4LjUgNjUuNXQ2NS41IDE1OC41ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNQ0KdDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM5NiIgdW5pY29kZT0iJiN4ZjFhNjsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0zMjggMTI1NGgyMDR2LTk4M2gtNTMydjY5N2gzMjh2Mjg2ek0zMjggNDM1djM2OWgtMTIzdi0zNjloMTIzek02MTQgOTY4di02OTdoMjA1djY5N2gtMjA1ek02MTQgMTI1NHYtMjA0aDIwNXYyMDRoLTIwNXpNOTAxIDk2OGg1MzN2LTk0MmgtNTMzdjE2M2gzMjh2ODJoLTMyOHY2OTd6TTEyMjkgNDM1djM2OWgtMTIzdi0zNjloMTIzek0xNTE2IDk2OGg1MzJ2LTk0MmgtNTMydjE2M2gzMjd2ODJoLTMyN3Y2OTd6TTE4NDMgNDM1djM2OWgtMTIzDQp2LTM2OWgxMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzk3IiB1bmljb2RlPSImI3hmMWE3OyIgDQpkPSJNMTA0NiA1MTZxMCAtNjQgLTM4IC0xMDl0LTkxIC00NXEtNDMgMCAtNzAgMTV2Mjc3cTI4IDE3IDcwIDE3cTUzIDAgOTEgLTQ1LjV0MzggLTEwOS41ek03MDMgOTQ0cTAgLTY0IC0zOCAtMTA5LjV0LTkxIC00NS41cS00MyAwIC03MCAxNXYyNzdxMjggMTcgNzAgMTdxNTMgMCA5MSAtNDV0MzggLTEwOXpNMTI2NSA1MTNxMCAxMzQgLTg4IDIyOXQtMjEzIDk1cS0yMCAwIC0zOSAtM3EtMjMgLTc4IC03OCAtMTM2cS04NyAtOTUgLTIxMSAtMTAxDQp2LTYzNmwyMTEgNDF2MjA2cTUxIC0xOSAxMTcgLTE5cTEyNSAwIDIxMyA5NXQ4OCAyMjl6TTkyMiA5NDBxMCAxMzQgLTg4LjUgMjI5dC0yMTMuNSA5NXEtNzQgMCAtMTQxIC0zNmgtMTg2di04NDBsMjExIDQxdjIwNnE1NSAtMTkgMTE2IC0xOXExMjUgMCAyMTMuNSA5NXQ4OC41IDIyOXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwDQpxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zOTgiIHVuaWNvZGU9IiYjeGYxYTg7IiBob3Jpei1hZHYteD0iMjAzOCIgDQpkPSJNMTIyMiA2MDdxNzUgMyAxNDMuNSAtMjAuNXQxMTggLTU4LjV0MTAxIC05NC41dDg0IC0xMDh0NzUuNSAtMTIwLjVxMzMgLTU2IDc4LjUgLTEwOXQ3NS41IC04MC41dDk5IC04OC41cS00OCAtMzAgLTEwOC41IC01Ny41dC0xMzguNSAtNTl0LTExNCAtNDcuNXEtNDQgMzcgLTc0IDExNXQtNDMuNSAxNjQuNXQtMzMgMTgwLjV0LTQyLjUgMTY4LjV0LTcyLjUgMTIzdC0xMjIuNSA0OC41bC0xMCAtMmwtNiAtNHE0IC01IDEzIC0xNA0KcTYgLTUgMjggLTIzLjV0MjUuNSAtMjJ0MTkgLTE4dDE4IC0yMC41dDExLjUgLTIxdDEwLjUgLTI3LjV0NC41IC0zMXQ0IC00MC41bDEgLTMzcTEgLTI2IC0yLjUgLTU3LjV0LTcuNSAtNTJ0LTEyLjUgLTU4LjV0LTExLjUgLTUzcS0zNSAxIC0xMDEgLTkuNXQtOTggLTEwLjVxLTM5IDAgLTcyIDEwcS0yIDE2IC0yIDQ3cTAgNzQgMyA5NnEyIDEzIDMxLjUgNDEuNXQ1NyA1OXQyNi41IDUxLjVxLTI0IDIgLTQzIC0yNA0KcS0zNiAtNTMgLTExMS41IC05OS41dC0xMzYuNSAtNDYuNXEtMjUgMCAtNzUuNSA2M3QtMTA2LjUgMTM5LjV0LTg0IDk2LjVxLTYgNCAtMjcgMzBxLTQ4MiAtMTEyIC01MTMgLTExMnEtMTYgMCAtMjggMTF0LTEyIDI3cTAgMTUgOC41IDI2LjV0MjIuNSAxNC41bDQ4NiAxMDZxLTggMTQgLTggMjV0NS41IDE3LjV0MTYgMTEuNXQyMCA3dDIzIDQuNXQxOC41IDQuNXE0IDEgMTUuNSA3LjV0MTcuNSA2LjVxMTUgMCAyOCAtMTZ0MjAgLTMzDQpxMTYzIDM3IDE3MiAzN3ExNyAwIDI5LjUgLTExdDEyLjUgLTI4cTAgLTE1IC04LjUgLTI2dC0yMy41IC0xNGwtMTgyIC00MGwtMSAtMTZxLTEgLTI2IDgxLjUgLTExNy41dDEwNC41IC05MS41cTQ3IDAgMTE5IDgwdDcyIDEyOXEwIDM2IC0yMy41IDUzdC01MSAxOC41dC01MSAxMS41dC0yMy41IDM0cTAgMTYgMTAgMzRsLTY4IDE5cTQzIDQ0IDQzIDExN3EwIDI2IC01IDU4cTgyIDE2IDE0NCAxNnE0NCAwIDcxLjUgLTEuNXQ0OC41IC04LjUNCnQzMSAtMTMuNXQyMC41IC0yNC41dDE1LjUgLTMzLjV0MTcgLTQ3LjV0MjQgLTYwbDUwIDI1cS0zIC00MCAtMjMgLTYwdC00Mi41IC0yMXQtNDAgLTYuNXQtMTYuNSAtMjAuNXpNMTI4MiA4NDJxLTUgNSAtMTMuNSAxNS41dC0xMiAxNC41dC0xMC41IDExLjV0LTEwIDEwLjVsLTggOHQtOC41IDcuNXQtOCA1dC04LjUgNC41cS03IDMgLTE0LjUgNXQtMjAuNSAyLjV0LTIyIDAuNWgtMzIuNWgtMzcuNXEtMTI2IDAgLTIxNyAtNDMNCnExNiAzMCAzNiA0Ni41dDU0IDI5LjV0NjUuNSAzNnQ0NiAzNi41dDUwIDU1dDQzLjUgNTAuNXExMiAtOSAyOCAtMzEuNXQzMiAtMzYuNXQzOCAtMTNsMTIgMXYtNzZsMjIgLTFxMjQ3IDk1IDM3MSAxOTBxMjggMjEgNTAgMzl0NDIuNSAzNy41dDMzIDMxdDI5LjUgMzR0MjQgMzF0MjQuNSAzN3QyMyAzOHQyNyA0Ny41dDI5LjUgNTNsNyA5cS0yIC01MyAtNDMgLTEzOXEtNzkgLTE2NSAtMjA1IC0yNjR0LTMwNiAtMTQycS0xNCAtMyAtNDIgLTcuNQ0KdC01MCAtOS41dC0zOSAtMTRxMyAtMTkgMjQuNSAtNDZ0MjEuNSAtMzRxMCAtMTEgLTI2IC0zMHpNMTA2MSAtNzlxMzkgMjYgMTMxLjUgNDcuNXQxNDYuNSAyMS41cTkgMCAyMi41IC0xNS41dDI4IC00Mi41dDI2IC01MHQyNCAtNTF0MTQuNSAtMzNxLTEyMSAtNDUgLTI0NCAtNDVxLTYxIDAgLTEyNSAxMXpNODIyIDU2OGw0OCAxMmwxMDkgLTE3N2wtNzMgLTQ4ek0xMzIzIDUxcTMgLTE1IDMgLTE2cTAgLTcgLTE3LjUgLTE0LjV0LTQ2IC0xMw0KdC01NCAtOS41dC01My41IC03LjV0LTMyIC00LjVsLTcgNDNxMjEgMiA2MC41IDguNXQ3MiAxMHQ2MC41IDMuNWgxNHpNODY2IDY3OWwtOTYgLTIwbC02IDE3cTEwIDEgMzIuNSA3dDM0LjUgNnExOSAwIDM1IC0xMHpNMTA2MSA0NWgzMWwxMCAtODNsLTQxIC0xMnY5NXpNMTk1MCAxNTM1djF2LTF6TTE5NTAgMTUzNWwtMSAtNWwtMiAtMmwxIDN6TTE5NTAgMTUzNWwxIDF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzk5IiB1bmljb2RlPSImI3hmMWE5OyIgDQpkPSJNMTE2NyAtNTBxLTUgMTkgLTI0IDVxLTMwIC0yMiAtODcgLTM5dC0xMzEgLTE3cS0xMjkgMCAtMTkzIDQ5cS01IDQgLTEzIDRxLTExIDAgLTI2IC0xMnEtNyAtNiAtNy41IC0xNnQ3LjUgLTIwcTM0IC0zMiA4Ny41IC00NnQxMDIuNSAtMTIuNXQ5OSA0LjVxNDEgNCA4NC41IDIwLjV0NjUgMzB0MjguNSAyMC41cTEyIDEyIDcgMjl6TTExMjggNjVxLTE5IDQ3IC0zOSA2MXEtMjMgMTUgLTc2IDE1cS00NyAwIC03MSAtMTANCnEtMjkgLTEyIC03OCAtNTZxLTI2IC0yNCAtMTIgLTQ0cTkgLTggMTcuNSAtNC41dDMxLjUgMjMuNXEzIDIgMTAuNSA4LjV0MTAuNSA4LjV0MTAgN3QxMS41IDd0MTIuNSA1dDE1IDQuNXQxNi41IDIuNXQyMC41IDFxMjcgMCA0NC41IC03LjV0MjMgLTE0LjV0MTMuNSAtMjJxMTAgLTE3IDEyLjUgLTIwdDEyLjUgMXEyMyAxMiAxNCAzNHpNMTQ4MyAzNDZxMCAyMiAtNSA0NC41dC0xNi41IDQ1dC0zNCAzNi41dC01Mi41IDE0DQpxLTMzIDAgLTk3IC00MS41dC0xMjkgLTgzLjV0LTEwMSAtNDJxLTI3IC0xIC02My41IDE5dC03NiA0OXQtODMuNSA1OHQtMTAwIDQ5dC0xMTEgMTlxLTExNSAtMSAtMTk3IC03OC41dC04NCAtMTc4LjVxLTIgLTExMiA3NCAtMTY0cTI5IC0yMCA2Mi41IC0yOC41dDEwMy41IC04LjVxNTcgMCAxMzIgMzIuNXQxMzQgNzF0MTIwIDcwLjV0OTMgMzFxMjYgLTEgNjUgLTMxLjV0NzEuNSAtNjd0NjggLTY3LjV0NTUuNSAtMzJxMzUgLTMgNTguNSAxNA0KdDU1LjUgNjNxMjggNDEgNDIuNSAxMDF0MTQuNSAxMDZ6TTE1MzYgNTA2cTAgLTE2NCAtNjIgLTMwNC41dC0xNjYgLTIzNnQtMjQyLjUgLTE0OS41dC0yOTAuNSAtNTR0LTI5MyA1Ny41dC0yNDcuNSAxNTd0LTE3MC41IDI0MS41dC02NCAzMDJxMCA4OSAxOS41IDE3Mi41dDQ5IDE0NS41dDcwLjUgMTE4LjV0NzguNSA5NHQ3OC41IDY5LjV0NjQuNSA0Ni41dDQyLjUgMjQuNXExNCA4IDUxIDI2LjV0NTQuNSAyOC41dDQ4IDMwdDYwLjUgNDQNCnEzNiAyOCA1OCA3Mi41dDMwIDEyNS41cTEyOSAtMTU1IDE4NiAtMTkzcTQ0IC0yOSAxMzAgLTY4dDEyOSAtNjZxMjEgLTEzIDM5IC0yNXQ2MC41IC00Ni41dDc2IC03MC41dDc1IC05NXQ2OSAtMTIydDQ3IC0xNDguNXQxOS41IC0xNzcuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MDAiIHVuaWNvZGU9IiYjeGYxYWE7IiANCmQ9Ik0xMDcwIDQ2M2wtMTYwIC0xNjBsLTE1MSAtMTUybC0zMCAtMzBxLTY1IC02NCAtMTUxLjUgLTg3dC0xNzEuNSAtMnEtMTYgLTcwIC03MiAtMTE1dC0xMjkgLTQ1cS04NSAwIC0xNDUgNjAuNXQtNjAgMTQ1LjVxMCA3MiA0NC41IDEyOHQxMTMuNSA3MnEtMjIgODYgMSAxNzN0ODggMTUybDEyIDEybDE1MSAtMTUybC0xMSAtMTFxLTM3IC0zNyAtMzcgLTg5dDM3IC05MHEzNyAtMzcgODkgLTM3dDg5IDM3bDMwIDMwbDE1MSAxNTJsMTYxIDE2MHoNCk03MjkgMTE0NWwxMiAtMTJsLTE1MiAtMTUybC0xMiAxMnEtMzcgMzcgLTg5IDM3dC04OSAtMzd0LTM3IC04OS41dDM3IC04OS41bDI5IC0yOWwxNTIgLTE1MmwxNjAgLTE2MGwtMTUxIC0xNTJsLTE2MSAxNjBsLTE1MSAxNTJsLTMwIDMwcS02OCA2NyAtOTAgMTU5LjV0NSAxNzkuNXEtNzAgMTUgLTExNSA3MXQtNDUgMTI5cTAgODUgNjAgMTQ1LjV0MTQ1IDYwLjVxNzYgMCAxMzMuNSAtNDl0NjkuNSAtMTIzcTg0IDIwIDE2OS41IC0zLjUNCnQxNDkuNSAtODcuNXpNMTUzNiA3OHEwIC04NSAtNjAgLTE0NS41dC0xNDUgLTYwLjVxLTc0IDAgLTEzMSA0N3QtNzEgMTE4cS04NiAtMjggLTE3OS41IC02dC0xNjEuNSA5MGwtMTEgMTJsMTUxIDE1MmwxMiAtMTJxMzcgLTM3IDg5IC0zN3Q4OSAzN3QzNyA4OXQtMzcgODlsLTMwIDMwbC0xNTIgMTUybC0xNjAgMTYwbDE1MiAxNTJsMTYwIC0xNjBsMTUyIC0xNTJsMjkgLTMwcTY0IC02NCA4Ny41IC0xNTAuNXQyLjUgLTE3MS41DQpxNzYgLTExIDEyNi41IC02OC41dDUwLjUgLTEzNC41ek0xNTM0IDEyMDJxMCAtNzcgLTUxIC0xMzV0LTEyNyAtNjlxMjYgLTg1IDMgLTE3Ni41dC05MCAtMTU4LjVsLTEyIC0xMmwtMTUxIDE1MmwxMiAxMnEzNyAzNyAzNyA4OXQtMzcgODl0LTg5IDM3dC04OSAtMzdsLTMwIC0zMGwtMTUyIC0xNTJsLTE2MCAtMTYwbC0xNTIgMTUybDE2MSAxNjBsMTUyIDE1MmwyOSAzMHE2NyA2NyAxNTkgODkuNXQxNzggLTMuNXExMSA3NSA2OC41IDEyNg0KdDEzNS41IDUxcTg1IDAgMTQ1IC02MC41dDYwIC0xNDUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxYWIiIHVuaWNvZGU9IiYjeGYxYWI7IiANCmQ9Ik02NTQgNDU4cS0xIC0zIC0xMi41IDAuNXQtMzEuNSAxMS41bC0yMCA5cS00NCAyMCAtODcgNDlxLTcgNSAtNDEgMzEuNXQtMzggMjguNXEtNjcgLTEwMyAtMTM0IC0xODFxLTgxIC05NSAtMTA1IC0xMTBxLTQgLTIgLTE5LjUgLTR0LTE4LjUgMHE2IDQgODIgOTJxMjEgMjQgODUuNSAxMTV0NzguNSAxMThxMTcgMzAgNTEgOTguNXQzNiA3Ny41cS04IDEgLTExMCAtMzNxLTggLTIgLTI3LjUgLTcuNXQtMzQuNSAtOS41dC0xNyAtNQ0KcS0yIC0yIC0yIC0xMC41dC0xIC05LjVxLTUgLTEwIC0zMSAtMTVxLTIzIC03IC00NyAwcS0xOCA0IC0yOCAyMXEtNCA2IC01IDIzcTYgMiAyNC41IDV0MjkuNSA2cTU4IDE2IDEwNSAzMnExMDAgMzUgMTAyIDM1cTEwIDIgNDMgMTkuNXQ0NCAyMS41cTkgMyAyMS41IDh0MTQuNSA1LjV0NiAtMC41cTIgLTEyIC0xIC0zM3EwIC0yIC0xMi41IC0yN3QtMjYuNSAtNTMuNXQtMTcgLTMzLjVxLTI1IC01MCAtNzcgLTEzMWw2NCAtMjgNCnExMiAtNiA3NC41IC0zMnQ2Ny41IC0yOHE0IC0xIDEwLjUgLTI1LjV0NC41IC0zMC41ek00NDkgOTQ0cTMgLTE1IC00IC0yOHEtMTIgLTIzIC01MCAtMzhxLTMwIC0xMiAtNjAgLTEycS0yNiAzIC00OSAyNnEtMTQgMTUgLTE4IDQxbDEgM3EzIC0zIDE5LjUgLTV0MjYuNSAwdDU4IDE2cTM2IDEyIDU1IDE0cTE3IDAgMjEgLTE3ek0xMTQ3IDgxNWw2MyAtMjI3bC0xMzkgNDJ6TTM5IDE1bDY5NCAyMzJ2MTAzMmwtNjk0IC0yMzN2LTEwMzF6DQpNMTI4MCAzMzJsMTAyIC0zMWwtMTgxIDY1N2wtMTAwIDMxbC0yMTYgLTUzNmwxMDIgLTMxbDQ1IDExMGwyMTEgLTY1ek03NzcgMTI5NGw1NzMgLTE4NHYzODB6TTEwODggLTI5bDE1OCAtMTNsLTU0IC0xNjBsLTQwIDY2cS0xMzAgLTgzIC0yNzYgLTEwOHEtNTggLTEyIC05MSAtMTJoLTg0cS03OSAwIC0xOTkuNSAzOXQtMTgzLjUgODVxLTggNyAtOCAxNnEwIDggNSAxMy41dDEzIDUuNXE0IDAgMTggLTcuNXQzMC41IC0xNi41dDIwLjUgLTExDQpxNzMgLTM3IDE1OS41IC02MS41dDE1Ny41IC0yNC41cTk1IDAgMTY3IDE0LjV0MTU3IDUwLjVxMTUgNyAzMC41IDE1LjV0MzQgMTl0MjguNSAxNi41ek0xNTM2IDEwNTB2LTEwNzlsLTc3NCAyNDZxLTE0IC02IC0zNzUgLTEyNy41dC0zNjggLTEyMS41cS0xMyAwIC0xOCAxM3EwIDEgLTEgM3YxMDc4cTMgOSA0IDEwcTUgNiAyMCAxMXExMDcgMzYgMTQ5IDUwdjM4NGw1NTggLTE5OHEyIDAgMTYwLjUgNTV0MzE2IDEwOC41dDE2MS41IDUzLjUNCnEyMCAwIDIwIC0yMXYtNDE4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwMiIgdW5pY29kZT0iJiN4ZjFhYzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0yODggMTE1MnE2NiAwIDExMyAtNDd0NDcgLTExM3YtMTA4OHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTI4cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxMjh6TTE2NjQgOTg5cTU4IC0zNCA5MyAtOTN0MzUgLTEyOHYtNzY4cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NWgtODY0cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxNTM2cTAgNDAgMjggNjh0NjggMjhoNjcycTQwIDAgODggLTIwdDc2IC00OA0KbDE1MiAtMTUycTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xNjN6TTkyOCAwdjEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjhxLTE0IDAgLTIzIC05dC05IC0yM3YtMTI4cTAgLTE0IDkgLTIzdDIzIC05aDEyOHExNCAwIDIzIDl0OSAyM3pNOTI4IDI1NnYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTkyOCA1MTJ2MTI4cTAgMTQgLTkgMjMNCnQtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTExODQgMHYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTExODQgMjU2djEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjhxLTE0IDAgLTIzIC05dC05IC0yM3YtMTI4cTAgLTE0IDkgLTIzdDIzIC05aDEyOA0KcTE0IDAgMjMgOXQ5IDIzek0xMTg0IDUxMnYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE0NDAgMHYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE0NDAgMjU2djEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjgNCnEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xMjhxMCAtMTQgOSAtMjN0MjMgLTloMTI4cTE0IDAgMjMgOXQ5IDIzek0xNDQwIDUxMnYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE1MzYgODk2djI1NmgtMTYwcS00MCAwIC02OCAyOHQtMjggNjh2MTYwaC02NDB2LTUxMmg4OTZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDAzIiB1bmljb2RlPSImI3hmMWFkOyIgDQpkPSJNMTM0NCAxNTM2cTI2IDAgNDUgLTE5dDE5IC00NXYtMTY2NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyODBxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNjY0cTAgMjYgMTkgNDV0NDUgMTloMTI4MHpNNTEyIDEyNDh2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzdjY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN6TTUxMiA5OTJ2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOQ0KdDkgMjN2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3pNNTEyIDczNnYtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3pNNTEyIDQ4MHYtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3pNMzg0IDE2MHY2NA0KcTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0zODQgNDE2djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0zODQgNjcydjY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0DQpxMTQgMCAyMyA5dDkgMjN6TTM4NCA5Mjh2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTM4NCAxMTg0djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek04OTYgLTk2djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05DQp0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek04OTYgNDE2djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek04OTYgNjcydjY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek04OTYgOTI4djY0DQpxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTg5NiAxMTg0djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0xMTUyIDE2MHY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NA0KcTE0IDAgMjMgOXQ5IDIzek0xMTUyIDQxNnY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTE1MiA2NzJ2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTExNTIgOTI4djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOQ0KdC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTExNTIgMTE4NHY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MDQiIHVuaWNvZGU9IiYjeGYxYWU7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMTE4OCA5ODhsLTI5MiAtMjkydi04MjRxMCAtNDYgLTMzIC03OXQtNzkgLTMzdC03OSAzM3QtMzMgNzl2Mzg0aC02NHYtMzg0cTAgLTQ2IC0zMyAtNzl0LTc5IC0zM3QtNzkgMzN0LTMzIDc5djgyNGwtMjkyIDI5MnEtMjggMjggLTI4IDY4dDI4IDY4cTI5IDI4IDY4LjUgMjh0NjcuNSAtMjhsMjI4IC0yMjhoMzY4bDIyOCAyMjhxMjggMjggNjggMjh0NjggLTI4cTI4IC0yOSAyOCAtNjguNXQtMjggLTY3LjV6TTg2NCAxMTUyDQpxMCAtOTMgLTY1LjUgLTE1OC41dC0xNTguNSAtNjUuNXQtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjV0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUIxIiB1bmljb2RlPSImI3hmMWIwOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTc4MCAxMDY0cTAgLTYwIC0xOSAtMTEzLjV0LTYzIC05Mi41dC0xMDUgLTM5cS03NiAwIC0xMzggNTcuNXQtOTIgMTM1LjV0LTMwIDE1MXEwIDYwIDE5IDExMy41dDYzIDkyLjV0MTA1IDM5cTc3IDAgMTM4LjUgLTU3LjV0OTEuNSAtMTM1dDMwIC0xNTEuNXpNNDM4IDU4MXEwIC04MCAtNDIgLTEzOXQtMTE5IC01OXEtNzYgMCAtMTQxLjUgNTUuNXQtMTAwLjUgMTMzLjV0LTM1IDE1MnEwIDgwIDQyIDEzOS41dDExOSA1OS41DQpxNzYgMCAxNDEuNSAtNTUuNXQxMDAuNSAtMTM0dDM1IC0xNTIuNXpNODMyIDYwOHExMTggMCAyNTUgLTk3LjV0MjI5IC0yMzd0OTIgLTI1NC41cTAgLTQ2IC0xNyAtNzYuNXQtNDguNSAtNDV0LTY0LjUgLTIwdC03NiAtNS41cS02OCAwIC0xODcuNSA0NXQtMTgyLjUgNDVxLTY2IDAgLTE5Mi41IC00NC41dC0yMDAuNSAtNDQuNXEtMTgzIDAgLTE4MyAxNDZxMCA4NiA1NiAxOTEuNXQxMzkuNSAxOTIuNXQxODcuNSAxNDZ0MTkzIDU5ek0xMDcxIDgxOQ0KcS02MSAwIC0xMDUgMzl0LTYzIDkyLjV0LTE5IDExMy41cTAgNzQgMzAgMTUxLjV0OTEuNSAxMzV0MTM4LjUgNTcuNXE2MSAwIDEwNSAtMzl0NjMgLTkyLjV0MTkgLTExMy41cTAgLTczIC0zMCAtMTUxdC05MiAtMTM1LjV0LTEzOCAtNTcuNXpNMTUwMyA5MjNxNzcgMCAxMTkgLTU5LjV0NDIgLTEzOS41cTAgLTc0IC0zNSAtMTUydC0xMDAuNSAtMTMzLjV0LTE0MS41IC01NS41cS03NyAwIC0xMTkgNTl0LTQyIDEzOXEwIDc0IDM1IDE1Mi41DQp0MTAwLjUgMTM0dDE0MS41IDU1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDA2IiB1bmljb2RlPSImI3hmMWIxOyIgaG9yaXotYWR2LXg9Ijc2OCIgDQpkPSJNNzA0IDEwMDhxMCAtMTQ1IC01NyAtMjQzLjV0LTE1MiAtMTM1LjVsNDUgLTgyMXEyIC0yNiAtMTYgLTQ1dC00NCAtMTloLTE5MnEtMjYgMCAtNDQgMTl0LTE2IDQ1bDQ1IDgyMXEtOTUgMzcgLTE1MiAxMzUuNXQtNTcgMjQzLjVxMCAxMjggNDIuNSAyNDkuNXQxMTcuNSAyMDB0MTYwIDc4LjV0MTYwIC03OC41dDExNy41IC0yMDB0NDIuNSAtMjQ5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDA3IiB1bmljb2RlPSImI3hmMWIyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTg5NiAtOTNsNjQwIDM0OXY2MzZsLTY0MCAtMjMzdi03NTJ6TTgzMiA3NzJsNjk4IDI1NGwtNjk4IDI1NGwtNjk4IC0yNTR6TTE2NjQgMTAyNHYtNzY4cTAgLTM1IC0xOCAtNjV0LTQ5IC00N2wtNzA0IC0zODRxLTI4IC0xNiAtNjEgLTE2dC02MSAxNmwtNzA0IDM4NHEtMzEgMTcgLTQ5IDQ3dC0xOCA2NXY3NjhxMCA0MCAyMyA3M3Q2MSA0N2w3MDQgMjU2cTIyIDggNDQgOHQ0NCAtOGw3MDQgLTI1NnEzOCAtMTQgNjEgLTQ3dDIzIC03M3oNCiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwOCIgdW5pY29kZT0iJiN4ZjFiMzsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik02NDAgLTk2bDM4NCAxOTJ2MzE0bC0zODQgLTE2NHYtMzQyek01NzYgMzU4bDQwNCAxNzNsLTQwNCAxNzNsLTQwNCAtMTczek0xNjY0IC05NmwzODQgMTkydjMxNGwtMzg0IC0xNjR2LTM0MnpNMTYwMCAzNThsNDA0IDE3M2wtNDA0IDE3M2wtNDA0IC0xNzN6TTExNTIgNjUxbDM4NCAxNjV2MjY2bC0zODQgLTE2NHYtMjY3ek0xMDg4IDEwMzBsNDQxIDE4OWwtNDQxIDE4OWwtNDQxIC0xODl6TTIxNzYgNTEydi00MTZxMCAtMzYgLTE5IC02Nw0KdC01MiAtNDdsLTQ0OCAtMjI0cS0yNSAtMTQgLTU3IC0xNHQtNTcgMTRsLTQ0OCAyMjRxLTQgMiAtNyA0cS0yIC0yIC03IC00bC00NDggLTIyNHEtMjUgLTE0IC01NyAtMTR0LTU3IDE0bC00NDggMjI0cS0zMyAxNiAtNTIgNDd0LTE5IDY3djQxNnEwIDM4IDIxLjUgNzB0NTYuNSA0OGw0MzQgMTg2djQwMHEwIDM4IDIxLjUgNzB0NTYuNSA0OGw0NDggMTkycTIzIDEwIDUwIDEwdDUwIC0xMGw0NDggLTE5MnEzNSAtMTYgNTYuNSAtNDh0MjEuNSAtNzANCnYtNDAwbDQzNCAtMTg2cTM2IC0xNiA1NyAtNDh0MjEgLTcweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwOSIgdW5pY29kZT0iJiN4ZjFiNDsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xODQ4IDExOTdoLTUxMXYtMTI0aDUxMXYxMjR6TTE1OTYgNzcxcS05MCAwIC0xNDYgLTUyLjV0LTYyIC0xNDIuNWg0MDhxLTE4IDE5NSAtMjAwIDE5NXpNMTYxMiAxODZxNjMgMCAxMjIgMzJ0NzYgODdoMjIxcS0xMDAgLTMwNyAtNDI3IC0zMDdxLTIxNCAwIC0zNDAuNSAxMzJ0LTEyNi41IDM0N3EwIDIwOCAxMzAuNSAzNDUuNXQzMzYuNSAxMzcuNXExMzggMCAyNDAuNSAtNjh0MTUzIC0xNzl0NTAuNSAtMjQ4cTAgLTE3IC0yIC00N2gtNjU4DQpxMCAtMTExIDU3LjUgLTE3MS41dDE2Ni41IC02MC41ek0yNzcgMjM2aDI5NnEyMDUgMCAyMDUgMTY3cTAgMTgwIC0xOTkgMTgwaC0zMDJ2LTM0N3pNMjc3IDc3M2gyODFxNzggMCAxMjMuNSAzNi41dDQ1LjUgMTEzLjVxMCAxNDQgLTE5MCAxNDRoLTI2MHYtMjk0ek0wIDEyODJoNTk0cTg3IDAgMTU1IC0xNHQxMjYuNSAtNDcuNXQ5MCAtOTYuNXQzMS41IC0xNTRxMCAtMTgxIC0xNzIgLTI2M3ExMTQgLTMyIDE3MiAtMTE1dDU4IC0yMDQNCnEwIC03NSAtMjQuNSAtMTM2LjV0LTY2IC0xMDMuNXQtOTguNSAtNzF0LTEyMSAtNDJ0LTEzNCAtMTNoLTYxMXYxMjYweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxMCIgdW5pY29kZT0iJiN4ZjFiNTsiIA0KZD0iTTEyNDggMTQwOHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwek00OTkgMTA0MWgtMzcxdi03ODdoMzgycTExNyAwIDE5NyA1Ny41dDgwIDE3MC41cTAgMTU4IC0xNDMgMjAwcTEwNyA1MiAxMDcgMTY0cTAgNTcgLTE5LjUgOTYuNQ0KdC01Ni41IDYwLjV0LTc5IDI5LjV0LTk3IDguNXpNNDc3IDcyM2gtMTc2djE4NGgxNjNxMTE5IDAgMTE5IC05MHEwIC05NCAtMTA2IC05NHpNNDg2IDM4OGgtMTg1djIxN2gxODlxMTI0IDAgMTI0IC0xMTNxMCAtMTA0IC0xMjggLTEwNHpNMTEzNiAzNTZxLTY4IDAgLTEwNCAzOHQtMzYgMTA3aDQxMXExIDEwIDEgMzBxMCAxMzIgLTc0LjUgMjIwLjV0LTIwMy41IDg4LjVxLTEyOCAwIC0yMTAgLTg2dC04MiAtMjE2cTAgLTEzNSA3OSAtMjE3DQp0MjEzIC04MnEyMDUgMCAyNjcgMTkxaC0xMzhxLTExIC0zNCAtNDcuNSAtNTR0LTc1LjUgLTIwek0xMTI2IDcyMnExMTMgMCAxMjQgLTEyMmgtMjU0cTQgNTYgMzkgODl0OTEgMzN6TTk2NCA5ODhoMzE5di03N2gtMzE5djc3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxMSIgdW5pY29kZT0iJiN4ZjFiNjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNTgyIDk1NHEwIC0xMDEgLTcxLjUgLTE3Mi41dC0xNzIuNSAtNzEuNXQtMTcyLjUgNzEuNXQtNzEuNSAxNzIuNXQ3MS41IDE3Mi41dDE3Mi41IDcxLjV0MTcyLjUgLTcxLjV0NzEuNSAtMTcyLjV6TTgxMiAyMTJxMCAxMDQgLTczIDE3N3QtMTc3IDczcS0yNyAwIC01NCAtNmwxMDQgLTQycTc3IC0zMSAxMDkuNSAtMTA2LjV0MS41IC0xNTEuNXEtMzEgLTc3IC0xMDcgLTEwOXQtMTUyIC0xcS0yMSA4IC02MiAyNC41dC02MSAyNC41DQpxMzIgLTYwIDkxIC05Ni41dDEzMCAtMzYuNXExMDQgMCAxNzcgNzN0NzMgMTc3ek0xNjQyIDk1M3EwIDEyNiAtODkuNSAyMTUuNXQtMjE1LjUgODkuNXEtMTI3IDAgLTIxNi41IC04OS41dC04OS41IC0yMTUuNXEwIC0xMjcgODkuNSAtMjE2dDIxNi41IC04OXExMjYgMCAyMTUuNSA4OXQ4OS41IDIxNnpNMTc5MiA5NTNxMCAtMTg5IC0xMzMuNSAtMzIydC0zMjEuNSAtMTMzbC00MzcgLTMxOXEtMTIgLTEyOSAtMTA5IC0yMTh0LTIyOSAtODkNCnEtMTIxIDAgLTIxNCA3NnQtMTE4IDE5MmwtMjMwIDkydjQyOWwzODkgLTE1N3E3OSA0OCAxNzMgNDhxMTMgMCAzNSAtMmwyODQgNDA3cTIgMTg3IDEzNS41IDMxOXQzMjAuNSAxMzJxMTg4IDAgMzIxLjUgLTEzMy41dDEzMy41IC0zMjEuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTIiIHVuaWNvZGU9IiYjeGYxYjc7IiANCmQ9Ik0xMjQyIDg4OXEwIDgwIC01NyAxMzYuNXQtMTM3IDU2LjV0LTEzNi41IC01N3QtNTYuNSAtMTM2cTAgLTgwIDU2LjUgLTEzNi41dDEzNi41IC01Ni41dDEzNyA1Ni41dDU3IDEzNi41ek02MzIgMzAxcTAgLTgzIC01OCAtMTQwLjV0LTE0MCAtNTcuNXEtNTYgMCAtMTAzIDI5dC03MiA3N3E1MiAtMjAgOTggLTQwcTYwIC0yNCAxMjAgMS41dDg1IDg2LjVxMjQgNjAgLTEuNSAxMjB0LTg2LjUgODRsLTgyIDMzcTIyIDUgNDIgNQ0KcTgyIDAgMTQwIC01Ny41dDU4IC0xNDAuNXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2MTUzbDE3MiAtNjlxMjAgLTkyIDkzLjUgLTE1MnQxNjguNSAtNjBxMTA0IDAgMTgxIDcwdDg3IDE3M2wzNDUgMjUycTE1MCAwIDI1NS41IDEwNS41dDEwNS41IDI1NC41cTAgMTUwIC0xMDUuNSAyNTUuNXQtMjU1LjUgMTA1LjUNCnEtMTQ4IDAgLTI1MyAtMTA0LjV0LTEwNyAtMjUyLjVsLTIyNSAtMzIycS05IDEgLTI4IDFxLTc1IDAgLTEzNyAtMzdsLTI5NyAxMTl2NDY4cTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6TTEyODkgODg3cTAgLTEwMCAtNzEgLTE3MC41dC0xNzEgLTcwLjV0LTE3MC41IDcwLjV0LTcwLjUgMTcwLjV0NzAuNSAxNzF0MTcwLjUgNzFxMTAxIDAgMTcxLjUgLTcwLjV0NzAuNSAtMTcxLjV6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTMiIHVuaWNvZGU9IiYjeGYxYjg7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODM2IDM2N2wtMTUgLTM2OGwtMiAtMjJsLTQyMCAyOXEtMzYgMyAtNjcgMzEuNXQtNDcgNjUuNXEtMTEgMjcgLTE0LjUgNTV0NCA2NXQxMiA1NXQyMS41IDY0dDE5IDUzcTc4IC0xMiA1MDkgLTI4ek00NDkgOTUzbDE4MCAtMzc5bC0xNDcgOTJxLTYzIC03MiAtMTExLjUgLTE0NC41dC03Mi41IC0xMjV0LTM5LjUgLTk0LjV0LTE4LjUgLTYzbC00IC0yMWwtMTkwIDM1N3EtMTcgMjYgLTE4IDU2dDYgNDdsOCAxOHEzNSA2MyAxMTQgMTg4DQpsLTE0MCA4NnpNMTY4MCA0MzZsLTE4OCAtMzU5cS0xMiAtMjkgLTM2LjUgLTQ2LjV0LTQzLjUgLTIwLjVsLTE4IC00cS03MSAtNyAtMjE5IC0xMmw4IC0xNjRsLTIzMCAzNjdsMjExIDM2Mmw3IC0xNzNxMTcwIC0xNiAyODMgLTV0MTcwIDMzek04OTUgMTM2MHEtNDcgLTYzIC0yNjUgLTQzNWwtMzE3IDE4N2wtMTkgMTJsMjI1IDM1NnEyMCAzMSA2MCA0NXQ4MCAxMHEyNCAtMiA0OC41IC0xMnQ0MiAtMjF0NDEuNSAtMzN0MzYgLTM0LjUNCnQzNiAtMzkuNXQzMiAtMzV6TTE1NTAgMTA1M2wyMTIgLTM2M3ExOCAtMzcgMTIuNSAtNzZ0LTI3LjUgLTc0cS0xMyAtMjAgLTMzIC0zN3QtMzggLTI4dC00OC41IC0yMnQtNDcgLTE2dC01MS41IC0xNHQtNDYgLTEycS0zNCA3MiAtMjY1IDQzNmwzMTMgMTk1ek0xNDA3IDEyNzlsMTQyIDgzbC0yMjAgLTM3M2wtNDE5IDIwbDE1MSA4NnEtMzQgODkgLTc1IDE2NnQtNzUuNSAxMjMuNXQtNjQuNSA4MHQtNDcgNDYuNWwtMTcgMTNsNDA1IC0xDQpxMzEgMyA1OCAtMTAuNXQzOSAtMjguNWwxMSAtMTVxMzkgLTYxIDExMiAtMTkweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxNCIgdW5pY29kZT0iJiN4ZjFiOTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik00ODAgNDQ4cTAgNjYgLTQ3IDExM3QtMTEzIDQ3dC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzek01MTYgNzY4aDEwMTZsLTg5IDM1N3EtMiA4IC0xNCAxNy41dC0yMSA5LjVoLTc2OHEtOSAwIC0yMSAtOS41dC0xNCAtMTcuNXpNMTg4OCA0NDhxMCA2NiAtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN6TTIwNDggNTQ0di0zODQNCnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtMTI4cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnYxMjhoLTEwMjR2LTEyOHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ2MTI4aC05NnEtMTQgMCAtMjMgOXQtOSAyM3YzODRxMCA5MyA2NS41IDE1OC41dDE1OC41IDY1LjVoMjhsMTA1IDQxOXEyMyA5NCAxMDQgMTU3LjV0MTc5IDYzLjVoNzY4cTk4IDAgMTc5IC02My41dDEwNCAtMTU3LjUNCmwxMDUgLTQxOWgyOHE5MyAwIDE1OC41IC02NS41dDY1LjUgLTE1OC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxNSIgdW5pY29kZT0iJiN4ZjFiYTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xODI0IDY0MHE5MyAwIDE1OC41IC02NS41dDY1LjUgLTE1OC41di0zODRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTY0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnY2NGgtMTAyNHYtNjRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2djY0aC05NnEtMTQgMCAtMjMgOXQtOSAyM3YzODRxMCA5MyA2NS41IDE1OC41dDE1OC41IDY1LjVoMjhsMTA1IDQxOXEyMyA5NCAxMDQgMTU3LjUNCnQxNzkgNjMuNWgxMjh2MjI0cTAgMTQgOSAyM3QyMyA5aDQ0OHExNCAwIDIzIC05dDkgLTIzdi0yMjRoMTI4cTk4IDAgMTc5IC02My41dDEwNCAtMTU3LjVsMTA1IC00MTloMjh6TTMyMCAxNjBxNjYgMCAxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3QtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd6TTUxNiA2NDBoMTAxNmwtODkgMzU3cS0yIDggLTE0IDE3LjV0LTIxIDkuNWgtNzY4cS05IDAgLTIxIC05LjV0LTE0IC0xNy41eg0KTTE3MjggMTYwcTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxNiIgdW5pY29kZT0iJiN4ZjFiYjsiIA0KZD0iTTE1MDQgNjRxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC00NjJxMSAtMTcgNiAtODcuNXQ1IC0xMDguNXEwIC0yNSAtMTggLTQyLjV0LTQzIC0xNy41aC0zMjBxLTI1IDAgLTQzIDE3LjV0LTE4IDQyLjVxMCAzOCA1IDEwOC41dDYgODcuNWgtNDYycS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsNDAyIDQwM2gtMjI5cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsNDAyIDQwM2gtMTk3cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsMzg0IDM4NA0KcTE5IDE5IDQ1IDE5dDQ1IC0xOWwzODQgLTM4NHExOSAtMTkgMTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOWgtMTk3bDQwMiAtNDAzcTE5IC0xOSAxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC0yMjlsNDAyIC00MDNxMTkgLTE5IDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTciIHVuaWNvZGU9IiYjeGYxYmM7IiANCmQ9Ik0xMTI3IDMyNnEwIDMyIC0zMCA1MXEtMTkzIDExNSAtNDQ3IDExNXEtMTMzIDAgLTI4NyAtMzRxLTQyIC05IC00MiAtNTJxMCAtMjAgMTMuNSAtMzQuNXQzNS41IC0xNC41cTUgMCAzNyA4cTEzMiAyNyAyNDMgMjdxMjI2IDAgMzk3IC0xMDNxMTkgLTExIDMzIC0xMXExOSAwIDMzIDEzLjV0MTQgMzQuNXpNMTIyMyA1NDFxMCA0MCAtMzUgNjFxLTIzNyAxNDEgLTU0OCAxNDFxLTE1MyAwIC0zMDMgLTQycS00OCAtMTMgLTQ4IC02NA0KcTAgLTI1IDE3LjUgLTQyLjV0NDIuNSAtMTcuNXE3IDAgMzcgOHExMjIgMzMgMjUxIDMzcTI3OSAwIDQ4OCAtMTI0cTI0IC0xMyAzOCAtMTNxMjUgMCA0Mi41IDE3LjV0MTcuNSA0Mi41ek0xMzMxIDc4OXEwIDQ3IC00MCA3MHEtMTI2IDczIC0yOTMgMTEwLjV0LTM0MyAzNy41cS0yMDQgMCAtMzY0IC00N3EtMjMgLTcgLTM4LjUgLTI1LjV0LTE1LjUgLTQ4LjVxMCAtMzEgMjAuNSAtNTJ0NTEuNSAtMjFxMTEgMCA0MCA4cTEzMyAzNyAzMDcgMzcNCnExNTkgMCAzMDkuNSAtMzR0MjUzLjUgLTk1cTIxIC0xMiA0MCAtMTJxMjkgMCA1MC41IDIwLjV0MjEuNSA1MS41ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTgiIHVuaWNvZGU9IiYjeGYxYmQ7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMTAyNCAxMjMzbC0zMDMgLTU4MmwyNCAtMzFoMjc5di00MTVoLTUwN2wtNDQgLTMwbC0xNDIgLTI3M2wtMzAgLTMwaC0zMDF2MzAzbDMwMyA1ODNsLTI0IDMwaC0yNzl2NDE1aDUwN2w0NCAzMGwxNDIgMjczbDMwIDMwaDMwMXYtMzAzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxOSIgdW5pY29kZT0iJiN4ZjFiZTsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik03ODQgMTY0bDE2IDI0MWwtMTYgNTIzcS0xIDEwIC03LjUgMTd0LTE2LjUgN3EtOSAwIC0xNiAtN3QtNyAtMTdsLTE0IC01MjNsMTQgLTI0MXExIC0xMCA3LjUgLTE2LjV0MTUuNSAtNi41cTIyIDAgMjQgMjN6TTEwODAgMTkzbDExIDIxMWwtMTIgNTg2cTAgMTYgLTEzIDI0cS04IDUgLTE2IDV0LTE2IC01cS0xMyAtOCAtMTMgLTI0bC0xIC02bC0xMCAtNTc5cTAgLTEgMTEgLTIzNnYtMXEwIC0xMCA2IC0xN3E5IC0xMSAyMyAtMTENCnExMSAwIDIwIDlxOSA3IDkgMjB6TTM1IDUzM2wyMCAtMTI4bC0yMCAtMTI2cS0yIC05IC05IC05dC05IDlsLTE3IDEyNmwxNyAxMjhxMiA5IDkgOXQ5IC05ek0xMjEgNjEybDI2IC0yMDdsLTI2IC0yMDNxLTIgLTkgLTEwIC05cS05IDAgLTkgMTBsLTIzIDIwMmwyMyAyMDdxMCA5IDkgOXE4IDAgMTAgLTl6TTQwMSAxNTl6TTIxMyA2NTBsMjUgLTI0NWwtMjUgLTIzN3EwIC0xMSAtMTEgLTExcS0xMCAwIC0xMiAxMWwtMjEgMjM3bDIxIDI0NQ0KcTIgMTIgMTIgMTJxMTEgMCAxMSAtMTJ6TTMwNyA2NTdsMjMgLTI1MmwtMjMgLTI0NHEtMiAtMTMgLTE0IC0xM3EtMTMgMCAtMTMgMTNsLTIxIDI0NGwyMSAyNTJxMCAxMyAxMyAxM3ExMiAwIDE0IC0xM3pNNDAxIDYzOWwyMSAtMjM0bC0yMSAtMjQ2cS0yIC0xNiAtMTYgLTE2cS02IDAgLTEwLjUgNC41dC00LjUgMTEuNWwtMjAgMjQ2bDIwIDIzNHEwIDYgNC41IDEwLjV0MTAuNSA0LjVxMTQgMCAxNiAtMTV6TTc4NCAxNjR6TTQ5NSA3ODUNCmwyMSAtMzgwbC0yMSAtMjQ2cTAgLTcgLTUgLTEyLjV0LTEyIC01LjVxLTE2IDAgLTE4IDE4bC0xOCAyNDZsMTggMzgwcTIgMTggMTggMThxNyAwIDEyIC01LjV0NSAtMTIuNXpNNTg5IDg3MWwxOSAtNDY4bC0xOSAtMjQ0cTAgLTggLTUuNSAtMTMuNXQtMTMuNSAtNS41cS0xOCAwIC0yMCAxOWwtMTYgMjQ0bDE2IDQ2OHEyIDE5IDIwIDE5cTggMCAxMy41IC01LjV0NS41IC0xMy41ek02ODcgOTExbDE4IC01MDZsLTE4IC0yNDINCnEtMiAtMjEgLTIyIC0yMXEtMTkgMCAtMjEgMjFsLTE2IDI0MmwxNiA1MDZxMCA5IDYuNSAxNS41dDE0LjUgNi41cTkgMCAxNSAtNi41dDcgLTE1LjV6TTEwNzkgMTY5djB2MHYwek04ODEgOTE1bDE1IC01MTBsLTE1IC0yMzlxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41dC0xNyA3dC04IDE4bC0xNCAyMzlsMTQgNTEwcTAgMTEgNy41IDE4dDE3LjUgN3QxNy41IC03dDcuNSAtMTh6TTk4MCA4OTZsMTQgLTQ5MmwtMTQgLTIzNg0KcTAgLTExIC04IC0xOXQtMTkgLTh0LTE5IDh0LTkgMTlsLTEyIDIzNmwxMiA0OTJxMSAxMiA5IDIwdDE5IDh0MTguNSAtOHQ4LjUgLTIwek0xMTkyIDQwNGwtMTQgLTIzMXYwcTAgLTEzIC05IC0yMnQtMjIgLTl0LTIyIDl0LTEwIDIybC02IDExNGwtNiAxMTdsMTIgNjM2djNxMiAxNSAxMiAyNHE5IDcgMjAgN3E4IDAgMTUgLTVxMTQgLTggMTYgLTI2ek0yMzA0IDQyM3EwIC0xMTcgLTgzIC0xOTkuNXQtMjAwIC04Mi41aC03ODYNCnEtMTMgMiAtMjIgMTF0LTkgMjJ2ODk5cTAgMjMgMjggMzNxODUgMzQgMTgxIDM0cTE5NSAwIDMzOCAtMTMxLjV0MTYwIC0zMjMuNXE1MyAyMiAxMTAgMjJxMTE3IDAgMjAwIC04M3Q4MyAtMjAxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFDMCIgdW5pY29kZT0iJiN4ZjFjMDsiIA0KZD0iTTc2OCA3NjhxMjM3IDAgNDQzIDQzdDMyNSAxMjd2LTE3MHEwIC02OSAtMTAzIC0xMjh0LTI4MCAtOTMuNXQtMzg1IC0zNC41dC0zODUgMzQuNXQtMjgwIDkzLjV0LTEwMyAxMjh2MTcwcTExOSAtODQgMzI1IC0xMjd0NDQzIC00M3pNNzY4IDBxMjM3IDAgNDQzIDQzdDMyNSAxMjd2LTE3MHEwIC02OSAtMTAzIC0xMjh0LTI4MCAtOTMuNXQtMzg1IC0zNC41dC0zODUgMzQuNXQtMjgwIDkzLjV0LTEwMyAxMjh2MTcwcTExOSAtODQgMzI1IC0xMjcNCnQ0NDMgLTQzek03NjggMzg0cTIzNyAwIDQ0MyA0M3QzMjUgMTI3di0xNzBxMCAtNjkgLTEwMyAtMTI4dC0yODAgLTkzLjV0LTM4NSAtMzQuNXQtMzg1IDM0LjV0LTI4MCA5My41dC0xMDMgMTI4djE3MHExMTkgLTg0IDMyNSAtMTI3dDQ0MyAtNDN6TTc2OCAxNTM2cTIwOCAwIDM4NSAtMzQuNXQyODAgLTkzLjV0MTAzIC0xMjh2LTEyOHEwIC02OSAtMTAzIC0xMjh0LTI4MCAtOTMuNXQtMzg1IC0zNC41dC0zODUgMzQuNXQtMjgwIDkzLjUNCnQtMTAzIDEyOHYxMjhxMCA2OSAxMDMgMTI4dDI4MCA5My41dDM4NSAzNC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFDMSIgdW5pY29kZT0iJiN4ZjFjMTsiIA0KZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6DQpNODk0IDQ2NXEzMyAtMjYgODQgLTU2cTU5IDcgMTE3IDdxMTQ3IDAgMTc3IC00OXExNiAtMjIgMiAtNTJxMCAtMSAtMSAtMmwtMiAtMnYtMXEtNiAtMzggLTcxIC0zOHEtNDggMCAtMTE1IDIwdC0xMzAgNTNxLTIyMSAtMjQgLTM5MiAtODNxLTE1MyAtMjYyIC0yNDIgLTI2MnEtMTUgMCAtMjggN2wtMjQgMTJxLTEgMSAtNiA1cS0xMCAxMCAtNiAzNnE5IDQwIDU2IDkxLjV0MTMyIDk2LjVxMTQgOSAyMyAtNnEyIC0yIDIgLTRxNTIgODUgMTA3IDE5Nw0KcTY4IDEzNiAxMDQgMjYycS0yNCA4MiAtMzAuNSAxNTkuNXQ2LjUgMTI3LjVxMTEgNDAgNDIgNDBoMjFoMXEyMyAwIDM1IC0xNXExOCAtMjEgOSAtNjhxLTIgLTYgLTQgLThxMSAtMyAxIC04di0zMHEtMiAtMTIzIC0xNCAtMTkycTU1IC0xNjQgMTQ2IC0yMzh6TTMxOCA1NHE1MiAyNCAxMzcgMTU4cS01MSAtNDAgLTg3LjUgLTg0dC00OS41IC03NHpNNzE2IDk3NHEtMTUgLTQyIC0yIC0xMzJxMSA3IDcgNDRxMCAzIDcgNDNxMSA0IDQgOA0KcS0xIDEgLTEgMnEtMSAyIC0xIDNxLTEgMjIgLTEzIDM2cTAgLTEgLTEgLTJ2LTJ6TTU5MiAzMTNxMTM1IDU0IDI4NCA4MXEtMiAxIC0xMyA5LjV0LTE2IDEzLjVxLTc2IDY3IC0xMjcgMTc2cS0yNyAtODYgLTgzIC0xOTdxLTMwIC01NiAtNDUgLTgzek0xMjM4IDMyOXEtMjQgMjQgLTE0MCAyNHE3NiAtMjggMTI0IC0yOHExNCAwIDE4IDFxMCAxIC0yIDN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDIyIiB1bmljb2RlPSImI3hmMWMyOyIgDQpkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoNCk0yMzMgNzY4di0xMDdoNzBsMTY0IC02NjFoMTU5bDEyOCA0ODVxNyAyMCAxMCA0NnEyIDE2IDIgMjRoNGwzIC0yNHExIC0zIDMuNSAtMjB0NS41IC0yNmwxMjggLTQ4NWgxNTlsMTY0IDY2MWg3MHYxMDdoLTMwMHYtMTA3aDkwbC05OSAtNDM4cS01IC0yMCAtNyAtNDZsLTIgLTIxaC00cTAgMyAtMC41IDYuNXQtMS41IDh0LTEgNi41cS0xIDUgLTQgMjF0LTUgMjVsLTE0NCA1NDVoLTExNGwtMTQ0IC01NDVxLTIgLTkgLTQuNSAtMjQuNQ0KdC0zLjUgLTIxLjVsLTQgLTIxaC00bC0yIDIxcS0yIDI2IC03IDQ2bC05OSA0MzhoOTB2MTA3aC0zMDB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDIzIiB1bmljb2RlPSImI3hmMWMzOyIgDQpkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoNCk00MjkgMTA2di0xMDZoMjgxdjEwNmgtNzVsMTAzIDE2MXE1IDcgMTAgMTYuNXQ3LjUgMTMuNXQzLjUgNGgycTEgLTQgNSAtMTBxMiAtNCA0LjUgLTcuNXQ2IC04dDYuNSAtOC41bDEwNyAtMTYxaC03NnYtMTA2aDI5MXYxMDZoLTY4bC0xOTIgMjczbDE5NSAyODJoNjd2MTA3aC0yNzl2LTEwN2g3NGwtMTAzIC0xNTlxLTQgLTcgLTEwIC0xNi41dC05IC0xMy41bC0yIC0zaC0ycS0xIDQgLTUgMTBxLTYgMTEgLTE3IDIzbC0xMDYgMTU5aDc2djEwNw0KaC0yOTB2LTEwN2g2OGwxODkgLTI3MmwtMTk0IC0yODNoLTY4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyNCIgdW5pY29kZT0iJiN4ZjFjNDsiIA0KZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6DQpNNDE2IDEwNnYtMTA2aDMyN3YxMDZoLTkzdjE2N2gxMzdxNzYgMCAxMTggMTVxNjcgMjMgMTA2LjUgODd0MzkuNSAxNDZxMCA4MSAtMzcgMTQxdC0xMDAgODdxLTQ4IDE5IC0xMzAgMTloLTM2OHYtMTA3aDkydi01NTVoLTkyek03NjkgMzg2aC0xMTl2MjY4aDEyMHE1MiAwIDgzIC0xOHE1NiAtMzMgNTYgLTExNXEwIC04OSAtNjIgLTEyMHEtMzEgLTE1IC03OCAtMTV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDI1IiB1bmljb2RlPSImI3hmMWM1OyIgDQpkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoNCk0xMjgwIDMyMHYtMzIwaC0xMDI0djE5MmwxOTIgMTkybDEyOCAtMTI4bDM4NCAzODR6TTQ0OCA1MTJxLTgwIDAgLTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2dC01NiAtMTM2dC0xMzYgLTU2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyNiIgdW5pY29kZT0iJiN4ZjFjNjsiIA0KZD0iTTY0MCAxMTUydjEyOGgtMTI4di0xMjhoMTI4ek03NjggMTAyNHYxMjhoLTEyOHYtMTI4aDEyOHpNNjQwIDg5NnYxMjhoLTEyOHYtMTI4aDEyOHpNNzY4IDc2OHYxMjhoLTEyOHYtMTI4aDEyOHpNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDANCnYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTEyOHYtMTI4aC0xMjh2MTI4aC01MTJ2LTE1MzZoMTI4MHpNNzgxIDU5M2wxMDcgLTM0OXE4IC0yNyA4IC01MnEwIC04MyAtNzIuNSAtMTM3LjV0LTE4My41IC01NC41dC0xODMuNSA1NC41dC03Mi41IDEzNy41cTAgMjUgOCA1MnEyMSA2MyAxMjAgMzk2djEyOGgxMjh2LTEyOGg3OQ0KcTIyIDAgMzkgLTEzdDIzIC0zNHpNNjQwIDEyOHE1MyAwIDkwLjUgMTl0MzcuNSA0NXQtMzcuNSA0NXQtOTAuNSAxOXQtOTAuNSAtMTl0LTM3LjUgLTQ1dDM3LjUgLTQ1dDkwLjUgLTE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyNyIgdW5pY29kZT0iJiN4ZjFjNzsiIA0KZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6DQpNNjIwIDY4NnEyMCAtOCAyMCAtMzB2LTU0NHEwIC0yMiAtMjAgLTMwcS04IC0yIC0xMiAtMnEtMTIgMCAtMjMgOWwtMTY2IDE2N2gtMTMxcS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxMzFsMTY2IDE2N3ExNiAxNSAzNSA3ek0xMDM3IC0zcTMxIDAgNTAgMjRxMTI5IDE1OSAxMjkgMzYzdC0xMjkgMzYzcS0xNiAyMSAtNDMgMjR0LTQ3IC0xNHEtMjEgLTE3IC0yMy41IC00My41dDE0LjUgLTQ3LjUNCnExMDAgLTEyMyAxMDAgLTI4MnQtMTAwIC0yODJxLTE3IC0yMSAtMTQuNSAtNDcuNXQyMy41IC00Mi41cTE4IC0xNSA0MCAtMTV6TTgyNiAxNDVxMjcgMCA0NyAyMHE4NyA5MyA4NyAyMTl0LTg3IDIxOXEtMTggMTkgLTQ1IDIwdC00NiAtMTd0LTIwIC00NC41dDE4IC00Ni41cTUyIC01NyA1MiAtMTMxdC01MiAtMTMxcS0xOSAtMjAgLTE4IC00Ni41dDIwIC00NC41cTIwIC0xNyA0NCAtMTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDI4IiB1bmljb2RlPSImI3hmMWM4OyIgDQpkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoNCk03NjggNzY4cTUyIDAgOTAgLTM4dDM4IC05MHYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMzg0cS01MiAwIC05MCAzOHQtMzggOTB2Mzg0cTAgNTIgMzggOTB0OTAgMzhoMzg0ek0xMjYwIDc2NnEyMCAtOCAyMCAtMzB2LTU3NnEwIC0yMiAtMjAgLTMwcS04IC0yIC0xMiAtMnEtMTQgMCAtMjMgOWwtMjY1IDI2NnY5MGwyNjUgMjY2cTkgOSAyMyA5cTQgMCAxMiAtMnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MjkiIHVuaWNvZGU9IiYjeGYxYzk7IiANCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgweg0KTTQ4MCA3NjhxOCAxMSAyMSAxMi41dDI0IC02LjVsNTEgLTM4cTExIC04IDEyLjUgLTIxdC02LjUgLTI0bC0xODIgLTI0M2wxODIgLTI0M3E4IC0xMSA2LjUgLTI0dC0xMi41IC0yMWwtNTEgLTM4cS0xMSAtOCAtMjQgLTYuNXQtMjEgMTIuNWwtMjI2IDMwMXEtMTQgMTkgMCAzOHpNMTI4MiA0NjdxMTQgLTE5IDAgLTM4bC0yMjYgLTMwMXEtOCAtMTEgLTIxIC0xMi41dC0yNCA2LjVsLTUxIDM4cS0xMSA4IC0xMi41IDIxdDYuNSAyNGwxODIgMjQzDQpsLTE4MiAyNDNxLTggMTEgLTYuNSAyNHQxMi41IDIxbDUxIDM4cTExIDggMjQgNi41dDIxIC0xMi41ek02NjIgNnEtMTMgMiAtMjAuNSAxM3QtNS41IDI0bDEzOCA4MzFxMiAxMyAxMyAyMC41dDI0IDUuNWw2MyAtMTBxMTMgLTIgMjAuNSAtMTN0NS41IC0yNGwtMTM4IC04MzFxLTIgLTEzIC0xMyAtMjAuNXQtMjQgLTUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MzAiIHVuaWNvZGU9IiYjeGYxY2E7IiANCmQ9Ik0xNDk3IDcwOXYtMTk4cS0xMDEgLTIzIC0xOTggLTIzcS02NSAtMTM2IC0xNjUuNSAtMjcxdC0xODEuNSAtMjE1LjV0LTEyOCAtMTA2LjVxLTgwIC00NSAtMTYyIDNxLTI4IDE3IC02MC41IDQzLjV0LTg1IDgzLjV0LTEwMi41IDEyOC41dC0xMDcuNSAxODR0LTEwNS41IDI0NHQtOTEuNSAzMTQuNXQtNzAuNSAzOTBoMjgzcTI2IC0yMTggNzAgLTM5OC41dDEwNC41IC0zMTd0MTIxLjUgLTIzNS41dDE0MCAtMTk1cTE2OSAxNjkgMjg3IDQwNg0KcS0xNDIgNzIgLTIyMyAyMjB0LTgxIDMzM3EwIDE5MiAxMDQgMzE0LjV0Mjg0IDEyMi41cTE3OCAwIDI3MyAtMTA1LjV0OTUgLTI5Ny41cTAgLTE1OSAtNTggLTI4NnEtNyAtMSAtMTkuNSAtM3QtNDYgLTJ0LTYzIDZ0LTYyIDI1LjV0LTUwLjUgNTEuNXEzMSAxMDMgMzEgMTg0cTAgODcgLTI5IDEzMnQtNzkgNDVxLTUzIDAgLTg1IC00OS41dC0zMiAtMTQwLjVxMCAtMTg2IDEwNSAtMjkzLjV0MjY3IC0xMDcuNXE2MiAwIDEyMSAxNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MzEiIHVuaWNvZGU9IiYjeGYxY2I7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjE2IDM2N2w2MDMgLTQwMnYzNTlsLTMzNCAyMjN6TTE1NCA1MTFsMTkzIDEyOWwtMTkzIDEyOXYtMjU4ek05NzMgLTM1bDYwMyA0MDJsLTI2OSAxODBsLTMzNCAtMjIzdi0zNTl6TTg5NiA0NThsMjcyIDE4MmwtMjcyIDE4MmwtMjcyIC0xODJ6TTQ4NSA3MzNsMzM0IDIyM3YzNTlsLTYwMyAtNDAyek0xNDQ1IDY0MGwxOTMgLTEyOXYyNTh6TTEzMDcgNzMzbDI2OSAxODBsLTYwMyA0MDJ2LTM1OXpNMTc5MiA5MTN2LTU0Ng0KcTAgLTQxIC0zNCAtNjRsLTgxOSAtNTQ2cS0yMSAtMTMgLTQzIC0xM3QtNDMgMTNsLTgxOSA1NDZxLTM0IDIzIC0zNCA2NHY1NDZxMCA0MSAzNCA2NGw4MTkgNTQ2cTIxIDEzIDQzIDEzdDQzIC0xM2w4MTkgLTU0NnEzNCAtMjMgMzQgLTY0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzMiIgdW5pY29kZT0iJiN4ZjFjYzsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xODAwIDc2NHExMTEgLTQ2IDE3OS41IC0xNDUuNXQ2OC41IC0yMjEuNXEwIC0xNjQgLTExOCAtMjgwLjV0LTI4NSAtMTE2LjVxLTQgMCAtMTEuNSAwLjV0LTEwLjUgMC41aC0xMjA5aC0xaC0yaC01cS0xNzAgMTAgLTI4OCAxMjUuNXQtMTE4IDI4MC41cTAgMTEwIDU1IDIwM3QxNDcgMTQ3cS0xMiAzOSAtMTIgODJxMCAxMTUgODIgMTk2dDE5OSA4MXE5NSAwIDE3MiAtNThxNzUgMTU0IDIyMi41IDI0OHQzMjYuNSA5NA0KcTE2NiAwIDMwNiAtODAuNXQyMjEuNSAtMjE4LjV0ODEuNSAtMzAxcTAgLTYgLTAuNSAtMTh0LTAuNSAtMTh6TTQ2OCA0OThxMCAtMTIyIDg0IC0xOTN0MjA4IC03MXExMzcgMCAyNDAgOTlxLTE2IDIwIC00Ny41IDU2LjV0LTQzLjUgNTAuNXEtNjcgLTY1IC0xNDQgLTY1cS01NSAwIC05My41IDMzLjV0LTM4LjUgODcuNXEwIDUzIDM4LjUgODd0OTEuNSAzNHE0NCAwIDg0LjUgLTIxdDczIC01NXQ2NSAtNzV0NjkgLTgydDc3IC03NXQ5NyAtNTUNCnQxMjEuNSAtMjFxMTIxIDAgMjA0LjUgNzEuNXQ4My41IDE5MC41cTAgMTIxIC04NCAxOTJ0LTIwNyA3MXEtMTQzIDAgLTI0MSAtOTdsOTMgLTEwOHE2NiA2NCAxNDIgNjRxNTIgMCA5MiAtMzN0NDAgLTg0cTAgLTU3IC0zNyAtOTEuNXQtOTQgLTM0LjVxLTQzIDAgLTgyLjUgMjF0LTcyIDU1dC02NS41IDc1dC02OS41IDgydC03Ny41IDc1dC05Ni41IDU1dC0xMTguNSAyMXEtMTIyIDAgLTIwNyAtNzAuNXQtODUgLTE4OS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzMyIgdW5pY29kZT0iJiN4ZjFjZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04OTYgMTUzNnExODIgMCAzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh0LTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTg5NiAxNDA4cS0xOTAgMCAtMzYxIC05MGwxOTQgLTE5NHE4MiAyOCAxNjcgMjh0MTY3IC0yOGwxOTQgMTk0cS0xNzEgOTAgLTM2MSA5MHpNMjE4IDI3OWwxOTQgMTk0DQpxLTI4IDgyIC0yOCAxNjd0MjggMTY3bC0xOTQgMTk0cS05MCAtMTcxIC05MCAtMzYxdDkwIC0zNjF6TTg5NiAtMTI4cTE5MCAwIDM2MSA5MGwtMTk0IDE5NHEtODIgLTI4IC0xNjcgLTI4dC0xNjcgMjhsLTE5NCAtMTk0cTE3MSAtOTAgMzYxIC05MHpNODk2IDI1NnExNTkgMCAyNzEuNSAxMTIuNXQxMTIuNSAyNzEuNXQtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41dC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjUNCnQyNzEuNSAtMTEyLjV6TTEzODAgNDczbDE5NCAtMTk0cTkwIDE3MSA5MCAzNjF0LTkwIDM2MWwtMTk0IC0xOTRxMjggLTgyIDI4IC0xNjd0LTI4IC0xNjd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDM0IiB1bmljb2RlPSImI3hmMWNlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NjAgNjQwcTAgLTE3NiAtNjguNSAtMzM2dC0xODQgLTI3NS41dC0yNzUuNSAtMTg0dC0zMzYgLTY4LjV0LTMzNiA2OC41dC0yNzUuNSAxODR0LTE4NCAyNzUuNXQtNjguNSAzMzZxMCAyMTMgOTcgMzk4LjV0MjY1IDMwNS41dDM3NCAxNTF2LTIyOHEtMjIxIC00NSAtMzY2LjUgLTIyMXQtMTQ1LjUgLTQwNnEwIC0xMzAgNTEgLTI0OC41dDEzNi41IC0yMDR0MjA0IC0xMzYuNXQyNDguNSAtNTF0MjQ4LjUgNTF0MjA0IDEzNi41DQp0MTM2LjUgMjA0dDUxIDI0OC41cTAgMjMwIC0xNDUuNSA0MDZ0LTM2Ni41IDIyMXYyMjhxMjA2IC0zMSAzNzQgLTE1MXQyNjUgLTMwNS41dDk3IC0zOTguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxRDAiIHVuaWNvZGU9IiYjeGYxZDA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTkgNjYycTggMjE3IDExNiA0MDZ0MzA1IDMxOGg1cTAgLTEgLTEgLTNxLTggLTggLTI4IC0zMy41dC01MiAtNzYuNXQtNjAgLTExMC41dC00NC41IC0xMzUuNXQtMTQgLTE1MC41dDM5IC0xNTcuNXQxMDguNSAtMTU0cTUwIC01MCAxMDIgLTY5LjV0OTAuNSAtMTEuNXQ2OS41IDIzLjV0NDcgMzIuNWwxNiAxNnEzOSA1MSA1MyAxMTYuNXQ2LjUgMTIyLjV0LTIxIDEwN3QtMjYuNSA4MGwtMTQgMjlxLTEwIDI1IC0zMC41IDQ5LjV0LTQzIDQxDQp0LTQzLjUgMjkuNXQtMzUgMTlsLTEzIDZsMTA0IDExNXEzOSAtMTcgNzggLTUydDU5IC02MWwxOSAtMjdxMSA0OCAtMTguNSAxMDMuNXQtNDAuNSA4Ny41bC0yMCAzMWwxNjEgMTgzbDE2MCAtMTgxcS0zMyAtNDYgLTUyLjUgLTEwMi41dC0yMi41IC05MC41bC00IC0zM3EyMiAzNyA2MS41IDcyLjV0NjcuNSA1Mi41bDI4IDE3bDEwMyAtMTE1cS00NCAtMTQgLTg1IC01MHQtNjAgLTY1bC0xOSAtMjlxLTMxIC01NiAtNDggLTEzMy41dC03IC0xNzANCnQ1NyAtMTU2LjVxMzMgLTQ1IDc3LjUgLTYwLjV0ODUgLTUuNXQ3NiAyNi41dDU3LjUgMzMuNWwyMSAxNnE2MCA1MyA5Ni41IDExNXQ0OC41IDEyMS41dDEwIDEyMS41dC0xOCAxMTh0LTM3IDEwNy41dC00NS41IDkzdC00NSA3MnQtMzQuNSA0Ny41bC0xMyAxN3EtMTQgMTMgLTcgMTNsMTAgLTNxNDAgLTI5IDYyLjUgLTQ2dDYyIC01MHQ2NCAtNTh0NTguNSAtNjV0NTUuNSAtNzd0NDUuNSAtODh0MzggLTEwM3QyMy41IC0xMTd0MTAuNSAtMTM2DQpxMyAtMjU5IC0xMDggLTQ2NXQtMzEyIC0zMjF0LTQ1NiAtMTE1cS0xODUgMCAtMzUxIDc0dC0yODMuNSAxOTh0LTE4NCAyOTN0LTYwLjUgMzUzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFEMSIgdW5pY29kZT0iJiN4ZjFkMTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04NzQgLTEwMnYtNjZxLTIwOCA2IC0zODUgMTA5LjV0LTI4MyAyNzUuNWw1OCAzNHEyOSAtNDkgNzMgLTk5bDY1IDU3cTE0OCAtMTY4IDM2OCAtMjEybC0xNyAtODZxNjUgLTEyIDEyMSAtMTN6TTI3NiA0MjhsLTgzIC0yOHEyMiAtNjAgNDkgLTExMmwtNTcgLTMzcS05OCAxODAgLTk4IDM4NXQ5OCAzODVsNTcgLTMzcS0zMCAtNTYgLTQ5IC0xMTJsODIgLTI4cS0zNSAtMTAwIC0zNSAtMjEycTAgLTEwOSAzNiAtMjEyek0xNTI4IDI1MQ0KbDU4IC0zNHEtMTA2IC0xNzIgLTI4MyAtMjc1LjV0LTM4NSAtMTA5LjV2NjZxNTYgMSAxMjEgMTNsLTE3IDg2cTIyMCA0NCAzNjggMjEybDY1IC01N3E0NCA1MCA3MyA5OXpNMTM3NyA4MDVsLTIzMyAtODBxMTQgLTQyIDE0IC04NXQtMTQgLTg1bDIzMiAtODBxLTMxIC05MiAtOTggLTE2OWwtMTg1IDE2MnEtNTcgLTY3IC0xNDcgLTg1bDQ4IC0yNDFxLTUyIC0xMCAtOTggLTEwdC05OCAxMGw0OCAyNDFxLTkwIDE4IC0xNDcgODVsLTE4NSAtMTYyDQpxLTY3IDc3IC05OCAxNjlsMjMyIDgwcS0xNCA0MiAtMTQgODV0MTQgODVsLTIzMyA4MHEzMyA5MyA5OSAxNjlsMTg1IC0xNjJxNTkgNjggMTQ3IDg2bC00OCAyNDBxNDQgMTAgOTggMTB0OTggLTEwbC00OCAtMjQwcTg4IC0xOCAxNDcgLTg2bDE4NSAxNjJxNjYgLTc2IDk5IC0xNjl6TTg3NCAxNDQ4di02NnEtNjUgLTIgLTEyMSAtMTNsMTcgLTg2cS0yMjAgLTQyIC0zNjggLTIxMWwtNjUgNTZxLTM4IC00MiAtNzMgLTk4bC01NyAzMw0KcTEwNiAxNzIgMjgyIDI3NS41dDM4NSAxMDkuNXpNMTcwNSA2NDBxMCAtMjA1IC05OCAtMzg1bC01NyAzM3EyNyA1MiA0OSAxMTJsLTgzIDI4cTM2IDEwMyAzNiAyMTJxMCAxMTIgLTM1IDIxMmw4MiAyOHEtMTkgNTYgLTQ5IDExMmw1NyAzM3E5OCAtMTgwIDk4IC0zODV6TTE1ODUgMTA2M2wtNTcgLTMzcS0zNSA1NiAtNzMgOThsLTY1IC01NnEtMTQ4IDE2OSAtMzY4IDIxMWwxNyA4NnEtNTYgMTEgLTEyMSAxM3Y2NnEyMDkgLTYgMzg1IC0xMDkuNQ0KdDI4MiAtMjc1LjV6TTE3NDggNjQwcTAgMTczIC02Ny41IDMzMXQtMTgxLjUgMjcydC0yNzIgMTgxLjV0LTMzMSA2Ny41dC0zMzEgLTY3LjV0LTI3MiAtMTgxLjV0LTE4MS41IC0yNzJ0LTY3LjUgLTMzMXQ2Ny41IC0zMzF0MTgxLjUgLTI3MnQyNzIgLTE4MS41dDMzMSAtNjcuNXQzMzEgNjcuNXQyNzIgMTgxLjV0MTgxLjUgMjcydDY3LjUgMzMxek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MQ0KdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUQyIiB1bmljb2RlPSImI3hmMWQyOyIgDQpkPSJNNTgyIDIyOHEwIC02NiAtOTMgLTY2cS0xMDcgMCAtMTA3IDYzcTAgNjQgOTggNjRxMTAyIDAgMTAyIC02MXpNNTQ2IDY5NHEwIC04NSAtNzQgLTg1cS03NyAwIC03NyA4NHEwIDkwIDc3IDkwcTM2IDAgNTUgLTI1LjV0MTkgLTYzLjV6TTcxMiA3Njl2MTI1cS03OCAtMjkgLTEzNSAtMjlxLTUwIDI5IC0xMTAgMjlxLTg2IDAgLTE0NSAtNTd0LTU5IC0xNDNxMCAtNTAgMjkuNSAtMTAydDczLjUgLTY3di0zcS0zOCAtMTcgLTM4IC04NQ0KcTAgLTUzIDQxIC03N3YtM3EtMTEzIC0zNyAtMTEzIC0xMzlxMCAtNDUgMjAgLTc4LjV0NTQgLTUxdDcyIC0yNS41dDgxIC04cTIyNCAwIDIyNCAxODhxMCA2NyAtNDggOTl0LTEyNiA0NnEtMjcgNSAtNTEuNSAyMC41dC0yNC41IDM5LjVxMCA0NCA0OSA1MnE3NyAxNSAxMjIgNzB0NDUgMTM0cTAgMjQgLTEwIDUycTM3IDkgNDkgMTN6TTc3MSAzNTBoMTM3cS0yIDI3IC0yIDgydjM4N3EwIDQ2IDIgNjloLTEzN3EzIC0yMyAzIC03MXYtMzkyDQpxMCAtNTAgLTMgLTc1ek0xMjgwIDM2NnYxMjFxLTMwIC0yMSAtNjggLTIxcS01MyAwIC01MyA4MnYyMjVoNTJxOSAwIDI2LjUgLTF0MjYuNSAtMXYxMTdoLTEwNXEwIDgyIDMgMTAyaC0xNDBxNCAtMjQgNCAtNTV2LTQ3aC02MHYtMTE3cTM2IDMgMzcgM3EzIDAgMTEgLTAuNXQxMiAtMC41di0yaC0ydi0yMTdxMCAtMzcgMi41IC02NHQxMS41IC01Ni41dDI0LjUgLTQ4LjV0NDMuNSAtMzF0NjYgLTEycTY0IDAgMTA4IDI0ek05MjQgMTA3Mg0KcTAgMzYgLTI0IDYzLjV0LTYwIDI3LjV0LTYwLjUgLTI3dC0yNC41IC02NHEwIC0zNiAyNSAtNjIuNXQ2MCAtMjYuNXQ1OS41IDI3dDI0LjUgNjJ6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzOCIgdW5pY29kZT0iJiN4ZjFkMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik01OTUgMjJxMCAxMDAgLTE2NSAxMDBxLTE1OCAwIC0xNTggLTEwNHEwIC0xMDEgMTcyIC0xMDFxMTUxIDAgMTUxIDEwNXpNNTM2IDc3N3EwIDYxIC0zMCAxMDJ0LTg5IDQxcS0xMjQgMCAtMTI0IC0xNDVxMCAtMTM1IDEyNCAtMTM1cTExOSAwIDExOSAxMzd6TTgwNSAxMTAxdi0yMDJxLTM2IC0xMiAtNzkgLTIycTE2IC00MyAxNiAtODRxMCAtMTI3IC03MyAtMjE2LjV0LTE5NyAtMTEyLjVxLTQwIC04IC01OS41IC0yN3QtMTkuNSAtNTgNCnEwIC0zMSAyMi41IC01MS41dDU4IC0zMnQ3OC41IC0yMnQ4NiAtMjUuNXQ3OC41IC0zNy41dDU4IC02NHQyMi41IC05OC41cTAgLTMwNCAtMzYzIC0zMDRxLTY5IDAgLTEzMCAxMi41dC0xMTYgNDF0LTg3LjUgODJ0LTMyLjUgMTI3LjVxMCAxNjUgMTgyIDIyNXY0cS02NyA0MSAtNjcgMTI2cTAgMTA5IDYzIDEzN3Y0cS03MiAyNCAtMTE5LjUgMTA4LjV0LTQ3LjUgMTY1LjVxMCAxMzkgOTUgMjMxLjV0MjM1IDkyLjVxOTYgMCAxNzggLTQ3DQpxOTggMCAyMTggNDd6TTExMjMgMjIwaC0yMjJxNCA0NSA0IDEzNHY2MDlxMCA5NCAtNCAxMjhoMjIycS00IC0zMyAtNCAtMTI0di02MTNxMCAtODkgNCAtMTM0ek0xNzI0IDQ0MnYtMTk2cS03MSAtMzkgLTE3NCAtMzlxLTYyIDAgLTEwNyAyMHQtNzAgNTB0LTM5LjUgNzh0LTE4LjUgOTJ0LTQgMTAzdjM1MWgydjRxLTcgMCAtMTkgMXQtMTggMXEtMjEgMCAtNTkgLTZ2MTkwaDk2djc2cTAgNTQgLTYgODloMjI3cS02IC00MSAtNiAtMTY1aDE3MQ0Kdi0xOTBxLTE1IDAgLTQzLjUgMnQtNDIuNSAyaC04NXYtMzY1cTAgLTEzMSA4NyAtMTMxcTYxIDAgMTA5IDMzek0xMTQ4IDEzODlxMCAtNTggLTM5IC0xMDEuNXQtOTYgLTQzLjVxLTU4IDAgLTk4IDQzLjV0LTQwIDEwMS41cTAgNTkgMzkuNSAxMDN0OTguNSA0NHE1OCAwIDk2LjUgLTQ0LjV0MzguNSAtMTAyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDM5IiB1bmljb2RlPSImI3hmMWQ0OyIgDQpkPSJNODA5IDUzMmwyNjYgNDk5aC0xMTJsLTE1NyAtMzEycS0yNCAtNDggLTQ0IC05MmwtNDIgOTJsLTE1NSAzMTJoLTEyMGwyNjMgLTQ5M3YtMzI0aDEwMXYzMTh6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFENSIgdW5pY29kZT0iJiN4ZjFkNTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik04NDIgOTY0cTAgLTgwIC01NyAtMTM2LjV0LTEzNiAtNTYuNXEtNjAgMCAtMTExIDM1cS02MiAtNjcgLTExNSAtMTQ2cS0yNDcgLTM3MSAtMjAyIC04NTlxMSAtMjIgLTEyLjUgLTM4LjV0LTM0LjUgLTE4LjVoLTVxLTIwIDAgLTM1IDEzLjV0LTE3IDMzLjVxLTE0IDEyNiAtMy41IDI0Ny41dDI5LjUgMjE3dDU0IDE4NnQ2OSAxNTUuNXQ3NCAxMjVxNjEgOTAgMTMyIDE2NXEtMTYgMzUgLTE2IDc3cTAgODAgNTYuNSAxMzYuNXQxMzYuNSA1Ni41DQp0MTM2LjUgLTU2LjV0NTYuNSAtMTM2LjV6TTEyMjMgOTUzcTAgLTE1OCAtNzggLTI5MnQtMjEyLjUgLTIxMnQtMjkyLjUgLTc4cS02NCAwIC0xMzEgMTRxLTIxIDUgLTMyLjUgMjMuNXQtNi41IDM5LjVxNSAyMCAyMyAzMS41dDM5IDcuNXE1MSAtMTMgMTA4IC0xM3E5NyAwIDE4NiAzOHQxNTMgMTAydDEwMiAxNTN0MzggMTg2dC0zOCAxODZ0LTEwMiAxNTN0LTE1MyAxMDJ0LTE4NiAzOHQtMTg2IC0zOHQtMTUzIC0xMDJ0LTEwMiAtMTUzDQp0LTM4IC0xODZxMCAtMTE0IDUyIC0yMThxMTAgLTIwIDMuNSAtNDB0LTI1LjUgLTMwdC0zOS41IC0zdC0zMC41IDI2cS02NCAxMjMgLTY0IDI2NXEwIDExOSA0Ni41IDIyN3QxMjQuNSAxODZ0MTg2IDEyNHQyMjYgNDZxMTU4IDAgMjkyLjUgLTc4dDIxMi41IC0yMTIuNXQ3OCAtMjkyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUQ2IiB1bmljb2RlPSImI3hmMWQ2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTI3MCA3MzBxLTggMTkgLTggNTJxMCAyMCAxMSA0OXQyNCA0NXEtMSAyMiA3LjUgNTN0MjIuNSA0M3EwIDEzOSA5Mi41IDI4OC41dDIxNy41IDIwOS41cTEzOSA2NiAzMjQgNjZxMTMzIDAgMjY2IC01NXE0OSAtMjEgOTAgLTQ4dDcxIC01NnQ1NSAtNjh0NDIgLTc0dDMyLjUgLTg0LjV0MjUuNSAtODkuNXQyMiAtOThsMSAtNXE1NSAtODMgNTUgLTE1MHEwIC0xNCAtOSAtNDB0LTkgLTM4cTAgLTEgMS41IC0zLjV0My41IC01dDIgLTMuNQ0KcTc3IC0xMTQgMTIwLjUgLTIxNC41dDQzLjUgLTIwOC41cTAgLTQzIC0xOS41IC0xMDB0LTU1LjUgLTU3cS05IDAgLTE5LjUgNy41dC0xOSAxNy41dC0xOSAyNnQtMTYgMjYuNXQtMTMuNSAyNnQtOSAxNy41cS0xIDEgLTMgMWwtNSAtNHEtNTkgLTE1NCAtMTMyIC0yMjNxMjAgLTIwIDYxLjUgLTM4LjV0NjkgLTQxLjV0MzUuNSAtNjVxLTIgLTQgLTQgLTE2dC03IC0xOHEtNjQgLTk3IC0zMDIgLTk3cS01MyAwIC0xMTAuNSA5dC05OCAyMA0KdC0xMDQuNSAzMHEtMTUgNSAtMjMgN3EtMTQgNCAtNDYgNC41dC00MCAxLjVxLTQxIC00NSAtMTI3LjUgLTY1dC0xNjguNSAtMjBxLTM1IDAgLTY5IDEuNXQtOTMgOXQtMTAxIDIwLjV0LTc0LjUgNDB0LTMyLjUgNjRxMCA0MCAxMCA1OS41dDQxIDQ4LjVxMTEgMiA0MC41IDEzdDQ5LjUgMTJxNCAwIDE0IDJxMiAyIDIgNGwtMiAzcS00OCAxMSAtMTA4IDEwNS41dC03MyAxNTYuNWwtNSAzcS00IDAgLTEyIC0yMHEtMTggLTQxIC01NC41IC03NC41DQp0LTc3LjUgLTM3LjVoLTFxLTQgMCAtNiA0LjV0LTUgNS41cS0yMyA1NCAtMjMgMTAwcTAgMjc1IDI1MiA0NjZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUQ3IiB1bmljb2RlPSImI3hmMWQ3OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTU4MCAxMDc1cTAgNDEgLTI1IDY2dC02NiAyNXEtNDMgMCAtNzYgLTI1LjV0LTMzIC02NS41cTAgLTM5IDMzIC02NC41dDc2IC0yNS41cTQxIDAgNjYgMjQuNXQyNSA2NS41ek0xMzIzIDU2OHEwIDI4IC0yNS41IDUwdC02NS41IDIycS0yNyAwIC00OS41IC0yMi41dC0yMi41IC00OS41cTAgLTI4IDIyLjUgLTUwLjV0NDkuNSAtMjIuNXE0MCAwIDY1LjUgMjJ0MjUuNSA1MXpNMTA4NyAxMDc1cTAgNDEgLTI0LjUgNjZ0LTY1LjUgMjUNCnEtNDMgMCAtNzYgLTI1LjV0LTMzIC02NS41cTAgLTM5IDMzIC02NC41dDc2IC0yNS41cTQxIDAgNjUuNSAyNC41dDI0LjUgNjUuNXpNMTcyMiA1NjhxMCAyOCAtMjYgNTB0LTY1IDIycS0yNyAwIC00OS41IC0yMi41dC0yMi41IC00OS41cTAgLTI4IDIyLjUgLTUwLjV0NDkuNSAtMjIuNXEzOSAwIDY1IDIydDI2IDUxek0xNDU2IDk2NXEtMzEgNCAtNzAgNHEtMTY5IDAgLTMxMSAtNzd0LTIyMy41IC0yMDguNXQtODEuNSAtMjg3LjUNCnEwIC03OCAyMyAtMTUycS0zNSAtMyAtNjggLTNxLTI2IDAgLTUwIDEuNXQtNTUgNi41dC00NC41IDd0LTU0LjUgMTAuNXQtNTAgMTAuNWwtMjUzIC0xMjdsNzIgMjE4cS0yOTAgMjAzIC0yOTAgNDkwcTAgMTY5IDk3LjUgMzExdDI2NCAyMjMuNXQzNjMuNSA4MS41cTE3NiAwIDMzMi41IC02NnQyNjIgLTE4Mi41dDEzNi41IC0yNjAuNXpNMjA0OCA0MDRxMCAtMTE3IC02OC41IC0yMjMuNXQtMTg1LjUgLTE5My41bDU1IC0xODFsLTE5OSAxMDkNCnEtMTUwIC0zNyAtMjE4IC0zN3EtMTY5IDAgLTMxMSA3MC41dC0yMjMuNSAxOTEuNXQtODEuNSAyNjR0ODEuNSAyNjR0MjIzLjUgMTkxLjV0MzExIDcwLjVxMTYxIDAgMzAzIC03MC41dDIyNy41IC0xOTJ0ODUuNSAtMjYzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQzIiB1bmljb2RlPSImI3hmMWQ4OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NjQgMTUyNXEzMyAtMjQgMjcgLTY0bC0yNTYgLTE1MzZxLTUgLTI5IC0zMiAtNDVxLTE0IC04IC0zMSAtOHEtMTEgMCAtMjQgNWwtNDUzIDE4NWwtMjQyIC0yOTVxLTE4IC0yMyAtNDkgLTIzcS0xMyAwIC0yMiA0cS0xOSA3IC0zMC41IDIzLjV0LTExLjUgMzYuNXYzNDlsODY0IDEwNTlsLTEwNjkgLTkyNWwtMzk1IDE2MnEtMzcgMTQgLTQwIDU1cS0yIDQwIDMyIDU5bDE2NjQgOTYwcTE1IDkgMzIgOXEyMCAwIDM2IC0xMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NDQiIHVuaWNvZGU9IiYjeGYxZDk7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc2NCAxNTI1cTMzIC0yNCAyNyAtNjRsLTI1NiAtMTUzNnEtNSAtMjkgLTMyIC00NXEtMTQgLTggLTMxIC04cS0xMSAwIC0yNCA1bC01MjcgMjE1bC0yOTggLTMyN3EtMTggLTIxIC00NyAtMjFxLTE0IDAgLTIzIDRxLTE5IDcgLTMwIDIzLjV0LTExIDM2LjV2NDUybC00NzIgMTkzcS0zNyAxNCAtNDAgNTVxLTMgMzkgMzIgNTlsMTY2NCA5NjBxMzUgMjEgNjggLTJ6TTE0MjIgMjZsMjIxIDEzMjNsLTE0MzQgLTgyN2wzMzYgLTEzNw0KbDg2MyA2MzlsLTQ3OCAtNzk3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ0NSIgdW5pY29kZT0iJiN4ZjFkYTsiIA0KZD0iTTE1MzYgNjQwcTAgLTE1NiAtNjEgLTI5OHQtMTY0IC0yNDV0LTI0NSAtMTY0dC0yOTggLTYxcS0xNzIgMCAtMzI3IDcyLjV0LTI2NCAyMDQuNXEtNyAxMCAtNi41IDIyLjV0OC41IDIwLjVsMTM3IDEzOHExMCA5IDI1IDlxMTYgLTIgMjMgLTEycTczIC05NSAxNzkgLTE0N3QyMjUgLTUycTEwNCAwIDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXQtNDAuNSAxOTguNXQtMTA5LjUgMTYzLjUNCnQtMTYzLjUgMTA5LjV0LTE5OC41IDQwLjVxLTk4IDAgLTE4OCAtMzUuNXQtMTYwIC0xMDEuNWwxMzcgLTEzOHEzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgNDIgNDAgNTlxMzkgMTcgNjkgLTE0bDEzMCAtMTI5cTEwNyAxMDEgMjQ0LjUgMTU2LjV0Mjg0LjUgNTUuNXExNTYgMCAyOTggLTYxdDI0NSAtMTY0dDE2NCAtMjQ1dDYxIC0yOTh6TTg5NiA5Mjh2LTQ0OHEwIC0xNCAtOSAtMjMNCnQtMjMgLTloLTMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgyMjR2MzUycTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ2IiB1bmljb2RlPSImI3hmMWRiOyIgDQpkPSJNNzY4IDEyODBxLTEzMCAwIC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDR0LTUxIC0yNDguNXQ1MSAtMjQ4LjV0MTM2LjUgLTIwNHQyMDQgLTEzNi41dDI0OC41IC01MXQyNDguNSA1MXQyMDQgMTM2LjV0MTM2LjUgMjA0dDUxIDI0OC41dC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzDQp0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ0NyIgdW5pY29kZT0iJiN4ZjFkYzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjgyIC0xMjhxLTQ0IDAgLTEzMi41IDMuNXQtMTMzLjUgMy41cS00NCAwIC0xMzIgLTMuNXQtMTMyIC0zLjVxLTI0IDAgLTM3IDIwLjV0LTEzIDQ1LjVxMCAzMSAxNyA0NnQzOSAxN3Q1MSA3dDQ1IDE1cTMzIDIxIDMzIDE0MGwtMSAzOTFxMCAyMSAtMSAzMXEtMTMgNCAtNTAgNGgtNjc1cS0zOCAwIC01MSAtNHEtMSAtMTAgLTEgLTMxbC0xIC0zNzFxMCAtMTQyIDM3IC0xNjRxMTYgLTEwIDQ4IC0xM3Q1NyAtMy41dDQ1IC0xNQ0KdDIwIC00NS41cTAgLTI2IC0xMi41IC00OHQtMzYuNSAtMjJxLTQ3IDAgLTEzOS41IDMuNXQtMTM4LjUgMy41cS00MyAwIC0xMjggLTMuNXQtMTI3IC0zLjVxLTIzIDAgLTM1LjUgMjF0LTEyLjUgNDVxMCAzMCAxNS41IDQ1dDM2IDE3LjV0NDcuNSA3LjV0NDIgMTVxMzMgMjMgMzMgMTQzbC0xIDU3djgxM3EwIDMgMC41IDI2dDAgMzYuNXQtMS41IDM4LjV0LTMuNSA0MnQtNi41IDM2LjV0LTExIDMxLjV0LTE2IDE4cS0xNSAxMCAtNDUgMTJ0LTUzIDINCnQtNDEgMTR0LTE4IDQ1cTAgMjYgMTIgNDh0MzYgMjJxNDYgMCAxMzguNSAtMy41dDEzOC41IC0zLjVxNDIgMCAxMjYuNSAzLjV0MTI2LjUgMy41cTI1IDAgMzcuNSAtMjJ0MTIuNSAtNDhxMCAtMzAgLTE3IC00My41dC0zOC41IC0xNC41dC00OS41IC00dC00MyAtMTNxLTM1IC0yMSAtMzUgLTE2MGwxIC0zMjBxMCAtMjEgMSAtMzJxMTMgLTMgMzkgLTNoNjk5cTI1IDAgMzggM3ExIDExIDEgMzJsMSAzMjBxMCAxMzkgLTM1IDE2MA0KcS0xOCAxMSAtNTguNSAxMi41dC02NiAxM3QtMjUuNSA0OS41cTAgMjYgMTIuNSA0OHQzNy41IDIycTQ0IDAgMTMyIC0zLjV0MTMyIC0zLjVxNDMgMCAxMjkgMy41dDEyOSAzLjVxMjUgMCAzNy41IC0yMnQxMi41IC00OHEwIC0zMCAtMTcuNSAtNDR0LTQwIC0xNC41dC01MS41IC0zdC00NCAtMTIuNXEtMzUgLTIzIC0zNSAtMTYxbDEgLTk0M3EwIC0xMTkgMzQgLTE0MHExNiAtMTAgNDYgLTEzLjV0NTMuNSAtNC41dDQxLjUgLTE1LjV0MTggLTQ0LjUNCnEwIC0yNiAtMTIgLTQ4dC0zNiAtMjJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ4IiB1bmljb2RlPSImI3hmMWRkOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEyNzggMTM0N3YtNzNxMCAtMjkgLTE4LjUgLTYxdC00Mi41IC0zMnEtNTAgMCAtNTQgLTFxLTI2IC02IC0zMiAtMzFxLTMgLTExIC0zIC02NHYtMTE1MnEwIC0yNSAtMTggLTQzdC00MyAtMThoLTEwOHEtMjUgMCAtNDMgMTh0LTE4IDQzdjEyMThoLTE0M3YtMTIxOHEwIC0yNSAtMTcuNSAtNDN0LTQzLjUgLTE4aC0xMDhxLTI2IDAgLTQzLjUgMTh0LTE3LjUgNDN2NDk2cS0xNDcgMTIgLTI0NSA1OXEtMTI2IDU4IC0xOTIgMTc5DQpxLTY0IDExNyAtNjQgMjU5cTAgMTY2IDg4IDI4NnE4OCAxMTggMjA5IDE1OXExMTEgMzcgNDE3IDM3aDQ3OXEyNSAwIDQzIC0xOHQxOCAtNDN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ5IiB1bmljb2RlPSImI3hmMWRlOyIgDQpkPSJNMzUyIDEyOHYtMTI4aC0zNTJ2MTI4aDM1MnpNNzA0IDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI1NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTI1NnEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnpNODY0IDY0MHYtMTI4aC04NjR2MTI4aDg2NHpNMjI0IDExNTJ2LTEyOGgtMjI0djEyOGgyMjR6TTE1MzYgMTI4di0xMjhoLTczNnYxMjhoNzM2ek01NzYgMTI4MHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI1Ng0KcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2MjU2cTAgMjYgMTkgNDV0NDUgMTloMjU2ek0xMjE2IDc2OHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI1NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTI1NnEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnpNMTUzNiA2NDB2LTEyOGgtMjI0djEyOGgyMjR6TTE1MzYgMTE1MnYtMTI4aC04NjR2MTI4aDg2NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxRTAiIHVuaWNvZGU9IiYjeGYxZTA7IiANCmQ9Ik0xMjE2IDUxMnExMzMgMCAyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXQtOTMuNSAtMjI2LjV0LTIyNi41IC05My41dC0yMjYuNSA5My41dC05My41IDIyNi41cTAgMTIgMiAzNGwtMzYwIDE4MHEtOTIgLTg2IC0yMTggLTg2cS0xMzMgMCAtMjI2LjUgOTMuNXQtOTMuNSAyMjYuNXQ5My41IDIyNi41dDIyNi41IDkzLjVxMTI2IDAgMjE4IC04NmwzNjAgMTgwcS0yIDIyIC0yIDM0cTAgMTMzIDkzLjUgMjI2LjV0MjI2LjUgOTMuNQ0KdDIyNi41IC05My41dDkzLjUgLTIyNi41dC05My41IC0yMjYuNXQtMjI2LjUgLTkzLjVxLTEyNiAwIC0yMTggODZsLTM2MCAtMTgwcTIgLTIyIDIgLTM0dC0yIC0zNGwzNjAgLTE4MHE5MiA4NiAyMTggODZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDUxIiB1bmljb2RlPSImI3hmMWUxOyIgDQpkPSJNMTI4MCAzNDFxMCA4OCAtNjIuNSAxNTF0LTE1MC41IDYzcS04NCAwIC0xNDUgLTU4bC0yNDEgMTIwcTIgMTYgMiAyM3QtMiAyM2wyNDEgMTIwcTYxIC01OCAxNDUgLTU4cTg4IDAgMTUwLjUgNjN0NjIuNSAxNTF0LTYyLjUgMTUwLjV0LTE1MC41IDYyLjV0LTE1MSAtNjIuNXQtNjMgLTE1MC41cTAgLTcgMiAtMjNsLTI0MSAtMTIwcS02MiA1NyAtMTQ1IDU3cS04OCAwIC0xNTAuNSAtNjIuNXQtNjIuNSAtMTUwLjV0NjIuNSAtMTUwLjUNCnQxNTAuNSAtNjIuNXE4MyAwIDE0NSA1N2wyNDEgLTEyMHEtMiAtMTYgLTIgLTIzcTAgLTg4IDYzIC0xNTAuNXQxNTEgLTYyLjV0MTUwLjUgNjIuNXQ2Mi41IDE1MC41ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTIiIHVuaWNvZGU9IiYjeGYxZTI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNTcxIDk0N3EtMTAgMjUgLTM0IDM1dC00OSAwcS0xMDggLTQ0IC0xOTEgLTEyN3QtMTI3IC0xOTFxLTEwIC0yNSAwIC00OXQzNSAtMzRxMTMgLTUgMjQgLTVxNDIgMCA2MCA0MHEzNCA4NCA5OC41IDE0OC41dDE0OC41IDk4LjVxMjUgMTEgMzUgMzV0MCA0OXpNMTUxMyAxMzAzbDQ2IC00NmwtMjQ0IC0yNDNsNjggLTY4cTE5IC0xOSAxOSAtNDUuNXQtMTkgLTQ1LjVsLTY0IC02NHE4OSAtMTYxIDg5IC0zNDNxMCAtMTQzIC01NS41IC0yNzMuNQ0KdC0xNTAgLTIyNXQtMjI1IC0xNTB0LTI3My41IC01NS41dC0yNzMuNSA1NS41dC0yMjUgMTUwdC0xNTAgMjI1dC01NS41IDI3My41dDU1LjUgMjczLjV0MTUwIDIyNXQyMjUgMTUwdDI3My41IDU1LjVxMTgyIDAgMzQzIC04OWw2NCA2NHExOSAxOSA0NS41IDE5dDQ1LjUgLTE5bDY4IC02OHpNMTUyMSAxMzU5cS0xMCAtMTAgLTIyIC0xMHEtMTMgMCAtMjMgMTBsLTkxIDkwcS05IDEwIC05IDIzdDkgMjNxMTAgOSAyMyA5dDIzIC05bDkwIC05MQ0KcTEwIC05IDEwIC0yMi41dC0xMCAtMjIuNXpNMTc1MSAxMTI5cS0xMSAtOSAtMjMgLTl0LTIzIDlsLTkwIDkxcS0xMCA5IC0xMCAyMi41dDEwIDIyLjVxOSAxMCAyMi41IDEwdDIyLjUgLTEwbDkxIC05MHE5IC0xMCA5IC0yM3QtOSAtMjN6TTE3OTIgMTMxMnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnEtMTQgMCAtMjMgOXQtOSAyM3Q5IDIzdDIzIDloOTZxMTQgMCAyMyAtOXQ5IC0yM3pNMTYwMCAxNTA0di05NnEwIC0xNCAtOSAtMjN0LTIzIC05DQp0LTIzIDl0LTkgMjN2OTZxMCAxNCA5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTE3NTEgMTQ0OWwtOTEgLTkwcS0xMCAtMTAgLTIyIC0xMHEtMTMgMCAtMjMgMTBxLTEwIDkgLTEwIDIyLjV0MTAgMjIuNWw5MCA5MXExMCA5IDIzIDl0MjMgLTlxOSAtMTAgOSAtMjN0LTkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ1MyIgdW5pY29kZT0iJiN4ZjFlMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02MDkgNzIwbDI4NyAyMDhsMjg3IC0yMDhsLTEwOSAtMzM2aC0zNTV6TTg5NiAxNTM2cTE4MiAwIDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHQtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXpNMTUxNSAxODZxMTQ5IDIwMyAxNDkgNDU0djNsLTEwMiAtODlsLTI0MCAyMjRsNjMgMzIzDQpsMTM0IC0xMnEtMTUwIDIwNiAtMzg5IDI4Mmw1MyAtMTI0bC0yODcgLTE1OWwtMjg3IDE1OWw1MyAxMjRxLTIzOSAtNzYgLTM4OSAtMjgybDEzNSAxMmw2MiAtMzIzbC0yNDAgLTIyNGwtMTAyIDg5di0zcTAgLTI1MSAxNDkgLTQ1NGwzMCAxMzJsMzI2IC00MGwxMzkgLTI5OGwtMTE2IC02OXExMTcgLTM5IDI0MCAtMzl0MjQwIDM5bC0xMTYgNjlsMTM5IDI5OGwzMjYgNDB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDU0IiB1bmljb2RlPSImI3hmMWU0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTQ0OCAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0yNTYgNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNODMyIDIyNHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyMw0KdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNNjQwIDYwOHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTY2IDc2OHEtMjggMCAtNDcgMTl0LTE5IDQ2djEyOWg1MTR2LTEyOXEwIC0yNyAtMTkgLTQ2dC00NiAtMTloLTM4M3pNMTIxNiAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTINCnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTEwMjQgNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTYwMCAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzDQp6TTE0MDggNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiAxMDE2di0xM2gtNTE0djEwcTAgMTA0IC0zODIgMTAycS0zODIgLTEgLTM4MiAtMTAydi0xMGgtNTE0djEzcTAgMTcgOC41IDQzdDM0IDY0dDY1LjUgNzUuNXQxMTAuNSA3NnQxNjAgNjcuNXQyMjQgNDcuNXQyOTMuNSAxOC41dDI5MyAtMTguNXQyMjQgLTQ3LjUNCnQxNjAuNSAtNjcuNXQxMTAuNSAtNzZ0NjUuNSAtNzUuNXQzNCAtNjR0OC41IC00M3pNMTc5MiA2MDh2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0xNzkyIDk2MnYtMTI5cTAgLTI3IC0xOSAtNDZ0LTQ2IC0xOWgtMzg0cS0yNyAwIC00NiAxOXQtMTkgNDZ2MTI5aDUxNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTUiIHVuaWNvZGU9IiYjeGYxZTU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNzA0IDEyMTZ2LTc2OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl2LTU3NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTUxMnEtMjYgMCAtNDUgMTl0LTE5IDQ1djUxMmwyNDkgODczcTcgMjMgMzEgMjNoNDI0ek0xMDI0IDEyMTZ2LTcwNGgtMjU2djcwNGgyNTZ6TTE3OTIgMzIwdi01MTJxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXY1NzZxLTI2IDAgLTQ1IDE5dC0xOSA0NXY3NjhoNDI0cTI0IDAgMzEgLTIzeg0KTTczNiAxNTA0di0yMjRoLTM1MnYyMjRxMCAxNCA5IDIzdDIzIDloMjg4cTE0IDAgMjMgLTl0OSAtMjN6TTE0MDggMTUwNHYtMjI0aC0zNTJ2MjI0cTAgMTQgOSAyM3QyMyA5aDI4OHExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ1NiIgdW5pY29kZT0iJiN4ZjFlNjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzU1IDEwODNxMzcgLTM4IDM3IC05MC41dC0zNyAtOTAuNWwtNDAxIC00MDBsMTUwIC0xNTBsLTE2MCAtMTYwcS0xNjMgLTE2MyAtMzg5LjUgLTE4Ni41dC00MTEuNSAxMDAuNWwtMzYyIC0zNjJoLTE4MXYxODFsMzYyIDM2MnEtMTI0IDE4NSAtMTAwLjUgNDExLjV0MTg2LjUgMzg5LjVsMTYwIDE2MGwxNTAgLTE1MGw0MDAgNDAxcTM4IDM3IDkxIDM3dDkwIC0zN3QzNyAtOTAuNXQtMzcgLTkwLjVsLTQwMCAtNDAxbDIzNCAtMjM0DQpsNDAxIDQwMHEzOCAzNyA5MSAzN3Q5MCAtMzd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDU3IiB1bmljb2RlPSImI3hmMWU3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTg3MyA3OTZxMCAtODMgLTYzLjUgLTE0Mi41dC0xNTIuNSAtNTkuNXQtMTUyLjUgNTkuNXQtNjMuNSAxNDIuNXEwIDg0IDYzLjUgMTQzdDE1Mi41IDU5dDE1Mi41IC01OXQ2My41IC0xNDN6TTEzNzUgNzk2cTAgLTgzIC02MyAtMTQyLjV0LTE1MyAtNTkuNXEtODkgMCAtMTUyLjUgNTkuNXQtNjMuNSAxNDIuNXEwIDg0IDYzLjUgMTQzdDE1Mi41IDU5cTkwIDAgMTUzIC01OXQ2MyAtMTQzek0xNjAwIDYxNnY2NjdxMCA4NyAtMzIgMTIzLjUNCnQtMTExIDM2LjVoLTExMTJxLTgzIDAgLTExMi41IC0zNHQtMjkuNSAtMTI2di02NzNxNDMgLTIzIDg4LjUgLTQwdDgxIC0yOHQ4MSAtMTguNXQ3MSAtMTF0NzAgLTR0NTguNSAtMC41dDU2LjUgMnQ0NC41IDJxNjggMSA5NSAtMjdxNiAtNiAxMCAtOXEyNiAtMjUgNjEgLTUxcTcgOTEgMTE4IDg3cTUgMCAzNi41IC0xLjV0NDMgLTJ0NDUuNSAtMXQ1MyAxdDU0LjUgNC41dDYxIDguNXQ2MiAxMy41dDY3IDE5LjV0NjcuNSAyN3Q3MiAzNC41eg0KTTE3NjMgNjIxcS0xMjEgLTE0OSAtMzcyIC0yNTJxODQgLTI4NSAtMjMgLTQ2NXEtNjYgLTExMyAtMTgzIC0xNDhxLTEwNCAtMzIgLTE4MiAxNXEtODYgNTEgLTgyIDE2NGwtMSAzMjZ2MXEtOCAyIC0yNC41IDZ0LTIzLjUgNWwtMSAtMzM4cTQgLTExNCAtODMgLTE2NHEtNzkgLTQ3IC0xODMgLTE1cS0xMTcgMzYgLTE4MiAxNTBxLTEwNSAxODAgLTIyIDQ2M3EtMjUxIDEwMyAtMzcyIDI1MnEtMjUgMzcgLTQgNjN0NjAgLTFxNCAtMiAxMS41IC03DQp0MTAuNSAtOHY2OTRxMCA3MiA0NyAxMjN0MTE0IDUxaDEyNTdxNjcgMCAxMTQgLTUxdDQ3IC0xMjN2LTY5NGwyMSAxNXEzOSAyNyA2MCAxdC00IC02M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTgiIHVuaWNvZGU9IiYjeGYxZTg7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODk2IDExMDJ2LTQzNGgtMTQ1djQzNGgxNDV6TTEyOTQgMTEwMnYtNDM0aC0xNDV2NDM0aDE0NXpNMTI5NCAzNDJsMjUzIDI1NHY3OTVoLTExOTR2LTEwNDloMzI2di0yMTdsMjE3IDIxN2gzOTh6TTE2OTIgMTUzNnYtMTAxM2wtNDM0IC00MzRoLTMyNmwtMjE3IC0yMTdoLTIxN3YyMTdoLTM5OHYxMTU4bDEwOSAyODloMTQ4M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTkiIHVuaWNvZGU9IiYjeGYxZTk7IiANCmQ9Ik03NzMgMjE3di0xMjdxLTEgLTI5MiAtNiAtMzA1cS0xMiAtMzIgLTUxIC00MHEtNTQgLTkgLTE4MS41IDM4dC0xNjIuNSA4OXEtMTMgMTUgLTE3IDM2cS0xIDEyIDQgMjZxNCAxMCAzNCA0N3QxODEgMjE2cTEgMCA2MCA3MHExNSAxOSAzOS41IDI0LjV0NDkuNSAtMy41cTI0IC0xMCAzNy41IC0yOXQxMi41IC00MnpNNjI0IDQ2OHEtMyAtNTUgLTUyIC03MGwtMTIwIC0zOXEtMjc1IC04OCAtMjkyIC04OHEtMzUgMiAtNTQgMzYNCnEtMTIgMjUgLTE3IDc1cS04IDc2IDEgMTY2LjV0MzAgMTI0LjV0NTYgMzJxMTMgMCAyMDIgLTc3cTcxIC0yOSAxMTUgLTQ3bDg0IC0zNHEyMyAtOSAzNS41IC0zMC41dDExLjUgLTQ4LjV6TTE0NTAgMTcxcS03IC01NCAtOTEuNSAtMTYxdC0xMzUuNSAtMTI3cS0zNyAtMTQgLTYzIDdxLTE0IDEwIC0xODQgMjg3bC00NyA3N3EtMTQgMjEgLTExLjUgNDZ0MTkuNSA0NnEzNSA0MyA4MyAyNnExIC0xIDExOSAtNDBxMjAzIC02NiAyNDIgLTc5LjUNCnQ0NyAtMjAuNXEyOCAtMjIgMjIgLTYxek03NzggODAzcTUgLTEwMiAtNTQgLTEyMnEtNTggLTE3IC0xMTQgNzFsLTM3OCA1OThxLTggMzUgMTkgNjJxNDEgNDMgMjA3LjUgODkuNXQyMjQuNSAzMS41cTQwIC0xMCA0OSAtNDVxMyAtMTggMjIgLTMwNS41dDI0IC0zNzkuNXpNMTQ0MCA2OTVxMyAtMzkgLTI2IC01OXEtMTUgLTEwIC0zMjkgLTg2cS02NyAtMTUgLTkxIC0yM2wxIDJxLTIzIC02IC00NiA0dC0zNyAzMnEtMzAgNDcgMCA4Nw0KcTEgMSA3NSAxMDJxMTI1IDE3MSAxNTAgMjA0dDM0IDM5cTI4IDE5IDY1IDJxNDggLTIzIDEyMyAtMTMzLjV0ODEgLTE2Ny41di0zeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2MCIgdW5pY29kZT0iJiN4ZjFlYTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xMDI0IDEwMjRoLTM4NHYtMzg0aDM4NHYzODR6TTExNTIgMzg0di0xMjhoLTY0MHYxMjhoNjQwek0xMTUyIDExNTJ2LTY0MGgtNjQwdjY0MGg2NDB6TTE3OTIgMzg0di0xMjhoLTUxMnYxMjhoNTEyek0xNzkyIDY0MHYtMTI4aC01MTJ2MTI4aDUxMnpNMTc5MiA4OTZ2LTEyOGgtNTEydjEyOGg1MTJ6TTE3OTIgMTE1MnYtMTI4aC01MTJ2MTI4aDUxMnpNMjU2IDE5MnY5NjBoLTEyOHYtOTYwcTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTkNCnQxOSA0NXpNMTkyMCAxOTJ2MTA4OGgtMTUzNnYtMTA4OHEwIC0zMyAtMTEgLTY0aDE0ODNxMjYgMCA0NSAxOXQxOSA0NXpNMjA0OCAxNDA4di0xMjE2cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2aC0xNjY0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnYxMDg4aDI1NnYxMjhoMTc5MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NjEiIHVuaWNvZGU9IiYjeGYxZWI7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMTAyNCAxM3EtMjAgMCAtOTMgNzMuNXQtNzMgOTMuNXEwIDMyIDYyLjUgNTR0MTAzLjUgMjJ0MTAzLjUgLTIydDYyLjUgLTU0cTAgLTIwIC03MyAtOTMuNXQtOTMgLTczLjV6TTEyOTQgMjg0cS0yIDAgLTQwIDI1dC0xMDEuNSA1MHQtMTI4LjUgMjV0LTEyOC41IC0yNXQtMTAxIC01MHQtNDAuNSAtMjVxLTE4IDAgLTkzLjUgNzV0LTc1LjUgOTNxMCAxMyAxMCAyM3E3OCA3NyAxOTYgMTIxdDIzMyA0NHQyMzMgLTQ0dDE5NiAtMTIxDQpxMTAgLTEwIDEwIC0yM3EwIC0xOCAtNzUuNSAtOTN0LTkzLjUgLTc1ek0xNTY3IDU1NnEtMTEgMCAtMjMgOHEtMTM2IDEwNSAtMjUyIDE1NC41dC0yNjggNDkuNXEtODUgMCAtMTcwLjUgLTIydC0xNDkgLTUzdC0xMTMuNSAtNjJ0LTc5IC01M3QtMzEgLTIycS0xNyAwIC05MiA3NXQtNzUgOTNxMCAxMiAxMCAyMnExMzIgMTMyIDMyMCAyMDV0MzgwIDczdDM4MCAtNzN0MzIwIC0yMDVxMTAgLTEwIDEwIC0yMnEwIC0xOCAtNzUgLTkzdC05MiAtNzV6DQpNMTgzOCA4MjdxLTExIDAgLTIyIDlxLTE3OSAxNTcgLTM3MS41IDIzNi41dC00MjAuNSA3OS41dC00MjAuNSAtNzkuNXQtMzcxLjUgLTIzNi41cS0xMSAtOSAtMjIgLTlxLTE3IDAgLTkyLjUgNzV0LTc1LjUgOTNxMCAxMyAxMCAyM3ExODcgMTg2IDQ0NSAyODh0NTI3IDEwMnQ1MjcgLTEwMnQ0NDUgLTI4OHExMCAtMTAgMTAgLTIzcTAgLTE4IC03NS41IC05M3QtOTIuNSAtNzV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDYyIiB1bmljb2RlPSImI3hmMWVjOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTM4NCAwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek03NjggMHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMzg0IDM4NHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNQ0KdC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xMTUyIDBxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTc2OCAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNQ0KdDM3LjUgOTAuNXpNMzg0IDc2OHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTE1MiAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTc2OCA3NjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjUNCnQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTUzNiAwdjM4NHEwIDUyIC0zOCA5MHQtOTAgMzh0LTkwIC0zOHQtMzggLTkwdi0zODRxMCAtNTIgMzggLTkwdDkwIC0zOHQ5MCAzOHQzOCA5MHpNMTE1MiA3NjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6DQpNMTUzNiAxMDg4djI1NnEwIDI2IC0xOSA0NXQtNDUgMTloLTEyODBxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0yNTZxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjgwcTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgNzY4cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNjY0IDE0MDh2LTE1MzZxMCAtNTIgLTM4IC05MHQtOTAgLTM4DQpoLTE0MDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxNTM2cTAgNTIgMzggOTB0OTAgMzhoMTQwOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDYzIiB1bmljb2RlPSImI3hmMWVkOyIgDQpkPSJNMTUxOSA4OTBxMTggLTg0IC00IC0yMDRxLTg3IC00NDQgLTU2NSAtNDQ0aC00NHEtMjUgMCAtNDQgLTE2LjV0LTI0IC00Mi41bC00IC0xOWwtNTUgLTM0NmwtMiAtMTVxLTUgLTI2IC0yNC41IC00Mi41dC00NC41IC0xNi41aC0yNTFxLTIxIDAgLTMzIDE1dC05IDM2cTkgNTYgMjYuNSAxNjh0MjYuNSAxNjh0MjcgMTY3LjV0MjcgMTY3LjVxNSAzNyA0MyAzN2gxMzFxMTMzIC0yIDIzNiAyMXExNzUgMzkgMjg3IDE0NHExMDIgOTUgMTU1IDI0Ng0KcTI0IDcwIDM1IDEzM3ExIDYgMi41IDcuNXQzLjUgMXQ2IC0zLjVxNzkgLTU5IDk4IC0xNjJ6TTEzNDcgMTE3MnEwIC0xMDcgLTQ2IC0yMzZxLTgwIC0yMzMgLTMwMiAtMzE1cS0xMTMgLTQwIC0yNTIgLTQycTAgLTEgLTkwIC0xbC05MCAxcS0xMDAgMCAtMTE4IC05NnEtMiAtOCAtODUgLTUzMHEtMSAtMTAgLTEyIC0xMGgtMjk1cS0yMiAwIC0zNi41IDE2LjV0LTExLjUgMzguNWwyMzIgMTQ3MXE1IDI5IDI3LjUgNDh0NTEuNSAxOWg1OTgNCnEzNCAwIDk3LjUgLTEzdDExMS41IC0zMnExMDcgLTQxIDE2My41IC0xMjN0NTYuNSAtMTk2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2NCIgdW5pY29kZT0iJiN4ZjFlZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik00NDEgODY0cTMzIDAgNTIgLTI2cTI2NiAtMzY0IDM2MiAtNzc0aC00NDZxLTEyNyA0NDEgLTM2NyA3NDlxLTEyIDE2IC0zIDMzLjV0MjkgMTcuNWgzNzN6TTEwMDAgNTA3cS00OSAtMTk5IC0xMjUgLTM5M3EtNzkgMzEwIC0yNTYgNTk0cTQwIDIyMSA0NCA0NDlxMjExIC0zNDAgMzM3IC02NTB6TTEwOTkgMTIxNnEyMzUgLTMyNCAzODQuNSAtNjk4LjV0MTg0LjUgLTc3My41aC00NTFxLTQxIDY2NSAtNTUzIDE0NzJoNDM1ek0xNzkyIDY0MA0KcTAgLTQyNCAtMTAxIC04MTJxLTY3IDU2MCAtMzU5IDEwODNxLTI1IDMwMSAtMTA2IDU4NHEtNCAxNiA1LjUgMjguNXQyNS41IDEyLjVoMzU5cTIxIDAgMzguNSAtMTN0MjIuNSAtMzNxMTE1IC00MDkgMTE1IC04NTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUYwIiB1bmljb2RlPSImI3hmMWYwOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTE5NzUgNTQ2aC0xMzhxMTQgMzcgNjYgMTc5bDMgOXE0IDEwIDEwIDI2dDkgMjZsMTIgLTU1ek01MzEgNjExbC01OCAyOTVxLTExIDU0IC03NSA1NGgtMjY4bC0yIC0xM3EzMTEgLTc5IDQwMyAtMzM2ek03MTAgOTYwbC0xNjIgLTQzOGwtMTcgODlxLTI2IDcwIC04NSAxMjkuNXQtMTMxIDg4LjVsMTM1IC01MTBoMTc1bDI2MSA2NDFoLTE3NnpNODQ5IDMxOGgxNjZsMTA0IDY0MmgtMTY2ek0xNjE3IDk0NHEtNjkgMjcgLTE0OSAyNw0KcS0xMjMgMCAtMjAxIC01OXQtNzkgLTE1M3EtMSAtMTAyIDE0NSAtMTc0cTQ4IC0yMyA2NyAtNDF0MTkgLTM5cTAgLTMwIC0zMCAtNDZ0LTY5IC0xNnEtODYgMCAtMTU2IDMzbC0yMiAxMWwtMjMgLTE0NHE3NCAtMzQgMTg1IC0zNHExMzAgLTEgMjA4LjUgNTl0ODAuNSAxNjBxMCAxMDYgLTE0MCAxNzRxLTQ5IDI1IC03MSA0MnQtMjIgMzhxMCAyMiAyNC41IDM4LjV0NzAuNSAxNi41cTcwIDEgMTI0IC0yNGwxNSAtOHpNMjA0MiA5NjBoLTEyOA0KcS02NSAwIC04NyAtNTRsLTI0NiAtNTg4aDE3NGwzNSA5NmgyMTJxNSAtMjIgMjAgLTk2aDE1NHpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgyMDQ4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NjYiIHVuaWNvZGU9IiYjeGYxZjE7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTExOSAxMTk1cS0xMjggODUgLTI4MSA4NXEtMTAzIDAgLTE5Ny41IC00MC41dC0xNjIuNSAtMTA4LjV0LTEwOC41IC0xNjJ0LTQwLjUgLTE5N3EwIC0xMDQgNDAuNSAtMTk4dDEwOC41IC0xNjJ0MTYyIC0xMDguNXQxOTggLTQwLjVxMTUzIDAgMjgxIDg1cS0xMzEgMTA3IC0xNzggMjY1LjV0MC41IDMxNi41dDE3Ny41IDI2NXpNMTE1MiAxMTcxcS0xMjYgLTk5IC0xNzIgLTI0OS41dC0wLjUgLTMwMC41dDE3Mi41IC0yNDkNCnExMjcgOTkgMTcyLjUgMjQ5dC0wLjUgMzAwLjV0LTE3MiAyNDkuNXpNMTE4NSAxMTk1cTEzMCAtMTA3IDE3Ny41IC0yNjUuNXQwLjUgLTMxN3QtMTc4IC0yNjQuNXExMjggLTg1IDI4MSAtODVxMTA0IDAgMTk4IDQwLjV0MTYyIDEwOC41dDEwOC41IDE2MnQ0MC41IDE5OHEwIDEwMyAtNDAuNSAxOTd0LTEwOC41IDE2MnQtMTYyLjUgMTA4LjV0LTE5Ny41IDQwLjVxLTE1MyAwIC0yODEgLTg1ek0xOTI2IDQ3M2g3djNoLTE3di0zaDd2LTE3aDN2MTd6DQpNMTk1NSA0NTZoNHYyMGgtNWwtNiAtMTNsLTYgMTNoLTV2LTIwaDN2MTVsNiAtMTNoNGw1IDEzdi0xNXpNMTk0NyAxNnYtMmgtMmgtM3YzaDNoMnYtMXpNMTk0NyA3aDNsLTQgNWgybDEgMXExIDEgMSAzdC0xIDNsLTEgMWgtM2gtNnYtMTNoM3Y1aDF6TTY4NSA3NXEwIDE5IDExIDMxdDMwIDEycTE4IDAgMjkgLTEyLjV0MTEgLTMwLjVxMCAtMTkgLTExIC0zMXQtMjkgLTEycS0xOSAwIC0zMCAxMnQtMTEgMzF6TTExNTggMTE5cTMwIDAgMzUgLTMyDQpoLTcwcTUgMzIgMzUgMzJ6TTE1MTQgNzVxMCAxOSAxMSAzMXQyOSAxMnQyOS41IC0xMi41dDExLjUgLTMwLjVxMCAtMTkgLTExIC0zMXQtMzAgLTEycS0xOCAwIC0yOSAxMnQtMTEgMzF6TTE3ODYgNzVxMCAxOCAxMS41IDMwLjV0MjkuNSAxMi41dDI5LjUgLTEyLjV0MTEuNSAtMzAuNXEwIC0xOSAtMTEuNSAtMzF0LTI5LjUgLTEydC0yOS41IDEyLjV0LTExLjUgMzAuNXpNMTk0NCAzcS0yIDAgLTQgMXEtMSAwIC0zIDJ0LTIgM3EtMSAyIC0xIDQNCnEwIDMgMSA0cTAgMiAyIDRsMSAxcTIgMCAyIDFxMiAxIDQgMXEzIDAgNCAtMWw0IC0ybDIgLTR2LTFxMSAtMiAxIC0zbC0xIC0xdi0zdC0xIC0xbC0xIC0ycS0yIC0yIC00IC0ycS0xIC0xIC00IC0xek01OTkgN2gzMHY4NXEwIDI0IC0xNC41IDM4LjV0LTM5LjUgMTUuNXEtMzIgMCAtNDcgLTI0cS0xNCAyNCAtNDUgMjRxLTI0IDAgLTM5IC0yMHYxNmgtMzB2LTEzNWgzMHY3NXEwIDM2IDMzIDM2cTMwIDAgMzAgLTM2di03NWgyOXY3NQ0KcTAgMzYgMzMgMzZxMzAgMCAzMCAtMzZ2LTc1ek03NjUgN2gyOXY2OHY2N2gtMjl2LTE2cS0xNyAyMCAtNDMgMjBxLTI5IDAgLTQ4IC0yMHQtMTkgLTUxdDE5IC01MXQ0OCAtMjBxMjggMCA0MyAyMHYtMTd6TTk0MyA0OHEwIDM0IC00NyA0MGwtMTQgMnEtMjMgNCAtMjMgMTRxMCAxNSAyNSAxNXEyMyAwIDQzIC0xMWwxMiAyNHEtMjIgMTQgLTU1IDE0cS0yNiAwIC00MSAtMTJ0LTE1IC0zMnEwIC0zMyA0NyAtMzlsMTMgLTJxMjQgLTQgMjQgLTE0DQpxMCAtMTcgLTMxIC0xN3EtMjUgMCAtNDUgMTRsLTEzIC0yM3EyNSAtMTcgNTggLTE3cTI5IDAgNDUuNSAxMnQxNi41IDMyek0xMDczIDE0bC04IDI1cS0xMyAtNyAtMjYgLTdxLTE5IDAgLTE5IDIydjYxaDQ4djI3aC00OHY0MWgtMzB2LTQxaC0yOHYtMjdoMjh2LTYxcTAgLTUwIDQ3IC01MHEyMSAwIDM2IDEwek0xMTU5IDE0NnEtMjkgMCAtNDggLTIwdC0xOSAtNTFxMCAtMzIgMTkuNSAtNTEuNXQ0OS41IC0xOS41cTMzIDAgNTUgMTlsLTE0IDIyDQpxLTE4IC0xNSAtMzkgLTE1cS0zNCAwIC00MSAzM2gxMDF2MTJxMCAzMiAtMTggNTEuNXQtNDYgMTkuNXpNMTMxOCAxNDZxLTIzIDAgLTM1IC0yMHYxNmgtMzB2LTEzNWgzMHY3NnEwIDM1IDI5IDM1cTEwIDAgMTggLTRsOSAyOHEtOSA0IC0yMSA0ek0xMzQ4IDc1cTAgLTMxIDE5LjUgLTUxdDUyLjUgLTIwcTI5IDAgNDggMTZsLTE0IDI0cS0xOCAtMTMgLTM1IC0xMnEtMTggMCAtMjkuNSAxMnQtMTEuNSAzMXQxMS41IDMxdDI5LjUgMTINCnExOSAwIDM1IC0xMmwxNCAyNHEtMjAgMTYgLTQ4IDE2cS0zMyAwIC01Mi41IC0yMHQtMTkuNSAtNTF6TTE1OTMgN2gzMHY2OHY2N2gtMzB2LTE2cS0xNSAyMCAtNDIgMjBxLTI5IDAgLTQ4LjUgLTIwdC0xOS41IC01MXQxOS41IC01MXQ0OC41IC0yMHEyOCAwIDQyIDIwdi0xN3pNMTcyNiAxNDZxLTIzIDAgLTM1IC0yMHYxNmgtMjl2LTEzNWgyOXY3NnEwIDM1IDI5IDM1cTEwIDAgMTggLTRsOSAyOHEtOCA0IC0yMSA0ek0xODY2IDdoMjl2Njh2MTIyDQpoLTI5di03MXEtMTUgMjAgLTQzIDIwdC00Ny41IC0yMC41dC0xOS41IC01MC41dDE5LjUgLTUwLjV0NDcuNSAtMjAuNXEyOSAwIDQzIDIwdi0xN3pNMTk0NCAyN2wtMiAtMWgtM3EtMiAtMSAtNCAtM3EtMyAtMSAtMyAtNHEtMSAtMiAtMSAtNnEwIC0zIDEgLTVxMCAtMiAzIC00cTIgLTIgNCAtM3Q1IC0xcTQgMCA2IDFxMCAxIDIgMmwyIDFxMSAxIDMgNHExIDIgMSA1cTAgNCAtMSA2cS0xIDEgLTMgNHEwIDEgLTIgMmwtMiAxcS0xIDAgLTMgMC41DQp0LTMgMC41ek0yMzA0IDEyODB2LTEyODBxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0yMDQ4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwdDkwIDM4aDIwNDhxNTIgMCA5MCAtMzh0MzggLTkweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2NyIgdW5pY29kZT0iJiN4ZjFmMjsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0zMTMgNzU5cTAgLTUxIC0zNiAtODRxLTI5IC0yNiAtODkgLTI2aC0xN3YyMjBoMTdxNjEgMCA4OSAtMjdxMzYgLTMxIDM2IC04M3pNMjA4OSA4MjRxMCAtNTIgLTY0IC01MmgtMTl2MTAxaDIwcTYzIDAgNjMgLTQ5ek0zODAgNzU5cTAgNzQgLTUwIDEyMC41dC0xMjkgNDYuNWgtOTV2LTMzM2g5NXE3NCAwIDExOSAzOHE2MCA1MSA2MCAxMjh6TTQxMCA1OTNoNjV2MzMzaC02NXYtMzMzek03MzAgNjk0cTAgNDAgLTIwLjUgNjJ0LTc1LjUgNDINCnEtMjkgMTAgLTM5LjUgMTl0LTEwLjUgMjNxMCAxNiAxMy41IDI2LjV0MzQuNSAxMC41cTI5IDAgNTMgLTI3bDM0IDQ0cS00MSAzNyAtOTggMzdxLTQ0IDAgLTc0IC0yNy41dC0zMCAtNjcuNXEwIC0zNSAxOCAtNTUuNXQ2NCAtMzYuNXEzNyAtMTMgNDUgLTE5cTE5IC0xMiAxOSAtMzRxMCAtMjAgLTE0IC0zMy41dC0zNiAtMTMuNXEtNDggMCAtNzEgNDRsLTQyIC00MHE0NCAtNjQgMTE1IC02NHE1MSAwIDgzIDMwLjV0MzIgNzkuNXpNMTAwOCA2MDQNCnY3N3EtMzcgLTM3IC03OCAtMzdxLTQ5IDAgLTgwLjUgMzIuNXQtMzEuNSA4Mi41cTAgNDggMzEuNSA4MS41dDc3LjUgMzMuNXE0MyAwIDgxIC0zOHY3N3EtNDAgMjAgLTgwIDIwcS03NCAwIC0xMjUuNSAtNTAuNXQtNTEuNSAtMTIzLjV0NTEgLTEyMy41dDEyNSAtNTAuNXE0MiAwIDgxIDE5ek0yMjQwIDB2NTI3cS02NSAtNDAgLTE0NC41IC04NHQtMjM3LjUgLTExN3QtMzI5LjUgLTEzNy41dC00MTcuNSAtMTM0LjV0LTUwNCAtMTE4aDE1NjkNCnEyNiAwIDQ1IDE5dDE5IDQ1ek0xMzg5IDc1N3EwIDc1IC01MyAxMjh0LTEyOCA1M3QtMTI4IC01M3QtNTMgLTEyOHQ1MyAtMTI4dDEyOCAtNTN0MTI4IDUzdDUzIDEyOHpNMTU0MSA1ODRsMTQ0IDM0MmgtNzFsLTkwIC0yMjRsLTg5IDIyNGgtNzFsMTQyIC0zNDJoMzV6TTE3MTQgNTkzaDE4NHY1NmgtMTE5djkwaDExNXY1NmgtMTE1djc0aDExOXY1N2gtMTg0di0zMzN6TTIxMDUgNTkzaDgwbC0xMDUgMTQwcTc2IDE2IDc2IDk0cTAgNDcgLTMxIDczDQp0LTg3IDI2aC05N3YtMzMzaDY1djEzM2g5ek0yMzA0IDEyNzR2LTEyNjhxMCAtNTYgLTM4LjUgLTk1dC05My41IC0zOWgtMjA0MHEtNTUgMCAtOTMuNSAzOXQtMzguNSA5NXYxMjY4cTAgNTYgMzguNSA5NXQ5My41IDM5aDIwNDBxNTUgMCA5My41IC0zOXQzOC41IC05NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxZjMiIHVuaWNvZGU9IiYjeGYxZjM7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTE5IDg1NGg4OWwtNDUgMTA4ek03NDAgMzI4bDc0IDc5bC03MCA3OWgtMTYzdi00OWgxNDJ2LTU1aC0xNDJ2LTU0aDE1OXpNODk4IDQwNmw5OSAtMTEwdjIxN3pNMTE4NiA0NTNxMCAzMyAtNDAgMzNoLTg0di02OWg4M3E0MSAwIDQxIDM2ek0xNDc1IDQ1N3EwIDI5IC00MiAyOWgtODJ2LTYxaDgxcTQzIDAgNDMgMzJ6TTExOTcgOTIzcTAgMjkgLTQyIDI5aC04MnYtNjBoODFxNDMgMCA0MyAzMXpNMTY1NiA4NTRoODlsLTQ0IDEwOHoNCk02OTkgMTAwOXYtMjcxaC02NnYyMTJsLTk0IC0yMTJoLTU3bC05NCAyMTJ2LTIxMmgtMTMybC0yNSA2MGgtMTM1bC0yNSAtNjBoLTcwbDExNiAyNzFoOTZsMTEwIC0yNTd2MjU3aDEwNmw4NSAtMTg0bDc3IDE4NGgxMDh6TTEyNTUgNDUzcTAgLTIwIC01LjUgLTM1dC0xNCAtMjV0LTIyLjUgLTE2LjV0LTI2IC0xMHQtMzEuNSAtNC41dC0zMS41IC0xdC0zMi41IDAuNXQtMjkuNSAwLjV2LTkxaC0xMjZsLTgwIDkwbC04MyAtOTBoLTI1NnYyNzFoMjYwDQpsODAgLTg5bDgyIDg5aDIwN3ExMDkgMCAxMDkgLTg5ek05NjQgNzk0di01NmgtMjE3djI3MWgyMTd2LTU3aC0xNTJ2LTQ5aDE0OHYtNTVoLTE0OHYtNTRoMTUyek0yMzA0IDIzNXYtMjI5cTAgLTU1IC0zOC41IC05NC41dC05My41IC0zOS41aC0yMDQwcS01NSAwIC05My41IDM5LjV0LTM4LjUgOTQuNXY2NzhoMTExbDI1IDYxaDU1bDI1IC02MWgyMTh2NDZsMTkgLTQ2aDExM2wyMCA0N3YtNDdoNTQxdjk5bDEwIDFxMTAgMCAxMCAtMTR2LTg2aDI3OQ0KdjIzcTIzIC0xMiA1NSAtMTh0NTIuNSAtNi41dDYzIDAuNXQ1MS41IDFsMjUgNjFoNTZsMjUgLTYxaDIyN3Y1OGwzNCAtNThoMTgydjM3OGgtMTgwdi00NGwtMjUgNDRoLTE4NXYtNDRsLTIzIDQ0aC0yNDlxLTY5IDAgLTEwOSAtMjJ2MjJoLTE3MnYtMjJxLTI0IDIyIC03MyAyMmgtNjI4bC00MyAtOTdsLTQzIDk3aC0xOTh2LTQ0bC0yMiA0NGgtMTY5bC03OCAtMTc5djM5MXEwIDU1IDM4LjUgOTQuNXQ5My41IDM5LjVoMjA0MA0KcTU1IDAgOTMuNSAtMzkuNXQzOC41IC05NC41di02NzhoLTEyMHEtNTEgMCAtODEgLTIydjIyaC0xNzdxLTU1IDAgLTc4IC0yMnYyMmgtMzE2di0yMnEtMzEgMjIgLTg3IDIyaC0yMDl2LTIycS0yMyAyMiAtOTEgMjJoLTIzNGwtNTQgLTU4bC01MCA1OGgtMzQ5di0zNzhoMzQzbDU1IDU5bDUyIC01OWgyMTF2ODloMjFxNTkgMCA5MCAxM3YtMTAyaDE3NHY5OWg4cTggMCAxMCAtMnQyIC0xMHYtODdoNTI5cTU3IDAgODggMjR2LTI0aDE2OA0KcTYwIDAgOTUgMTd6TTE1NDYgNDY5cTAgLTIzIC0xMiAtNDN0LTM0IC0yOXEyNSAtOSAzNCAtMjZ0OSAtNDZ2LTU0aC02NXY0NXEwIDMzIC0xMiA0My41dC00NiAxMC41aC02OXYtOTloLTY1djI3MWgxNTRxNDggMCA3NyAtMTV0MjkgLTU4ek0xMjY5IDkzNnEwIC0yNCAtMTIuNSAtNDR0LTMzLjUgLTI5cTI2IC05IDM0LjUgLTI1LjV0OC41IC00Ni41di01M2gtNjVxMCA5IDAuNSAyNi41dDAgMjV0LTMgMTguNXQtOC41IDE2dC0xNy41IDguNQ0KdC0yOS41IDMuNWgtNzB2LTk4aC02NHYyNzFsMTUzIC0xcTQ5IDAgNzggLTE0LjV0MjkgLTU3LjV6TTE3OTggMzI3di01NmgtMjE2djI3MWgyMTZ2LTU2aC0xNTF2LTQ5aDE0OHYtNTVoLTE0OHYtNTR6TTEzNzIgMTAwOXYtMjcxaC02NnYyNzFoNjZ6TTIwNjUgMzU3cTAgLTg2IC0xMDIgLTg2aC0xMjZ2NThoMTI2cTM0IDAgMzQgMjVxMCAxNiAtMTcgMjF0LTQxLjUgNXQtNDkuNSAzLjV0LTQyIDIyLjV0LTE3IDU1cTAgMzkgMjYgNjB0NjYgMjENCmgxMzB2LTU3aC0xMTlxLTM2IDAgLTM2IC0yNXEwIC0xNiAxNy41IC0yMC41dDQyIC00dDQ5IC0yLjV0NDIgLTIxLjV0MTcuNSAtNTQuNXpNMjMwNCA0MDd2LTEwMXEtMjQgLTM1IC04OCAtMzVoLTEyNXY1OGgxMjVxMzMgMCAzMyAyNXEwIDEzIC0xMi41IDE5dC0zMSA1LjV0LTQwIDJ0LTQwIDh0LTMxIDI0dC0xMi41IDQ4LjVxMCAzOSAyNi41IDYwdDY2LjUgMjFoMTI5di01N2gtMTE4cS0zNiAwIC0zNiAtMjVxMCAtMjAgMjkgLTIydDY4LjUgLTUNCnQ1Ni41IC0yNnpNMjEzOSAxMDA4di0yNzBoLTkybC0xMjIgMjAzdi0yMDNoLTEzMmwtMjYgNjBoLTEzNGwtMjUgLTYwaC03NXEtMTI5IDAgLTEyOSAxMzNxMCAxMzggMTMzIDEzOGg2M3YtNTlxLTcgMCAtMjggMXQtMjguNSAwLjV0LTIzIC0ydC0yMS41IC02LjV0LTE0LjUgLTEzLjV0LTExLjUgLTIzdC0zIC0zMy41cTAgLTM4IDEzLjUgLTU4dDQ5LjUgLTIwaDI5bDkyIDIxM2g5N2wxMDkgLTI1NnYyNTZoOTlsMTE0IC0xODh2MTg4aDY2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2OSIgdW5pY29kZT0iJiN4ZjFmNDsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik03NDUgNjMwcTAgLTM3IC0yNS41IC02MS41dC02Mi41IC0yNC41cS0yOSAwIC00Ni41IDE2dC0xNy41IDQ0cTAgMzcgMjUgNjIuNXQ2MiAyNS41cTI4IDAgNDYuNSAtMTYuNXQxOC41IC00NS41ek0xNTMwIDc3OXEwIC00MiAtMjIgLTU3dC02NiAtMTVsLTMyIC0xbDE3IDEwN3EyIDExIDEzIDExaDE4cTIyIDAgMzUgLTJ0MjUgLTEyLjV0MTIgLTMwLjV6TTE4ODEgNjMwcTAgLTM2IC0yNS41IC02MXQtNjEuNSAtMjVxLTI5IDAgLTQ3IDE2DQp0LTE4IDQ0cTAgMzcgMjUgNjIuNXQ2MiAyNS41cTI4IDAgNDYuNSAtMTYuNXQxOC41IC00NS41ek01MTMgODAxcTAgNTkgLTM4LjUgODUuNXQtMTAwLjUgMjYuNWgtMTYwcS0xOSAwIC0yMSAtMTlsLTY1IC00MDhxLTEgLTYgMyAtMTF0MTAgLTVoNzZxMjAgMCAyMiAxOWwxOCAxMTBxMSA4IDcgMTN0MTUgNi41dDE3IDEuNXQxOSAtMXQxNCAtMXE4NiAwIDEzNSA0OC41dDQ5IDEzNC41ek04MjIgNDg5bDQxIDI2MXExIDYgLTMgMTF0LTEwIDVoLTc2DQpxLTE0IDAgLTE3IC0zM3EtMjcgNDAgLTk1IDQwcS03MiAwIC0xMjIuNSAtNTR0LTUwLjUgLTEyN3EwIC01OSAzNC41IC05NHQ5Mi41IC0zNXEyOCAwIDU4IDEydDQ4IDMycS00IC0xMiAtNCAtMjFxMCAtMTYgMTMgLTE2aDY5cTE5IDAgMjIgMTl6TTEyNjkgNzUycTAgNSAtNCA5LjV0LTkgNC41aC03N3EtMTEgMCAtMTggLTEwbC0xMDYgLTE1NmwtNDQgMTUwcS01IDE2IC0yMiAxNmgtNzVxLTUgMCAtOSAtNC41dC00IC05LjVxMCAtMiAxOS41IC01OQ0KdDQyIC0xMjN0MjMuNSAtNzBxLTgyIC0xMTIgLTgyIC0xMjBxMCAtMTMgMTMgLTEzaDc3cTExIDAgMTggMTBsMjU1IDM2OHEyIDIgMiA3ek0xNjQ5IDgwMXEwIDU5IC0zOC41IDg1LjV0LTEwMC41IDI2LjVoLTE1OXEtMjAgMCAtMjIgLTE5bC02NSAtNDA4cS0xIC02IDMgLTExdDEwIC01aDgycTEyIDAgMTYgMTNsMTggMTE2cTEgOCA3IDEzdDE1IDYuNXQxNyAxLjV0MTkgLTF0MTQgLTFxODYgMCAxMzUgNDguNXQ0OSAxMzQuNXpNMTk1OCA0ODkNCmw0MSAyNjFxMSA2IC0zIDExdC0xMCA1aC03NnEtMTQgMCAtMTcgLTMzcS0yNiA0MCAtOTUgNDBxLTcyIDAgLTEyMi41IC01NHQtNTAuNSAtMTI3cTAgLTU5IDM0LjUgLTk0dDkyLjUgLTM1cTI5IDAgNTkgMTJ0NDcgMzJxMCAtMSAtMiAtOXQtMiAtMTJxMCAtMTYgMTMgLTE2aDY5cTE5IDAgMjIgMTl6TTIxNzYgODk4djFxMCAxNCAtMTMgMTRoLTc0cS0xMSAwIC0xMyAtMTFsLTY1IC00MTZsLTEgLTJxMCAtNSA0IC05LjV0MTAgLTQuNWg2Ng0KcTE5IDAgMjEgMTl6TTM5MiA3NjRxLTUgLTM1IC0yNiAtNDZ0LTYwIC0xMWwtMzMgLTFsMTcgMTA3cTIgMTEgMTMgMTFoMTlxNDAgMCA1OCAtMTEuNXQxMiAtNDguNXpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgyMDQ4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzAiIHVuaWNvZGU9IiYjeGYxZjU7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTU5NyA2MzNxMCAtNjkgLTIxIC0xMDZxLTE5IC0zNSAtNTIgLTM1cS0yMyAwIC00MSA5djIyNHEyOSAzMCA1NyAzMHE1NyAwIDU3IC0xMjJ6TTIwMzUgNjY5aC0xMTBxNiA5OCA1NiA5OHE1MSAwIDU0IC05OHpNNDc2IDUzNHEwIDU5IC0zMyA5MS41dC0xMDEgNTcuNXEtMzYgMTMgLTUyIDI0dC0xNiAyNXEwIDI2IDM4IDI2cTU4IDAgMTI0IC0zM2wxOCAxMTJxLTY3IDMyIC0xNDkgMzJxLTc3IDAgLTEyMyAtMzhxLTQ4IC0zOSAtNDggLTEwOQ0KcTAgLTU4IDMyLjUgLTkwLjV0OTkuNSAtNTYuNXEzOSAtMTQgNTQuNSAtMjUuNXQxNS41IC0yNy41cTAgLTMxIC00OCAtMzFxLTI5IDAgLTcwIDEyLjV0LTcyIDMwLjVsLTE4IC0xMTNxNzIgLTQxIDE2OCAtNDFxODEgMCAxMjkgMzdxNTEgNDEgNTEgMTE3ek03NzEgNzQ5bDE5IDExMWgtOTZ2MTM1bC0xMjkgLTIxbC0xOCAtMTE0bC00NiAtOGwtMTcgLTEwM2g2MnYtMjE5cTAgLTg0IDQ0IC0xMjBxMzggLTMwIDExMSAtMzBxMzIgMCA3OSAxMXYxMTgNCnEtMzIgLTcgLTQ0IC03cS00MiAwIC00MiA1MHYxOTdoNzd6TTEwODcgNzI0djEzOXEtMTUgMyAtMjggM3EtMzIgMCAtNTUuNSAtMTZ0LTMzLjUgLTQ2bC0xMCA1NmgtMTMxdi00NzFoMTUwdjMwNnEyNiAzMSA4MiAzMXExNiAwIDI2IC0yek0xMTI0IDM4OWgxNTB2NDcxaC0xNTB2LTQ3MXpNMTc0NiA2MzhxMCAxMjIgLTQ1IDE3OXEtNDAgNTIgLTExMSA1MnEtNjQgMCAtMTE3IC01NmwtOCA0N2gtMTMydi02NDVsMTUwIDI1djE1MQ0KcTM2IC0xMSA2OCAtMTFxODMgMCAxMzQgNTZxNjEgNjUgNjEgMjAyek0xMjc4IDk4NnEwIDMzIC0yMyA1NnQtNTYgMjN0LTU2IC0yM3QtMjMgLTU2dDIzIC01Ni41dDU2IC0yMy41dDU2IDIzLjV0MjMgNTYuNXpNMjE3NiA2MjlxMCAxMTMgLTQ4IDE3NnEtNTAgNjQgLTE0NCA2NHEtOTYgMCAtMTUxLjUgLTY2dC01NS41IC0xODBxMCAtMTI4IDYzIC0xODhxNTUgLTU1IDE2MSAtNTVxMTAxIDAgMTYwIDQwbC0xNiAxMDNxLTU3IC0zMSAtMTI4IC0zMQ0KcS00MyAwIC02MyAxOXEtMjMgMTkgLTI4IDY2aDI0OHEyIDE0IDIgNTJ6TTIzMDQgMTI4MHYtMTI4MHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTIwNDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxMjgwcTAgNTIgMzggOTB0OTAgMzhoMjA0OHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDcxIiB1bmljb2RlPSImI3hmMWY2OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE1NTggNjg0cTYxIC0zNTYgMjk4IC01NTZxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC00NDhxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODAuNSA3NC41dC03NS41IDE4MC41ek0xMDI0IC0xNzZxMTYgMCAxNiAxNnQtMTYgMTZxLTU5IDAgLTEwMS41IDQyLjV0LTQyLjUgMTAxLjVxMCAxNiAtMTYgMTZ0LTE2IC0xNnEwIC03MyA1MS41IC0xMjQuNXQxMjQuNSAtNTEuNXpNMjAyNiAxNDI0cTggLTEwIDcuNSAtMjMuNXQtMTAuNSAtMjIuNQ0KbC0xODcyIC0xNjIycS0xMCAtOCAtMjMuNSAtN3QtMjEuNSAxMWwtODQgOTZxLTggMTAgLTcuNSAyMy41dDEwLjUgMjEuNWwxODYgMTYxcS0xOSAzMiAtMTkgNjZxNTAgNDIgOTEgODh0ODUgMTE5LjV0NzQuNSAxNTguNXQ1MCAyMDZ0MTkuNSAyNjBxMCAxNTIgMTE3IDI4Mi41dDMwNyAxNTguNXEtOCAxOSAtOCAzOXEwIDQwIDI4IDY4dDY4IDI4dDY4IC0yOHQyOCAtNjhxMCAtMjAgLTggLTM5cTEyNCAtMTggMjE5IC04Mi41dDE0OCAtMTU3LjUNCmw0MTggMzYzcTEwIDggMjMuNSA3dDIxLjUgLTExeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3MiIgdW5pY29kZT0iJiN4ZjFmNzsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xMDQwIC0xNjBxMCAxNiAtMTYgMTZxLTU5IDAgLTEwMS41IDQyLjV0LTQyLjUgMTAxLjVxMCAxNiAtMTYgMTZ0LTE2IC0xNnEwIC03MyA1MS41IC0xMjQuNXQxMjQuNSAtNTEuNXExNiAwIDE2IDE2ek01MDMgMzE1bDg3NyA3NjBxLTQyIDg4IC0xMzIuNSAxNDYuNXQtMjIzLjUgNTguNXEtOTMgMCAtMTY5LjUgLTMxLjV0LTEyMS41IC04MC41dC02OSAtMTAzdC0yNCAtMTA1cTAgLTM4NCAtMTM3IC02NDV6TTE4NTYgMTI4DQpxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC00NDhxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODAuNSA3NC41dC03NS41IDE4MC41bDE0OSAxMjloNzU3cS0xNjYgMTg3IC0yMjcgNDU5bDExMSA5N3E2MSAtMzU2IDI5OCAtNTU2ek0xOTQyIDE1MjBsODQgLTk2cTggLTEwIDcuNSAtMjMuNXQtMTAuNSAtMjIuNWwtMTg3MiAtMTYyMnEtMTAgLTggLTIzLjUgLTd0LTIxLjUgMTFsLTg0IDk2cS04IDEwIC03LjUgMjMuNXQxMC41IDIxLjVsMTg2IDE2MQ0KcS0xOSAzMiAtMTkgNjZxNTAgNDIgOTEgODh0ODUgMTE5LjV0NzQuNSAxNTguNXQ1MCAyMDZ0MTkuNSAyNjBxMCAxNTIgMTE3IDI4Mi41dDMwNyAxNTguNXEtOCAxOSAtOCAzOXEwIDQwIDI4IDY4dDY4IDI4dDY4IC0yOHQyOCAtNjhxMCAtMjAgLTggLTM5cTEyNCAtMTggMjE5IC04Mi41dDE0OCAtMTU3LjVsNDE4IDM2M3ExMCA4IDIzLjUgN3QyMS41IC0xMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzMiIHVuaWNvZGU9IiYjeGYxZjg7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNNTEyIDE2MHY3MDRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNzA0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek03NjggMTYwdjcwNHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi03MDRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTEwMjQgMTYwdjcwNHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi03MDQNCnEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNNDgwIDExNTJoNDQ4bC00OCAxMTdxLTcgOSAtMTcgMTFoLTMxN3EtMTAgLTIgLTE3IC0xMXpNMTQwOCAxMTIwdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTQ4cTAgLTgzIC00NyAtMTQzLjV0LTExMyAtNjAuNWgtODMycS02NiAwIC0xMTMgNTguNXQtNDcgMTQxLjV2OTUyaC05NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgzMDlsNzAgMTY3DQpxMTUgMzcgNTQgNjN0NzkgMjZoMzIwcTQwIDAgNzkgLTI2dDU0IC02M2w3MCAtMTY3aDMwOXExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3NCIgdW5pY29kZT0iJiN4ZjFmOTsiIA0KZD0iTTExNTAgNDYydi0xMDlxMCAtNTAgLTM2LjUgLTg5dC05NCAtNjAuNXQtMTE4IC0zMi41dC0xMTcuNSAtMTFxLTIwNSAwIC0zNDIuNSAxMzl0LTEzNy41IDM0NnEwIDIwMyAxMzYgMzM5dDMzOSAxMzZxMzQgMCA3NS41IC00LjV0OTMgLTE4dDkyLjUgLTM0dDY5IC01Ni41dDI4IC04MXYtMTA5cTAgLTE2IC0xNiAtMTZoLTExOHEtMTYgMCAtMTYgMTZ2NzBxMCA0MyAtNjUuNSA2Ny41dC0xMzcuNSAyNC41cS0xNDAgMCAtMjI4LjUgLTkxLjUNCnQtODguNSAtMjM3LjVxMCAtMTUxIDkxLjUgLTI0OS41dDIzMy41IC05OC41cTY4IDAgMTM4IDI0dDcwIDY2djcwcTAgNyA0LjUgMTEuNXQxMC41IDQuNWgxMTlxNiAwIDExIC00LjV0NSAtMTEuNXpNNzY4IDEyODBxLTEzMCAwIC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDR0LTUxIC0yNDguNXQ1MSAtMjQ4LjV0MTM2LjUgLTIwNHQyMDQgLTEzNi41dDI0OC41IC01MXQyNDguNSA1MXQyMDQgMTM2LjV0MTM2LjUgMjA0dDUxIDI0OC41DQp0LTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3NSIgdW5pY29kZT0iJiN4ZjFmYTsiIA0KZD0iTTk3MiA3NjFxMCAxMDggLTUzLjUgMTY5dC0xNDcuNSA2MXEtNjMgMCAtMTI0IC0zMC41dC0xMTAgLTg0LjV0LTc5LjUgLTEzN3QtMzAuNSAtMTgwcTAgLTExMiA1My41IC0xNzN0MTUwLjUgLTYxcTk2IDAgMTc2IDY2LjV0MTIyLjUgMTY2dDQyLjUgMjAzLjV6TTE1MzYgNjQwcTAgLTExMSAtMzcgLTE5N3QtOTguNSAtMTM1dC0xMzEuNSAtNzQuNXQtMTQ1IC0yNy41cS02IDAgLTE1LjUgLTAuNXQtMTYuNSAtMC41cS05NSAwIC0xNDIgNTMNCnEtMjggMzMgLTMzIDgzcS01MiAtNjYgLTEzMS41IC0xMTB0LTE3My41IC00NHEtMTYxIDAgLTI0OS41IDk1LjV0LTg4LjUgMjY5LjVxMCAxNTcgNjYgMjkwdDE3OSAyMTAuNXQyNDYgNzcuNXE4NyAwIDE1NSAtMzUuNXQxMDYgLTk5LjVsMiAxOWwxMSA1NnExIDYgNS41IDEydDkuNSA2aDExOHE1IDAgMTMgLTExcTUgLTUgMyAtMTZsLTEyMCAtNjE0cS01IC0yNCAtNSAtNDhxMCAtMzkgMTIuNSAtNTJ0NDQuNSAtMTNxMjggMSA1NyA1LjV0NzMgMjQNCnQ3NyA1MHQ1NyA4OS41dDI0IDEzN3EwIDI5MiAtMTc0IDQ2NnQtNDY2IDE3NHEtMTMwIDAgLTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxcTIyOCAwIDQwNSAxNDRxMTEgOSAyNCA4dDIxIC0xMmw0MSAtNDlxOCAtMTIgNyAtMjRxLTIgLTEzIC0xMiAtMjJxLTEwMiAtODMgLTIyNy41IC0xMjh0LTI1OC41IC00NXEtMTU2IDAgLTI5OCA2MQ0KdC0yNDUgMTY0dC0xNjQgMjQ1dC02MSAyOTh0NjEgMjk4dDE2NCAyNDV0MjQ1IDE2NHQyOTggNjFxMzQ0IDAgNTU2IC0yMTJ0MjEyIC01NTZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDc2IiB1bmljb2RlPSImI3hmMWZiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2OTggMTQ0MnE5NCAtOTQgOTQgLTIyNi41dC05NCAtMjI1LjVsLTIyNSAtMjIzbDEwNCAtMTA0cTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMjEwIC0yMTBxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTA1IDEwNWwtNjAzIC02MDNxLTM3IC0zNyAtOTAgLTM3aC0yMDNsLTI1NiAtMTI4bC02NCA2NGwxMjggMjU2djIwM3EwIDUzIDM3IDkwbDYwMyA2MDNsLTEwNSAxMDVxLTEwIDEwIC0xMCAyM3QxMCAyM2wyMTAgMjEwcTEwIDEwIDIzIDEwDQp0MjMgLTEwbDEwNCAtMTA0bDIyMyAyMjVxOTMgOTQgMjI1LjUgOTR0MjI2LjUgLTk0ek01MTIgNjRsNTc2IDU3NmwtMTkyIDE5MmwtNTc2IC01NzZ2LTE5MmgxOTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMWZjIiB1bmljb2RlPSImI3hmMWZjOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2MTUgMTUzNnE3MCAwIDEyMi41IC00Ni41dDUyLjUgLTExNi41cTAgLTYzIC00NSAtMTUxcS0zMzIgLTYyOSAtNDY1IC03NTJxLTk3IC05MSAtMjE4IC05MXEtMTI2IDAgLTIxNi41IDkyLjV0LTkwLjUgMjE5LjVxMCAxMjggOTIgMjEybDYzOCA1NzlxNTkgNTQgMTMwIDU0ek03MDYgNTAycTM5IC03NiAxMDYuNSAtMTMwdDE1MC41IC03NmwxIC03MXE0IC0yMTMgLTEyOS41IC0zNDd0LTM0OC41IC0xMzRxLTEyMyAwIC0yMTggNDYuNQ0KdC0xNTIuNSAxMjcuNXQtODYuNSAxODN0LTI5IDIyMHE3IC01IDQxIC0zMHQ2MiAtNDQuNXQ1OSAtMzYuNXQ0NiAtMTdxNDEgMCA1NSAzN3EyNSA2NiA1Ny41IDExMi41dDY5LjUgNzZ0ODggNDcuNXQxMDMgMjUuNXQxMjUgMTAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzgiIHVuaWNvZGU9IiYjeGYxZmQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiAxMjh2LTM4NGgtMTc5MnYzODRxNDUgMCA4NSAxNHQ1OSAyNy41dDQ3IDM3LjVxMzAgMjcgNTEuNSAzOHQ1Ni41IDExcTI0IDAgNDQgLTd0MzEgLTE1dDMzIC0yN3EyOSAtMjUgNDcgLTM4dDU4IC0yN3Q4NiAtMTRxNDUgMCA4NSAxNC41dDU4IDI3dDQ4IDM3LjVxMjEgMTkgMzIuNSAyN3QzMSAxNXQ0My41IDdxMzUgMCA1Ni41IC0xMXQ1MS41IC0zOHEyOCAtMjQgNDcgLTM3LjV0NTkgLTI3LjV0ODUgLTE0dDg1IDE0dDU5IDI3LjUNCnQ0NyAzNy41cTMwIDI3IDUxLjUgMzh0NTYuNSAxMXEzNCAwIDU1LjUgLTExdDUxLjUgLTM4cTI4IC0yNCA0NyAtMzcuNXQ1OSAtMjcuNXQ4NSAtMTR6TTE3OTIgNDQ4di0xOTJxLTI0IDAgLTQ0IDd0LTMxIDE1dC0zMyAyN3EtMjkgMjUgLTQ3IDM4dC01OCAyN3QtODUgMTRxLTQ2IDAgLTg2IC0xNHQtNTggLTI3dC00NyAtMzhxLTIyIC0xOSAtMzMgLTI3dC0zMSAtMTV0LTQ0IC03cS0zNSAwIC01Ni41IDExdC01MS41IDM4cS0yOSAyNSAtNDcgMzgNCnQtNTggMjd0LTg2IDE0cS00NSAwIC04NSAtMTQuNXQtNTggLTI3dC00OCAtMzcuNXEtMjEgLTE5IC0zMi41IC0yN3QtMzEgLTE1dC00My41IC03cS0zNSAwIC01Ni41IDExdC01MS41IDM4cS0yOCAyNCAtNDcgMzcuNXQtNTkgMjcuNXQtODUgMTRxLTQ2IDAgLTg2IC0xNHQtNTggLTI3dC00NyAtMzhxLTMwIC0yNyAtNTEuNSAtMzh0LTU2LjUgLTExdjE5MnEwIDgwIDU2IDEzNnQxMzYgNTZoNjR2NDQ4aDI1NnYtNDQ4aDI1NnY0NDhoMjU2di00NDgNCmgyNTZ2NDQ4aDI1NnYtNDQ4aDY0cTgwIDAgMTM2IC01NnQ1NiAtMTM2ek01MTIgMTMxMnEwIC03NyAtMzYgLTExOC41dC05MiAtNDEuNXEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjVxMCAyOSA5LjUgNTF0MjMuNSAzNHQzMSAyOHQzMSAzMS41dDIzLjUgNDQuNXQ5LjUgNjdxMzggMCA4MyAtNzR0NDUgLTE1MHpNMTAyNCAxMzEycTAgLTc3IC0zNiAtMTE4LjV0LTkyIC00MS41cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNQ0KcTAgMjkgOS41IDUxdDIzLjUgMzR0MzEgMjh0MzEgMzEuNXQyMy41IDQ0LjV0OS41IDY3cTM4IDAgODMgLTc0dDQ1IC0xNTB6TTE1MzYgMTMxMnEwIC03NyAtMzYgLTExOC41dC05MiAtNDEuNXEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjVxMCAyOSA5LjUgNTF0MjMuNSAzNHQzMSAyOHQzMSAzMS41dDIzLjUgNDQuNXQ5LjUgNjdxMzggMCA4MyAtNzR0NDUgLTE1MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzkiIHVuaWNvZGU9IiYjeGYxZmU7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMjA0OCAwdi0xMjhoLTIwNDh2MTUzNmgxMjh2LTE0MDhoMTkyMHpNMTY2NCAxMDI0bDI1NiAtODk2aC0xNjY0djU3Nmw0NDggNTc2bDU3NiAtNTc2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4MCIgdW5pY29kZT0iJiN4ZjIwMDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik03NjggNjQ2bDU0NiAtNTQ2cS0xMDYgLTEwOCAtMjQ3LjUgLTE2OHQtMjk4LjUgLTYwcS0yMDkgMCAtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN2LTc2MnpNOTU1IDY0MGg3NzNxMCAtMTU3IC02MCAtMjk4LjV0LTE2OCAtMjQ3LjV6TTE2NjQgNzY4aC03Njh2NzY4cTIwOSAwIDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDgxIiB1bmljb2RlPSImI3hmMjAxOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTIwNDggMHYtMTI4aC0yMDQ4djE1MzZoMTI4di0xNDA4aDE5MjB6TTE5MjAgMTI0OHYtNDM1cTAgLTIxIC0xOS41IC0yOS41dC0zNS41IDcuNWwtMTIxIDEyMWwtNjMzIC02MzNxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMjMzIDIzM2wtNDE2IC00MTZsLTE5MiAxOTJsNTg1IDU4NXExMCAxMCAyMyAxMHQyMyAtMTBsMjMzIC0yMzNsNDY0IDQ2NGwtMTIxIDEyMXEtMTYgMTYgLTcuNSAzNS41dDI5LjUgMTkuNWg0MzVxMTQgMCAyMyAtOQ0KdDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4MiIgdW5pY29kZT0iJiN4ZjIwMjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMjkyIDgzMnEwIC02IDEwIC00MXExMCAtMjkgMjUgLTQ5LjV0NDEgLTM0dDQ0IC0yMHQ1NSAtMTYuNXEzMjUgLTkxIDMyNSAtMzMycTAgLTE0NiAtMTA1LjUgLTI0Mi41dC0yNTQuNSAtOTYuNXEtNTkgMCAtMTExLjUgMTguNXQtOTEuNSA0NS41dC03NyA3NC41dC02MyA4Ny41dC01My41IDEwMy41dC00My41IDEwM3QtMzkuNSAxMDYuNXQtMzUuNSA5NXEtMzIgODEgLTYxLjUgMTMzLjV0LTczLjUgOTYuNXQtMTA0IDY0dC0xNDIgMjANCnEtOTYgMCAtMTgzIC01NS41dC0xMzggLTE0NC41dC01MSAtMTg1cTAgLTE2MCAxMDYuNSAtMjc5LjV0MjYzLjUgLTExOS41cTE3NyAwIDI1OCA5NXE1NiA2MyA4MyAxMTZsODQgLTE1MnEtMTUgLTM0IC00NCAtNzBsMSAtMXEtMTMxIC0xNTIgLTM4OCAtMTUycS0xNDcgMCAtMjY5LjUgNzl0LTE5MC41IDIwNy41dC02OCAyNzQuNXEwIDEwNSA0My41IDIwNnQxMTYgMTc2LjV0MTcyIDEyMS41dDIwNC41IDQ2cTg3IDAgMTU5IC0xOXQxMjMuNSAtNTANCnQ5NSAtODB0NzIuNSAtOTl0NTguNSAtMTE3dDUwLjUgLTEyNC41dDUwIC0xMzAuNXQ1NSAtMTI3cTk2IC0yMDAgMjMzIC0yMDBxODEgMCAxMzguNSA0OC41dDU3LjUgMTI4LjVxMCA0MiAtMTkgNzJ0LTUwLjUgNDZ0LTcyLjUgMzEuNXQtODQuNSAyN3QtODcuNSAzNHQtODEgNTJ0LTY1IDgydC0zOSAxMjIuNXEtMyAxNiAtMyAzM3EwIDExMCA4Ny41IDE5MnQxOTguNSA3OHE3OCAtMyAxMjAuNSAtMTQuNXQ5MC41IC01My41aC0xDQpxMTIgLTExIDIzIC0yNC41dDI2IC0zNnQxOSAtMjcuNWwtMTI5IC05OXEtMjYgNDkgLTU0IDcwdjFxLTIzIDIxIC05NyAyMXEtNDkgMCAtODQgLTMzdC0zNSAtODN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDgzIiB1bmljb2RlPSImI3hmMjAzOyIgDQpkPSJNMTQzMiA0ODRxMCAxNzMgLTIzNCAyMzlxLTM1IDEwIC01MyAxNi41dC0zOCAyNXQtMjkgNDYuNXEwIDIgLTIgOC41dC0zIDEydC0xIDcuNXEwIDM2IDI0LjUgNTkuNXQ2MC41IDIzLjVxNTQgMCA3MSAtMTVoLTFxMjAgLTE1IDM5IC01MWw5MyA3MXEtMzkgNTQgLTQ5IDY0cS0zMyAyOSAtNjcuNSAzOXQtODUuNSAxMHEtODAgMCAtMTQyIC01Ny41dC02MiAtMTM3LjVxMCAtNyAyIC0yM3ExNiAtOTYgNjQuNSAtMTQwdDE0OC41IC03Mw0KcTI5IC04IDQ5IC0xNS41dDQ1IC0yMS41dDM4LjUgLTM0LjV0MTMuNSAtNDYuNXYtNXExIC01OCAtNDAuNSAtOTN0LTEwMC41IC0zNXEtOTcgMCAtMTY3IDE0NHEtMjMgNDcgLTUxLjUgMTIxLjV0LTQ4IDEyNS41dC01NCAxMTAuNXQtNzQgOTUuNXQtMTAzLjUgNjAuNXQtMTQ3IDI0LjVxLTEwMSAwIC0xOTIgLTU2dC0xNDQgLTE0OHQtNTAgLTE5MnYtMXE0IC0xMDggNTAuNSAtMTk5dDEzMy41IC0xNDcuNXQxOTYgLTU2LjVxMTg2IDAgMjc5IDExMA0KcTIwIDI3IDMxIDUxbC02MCAxMDlxLTQyIC04MCAtOTkgLTExNnQtMTQ2IC0zNnEtMTE1IDAgLTE5MSA4N3QtNzYgMjA0cTAgMTA1IDgyIDE4OXQxODYgODRxMTEyIDAgMTcwIC01My41dDEwNCAtMTcyLjVxOCAtMjEgMjUuNSAtNjguNXQyOC41IC03Ni41dDMxLjUgLTc0LjV0MzguNSAtNzR0NDUuNSAtNjIuNXQ1NS41IC01My41dDY2IC0zM3Q4MCAtMTMuNXExMDcgMCAxODMgNjkuNXQ3NiAxNzQuNXpNMTUzNiAxMTIwdi05NjANCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80ODQiIHVuaWNvZGU9IiYjeGYyMDQ7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMTE1MiA2NDBxMCAxMDQgLTQwLjUgMTk4LjV0LTEwOS41IDE2My41dC0xNjMuNSAxMDkuNXQtMTk4LjUgNDAuNXQtMTk4LjUgLTQwLjV0LTE2My41IC0xMDkuNXQtMTA5LjUgLTE2My41dC00MC41IC0xOTguNXQ0MC41IC0xOTguNXQxMDkuNSAtMTYzLjV0MTYzLjUgLTEwOS41dDE5OC41IC00MC41dDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXpNMTkyMCA2NDBxMCAxMDQgLTQwLjUgMTk4LjUNCnQtMTA5LjUgMTYzLjV0LTE2My41IDEwOS41dC0xOTguNSA0MC41aC0zODZxMTE5IC05MCAxODguNSAtMjI0dDY5LjUgLTI4OHQtNjkuNSAtMjg4dC0xODguNSAtMjI0aDM4NnExMDQgMCAxOTguNSA0MC41dDE2My41IDEwOS41dDEwOS41IDE2My41dDQwLjUgMTk4LjV6TTIwNDggNjQwcTAgLTEzMCAtNTEgLTI0OC41dC0xMzYuNSAtMjA0dC0yMDQgLTEzNi41dC0yNDguNSAtNTFoLTc2OHEtMTMwIDAgLTI0OC41IDUxdC0yMDQgMTM2LjUNCnQtMTM2LjUgMjA0dC01MSAyNDguNXQ1MSAyNDguNXQxMzYuNSAyMDR0MjA0IDEzNi41dDI0OC41IDUxaDc2OHExMzAgMCAyNDguNSAtNTF0MjA0IC0xMzYuNXQxMzYuNSAtMjA0dDUxIC0yNDguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80ODUiIHVuaWNvZGU9IiYjeGYyMDU7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMCA2NDBxMCAxMzAgNTEgMjQ4LjV0MTM2LjUgMjA0dDIwNCAxMzYuNXQyNDguNSA1MWg3NjhxMTMwIDAgMjQ4LjUgLTUxdDIwNCAtMTM2LjV0MTM2LjUgLTIwNHQ1MSAtMjQ4LjV0LTUxIC0yNDguNXQtMTM2LjUgLTIwNHQtMjA0IC0xMzYuNXQtMjQ4LjUgLTUxaC03NjhxLTEzMCAwIC0yNDguNSA1MXQtMjA0IDEzNi41dC0xMzYuNSAyMDR0LTUxIDI0OC41ek0xNDA4IDEyOHExMDQgMCAxOTguNSA0MC41dDE2My41IDEwOS41DQp0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXQtNDAuNSAxOTguNXQtMTA5LjUgMTYzLjV0LTE2My41IDEwOS41dC0xOTguNSA0MC41dC0xOTguNSAtNDAuNXQtMTYzLjUgLTEwOS41dC0xMDkuNSAtMTYzLjV0LTQwLjUgLTE5OC41dDQwLjUgLTE5OC41dDEwOS41IC0xNjMuNXQxNjMuNSAtMTA5LjV0MTk4LjUgLTQwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDg2IiB1bmljb2RlPSImI3hmMjA2OyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTc2MiAzODRoLTMxNHEtNDAgMCAtNTcuNSAzNXQ2LjUgNjdsMTg4IDI1MXEtNjUgMzEgLTEzNyAzMXEtMTMyIDAgLTIyNiAtOTR0LTk0IC0yMjZ0OTQgLTIyNnQyMjYgLTk0cTExNSAwIDIwMyA3Mi41dDExMSAxODMuNXpNNTc2IDUxMmgxODZxLTE4IDg1IC03NSAxNDh6TTEwNTYgNTEybDI4OCAzODRoLTQ4MGwtOTkgLTEzMnExMDUgLTEwMyAxMjYgLTI1MmgxNjV6TTIxNzYgNDQ4cTAgMTMyIC05NCAyMjZ0LTIyNiA5NA0KcS02MCAwIC0xMjEgLTI0bDE3NCAtMjYwcTE1IC0yMyAxMCAtNDl0LTI3IC00MHEtMTUgLTExIC0zNiAtMTFxLTM1IDAgLTUzIDI5bC0xNzQgMjYwcS05MyAtOTUgLTkzIC0yMjVxMCAtMTMyIDk0IC0yMjZ0MjI2IC05NHQyMjYgOTR0OTQgMjI2ek0yMzA0IDQ0OHEwIC0xODUgLTEzMS41IC0zMTYuNXQtMzE2LjUgLTEzMS41dC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCA5NyAzOS41IDE4My41dDEwOS41IDE0OS41bC02NSA5OGwtMzUzIC00NjkNCnEtMTggLTI2IC01MSAtMjZoLTE5N3EtMjMgLTE2NCAtMTQ5IC0yNzR0LTI5NCAtMTEwcS0xODUgMCAtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41dDEzMS41IDMxNi41dDMxNi41IDEzMS41cTExNCAwIDIxNSAtNTVsMTM3IDE4M2gtMjI0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMzg0di0xMjhoNDM1bC04NSAxMjhoLTIyMnEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDI1NnEzMyAwIDUzIC0yOGwyNjcgLTQwMA0KcTkxIDQ0IDE5MiA0NHExODUgMCAzMTYuNSAtMTMxLjV0MTMxLjUgLTMxNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4NyIgdW5pY29kZT0iJiN4ZjIwNzsiIA0KZD0iTTM4NCAzMjBxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE0MDggMzIwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xMzYyIDcxNmwtNzIgMzg0cS01IDIzIC0yMi41IDM3LjV0LTQwLjUgMTQuNQ0KaC05MThxLTIzIDAgLTQwLjUgLTE0LjV0LTIyLjUgLTM3LjVsLTcyIC0zODRxLTUgLTMwIDE0IC01M3Q0OSAtMjNoMTA2MnEzMCAwIDQ5IDIzdDE0IDUzek0xMTM2IDEzMjhxMCAyMCAtMTQgMzR0LTM0IDE0aC02NDBxLTIwIDAgLTM0IC0xNHQtMTQgLTM0dDE0IC0zNHQzNCAtMTRoNjQwcTIwIDAgMzQgMTR0MTQgMzR6TTE1MzYgNjAzdi02MDNoLTEyOHYtMTI4cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjUNCnQtMzcuNSA5MC41djEyOGgtNzY4di0xMjhxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41djEyOGgtMTI4djYwM3EwIDExMiAyNSAyMjNsMTAzIDQ1NHE5IDc4IDk3LjUgMTM3dDIzMCA4OXQzMTIuNSAzMHQzMTIuNSAtMzB0MjMwIC04OXQ5Ny41IC0xMzdsMTA1IC00NTRxMjMgLTEwMiAyMyAtMjIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4OCIgdW5pY29kZT0iJiN4ZjIwODsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xNDYzIDcwNHEwIC0zNSAtMjUgLTYwLjV0LTYxIC0yNS41aC03MDJxLTM2IDAgLTYxIDI1LjV0LTI1IDYwLjV0MjUgNjAuNXQ2MSAyNS41aDcwMnEzNiAwIDYxIC0yNS41dDI1IC02MC41ek0xNjc3IDcwNHEwIDg2IC0yMyAxNzBoLTk4MnEtMzYgMCAtNjEgMjV0LTI1IDYwcTAgMzYgMjUgNjF0NjEgMjVoOTA4cS04OCAxNDMgLTIzNSAyMjd0LTMyMCA4NHEtMTc3IDAgLTMyNy41IC04Ny41dC0yMzggLTIzNy41dC04Ny41IC0zMjcNCnEwIC04NiAyMyAtMTcwaDk4MnEzNiAwIDYxIC0yNXQyNSAtNjBxMCAtMzYgLTI1IC02MXQtNjEgLTI1aC05MDhxODggLTE0MyAyMzUuNSAtMjI3dDMyMC41IC04NHExMzIgMCAyNTMgNTEuNXQyMDggMTM5dDEzOSAyMDh0NTIgMjUzLjV6TTIwNDggOTU5cTAgLTM1IC0yNSAtNjB0LTYxIC0yNWgtMTMxcTE3IC04NSAxNyAtMTcwcTAgLTE2NyAtNjUuNSAtMzE5LjV0LTE3NS41IC0yNjN0LTI2Mi41IC0xNzZ0LTMxOS41IC02NS41DQpxLTI0NiAwIC00NDguNSAxMzN0LTMwMS41IDM1MGgtMTg5cS0zNiAwIC02MSAyNXQtMjUgNjFxMCAzNSAyNSA2MHQ2MSAyNWgxMzJxLTE3IDg1IC0xNyAxNzBxMCAxNjcgNjUuNSAzMTkuNXQxNzUuNSAyNjN0MjYyLjUgMTc2dDMyMC41IDY1LjVxMjQ1IDAgNDQ3LjUgLTEzM3QzMDEuNSAtMzUwaDE4OHEzNiAwIDYxIC0yNXQyNSAtNjF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDg5IiB1bmljb2RlPSImI3hmMjA5OyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTk1MyAxMTU4bC0xMTQgLTMyOGwxMTcgLTIxcTE2NSA0NTEgMTY1IDUxOHEwIDU2IC0zOCA1NnEtNTcgMCAtMTMwIC0yMjV6TTY1NCA0NzFsMzMgLTg4cTM3IDQyIDcxIDY3bC0zMyA1LjV0LTM4LjUgN3QtMzIuNSA4LjV6TTM2MiAxMzY3cTAgLTk4IDE1OSAtNTIxcTE3IDEwIDQ5IDEwcTE1IDAgNzUgLTVsLTEyMSAzNTFxLTc1IDIyMCAtMTIzIDIyMHEtMTkgMCAtMjkgLTE3LjV0LTEwIC0zNy41ek0yODMgNjA4cTAgLTM2IDUxLjUgLTExOQ0KdDExNy41IC0xNTN0MTAwIC03MHExNCAwIDI1LjUgMTN0MTEuNSAyN3EwIDI0IC0zMiAxMDJxLTEzIDMyIC0zMiA3MnQtNDcuNSA4OXQtNjEuNSA4MXQtNjIgMzJxLTIwIDAgLTQ1LjUgLTI3dC0yNS41IC00N3pNMTI1IDI3M3EwIC00MSAyNSAtMTA0cTU5IC0xNDUgMTgzLjUgLTIyN3QyODEuNSAtODJxMjI3IDAgMzgyIDE3MHExNTIgMTY5IDE1MiA0MjdxMCA0MyAtMSA2N3QtMTEuNSA2MnQtMzAuNSA1NnEtNTYgNDkgLTIxMS41IDc1LjUNCnQtMjcwLjUgMjYuNXEtMzcgMCAtNDkgLTExcS0xMiAtNSAtMTIgLTM1cTAgLTM0IDIxLjUgLTYwdDU1LjUgLTQwdDc3LjUgLTIzLjV0ODcuNSAtMTEuNXQ4NSAtNHQ3MCAwaDIzcTI0IDAgNDAgLTE5cTE1IC0xOSAxOSAtNTVxLTI4IC0yOCAtOTYgLTU0cS02MSAtMjIgLTkzIC00NnEtNjQgLTQ2IC0xMDguNSAtMTE0dC00NC41IC0xMzdxMCAtMzEgMTguNSAtODguNXQxOC41IC04Ny41bC0zIC0xMnEtNCAtMTIgLTQgLTE0DQpxLTEzNyAxMCAtMTQ2IDIxNnEtOCAtMiAtNDEgLTJxMiAtNyAyIC0yMXEwIC01MyAtNDAuNSAtODkuNXQtOTQuNSAtMzYuNXEtODIgMCAtMTY2LjUgNzh0LTg0LjUgMTU5cTAgMzQgMzMgNjdxNTIgLTY0IDYwIC03NnE3NyAtMTA0IDEzMyAtMTA0cTEyIDAgMjYuNSA4LjV0MTQuNSAyMC41cTAgMzQgLTg3LjUgMTQ1dC0xMTYuNSAxMTFxLTQzIDAgLTcwIC00NC41dC0yNyAtOTAuNXpNMTEgMjY0cTAgMTAxIDQyLjUgMTYzdDEzNi41IDg4DQpxLTI4IDc0IC0yOCAxMDRxMCA2MiA2MSAxMjN0MTIyIDYxcTI5IDAgNzAgLTE1cS0xNjMgNDYyIC0xNjMgNTY3cTAgODAgNDEgMTMwLjV0MTE5IDUwLjVxMTMxIDAgMzI1IC01ODFxNiAtMTcgOCAtMjNxNiAxNiAyOSA3OS41dDQzLjUgMTE4LjV0NTQgMTI3LjV0NjQuNSAxMjN0NzAuNSA4Ni41dDc2LjUgMzZxNzEgMCAxMTIgLTQ5dDQxIC0xMjJxMCAtMTA4IC0xNTkgLTU1MHE2MSAtMTUgMTAwLjUgLTQ2dDU4LjUgLTc4dDI2IC05My41DQp0NyAtMTEwLjVxMCAtMTUwIC00NyAtMjgwdC0xMzIgLTIyNXQtMjExIC0xNTB0LTI3OCAtNTVxLTExMSAwIC0yMjMgNDJxLTE0OSA1NyAtMjU4IDE5MS41dC0xMDkgMjg2LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDkwIiB1bmljb2RlPSImI3hmMjBhOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTc4NSA1MjhoMjA3cS0xNCAtMTU4IC05OC41IC0yNDguNXQtMjE0LjUgLTkwLjVxLTE2MiAwIC0yNTQuNSAxMTZ0LTkyLjUgMzE2cTAgMTk0IDkzIDMxMS41dDIzMyAxMTcuNXExNDggMCAyMzIgLTg3dDk3IC0yNDdoLTIwM3EtNSA2NCAtMzUuNSA5OXQtODEuNSAzNXEtNTcgMCAtODguNSAtNjAuNXQtMzEuNSAtMTc3LjVxMCAtNDggNSAtODR0MTggLTY5LjV0NDAgLTUxLjV0NjYgLTE4cTk1IDAgMTA5IDEzOXpNMTQ5NyA1MjhoMjA2DQpxLTE0IC0xNTggLTk4IC0yNDguNXQtMjE0IC05MC41cS0xNjIgMCAtMjU0LjUgMTE2dC05Mi41IDMxNnEwIDE5NCA5MyAzMTEuNXQyMzMgMTE3LjVxMTQ4IDAgMjMyIC04N3Q5NyAtMjQ3aC0yMDRxLTQgNjQgLTM1IDk5dC04MSAzNXEtNTcgMCAtODguNSAtNjAuNXQtMzEuNSAtMTc3LjVxMCAtNDggNSAtODR0MTggLTY5LjV0MzkuNSAtNTEuNXQ2NS41IC0xOHE0OSAwIDc2LjUgMzh0MzMuNSAxMDF6TTE4NTYgNjQ3cTAgMjA3IC0xNS41IDMwNw0KdC02MC41IDE2MXEtNiA4IC0xMy41IDE0dC0yMS41IDE1dC0xNiAxMXEtODYgNjMgLTY5NyA2M3EtNjI1IDAgLTcxMCAtNjNxLTUgLTQgLTE3LjUgLTExLjV0LTIxIC0xNHQtMTQuNSAtMTQuNXEtNDUgLTYwIC02MCAtMTU5LjV0LTE1IC0zMDguNXEwIC0yMDggMTUgLTMwNy41dDYwIC0xNjAuNXE2IC04IDE1IC0xNXQyMC41IC0xNHQxNy41IC0xMnE0NCAtMzMgMjM5LjUgLTQ5dDQ3MC41IC0xNnE2MTAgMCA2OTcgNjVxNSA0IDE3IDExdDIwLjUgMTQNCnQxMy41IDE2cTQ2IDYwIDYxIDE1OXQxNSAzMDl6TTIwNDggMTQwOHYtMTUzNmgtMjA0OHYxNTM2aDIwNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDkxIiB1bmljb2RlPSImI3hmMjBiOyIgDQpkPSJNOTkyIDkxMnYtNDk2cTAgLTE0IC05IC0yM3QtMjMgLTloLTE2MHEtMTQgMCAtMjMgOXQtOSAyM3Y0OTZxMCAxMTIgLTgwIDE5MnQtMTkyIDgwaC0yNzJ2LTExNTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTYwcS0xNCAwIC0yMyA5dC05IDIzdjEzNDRxMCAxNCA5IDIzdDIzIDloNDY0cTEzNSAwIDI0OSAtNjYuNXQxODAuNSAtMTgwLjV0NjYuNSAtMjQ5ek0xMzc2IDEzNzZ2LTg4MHEwIC0xMzUgLTY2LjUgLTI0OXQtMTgwLjUgLTE4MC41DQp0LTI0OSAtNjYuNWgtNDY0cS0xNCAwIC0yMyA5dC05IDIzdjk2MHEwIDE0IDkgMjN0MjMgOWgxNjBxMTQgMCAyMyAtOXQ5IC0yM3YtNzY4aDI3MnExMTIgMCAxOTIgODB0ODAgMTkydjg4MHEwIDE0IDkgMjN0MjMgOWgxNjBxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80OTIiIHVuaWNvZGU9IiYjeGYyMGM7IiANCmQ9Ik0xMzExIDY5NHYtMTE0cTAgLTI0IC0xMy41IC0zOHQtMzcuNSAtMTRoLTIwMnEtMjQgMCAtMzggMTR0LTE0IDM4djExNHEwIDI0IDE0IDM4dDM4IDE0aDIwMnEyNCAwIDM3LjUgLTE0dDEzLjUgLTM4ek04MjEgNDY0djI1MHEwIDUzIC0zMi41IDg1LjV0LTg1LjUgMzIuNWgtMTMzcS02OCAwIC05NiAtNTJxLTI4IDUyIC05NiA1MmgtMTMwcS01MyAwIC04NS41IC0zMi41dC0zMi41IC04NS41di0yNTBxMCAtMjIgMjEgLTIyaDU1DQpxMjIgMCAyMiAyMnYyMzBxMCAyNCAxMy41IDM4dDM4LjUgMTRoOTRxMjQgMCAzOCAtMTR0MTQgLTM4di0yMzBxMCAtMjIgMjEgLTIyaDU0cTIyIDAgMjIgMjJ2MjMwcTAgMjQgMTQgMzh0MzggMTRoOTdxMjQgMCAzNy41IC0xNHQxMy41IC0zOHYtMjMwcTAgLTIyIDIyIC0yMmg1NXEyMSAwIDIxIDIyek0xNDEwIDU2MHYxNTRxMCA1MyAtMzMgODUuNXQtODYgMzIuNWgtMjY0cS01MyAwIC04NiAtMzIuNXQtMzMgLTg1LjV2LTQxMA0KcTAgLTIxIDIyIC0yMWg1NXEyMSAwIDIxIDIxdjE4MHEzMSAtNDIgOTQgLTQyaDE5MXE1MyAwIDg2IDMyLjV0MzMgODUuNXpNMTUzNiAxMTc2di0xMDcycTAgLTk2IC02OCAtMTY0dC0xNjQgLTY4aC0xMDcycS05NiAwIC0xNjQgNjh0LTY4IDE2NHYxMDcycTAgOTYgNjggMTY0dDE2NCA2OGgxMDcycTk2IDAgMTY0IC02OHQ2OCAtMTY0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5MyIgdW5pY29kZT0iJiN4ZjIwZDsiIA0KZD0iTTkxNSA0NTBoLTI5NGwxNDcgNTUxek0xMDAxIDEyOGgzMTFsLTMyNCAxMDI0aC00NDBsLTMyNCAtMTAyNGgzMTFsMzgzIDMxNHpNMTUzNiAxMTIwdi05NjBxMCAtMTE4IC04NSAtMjAzdC0yMDMgLTg1aC05NjBxLTExOCAwIC0yMDMgODV0LTg1IDIwM3Y5NjBxMCAxMTggODUgMjAzdDIwMyA4NWg5NjBxMTE4IDAgMjAzIC04NXQ4NSAtMjAzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5NCIgdW5pY29kZT0iJiN4ZjIwZTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0yMDQ4IDY0MXEwIC0yMSAtMTMgLTM2LjV0LTMzIC0xOS41bC0yMDUgLTM1NnEzIC05IDMgLTE4cTAgLTIwIC0xMi41IC0zNS41dC0zMi41IC0xOS41bC0xOTMgLTMzN3EzIC04IDMgLTE2cTAgLTIzIC0xNi41IC00MHQtNDAuNSAtMTdxLTI1IDAgLTQxIDE4aC00MDBxLTE3IC0yMCAtNDMgLTIwdC00MyAyMGgtMzk5cS0xNyAtMjAgLTQzIC0yMHEtMjMgMCAtNDAgMTYuNXQtMTcgNDAuNXEwIDggNCAyMGwtMTkzIDMzNQ0KcS0yMCA0IC0zMi41IDE5LjV0LTEyLjUgMzUuNXEwIDkgMyAxOGwtMjA2IDM1NnEtMjAgNSAtMzIuNSAyMC41dC0xMi41IDM1LjVxMCAyMSAxMy41IDM2LjV0MzMuNSAxOS41bDE5OSAzNDRxMCAxIC0wLjUgM3QtMC41IDNxMCAzNiAzNCA1MWwyMDkgMzYzcS00IDEwIC00IDE4cTAgMjQgMTcgNDAuNXQ0MCAxNi41cTI2IDAgNDQgLTIxaDM5NnExNiAyMSA0MyAyMXQ0MyAtMjFoMzk4cTE4IDIxIDQ0IDIxcTIzIDAgNDAgLTE2LjV0MTcgLTQwLjUNCnEwIC02IC00IC0xOGwyMDcgLTM1OHEyMyAtMSAzOSAtMTcuNXQxNiAtMzguNXEwIC0xMyAtNyAtMjdsMTg3IC0zMjRxMTkgLTQgMzEuNSAtMTkuNXQxMi41IC0zNS41ek0xMDYzIC0xNThoMzg5bC0zNDIgMzU0aC0xNDNsLTM0MiAtMzU0aDM2MHExOCAxNiAzOSAxNnQzOSAtMTZ6TTExMiA2NTRxMSAtNCAxIC0xM3EwIC0xMCAtMiAtMTVsMjA4IC0zNjBsMTUgLTZsMTg4IDE5OXYzNDdsLTE4NyAxOTRxLTEzIC04IC0yOSAtMTB6TTk4NiAxNDM4DQpoLTM4OGwxOTAgLTIwMGw1NTQgMjAwaC0yODBxLTE2IC0xNiAtMzggLTE2dC0zOCAxNnpNMTY4OSAyMjZxMSA2IDUgMTFsLTY0IDY4bC0xNyAtNzloNzZ6TTE1ODMgMjI2bDIyIDEwNWwtMjUyIDI2NmwtMjk2IC0zMDdsNjMgLTY0aDQ2M3pNMTQ5NSAtMTQybDE2IDI4bDY1IDMxMGgtNDI3bDMzMyAtMzQzcTggNCAxMyA1ek01NzggLTE1OGg1bDM0MiAzNTRoLTM3M3YtMzM1bDQgLTZxMTQgLTUgMjIgLTEzek01NTIgMjI2aDQwMmw2NCA2Ng0KbC0zMDkgMzIxbC0xNTcgLTE2NnYtMjIxek0zNTkgMjI2aDE2M3YxODlsLTE2OCAtMTc3cTQgLTggNSAtMTJ6TTM1OCAxMDUxcTAgLTEgMC41IC0ydDAuNSAtMnEwIC0xNiAtOCAtMjlsMTcxIC0xNzd2MjY5ek01NTIgMTEyMXYtMzExbDE1MyAtMTU3bDI5NyAzMTRsLTIyMyAyMzZ6TTU1NiAxNDI1bC00IC04di0yNjRsMjA1IDc0bC0xOTEgMjAxcS02IC0yIC0xMCAtM3pNMTQ0NyAxNDM4aC0xNmwtNjIxIC0yMjRsMjEzIC0yMjV6TTEwMjMgOTQ2DQpsLTI5NyAtMzE1bDMxMSAtMzE5bDI5NiAzMDd6TTY4OCA2MzRsLTEzNiAxNDF2LTI4NHpNMTAzOCAyNzBsLTQyIC00NGg4NXpNMTM3NCA2MThsMjM4IC0yNTFsMTMyIDYyNGwtMyA1bC0xIDF6TTE3MTggMTAxOHEtOCAxMyAtOCAyOXYybC0yMTYgMzc2cS01IDEgLTEzIDVsLTQzNyAtNDYzbDMxMCAtMzI3ek01MjIgMTE0MnYyMjNsLTE2MyAtMjgyek01MjIgMTk2aC0xNjNsMTYzIC0yODN2Mjgzek0xNjA3IDE5NmwtNDggLTIyN2wxMzAgMjI3aC04Mg0Kek0xNzI5IDI2NmwyMDcgMzYxcS0yIDEwIC0yIDE0cTAgMSAzIDE2bC0xNzEgMjk2bC0xMjkgLTYxMmw3NyAtODJxNSAzIDE1IDd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMjEwIiB1bmljb2RlPSImI3hmMjEwOyIgDQpkPSJNMCA4NTZxMCAxMzEgOTEuNSAyMjYuNXQyMjIuNSA5NS41aDc0MmwzNTIgMzU4di0xNDcwcTAgLTEzMiAtOTEuNSAtMjI3dC0yMjIuNSAtOTVoLTc4MHEtMTMxIDAgLTIyMi41IDk1dC05MS41IDIyN3Y3OTB6TTEyMzIgMTAybC0xNzYgMTgwdjQyNXEwIDQ2IC0zMiA3OXQtNzggMzNoLTQ4NHEtNDYgMCAtNzggLTMzdC0zMiAtNzl2LTQ5MnEwIC00NiAzMi41IC03OS41dDc3LjUgLTMzLjVoNzcweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5NiIgdW5pY29kZT0iJiN4ZjIxMTsiIA0KZD0iTTkzNCAxMzg2cS0zMTcgLTEyMSAtNTU2IC0zNjIuNXQtMzU4IC01NjAuNXEtMjAgODkgLTIwIDE3NnEwIDIwOCAxMDIuNSAzODQuNXQyNzguNSAyNzl0Mzg0IDEwMi41cTgyIDAgMTY5IC0xOXpNMTIwMyAxMjY3cTkzIC02NSAxNjQgLTE1NXEtMzg5IC0xMTMgLTY3NC41IC00MDAuNXQtMzk2LjUgLTY3Ni41cS05MyA3MiAtMTU1IDE2MnExMTIgMzg2IDM5NSA2NzF0NjY3IDM5OXpNNDcwIC02N3ExMTUgMzU2IDM3OS41IDYyMnQ2MTkuNSAzODQNCnE0MCAtOTIgNTQgLTE5NXEtMjkyIC0xMjAgLTUxNiAtMzQ1dC0zNDMgLTUxOHEtMTAzIDE0IC0xOTQgNTJ6TTE1MzYgLTEyNXEtMTkzIDUwIC0zNjcgMTE1cS0xMzUgLTg0IC0yOTAgLTEwN3ExMDkgMjA1IDI3NCAzNzAuNXQzNjkgMjc1LjVxLTIxIC0xNTIgLTEwMSAtMjg0cTY1IC0xNzUgMTE1IC0zNzB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMjEyIiB1bmljb2RlPSImI3hmMjEyOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE4OTMgMTE0NGwxNTUgLTEyNzJxLTEzMSAwIC0yNTcgNTdxLTIwMCA5MSAtMzkzIDkxcS0yMjYgMCAtMzc0IC0xNDhxLTE0OCAxNDggLTM3NCAxNDhxLTE5MyAwIC0zOTMgLTkxcS0xMjggLTU3IC0yNTIgLTU3aC01bDE1NSAxMjcycTIyNCAxMjcgNDgyIDEyN3EyMzMgMCAzODcgLTEwNnExNTQgMTA2IDM4NyAxMDZxMjU4IDAgNDgyIC0xMjd6TTEzOTggMTU3cTEyOSAwIDIzMiAtMjguNXQyNjAgLTkzLjVsLTEyNCAxMDIxDQpxLTE3MSA3OCAtMzY4IDc4cS0yMjQgMCAtMzc0IC0xNDFxLTE1MCAxNDEgLTM3NCAxNDFxLTE5NyAwIC0zNjggLTc4bC0xMjQgLTEwMjFxMTA1IDQzIDE2NS41IDY1dDE0OC41IDM5LjV0MTc4IDE3LjVxMjAyIDAgMzc0IC0xMDhxMTcyIDEwOCAzNzQgMTA4ek0xNDM4IDE5MWwtNTUgOTA3cS0yMTEgLTQgLTM1OSAtMTU1cS0xNTIgMTU1IC0zNzQgMTU1cS0xNzYgMCAtMzM2IC02NmwtMTE0IC05NDFxMTI0IDUxIDIyOC41IDc2dDIyMS41IDI1DQpxMjA5IDAgMzc0IC0xMDJxMTcyIDEwNyAzNzQgMTAyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5OCIgdW5pY29kZT0iJiN4ZjIxMzsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xNTAwIDE2NXY3MzNxMCAyMSAtMTUgMzZ0LTM1IDE1aC05M3EtMjAgMCAtMzUgLTE1dC0xNSAtMzZ2LTczM3EwIC0yMCAxNSAtMzV0MzUgLTE1aDkzcTIwIDAgMzUgMTV0MTUgMzV6TTEyMTYgMTY1djUzMXEwIDIwIC0xNSAzNXQtMzUgMTVoLTEwMXEtMjAgMCAtMzUgLTE1dC0xNSAtMzV2LTUzMXEwIC0yMCAxNSAtMzV0MzUgLTE1aDEwMXEyMCAwIDM1IDE1dDE1IDM1ek05MjQgMTY1djQyOXEwIDIwIC0xNSAzNXQtMzUgMTVoLTEwMQ0KcS0yMCAwIC0zNSAtMTV0LTE1IC0zNXYtNDI5cTAgLTIwIDE1IC0zNXQzNSAtMTVoMTAxcTIwIDAgMzUgMTV0MTUgMzV6TTYzMiAxNjV2MzYycTAgMjAgLTE1IDM1dC0zNSAxNWgtMTAxcS0yMCAwIC0zNSAtMTV0LTE1IC0zNXYtMzYycTAgLTIwIDE1IC0zNXQzNSAtMTVoMTAxcTIwIDAgMzUgMTV0MTUgMzV6TTIwNDggMzExcTAgLTE2NiAtMTE4IC0yODR0LTI4NCAtMTE4aC0xMjQ0cS0xNjYgMCAtMjg0IDExOHQtMTE4IDI4NA0KcTAgMTE2IDYzIDIxNC41dDE2OCAxNDguNXEtMTAgMzQgLTEwIDczcTAgMTEzIDgwLjUgMTkzLjV0MTkzLjUgODAuNXExMDIgMCAxODAgLTY3cTQ1IDE4MyAxOTQgMzAwdDMzOCAxMTdxMTQ5IDAgMjc1IC03My41dDE5OS41IC0xOTkuNXQ3My41IC0yNzVxMCAtNjYgLTE0IC0xMjJxMTM1IC0zMyAyMjEgLTE0Mi41dDg2IC0yNDcuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80OTkiIHVuaWNvZGU9IiYjeGYyMTQ7IiANCmQ9Ik0wIDE1MzZoMTUzNnYtMTM5MmwtNzc2IC0zMzhsLTc2MCAzMzh2MTM5MnpNMTQzNiAyMDl2OTI2aC0xMzM2di05MjZsNjYxIC0yOTR6TTE0MzYgMTIzNXYyMDFoLTEzMzZ2LTIwMWgxMzM2ek0xODEgOTM3di0xMTVoLTM3djExNWgzN3pNMTgxIDc4OXYtMTE1aC0zN3YxMTVoMzd6TTE4MSA2NDF2LTExNWgtMzd2MTE1aDM3ek0xODEgNDkzdi0xMTVoLTM3djExNWgzN3pNMTgxIDM0NXYtMTE1aC0zN3YxMTVoMzd6TTIwNyAyMDJsMTUgMzQNCmwxMDUgLTQ3bC0xNSAtMzN6TTM0MyAxNDJsMTUgMzRsMTA1IC00NmwtMTUgLTM0ek00NzggODJsMTUgMzRsMTA1IC00NmwtMTUgLTM0ek02MTQgMjNsMTUgMzNsMTA0IC00NmwtMTUgLTM0ek03OTcgMTBsMTA1IDQ2bDE1IC0zM2wtMTA1IC00N3pNOTMyIDcwbDEwNSA0NmwxNSAtMzRsLTEwNSAtNDZ6TTEwNjggMTMwbDEwNSA0NmwxNSAtMzRsLTEwNSAtNDZ6TTEyMDMgMTg5bDEwNSA0N2wxNSAtMzRsLTEwNSAtNDZ6TTI1OSAxMzg5di0zNmgtMTE0DQp2MzZoMTE0ek00MjEgMTM4OXYtMzZoLTExNXYzNmgxMTV6TTU4MyAxMzg5di0zNmgtMTE1djM2aDExNXpNNzQ0IDEzODl2LTM2aC0xMTR2MzZoMTE0ek05MDYgMTM4OXYtMzZoLTExNHYzNmgxMTR6TTEwNjggMTM4OXYtMzZoLTExNXYzNmgxMTV6TTEyMzAgMTM4OXYtMzZoLTExNXYzNmgxMTV6TTEzOTEgMTM4OXYtMzZoLTExNHYzNmgxMTR6TTE4MSAxMDQ5di03OWgtMzd2MTE1aDExNXYtMzZoLTc4ek00MjEgMTA4NXYtMzZoLTExNXYzNmgxMTV6DQpNNTgzIDEwODV2LTM2aC0xMTV2MzZoMTE1ek03NDQgMTA4NXYtMzZoLTExNHYzNmgxMTR6TTkwNiAxMDg1di0zNmgtMTE0djM2aDExNHpNMTA2OCAxMDg1di0zNmgtMTE1djM2aDExNXpNMTIzMCAxMDg1di0zNmgtMTE1djM2aDExNXpNMTM1NSA5NzB2NzloLTc4djM2aDExNXYtMTE1aC0zN3pNMTM1NSA4MjJ2MTE1aDM3di0xMTVoLTM3ek0xMzU1IDY3NHYxMTVoMzd2LTExNWgtMzd6TTEzNTUgNTI2djExNWgzN3YtMTE1aC0zN3pNMTM1NSAzNzgNCnYxMTVoMzd2LTExNWgtMzd6TTEzNTUgMjMwdjExNWgzN3YtMTE1aC0zN3pNNzYwIDI2NXEtMTI5IDAgLTIyMSA5MS41dC05MiAyMjEuNXEwIDEyOSA5MiAyMjF0MjIxIDkycTEzMCAwIDIyMS41IC05MnQ5MS41IC0yMjFxMCAtMTMwIC05MS41IC0yMjEuNXQtMjIxLjUgLTkxLjV6TTU5NSA2NDZxMCAtMzYgMTkuNSAtNTYuNXQ0OS41IC0yNXQ2NCAtN3Q2NCAtMnQ0OS41IC05dDE5LjUgLTMwLjVxMCAtNDkgLTExMiAtNDlxLTk3IDAgLTEyMyA1MQ0KaC0zbC0zMSAtNjNxNjcgLTQyIDE2MiAtNDJxMjkgMCA1Ni41IDV0NTUuNSAxNnQ0NS41IDMzdDE3LjUgNTNxMCA0NiAtMjcuNSA2OS41dC02Ny41IDI3dC03OS41IDN0LTY3IDV0LTI3LjUgMjUuNXEwIDIxIDIwLjUgMzN0NDAuNSAxNXQ0MSAzcTM0IDAgNzAuNSAtMTF0NTEuNSAtMzRoM2wzMCA1OHEtMyAxIC0yMSA4LjV0LTIyLjUgOXQtMTkuNSA3dC0yMiA3dC0yMCA0LjV0LTI0IDR0LTIzIDFxLTI5IDAgLTU2LjUgLTV0LTU0IC0xNi41DQp0LTQzIC0zNHQtMTYuNSAtNTMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDAiIHVuaWNvZGU9IiYjeGYyMTU7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNODYzIDUwNHEwIDExMiAtNzkuNSAxOTEuNXQtMTkxLjUgNzkuNXQtMTkxIC03OS41dC03OSAtMTkxLjV0NzkgLTE5MXQxOTEgLTc5dDE5MS41IDc5dDc5LjUgMTkxek0xNzI2IDUwNXEwIDExMiAtNzkgMTkxdC0xOTEgNzl0LTE5MS41IC03OXQtNzkuNSAtMTkxcTAgLTExMyA3OS41IC0xOTJ0MTkxLjUgLTc5dDE5MSA3OS41dDc5IDE5MS41ek0yMDQ4IDEzMTR2LTEzNDhxMCAtNDQgLTMxLjUgLTc1LjV0LTc2LjUgLTMxLjVoLTE4MzINCnEtNDUgMCAtNzYuNSAzMS41dC0zMS41IDc1LjV2MTM0OHEwIDQ0IDMxLjUgNzUuNXQ3Ni41IDMxLjVoNDMxcTQ0IDAgNzYgLTMxLjV0MzIgLTc1LjV2LTE2MWg3NTR2MTYxcTAgNDQgMzIgNzUuNXQ3NiAzMS41aDQzMXE0NSAwIDc2LjUgLTMxLjV0MzEuNSAtNzUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDEiIHVuaWNvZGU9IiYjeGYyMTY7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMTQzMCA5NTN6TTE2OTAgNzQ5cTE0OCAwIDI1MyAtOTguNXQxMDUgLTI0NC41cTAgLTE1NyAtMTA5IC0yNjEuNXQtMjY3IC0xMDQuNXEtODUgMCAtMTYyIDI3LjV0LTEzOCA3My41dC0xMTggMTA2dC0xMDkgMTI2dC0xMDMuNSAxMzIuNXQtMTA4LjUgMTI2LjV0LTExNyAxMDZ0LTEzNiA3My41dC0xNTkgMjcuNXEtMTU0IDAgLTI1MS41IC05MS41dC05Ny41IC0yNDQuNXEwIC0xNTcgMTA0IC0yNTB0MjYzIC05M3ExMDAgMCAyMDggMzcuNQ0KdDE5MyA5OC41cTUgNCAyMSAxOC41dDMwIDI0dDIyIDkuNXExNCAwIDI0LjUgLTEwLjV0MTAuNSAtMjQuNXEwIC0yNCAtNjAgLTc3cS0xMDEgLTg4IC0yMzQuNSAtMTQydC0yNjAuNSAtNTRxLTEzMyAwIC0yNDUuNSA1OHQtMTgwIDE2NXQtNjcuNSAyNDFxMCAyMDUgMTQxLjUgMzQxdDM0Ny41IDEzNnExMjAgMCAyMjYuNSAtNDMuNXQxODUuNSAtMTEzdDE1MS41IC0xNTN0MTM5IC0xNjcuNXQxMzMuNSAtMTUzLjV0MTQ5LjUgLTExMw0KdDE3Mi41IC00My41cTEwMiAwIDE2OC41IDYxLjV0NjYuNSAxNjIuNXEwIDk1IC02NC41IDE1OXQtMTU5LjUgNjRxLTMwIDAgLTgxLjUgLTE4LjV0LTY4LjUgLTE4LjVxLTIwIDAgLTM1LjUgMTV0LTE1LjUgMzVxMCAxOCA4LjUgNTd0OC41IDU5cTAgMTU5IC0xMDcuNSAyNjN0LTI2Ni41IDEwNHEtNTggMCAtMTExLjUgLTE4LjV0LTg0IC00MC41dC01NS41IC00MC41dC0zMyAtMTguNXEtMTUgMCAtMjUuNSAxMC41dC0xMC41IDI1LjUNCnEwIDE5IDI1IDQ2cTU5IDY3IDE0NyAxMDMuNXQxODIgMzYuNXExOTEgMCAzMTggLTEyNS41dDEyNyAtMzE1LjVxMCAtMzcgLTQgLTY2cTU3IDE1IDExNSAxNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDIiIHVuaWNvZGU9IiYjeGYyMTc7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTIxNiA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjh2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV2LTEyOGgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5aDEyOHYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV2MTI4aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek02NDAgMHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjUNCnQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTUzNiAwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTY2NCAxMDg4di01MTJxMCAtMjQgLTE2IC00Mi41dC00MSAtMjEuNWwtMTA0NCAtMTIycTEgLTcgNC41IC0yMS41dDYgLTI2LjV0Mi41IC0yMnEwIC0xNiAtMjQgLTY0aDkyMA0KcTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTEwMjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXEwIDE0IDExIDM5LjV0MjkuNSA1OS41dDIwLjUgMzhsLTE3NyA4MjNoLTIwNHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDI1NnExNiAwIDI4LjUgLTYuNXQyMCAtMTUuNXQxMyAtMjQuNXQ3LjUgLTI2LjV0NS41IC0yOS41dDQuNSAtMjUuNWgxMjAxcTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDMiIHVuaWNvZGU9IiYjeGYyMTg7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTI4MCA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTlsLTE0NyAtMTQ2djI5M3EwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1di0yOTNsLTE0NyAxNDZxLTE5IDE5IC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1bDI1NiAtMjU2cTE5IC0xOSA0NSAtMTl0NDUgMTlsMjU2IDI1NnExOSAxOSAxOSA0NXpNNjQwIDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41DQp0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE1MzYgMHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE2NjQgMTA4OHYtNTEycTAgLTI0IC0xNiAtNDIuNXQtNDEgLTIxLjVsLTEwNDQgLTEyMnExIC03IDQuNSAtMjEuNXQ2IC0yNi41dDIuNSAtMjJxMCAtMTYgLTI0IC02NGg5MjANCnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC0xMDI0cS0yNiAwIC00NSAxOXQtMTkgNDVxMCAxNCAxMSAzOS41dDI5LjUgNTkuNXQyMC41IDM4bC0xNzcgODIzaC0yMDRxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgyNTZxMTYgMCAyOC41IC02LjV0MjAgLTE1LjV0MTMgLTI0LjV0Ny41IC0yNi41dDUuNSAtMjkuNXQ0LjUgLTI1LjVoMTIwMXEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA0IiB1bmljb2RlPSImI3hmMjE5OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTIxMiA3NjhsNjIzIC02NjVsLTMwMCA2NjVoLTMyM3pNMTAyNCAtNGwzNDkgNzcyaC02OTh6TTUzOCA4OTZsMjA0IDM4NGgtMjYybC0yODggLTM4NGgzNDZ6TTEyMTMgMTAzbDYyMyA2NjVoLTMyM3pNNjgzIDg5Nmg2ODJsLTIwNCAzODRoLTI3NHpNMTUxMCA4OTZoMzQ2bC0yODggMzg0aC0yNjJ6TTE2NTEgMTM4MmwzODQgLTUxMnExNCAtMTggMTMgLTQxLjV0LTE3IC00MC41bC05NjAgLTEwMjRxLTE4IC0yMCAtNDcgLTIwdC00NyAyMA0KbC05NjAgMTAyNHEtMTYgMTcgLTE3IDQwLjV0MTMgNDEuNWwzODQgNTEycTE4IDI2IDUxIDI2aDExNTJxMzMgMCA1MSAtMjZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA1IiB1bmljb2RlPSImI3hmMjFhOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE4MTEgLTE5cTE5IDE5IDQ1IDE5dDQ1IC0xOWwxMjggLTEyOGwtOTAgLTkwbC04MyA4M2wtODMgLTgzcS0xOCAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04M3EtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04Mw0KcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtMTI4IDEyOGw5MCA5MGw4MyAtODNsODMgODNxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M2w4MyA4M3ExOSAxOSA0NSAxOXQ0NSAtMTlsODMgLTgzbDgzIDgzcTE5IDE5IDQ1IDE5dDQ1IC0xOWw4MyAtODNsODMgODNxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M2w4MyA4M3ExOSAxOSA0NSAxOXQ0NSAtMTlsODMgLTgzbDgzIDgzDQpxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M3pNMjM3IDE5cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTEyOCAxMjhsOTAgOTBsODMgLTgybDgzIDgycTE5IDE5IDQ1IDE5dDQ1IC0xOWw4MyAtODJsNjQgNjR2MjkzbC0yMTAgMzE0cS0xNyAyNiAtNyA1Ni41dDQwIDQwLjVsMTc3IDU4djI5OWgxMjh2MTI4aDI1NnYxMjhoMjU2di0xMjhoMjU2di0xMjhoMTI4di0yOTlsMTc3IC01OHEzMCAtMTAgNDAgLTQwLjV0LTcgLTU2LjVsLTIxMCAtMzE0DQp2LTI5M2wxOSAxOHExOSAxOSA0NSAxOXQ0NSAtMTlsODMgLTgybDgzIDgycTE5IDE5IDQ1IDE5dDQ1IC0xOWwxMjggLTEyOGwtOTAgLTkwbC04MyA4M2wtODMgLTgzcS0xOCAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04M3EtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODMNCnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzek02NDAgMTE1MnYtMTI4bDM4NCAxMjhsMzg0IC0xMjh2MTI4aC0xMjh2MTI4aC01MTJ2LTEyOGgtMTI4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUwNiIgdW5pY29kZT0iJiN4ZjIxYjsiIA0KZD0iTTU3NiAwbDk2IDQ0OGwtOTYgMTI4bC0xMjggNjR6TTgzMiAwbDEyOCA2NDBsLTEyOCAtNjRsLTk2IC0xMjh6TTk5MiAxMDEwcS0yIDQgLTQgNnEtMTAgOCAtOTYgOHEtNzAgMCAtMTY3IC0xOXEtNyAtMiAtMjEgLTJ0LTIxIDJxLTk3IDE5IC0xNjcgMTlxLTg2IDAgLTk2IC04cS0yIC0yIC00IC02cTIgLTE4IDQgLTI3cTIgLTMgNy41IC02LjV0Ny41IC0xMC41cTIgLTQgNy41IC0yMC41dDcgLTIwLjV0Ny41IC0xN3Q4LjUgLTE3dDkgLTE0DQp0MTIgLTEzLjV0MTQgLTkuNXQxNy41IC04dDIwLjUgLTR0MjQuNSAtMnEzNiAwIDU5IDEyLjV0MzIuNSAzMHQxNC41IDM0LjV0MTEuNSAyOS41dDE3LjUgMTIuNWgxMnExMSAwIDE3LjUgLTEyLjV0MTEuNSAtMjkuNXQxNC41IC0zNC41dDMyLjUgLTMwdDU5IC0xMi41cTEzIDAgMjQuNSAydDIwLjUgNHQxNy41IDh0MTQgOS41dDEyIDEzLjV0OSAxNHQ4LjUgMTd0Ny41IDE3dDcgMjAuNXQ3LjUgMjAuNXEyIDcgNy41IDEwLjV0Ny41IDYuNQ0KcTIgOSA0IDI3ek0xNDA4IDEzMXEwIC0xMjEgLTczIC0xOTB0LTE5NCAtNjloLTg3NHEtMTIxIDAgLTE5NCA2OXQtNzMgMTkwcTAgNjEgNC41IDExOHQxOSAxMjUuNXQzNy41IDEyMy41dDYzLjUgMTAzLjV0OTMuNSA3NC41bC05MCAyMjBoMjE0cS0yMiA2NCAtMjIgMTI4cTAgMTIgMiAzMnEtMTk0IDQwIC0xOTQgOTZxMCA1NyAyMTAgOTlxMTcgNjIgNTEuNSAxMzR0NzAuNSAxMTRxMzIgMzcgNzYgMzdxMzAgMCA4NCAtMzF0ODQgLTMxdDg0IDMxDQp0ODQgMzFxNDQgMCA3NiAtMzdxMzYgLTQyIDcwLjUgLTExNHQ1MS41IC0xMzRxMjEwIC00MiAyMTAgLTk5cTAgLTU2IC0xOTQgLTk2cTcgLTgxIC0yMCAtMTYwaDIxNGwtODIgLTIyNXE2MyAtMzMgMTA3LjUgLTk2LjV0NjUuNSAtMTQzLjV0MjkgLTE1MS41dDggLTE0OC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUwNyIgdW5pY29kZT0iJiN4ZjIxYzsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0yMzAxIDUwMHExMiAtMTAzIC0yMiAtMTk4LjV0LTk5IC0xNjMuNXQtMTU4LjUgLTEwNnQtMTk2LjUgLTMxcS0xNjEgMTEgLTI3OS41IDEyNXQtMTM0LjUgMjc0cS0xMiAxMTEgMjcuNSAyMTAuNXQxMTguNSAxNzAuNWwtNzEgMTA3cS05NiAtODAgLTE1MSAtMTk0dC01NSAtMjQ0cTAgLTI3IC0xOC41IC00Ni41dC00NS41IC0xOS41aC0yNTZoLTY5cS0yMyAtMTY0IC0xNDkgLTI3NHQtMjk0IC0xMTBxLTE4NSAwIC0zMTYuNSAxMzEuNQ0KdC0xMzEuNSAzMTYuNXQxMzEuNSAzMTYuNXQzMTYuNSAxMzEuNXE3NiAwIDE1MiAtMjdsMjQgNDVxLTEyMyAxMTAgLTMwNCAxMTBoLTY0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMTI4cTc4IDAgMTQ1IC0xMy41dDExNi41IC0zOC41dDcxLjUgLTM5LjV0NTEgLTM2LjVoNTEyaDExNWwtODUgMTI4aC0yMjJxLTMwIDAgLTQ5IDIyLjV0LTE0IDUyLjVxNCAyMyAyMyAzOHQ0MyAxNWgyNTNxMzMgMCA1MyAtMjhsNzAgLTEwNQ0KbDExNCAxMTRxMTkgMTkgNDYgMTloMTAxcTI2IDAgNDUgLTE5dDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTc5bDExNSAtMTcycTEzMSA2MyAyNzUgMzZxMTQzIC0yNiAyNDQgLTEzNC41dDExOCAtMjUzLjV6TTQ0OCAxMjhxMTE1IDAgMjAzIDcyLjV0MTExIDE4My41aC0zMTRxLTM1IDAgLTU1IDMxcS0xOCAzMiAtMSA2M2wxNDcgMjc3cS00NyAxMyAtOTEgMTNxLTEzMiAwIC0yMjYgLTk0dC05NCAtMjI2dDk0IC0yMjYNCnQyMjYgLTk0ek0xODU2IDEyOHExMzIgMCAyMjYgOTR0OTQgMjI2dC05NCAyMjZ0LTIyNiA5NHEtNjAgMCAtMTIxIC0yNGwxNzQgLTI2MHExNSAtMjMgMTAgLTQ5dC0yNyAtNDBxLTE1IC0xMSAtMzYgLTExcS0zNSAwIC01MyAyOWwtMTc0IDI2MHEtOTMgLTk1IC05MyAtMjI1cTAgLTEzMiA5NCAtMjI2dDIyNiAtOTR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA4IiB1bmljb2RlPSImI3hmMjFkOyIgDQpkPSJNMTQwOCAwcTAgLTYzIC02MS41IC0xMTMuNXQtMTY0IC04MXQtMjI1IC00NnQtMjUzLjUgLTE1LjV0LTI1My41IDE1LjV0LTIyNSA0NnQtMTY0IDgxdC02MS41IDExMy41cTAgNDkgMzMgODguNXQ5MSA2Ni41dDExOCA0NC41dDEzMSAyOS41cTI2IDUgNDggLTEwLjV0MjYgLTQxLjVxNSAtMjYgLTEwLjUgLTQ4dC00MS41IC0yNnEtNTggLTEwIC0xMDYgLTIzLjV0LTc2LjUgLTI1LjV0LTQ4LjUgLTIzLjV0LTI3LjUgLTE5LjV0LTguNSAtMTINCnEzIC0xMSAyNyAtMjYuNXQ3MyAtMzN0MTE0IC0zMi41dDE2MC41IC0yNXQyMDEuNSAtMTB0MjAxLjUgMTB0MTYwLjUgMjV0MTE0IDMzdDczIDMzLjV0MjcgMjcuNXEtMSA0IC04LjUgMTF0LTI3LjUgMTl0LTQ4LjUgMjMuNXQtNzYuNSAyNXQtMTA2IDIzLjVxLTI2IDQgLTQxLjUgMjZ0LTEwLjUgNDhxNCAyNiAyNiA0MS41dDQ4IDEwLjVxNzEgLTEyIDEzMSAtMjkuNXQxMTggLTQ0LjV0OTEgLTY2LjV0MzMgLTg4LjV6TTEwMjQgODk2di0zODQNCnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTY0di0zODRxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0yNTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXYzODRoLTY0cS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNWgzODRxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6TTkyOCAxMjgwcTAgLTkzIC02NS41IC0xNTguNXQtMTU4LjUgLTY1LjV0LTE1OC41IDY1LjV0LTY1LjUgMTU4LjV0NjUuNSAxNTguNXQxNTguNSA2NS41DQp0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA5IiB1bmljb2RlPSImI3hmMjFlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyODAgNTEyaDMwNXEtNSAtNiAtMTAgLTEwLjV0LTkgLTcuNWwtMyAtNGwtNjIzIC02MDBxLTE4IC0xOCAtNDQgLTE4dC00NCAxOGwtNjI0IDYwMnEtNSAyIC0yMSAyMGgzNjlxMjIgMCAzOS41IDEzLjV0MjIuNSAzNC41bDcwIDI4MWwxOTAgLTY2N3E2IC0yMCAyMyAtMzN0MzkgLTEzcTIxIDAgMzggMTN0MjMgMzNsMTQ2IDQ4NWw1NiAtMTEycTE4IC0zNSA1NyAtMzV6TTE3OTIgOTQwcTAgLTE0NSAtMTAzIC0zMDBoLTM2OWwtMTExIDIyMQ0KcS04IDE3IC0yNS41IDI3dC0zNi41IDhxLTQ1IC01IC01NiAtNDZsLTEyOSAtNDMwbC0xOTYgNjg2cS02IDIwIC0yMy41IDMzdC0zOS41IDEzdC0zOSAtMTMuNXQtMjIgLTM0LjVsLTExNiAtNDY0aC00MjNxLTEwMyAxNTUgLTEwMyAzMDBxMCAyMjAgMTI3IDM0NHQzNTEgMTI0cTYyIDAgMTI2LjUgLTIxLjV0MTIwIC01OHQ5NS41IC02OC41dDc2IC02OHEzNiAzNiA3NiA2OHQ5NS41IDY4LjV0MTIwIDU4dDEyNi41IDIxLjVxMjI0IDAgMzUxIC0xMjQNCnQxMjcgLTM0NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InZlbnVzIiB1bmljb2RlPSImI3hmMjIxOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTExNTIgOTYwcTAgLTIyMSAtMTQ3LjUgLTM4NC41dC0zNjQuNSAtMTg3LjV2LTI2MGgyMjRxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMjI0di0yMjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMjI0djI2MHEtMTUwIDE2IC0yNzEuNSAxMDN0LTE4NiAyMjR0LTUyLjUgMjkyDQpxMTEgMTM0IDgwLjUgMjQ5dDE4MiAxODh0MjQ1LjUgODhxMTcwIDE5IDMxOSAtNTR0MjM2IC0yMTJ0ODcgLTMwNnpNMTI4IDk2MHEwIC0xODUgMTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MTEiIHVuaWNvZGU9IiYjeGYyMjI7IiANCmQ9Ik0xNDcyIDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1di00MTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjYybC0zODIgLTM4M3ExMjYgLTE1NiAxMjYgLTM1OXEwIC0xMTcgLTQ1LjUgLTIyMy41dC0xMjMgLTE4NHQtMTg0IC0xMjN0LTIyMy41IC00NS41dC0yMjMuNSA0NS41dC0xODQgMTIzdC0xMjMgMTg0dC00NS41IDIyMy41dDQ1LjUgMjIzLjV0MTIzIDE4NHQxODQgMTIzdDIyMy41IDQ1LjUNCnEyMDMgMCAzNTkgLTEyNmwzODIgMzgyaC0yNjFxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNDE2ek01NzYgMHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxMiIgdW5pY29kZT0iJiN4ZjIyMzsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik04MzAgMTIyMHExNDUgLTcyIDIzMy41IC0yMTAuNXQ4OC41IC0zMDUuNXEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di0xMzJoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTk2cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjk2aC05NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnYxMzJxLTIxNyAyNCAtMzY0LjUgMTg3LjUNCnQtMTQ3LjUgMzg0LjVxMCAxNjcgODguNSAzMDUuNXQyMzMuNSAyMTAuNXEtMTY1IDk2IC0yMjggMjczcS02IDE2IDMuNSAyOS41dDI2LjUgMTMuNWg2OXEyMSAwIDI5IC0yMHE0NCAtMTA2IDE0MCAtMTcxdDIxNCAtNjV0MjE0IDY1dDE0MCAxNzFxOCAyMCAzNyAyMGg2MXExNyAwIDI2LjUgLTEzLjV0My41IC0yOS41cS02MyAtMTc3IC0yMjggLTI3M3pNNTc2IDI1NnExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjUNCnQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTEzIiB1bmljb2RlPSImI3hmMjI0OyIgDQpkPSJNMTAyNCAxNTA0cTAgMTQgOSAyM3QyMyA5aDI4OHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI4OHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMzRsLTI1NCAtMjU1cTEyNiAtMTU4IDEyNiAtMzU5cTAgLTIyMSAtMTQ3LjUgLTM4NC41dC0zNjQuNSAtMTg3LjV2LTEzMmg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjQNCnEtMTQgMCAtMjMgOXQtOSAyM3Y5NmgtOTZxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloOTZ2MTMycS0xNDkgMTYgLTI3MC41IDEwM3QtMTg2LjUgMjIzLjV0LTUzIDI5MS41cTE2IDIwNCAxNjAgMzUzLjV0MzQ3IDE3Mi41cTExOCAxNCAyMjggLTE5dDE5OCAtMTAzbDI1NSAyNTRoLTEzNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHpNNTc2IDI1NnExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjUNCnQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE0IiB1bmljb2RlPSImI3hmMjI1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyODAgMTUwNHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXExMjYgLTE1OCAxMjYgLTM1OXEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di0xMzJoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTk2cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0DQpxLTE0IDAgLTIzIDl0LTkgMjN2OTZoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2djEzMnEtMjE3IDI0IC0zNjQuNSAxODcuNXQtMTQ3LjUgMzg0LjVxMCAyMDEgMTI2IDM1OWwtNTIgNTNsLTEwMSAtMTExcS05IC0xMCAtMjIgLTEwLjV0LTIzIDcuNWwtNDggNDRxLTEwIDggLTEwLjUgMjEuNXQ4LjUgMjMuNWwxMDUgMTE1bC0xMTEgMTEydi0xMzRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDkNCnQtOSAyM3YyODhxMCAyNiAxOSA0NXQ0NSAxOWgyODhxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTMzbDEwNiAtMTA3bDg2IDk0cTkgMTAgMjIgMTAuNXQyMyAtNy41bDQ4IC00NHExMCAtOCAxMC41IC0yMS41dC04LjUgLTIzLjVsLTkwIC05OWw1NyAtNTZxMTU4IDEyNiAzNTkgMTI2dDM1OSAtMTI2bDI1NSAyNTRoLTEzNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHpNODMyIDI1NnExODUgMCAzMTYuNSAxMzEuNQ0KdDEzMS41IDMxNi41dC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE1IiB1bmljb2RlPSImI3hmMjI2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTAgMTAwN3ExMiAtMTU1IC01Mi41IC0yOTJ0LTE4NiAtMjI0dC0yNzEuNSAtMTAzdi0yNjBoMjI0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTIyNHYtMjI0cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjIyNGgtNTEydi0yMjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzDQp0MjMgOWgyMjR2MjYwcS0xNTAgMTYgLTI3MS41IDEwM3QtMTg2IDIyNHQtNTIuNSAyOTJxMTcgMjA2IDE2NC41IDM1Ni41dDM1Mi41IDE2OS41cTIwNiAyMSAzNzcgLTk0cTE3MSAxMTUgMzc3IDk0cTIwNSAtMTkgMzUyLjUgLTE2OS41dDE2NC41IC0zNTYuNXpNODk2IDY0N3ExMjggMTMxIDEyOCAzMTN0LTEyOCAzMTNxLTEyOCAtMTMxIC0xMjggLTMxM3QxMjggLTMxM3pNNTc2IDUxMnExMTUgMCAyMTggNTdxLTE1NCAxNjUgLTE1NCAzOTENCnEwIDIyNCAxNTQgMzkxcS0xMDMgNTcgLTIxOCA1N3EtMTg1IDAgLTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6TTExNTIgMTI4djI2MHEtMTM3IDE1IC0yNTYgOTRxLTExOSAtNzkgLTI1NiAtOTR2LTI2MGg1MTJ6TTEyMTYgNTEycTE4NSAwIDMxNi41IDEzMS41dDEzMS41IDMxNi41dC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjVxLTExNSAwIC0yMTggLTU3cTE1NCAtMTY3IDE1NCAtMzkxDQpxMCAtMjI2IC0xNTQgLTM5MXExMDMgLTU3IDIxOCAtNTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE2IiB1bmljb2RlPSImI3hmMjI3OyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTE1MzYgMTEyMHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXE3NiAtOTUgMTA3LjUgLTIxNHQ5LjUgLTI0N3EtMzEgLTE4MiAtMTY2IC0zMTJ0LTMxOCAtMTU2cS0yMTAgLTI5IC0zODQuNSA4MHQtMjQxLjUgMzAwcS0xMTcgNiAtMjIxIDU3LjV0LTE3Ny41IDEzM3QtMTEzLjUgMTkyLjV0LTMyIDIzMA0KcTkgMTM1IDc4IDI1MnQxODIgMTkxLjV0MjQ4IDg5LjVxMTE4IDE0IDIyNy41IC0xOXQxOTguNSAtMTAzbDI1NSAyNTRoLTEzNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXE1OSAtNzQgOTMgLTE2OXExODIgLTkgMzI4IC0xMjRsMjU1IDI1NGgtMTM0cS0xNCAwIC0yMyA5DQp0LTkgMjN2NjR6TTEwMjQgNzA0cTAgMjAgLTQgNThxLTE2MiAtMjUgLTI3MSAtMTUwdC0xMDkgLTI5MnEwIC0yMCA0IC01OHExNjIgMjUgMjcxIDE1MHQxMDkgMjkyek0xMjggNzA0cTAgLTE2OCAxMTEgLTI5NHQyNzYgLTE0OXEtMyAyOSAtMyA1OXEwIDIxMCAxMzUgMzY5LjV0MzM4IDE5Ni41cS01MyAxMjAgLTE2My41IDE5M3QtMjQ1LjUgNzNxLTE4NSAwIC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXpNMTA4OCAtMTI4DQpxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjVxMCAxNjggLTExMSAyOTR0LTI3NiAxNDlxMyAtMjggMyAtNTlxMCAtMjEwIC0xMzUgLTM2OS41dC0zMzggLTE5Ni41cTUzIC0xMjAgMTYzLjUgLTE5M3QyNDUuNSAtNzN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE3IiB1bmljb2RlPSImI3hmMjI4OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE2NjQgMTUwNHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXE3NiAtOTUgMTA3LjUgLTIxNHQ5LjUgLTI0N3EtMzIgLTE4MCAtMTY0LjUgLTMxMHQtMzEzLjUgLTE1N3EtMjIzIC0zNCAtNDA5IDkwcS0xMTcgLTc4IC0yNTYgLTkzdi0xMzJoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzDQp0LTIzIC05aC05NnYtOTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2OTZoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2djEzMnEtMTU1IDE3IC0yNzkuNSAxMDkuNXQtMTg3IDIzNy41dC0zOS41IDMwN3EyNSAxODcgMTU5LjUgMzIyLjV0MzIwLjUgMTY0LjVxMjI0IDM0IDQxMCAtOTBxMTQ2IDk3IDMyMCA5N3EyMDEgMCAzNTkgLTEyNmwyNTUgMjU0aC0xMzRxLTE0IDAgLTIzIDkNCnQtOSAyM3Y2NHpNODk2IDM5MXExMjggMTMxIDEyOCAzMTN0LTEyOCAzMTNxLTEyOCAtMTMxIC0xMjggLTMxM3QxMjggLTMxM3pNMTI4IDcwNHEwIC0xODUgMTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXExMTcgMCAyMTggNTdxLTE1NCAxNjcgLTE1NCAzOTF0MTU0IDM5MXEtMTAxIDU3IC0yMTggNTdxLTE4NSAwIC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXpNMTIxNiAyNTZxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjUNCnQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41cS0xMTcgMCAtMjE4IC01N3ExNTQgLTE2NyAxNTQgLTM5MXQtMTU0IC0zOTFxMTAxIC01NyAyMTggLTU3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxOCIgdW5pY29kZT0iJiN4ZjIyOTsiIA0KZD0iTTE0NzIgMTQwOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTQxNnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YyNjJsLTIxMyAtMjE0bDE0MCAtMTQwcTkgLTEwIDkgLTIzdC05IC0yMmwtNDYgLTQ2cS05IC05IC0yMiAtOXQtMjMgOWwtMTQwIDE0MWwtNzggLTc5cTEyNiAtMTU2IDEyNiAtMzU5cTAgLTExNyAtNDUuNSAtMjIzLjV0LTEyMyAtMTg0dC0xODQgLTEyM3QtMjIzLjUgLTQ1LjV0LTIyMy41IDQ1LjUNCnQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjMuNXQ0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyM3QyMjMuNSA0NS41cTIwMyAwIDM1OSAtMTI2bDc4IDc4bC0xNzIgMTcycS05IDEwIC05IDIzdDkgMjJsNDYgNDZxOSA5IDIyIDl0MjMgLTlsMTcyIC0xNzJsMjEzIDIxM2gtMjYxcS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDQxNnpNNTc2IDBxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41DQp0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxOSIgdW5pY29kZT0iJiN4ZjIyYTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik02NDAgODkycTIxNyAtMjQgMzY0LjUgLTE4Ny41dDE0Ny41IC0zODQuNXEwIC0xNjcgLTg3IC0zMDZ0LTIzNiAtMjEydC0zMTkgLTU0cS0xMzMgMTUgLTI0NS41IDg4dC0xODIgMTg4dC04MC41IDI0OXEtMTIgMTU1IDUyLjUgMjkydDE4NiAyMjR0MjcxLjUgMTAzdjEzMmgtMTYwcS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE2MHYxNjVsLTkyIC05MnEtMTAgLTkgLTIzIC05dC0yMiA5bC00NiA0NnEtOSA5IC05IDIyDQp0OSAyM2wyMDIgMjAxcTE5IDE5IDQ1IDE5dDQ1IC0xOWwyMDIgLTIwMXE5IC0xMCA5IC0yM3QtOSAtMjJsLTQ2IC00NnEtOSAtOSAtMjIgLTl0LTIzIDlsLTkyIDkydi0xNjVoMTYwcTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTE2MHYtMTMyek01NzYgLTEyOHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNQ0KdDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTIwIiB1bmljb2RlPSImI3hmMjJiOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE5MDEgNjIxcTE5IC0xOSAxOSAtNDV0LTE5IC00NWwtMjk0IC0yOTRxLTkgLTEwIC0yMi41IC0xMHQtMjIuNSAxMGwtNDUgNDVxLTEwIDkgLTEwIDIyLjV0MTAgMjIuNWwxODUgMTg1aC0yOTR2LTIyNHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YyMjRoLTEzMnEtMjQgLTIxNyAtMTg3LjUgLTM2NC41dC0zODQuNSAtMTQ3LjVxLTE2NyAwIC0zMDYgODd0LTIxMiAyMzZ0LTU0IDMxOXExNSAxMzMgODggMjQ1LjUNCnQxODggMTgydDI0OSA4MC41cTE1NSAxMiAyOTIgLTUyLjV0MjI0IC0xODZ0MTAzIC0yNzEuNWgxMzJ2MjI0cTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN2LTIyNGgyOTRsLTE4NSAxODVxLTEwIDkgLTEwIDIyLjV0MTAgMjIuNWw0NSA0NXE5IDEwIDIyLjUgMTB0MjIuNSAtMTB6TTU3NiAxMjhxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41DQp0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyMSIgdW5pY29kZT0iJiN4ZjIyYzsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMTUyIDk2MHEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di02MTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2NjEycS0yMTcgMjQgLTM2NC41IDE4Ny41dC0xNDcuNSAzODQuNXEwIDExNyA0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyM3QyMjMuNSA0NS41dDIyMy41IC00NS41dDE4NCAtMTIzdDEyMyAtMTg0dDQ1LjUgLTIyMy41ek01NzYgNTEycTE4NSAwIDMxNi41IDEzMS41DQp0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjIiIHVuaWNvZGU9IiYjeGYyMmQ7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMTAyNCA1NzZxMCAxODUgLTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXpNMTE1MiA1NzZxMCAtMTE3IC00NS41IC0yMjMuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjMuNSAtNDUuNXQtMjIzLjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjMuNXQ0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyMw0KdDIyMy41IDQ1LjV0MjIzLjUgLTQ1LjV0MTg0IC0xMjN0MTIzIC0xODR0NDUuNSAtMjIzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTIzIiB1bmljb2RlPSImI3hmMjJlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjQiIHVuaWNvZGU9IiYjeGYyMmY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyNSIgdW5pY29kZT0iJiN4ZjIzMDsiIA0KZD0iTTE0NTEgMTQwOHEzNSAwIDYwIC0yNXQyNSAtNjB2LTEzNjZxMCAtMzUgLTI1IC02MHQtNjAgLTI1aC0zOTF2NTk1aDE5OWwzMCAyMzJoLTIyOXYxNDhxMCA1NiAyMy41IDg0dDkxLjUgMjhsMTIyIDF2MjA3cS02MyA5IC0xNzggOXEtMTM2IDAgLTIxNy41IC04MHQtODEuNSAtMjI2di0xNzFoLTIwMHYtMjMyaDIwMHYtNTk1aC03MzVxLTM1IDAgLTYwIDI1dC0yNSA2MHYxMzY2cTAgMzUgMjUgNjB0NjAgMjVoMTM2NnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjYiIHVuaWNvZGU9IiYjeGYyMzE7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMCA5MzlxMCAxMDggMzcuNSAyMDMuNXQxMDMuNSAxNjYuNXQxNTIgMTIzdDE4NSA3OHQyMDIgMjZxMTU4IDAgMjk0IC02Ni41dDIyMSAtMTkzLjV0ODUgLTI4N3EwIC05NiAtMTkgLTE4OHQtNjAgLTE3N3QtMTAwIC0xNDkuNXQtMTQ1IC0xMDN0LTE4OSAtMzguNXEtNjggMCAtMTM1IDMydC05NiA4OHEtMTAgLTM5IC0yOCAtMTEyLjV0LTIzLjUgLTk1dC0yMC41IC03MXQtMjYgLTcxdC0zMiAtNjIuNXQtNDYgLTc3LjV0LTYyIC04Ni41DQpsLTE0IC01bC05IDEwcS0xNSAxNTcgLTE1IDE4OHEwIDkyIDIxLjUgMjA2LjV0NjYuNSAyODcuNXQ1MiAyMDNxLTMyIDY1IC0zMiAxNjlxMCA4MyA1MiAxNTZ0MTMyIDczcTYxIDAgOTUgLTQwLjV0MzQgLTEwMi41cTAgLTY2IC00NCAtMTkxdC00NCAtMTg3cTAgLTYzIDQ1IC0xMDQuNXQxMDkgLTQxLjVxNTUgMCAxMDIgMjV0NzguNSA2OHQ1NiA5NXQzOCAxMTAuNXQyMCAxMTF0Ni41IDk5LjVxMCAxNzMgLTEwOS41IDI2OS41dC0yODUuNSA5Ni41DQpxLTIwMCAwIC0zMzQgLTEyOS41dC0xMzQgLTMyOC41cTAgLTQ0IDEyLjUgLTg1dDI3IC02NXQyNyAtNDUuNXQxMi41IC0zMC41cTAgLTI4IC0xNSAtNzN0LTM3IC00NXEtMiAwIC0xNyAzcS01MSAxNSAtOTAuNSA1NnQtNjEgOTQuNXQtMzIuNSAxMDh0LTExIDEwNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyNyIgdW5pY29kZT0iJiN4ZjIzMjsiIA0KZD0iTTk4NSA1NjJxMTMgMCA5Ny41IC00NHQ4OS41IC01M3EyIC01IDIgLTE1cTAgLTMzIC0xNyAtNzZxLTE2IC0zOSAtNzEgLTY1LjV0LTEwMiAtMjYuNXEtNTcgMCAtMTkwIDYycS05OCA0NSAtMTcwIDExOHQtMTQ4IDE4NXEtNzIgMTA3IC03MSAxOTR2OHEzIDkxIDc0IDE1OHEyNCAyMiA1MiAyMnE2IDAgMTggLTEuNXQxOSAtMS41cTE5IDAgMjYuNSAtNi41dDE1LjUgLTI3LjVxOCAtMjAgMzMgLTg4dDI1IC03NXEwIC0yMSAtMzQuNSAtNTcuNQ0KdC0zNC41IC00Ni41cTAgLTcgNSAtMTVxMzQgLTczIDEwMiAtMTM3cTU2IC01MyAxNTEgLTEwMXExMiAtNyAyMiAtN3ExNSAwIDU0IDQ4LjV0NTIgNDguNXpNNzgyIDMycTEyNyAwIDI0My41IDUwdDIwMC41IDEzNHQxMzQgMjAwLjV0NTAgMjQzLjV0LTUwIDI0My41dC0xMzQgMjAwLjV0LTIwMC41IDEzNHQtMjQzLjUgNTB0LTI0My41IC01MHQtMjAwLjUgLTEzNHQtMTM0IC0yMDAuNXQtNTAgLTI0My41cTAgLTIwMyAxMjAgLTM2OGwtNzkgLTIzMw0KbDI0MiA3N3ExNTggLTEwNCAzNDUgLTEwNHpNNzgyIDE0MTRxMTUzIDAgMjkyLjUgLTYwdDI0MC41IC0xNjF0MTYxIC0yNDAuNXQ2MCAtMjkyLjV0LTYwIC0yOTIuNXQtMTYxIC0yNDAuNXQtMjQwLjUgLTE2MXQtMjkyLjUgLTYwcS0xOTUgMCAtMzY1IDk0bC00MTcgLTEzNGwxMzYgNDA1cS0xMDggMTc4IC0xMDggMzg5cTAgMTUzIDYwIDI5Mi41dDE2MSAyNDAuNXQyNDAuNSAxNjF0MjkyLjUgNjB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTI4IiB1bmljb2RlPSImI3hmMjMzOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyOCAxMjhoMTAyNHYxMjhoLTEwMjR2LTEyOHpNMTI4IDY0MGgxMDI0djEyOGgtMTAyNHYtMTI4ek0xNjk2IDE5MnEwIDQwIC0yOCA2OHQtNjggMjh0LTY4IC0yOHQtMjggLTY4dDI4IC02OHQ2OCAtMjh0NjggMjh0MjggNjh6TTEyOCAxMTUyaDEwMjR2MTI4aC0xMDI0di0xMjh6TTE2OTYgNzA0cTAgNDAgLTI4IDY4dC02OCAyOHQtNjggLTI4dC0yOCAtNjh0MjggLTY4dDY4IC0yOHQ2OCAyOHQyOCA2OHpNMTY5NiAxMjE2DQpxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek0xNzkyIDM4NHYtMzg0aC0xNzkydjM4NGgxNzkyek0xNzkyIDg5NnYtMzg0aC0xNzkydjM4NGgxNzkyek0xNzkyIDE0MDh2LTM4NGgtMTc5MnYzODRoMTc5MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjkiIHVuaWNvZGU9IiYjeGYyMzQ7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNNzA0IDY0MHEtMTU5IDAgLTI3MS41IDExMi41dC0xMTIuNSAyNzEuNXQxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNXQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41dC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXpNMTY2NCA1MTJoMzUycTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMzUydi0zNTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xOTJxLTEzIDAgLTIyLjUgOS41DQp0LTkuNSAyMi41djM1MmgtMzUycS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzUydjM1MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTM1MnpNOTI4IDI4OHEwIC01MiAzOCAtOTB0OTAgLTM4aDI1NnYtMjM4cS02OCAtNTAgLTE3MSAtNTBoLTg3NHEtMTIxIDAgLTE5NCA2OXQtNzMgMTkwcTAgNTMgMy41IDEwMy41dDE0IDEwOXQyNi41IDEwOC41DQp0NDMgOTcuNXQ2MiA4MXQ4NS41IDUzLjV0MTExLjUgMjBxMTkgMCAzOSAtMTdxNzkgLTYxIDE1NC41IC05MS41dDE2NC41IC0zMC41dDE2NC41IDMwLjV0MTU0LjUgOTEuNXEyMCAxNyAzOSAxN3ExMzIgMCAyMTcgLTk2aC0yMjNxLTUyIDAgLTkwIC0zOHQtMzggLTkwdi0xOTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTMwIiB1bmljb2RlPSImI3hmMjM1OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTcwNCA2NDBxLTE1OSAwIC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41dDExMi41IC0yNzEuNXQtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjV6TTE3ODEgMzIwbDI0OSAtMjQ5cTkgLTkgOSAtMjNxMCAtMTMgLTkgLTIybC0xMzYgLTEzNnEtOSAtOSAtMjIgLTlxLTE0IDAgLTIzIDlsLTI0OSAyNDlsLTI0OSAtMjQ5cS05IC05IC0yMyAtOXEtMTMgMCAtMjIgOWwtMTM2IDEzNg0KcS05IDkgLTkgMjJxMCAxNCA5IDIzbDI0OSAyNDlsLTI0OSAyNDlxLTkgOSAtOSAyM3EwIDEzIDkgMjJsMTM2IDEzNnE5IDkgMjIgOXExNCAwIDIzIC05bDI0OSAtMjQ5bDI0OSAyNDlxOSA5IDIzIDlxMTMgMCAyMiAtOWwxMzYgLTEzNnE5IC05IDkgLTIycTAgLTE0IC05IC0yM3pNMTI4MyAzMjBsLTE4MSAtMTgxcS0zNyAtMzcgLTM3IC05MXEwIC01MyAzNyAtOTBsODMgLTgzcS0yMSAtMyAtNDQgLTNoLTg3NHEtMTIxIDAgLTE5NCA2OQ0KdC03MyAxOTBxMCA1MyAzLjUgMTAzLjV0MTQgMTA5dDI2LjUgMTA4LjV0NDMgOTcuNXQ2MiA4MXQ4NS41IDUzLjV0MTExLjUgMjBxMTkgMCAzOSAtMTdxMTU0IC0xMjIgMzE5IC0xMjJ0MzE5IDEyMnEyMCAxNyAzOSAxN3EyOCAwIDU3IC02cS0yOCAtMjcgLTQxIC01MHQtMTMgLTU2cTAgLTU0IDM3IC05MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzEiIHVuaWNvZGU9IiYjeGYyMzY7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMjU2IDUxMmgxNzI4cTI2IDAgNDUgLTE5dDE5IC00NXYtNDQ4aC0yNTZ2MjU2aC0xNTM2di0yNTZoLTI1NnYxMjE2cTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtNzA0ek04MzIgODMycTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMjA0OCA1NzZ2NjRxMCAxNTkgLTExMi41IDI3MS41dC0yNzEuNSAxMTIuNWgtNzA0DQpxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0zODRoMTE1MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzIiIHVuaWNvZGU9IiYjeGYyMzc7IiANCmQ9Ik0xNTM2IDE1MzZsLTE5MiAtNDQ4aDE5MnYtMTkyaC0yNzRsLTU1IC0xMjhoMzI5di0xOTJoLTQxMWwtMzU3IC04MzJsLTM1NyA4MzJoLTQxMXYxOTJoMzI5bC01NSAxMjhoLTI3NHYxOTJoMTkybC0xOTIgNDQ4aDI1NmwzMjMgLTc2OGgzNzhsMzIzIDc2OGgyNTZ6TTc2OCAzMjBsMTA4IDI1NmgtMjE2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzMyIgdW5pY29kZT0iJiN4ZjIzODsiIA0KZD0iTTEwODggMTUzNnExODUgMCAzMTYuNSAtOTMuNXQxMzEuNSAtMjI2LjV2LTg5NnEwIC0xMzAgLTEyNS41IC0yMjJ0LTMwNS41IC05N2wyMTMgLTIwMnExNiAtMTUgOCAtMzV0LTMwIC0yMGgtMTA1NnEtMjIgMCAtMzAgMjB0OCAzNWwyMTMgMjAycS0xODAgNSAtMzA1LjUgOTd0LTEyNS41IDIyMnY4OTZxMCAxMzMgMTMxLjUgMjI2LjV0MzE2LjUgOTMuNWg2NDB6TTc2OCAxOTJxODAgMCAxMzYgNTZ0NTYgMTM2dC01NiAxMzZ0LTEzNiA1Ng0KdC0xMzYgLTU2dC01NiAtMTM2dDU2IC0xMzZ0MTM2IC01NnpNMTM0NCA3Njh2NTEyaC0xMTUydi01MTJoMTE1MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzQiIHVuaWNvZGU9IiYjeGYyMzk7IiANCmQ9Ik0xMDg4IDE1MzZxMTg1IDAgMzE2LjUgLTkzLjV0MTMxLjUgLTIyNi41di04OTZxMCAtMTMwIC0xMjUuNSAtMjIydC0zMDUuNSAtOTdsMjEzIC0yMDJxMTYgLTE1IDggLTM1dC0zMCAtMjBoLTEwNTZxLTIyIDAgLTMwIDIwdDggMzVsMjEzIDIwMnEtMTgwIDUgLTMwNS41IDk3dC0xMjUuNSAyMjJ2ODk2cTAgMTMzIDEzMS41IDIyNi41dDMxNi41IDkzLjVoNjQwek0yODggMjI0cTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDcNCnQtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd6TTcwNCA3Njh2NTEyaC01NDR2LTUxMmg1NDR6TTEyNDggMjI0cTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3ek0xNDA4IDc2OHY1MTJoLTU3NnYtNTEyaDU3NnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzUiIHVuaWNvZGU9IiYjeGYyM2E7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNTk3IDExMTV2LTExNzNxMCAtMjUgLTEyLjUgLTQyLjV0LTM2LjUgLTE3LjVxLTE3IDAgLTMzIDhsLTQ2NSAyMzNxLTIxIDEwIC0zNS41IDMzLjV0LTE0LjUgNDYuNXYxMTQwcTAgMjAgMTAgMzR0MjkgMTRxMTQgMCA0NCAtMTVsNTExIC0yNTZxMyAtMyAzIC01ek02NjEgMTAxNGw1MzQgLTg2NmwtNTM0IDI2NnY2MDB6TTE3OTIgOTk2di0xMDU0cTAgLTI1IC0xNCAtNDAuNXQtMzggLTE1LjV0LTQ3IDEzbC00NDEgMjIwek0xNzg5IDExMTYNCnEwIC0zIC0yNTYuNSAtNDE5LjV0LTMwMC41IC00ODcuNWwtMzkwIDYzNGwzMjQgNTI3cTE3IDI4IDUyIDI4cTE0IDAgMjYgLTZsNTQxIC0yNzBxNCAtMiA0IC02eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzNiIgdW5pY29kZT0iJiN4ZjIzYjsiIA0KZD0iTTgwOSA1MzJsMjY2IDQ5OWgtMTEybC0xNTcgLTMxMnEtMjQgLTQ4IC00NCAtOTJsLTQyIDkybC0xNTUgMzEyaC0xMjBsMjYzIC00OTN2LTMyNGgxMDF2MzE4ek0xNTM2IDE0MDh2LTE1MzZoLTE1MzZ2MTUzNmgxNTM2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzNyIgdW5pY29kZT0iJiN4ZjIzYzsiIGhvcml6LWFkdi14PSIyMjk2IiANCmQ9Ik00NzggLTEzOXEtOCAtMTYgLTI3IC0zNC41dC0zNyAtMjUuNXEtMjUgLTkgLTUxLjUgMy41dC0yOC41IDMxLjVxLTEgMjIgNDAgNTV0NjggMzhxMjMgNCAzNCAtMjEuNXQyIC00Ni41ek0xODE5IC0xMzlxNyAtMTYgMjYgLTM0LjV0MzggLTI1LjVxMjUgLTkgNTEuNSAzLjV0MjcuNSAzMS41cTIgMjIgLTM5LjUgNTV0LTY4LjUgMzhxLTIyIDQgLTMzIC0yMS41dC0yIC00Ni41ek0xODY3IC0zMHExMyAtMjcgNTYuNSAtNTkuNXQ3Ny41IC00MS41DQpxNDUgLTEzIDgyIDQuNXQzNyA1MC41cTAgNDYgLTY3LjUgMTAwLjV0LTExNS41IDU5LjVxLTQwIDUgLTYzLjUgLTM3LjV0LTYuNSAtNzYuNXpNNDI4IC0zMHEtMTMgLTI3IC01NiAtNTkuNXQtNzcgLTQxLjVxLTQ1IC0xMyAtODIgNC41dC0zNyA1MC41cTAgNDYgNjcuNSAxMDAuNXQxMTUuNSA1OS41cTQwIDUgNjMgLTM3LjV0NiAtNzYuNXpNMTE1OCAxMDk0aDFxLTQxIDAgLTc2IC0xNXEyNyAtOCA0NCAtMzAuNXQxNyAtNDkuNQ0KcTAgLTM1IC0yNyAtNjB0LTY1IC0yNXEtNTIgMCAtODAgNDNxLTUgLTIzIC01IC00MnEwIC03NCA1NiAtMTI2LjV0MTM1IC01Mi41cTgwIDAgMTM2IDUyLjV0NTYgMTI2LjV0LTU2IDEyNi41dC0xMzYgNTIuNXpNMTQ2MiAxMzEycS05OSAxMDkgLTIyMC41IDEzMS41dC0yNDUuNSAtNDQuNXEyNyA2MCA4Mi41IDk2LjV0MTE4IDM5LjV0MTIxLjUgLTE3dDk5LjUgLTc0LjV0NDQuNSAtMTMxLjV6TTIyMTIgNzNxOCAtMTEgLTExIC00Mg0KcTcgLTIzIDcgLTQwcTEgLTU2IC00NC41IC0xMTIuNXQtMTA5LjUgLTkxLjV0LTExOCAtMzdxLTQ4IC0yIC05MiAyMS41dC02NiA2NS41cS02ODcgLTI1IC0xMjU5IDBxLTIzIC00MSAtNjYuNSAtNjV0LTkyLjUgLTIycS04NiAzIC0xNzkuNSA4MC41dC05Mi41IDE2MC41cTIgMjIgNyA0MHEtMTkgMzEgLTExIDQycTYgMTAgMzEgMXExNCAyMiA0MSA1MXEtNyAyOSAyIDM4cTExIDEwIDM5IC00cTI5IDIwIDU5IDM0cTAgMjkgMTMgMzcNCnEyMyAxMiA1MSAtMTZxMzUgNSA2MSAtMnExOCAtNCAzOCAtMTl2NzNxLTExIDAgLTE4IDJxLTUzIDEwIC05NyA0NC41dC01NSA4Ny41cS05IDM4IDAgODFxMTUgNjIgOTMgOTVxMiAxNyAxOSAzNS41dDM2IDIzLjV0MzMgLTcuNXQxOSAtMzAuNWgxM3E0NiAtNSA2MCAtMjNxMyAtMyA1IC03cTEwIDEgMzAuNSAzLjV0MzAuNSAzLjVxLTE1IDExIC0zMCAxN3EtMjMgNDAgLTkxIDQzcTAgNiAxIDEwcS02MiAyIC0xMTguNSAxOC41dC04NC41IDQ3LjUNCnEtMzIgMzYgLTQyLjUgOTJ0LTIuNSAxMTJxMTYgMTI2IDkwIDE3OXEyMyAxNiA1MiA0LjV0MzIgLTQwLjVxMCAtMSAxLjUgLTE0dDIuNSAtMjF0MyAtMjB0NS41IC0xOXQ4LjUgLTEwcTI3IC0xNCA3NiAtMTJxNDggNDYgOTggNzRxLTQwIDQgLTE2MiAtMTRsNDcgNDZxNjEgNTggMTYzIDExMXExNDUgNzMgMjgyIDg2cS0yMCA4IC00MSAxNS41dC00NyAxNHQtNDIuNSAxMC41dC00Ny41IDExdC00MyAxMHE1OTUgMTI2IDkwNCAtMTM5DQpxOTggLTg0IDE1OCAtMjIycTg1IC0xMCAxMjEgOWgxcTUgMyA4LjUgMTB0NS41IDE5dDMgMTkuNXQzIDIxLjVsMSAxNHEzIDI4IDMyIDQwdDUyIC01cTczIC01MiA5MSAtMTc4cTcgLTU3IC0zLjUgLTExM3QtNDIuNSAtOTFxLTI4IC0zMiAtODMuNSAtNDguNXQtMTE1LjUgLTE4LjV2LTEwcS03MSAtMiAtOTUgLTQzcS0xNCAtNSAtMzEgLTE3cTExIC0xIDMyIC0zLjV0MzAgLTMuNXExIDUgNSA4cTE2IDE4IDYwIDIzaDEzcTUgMTggMTkgMzB0MzMgOA0KdDM2IC0yM3QxOSAtMzZxNzkgLTMyIDkzIC05NXE5IC00MCAxIC04MXEtMTIgLTUzIC01NiAtODh0LTk3IC00NHEtMTAgLTIgLTE3IC0ycTAgLTQ5IC0xIC03M3EyMCAxNSAzOCAxOXEyNiA3IDYxIDJxMjggMjggNTEgMTZxMTQgLTkgMTQgLTM3cTMzIC0xNiA1OSAtMzRxMjcgMTMgMzggNHExMCAtMTAgMiAtMzhxMjggLTMwIDQxIC01MXEyMyA4IDMxIC0xek0xOTM3IDEwMjVxMCAtMjkgLTkgLTU0cTgyIC0zMiAxMTIgLTEzMg0KcTQgMzcgLTkuNSA5OC41dC00MS41IDkwLjVxLTIwIDE5IC0zNiAxN3QtMTYgLTIwek0xODU5IDkyNXEzNSAtNDIgNDcuNSAtMTA4LjV0LTAuNSAtMTI0LjVxNjcgMTMgOTcgNDVxMTMgMTQgMTggMjhxLTMgNjQgLTMxIDExNC41dC03OSA2Ni41cS0xNSAtMTUgLTUyIC0yMXpNMTgyMiA5MjFxLTMwIDAgLTQ0IDFxNDIgLTExNSA1MyAtMjM5cTIxIDAgNDMgM3ExNiA2OCAxIDEzNXQtNTMgMTAwek0yNTggODM5cTMwIDEwMCAxMTIgMTMyDQpxLTkgMjUgLTkgNTRxMCAxOCAtMTYuNSAyMHQtMzUuNSAtMTdxLTI4IC0yOSAtNDEuNSAtOTAuNXQtOS41IC05OC41ek0yOTQgNzM3cTI5IC0zMSA5NyAtNDVxLTEzIDU4IC0wLjUgMTI0LjV0NDcuNSAxMDguNXYwcS0zNyA2IC01MiAyMXEtNTEgLTE2IC03OC41IC02NnQtMzEuNSAtMTE1cTkgLTE3IDE4IC0yOHpNNDcxIDY4M3ExNCAxMjQgNzMgMjM1cS0xOSAtNCAtNTUgLTE4bC00NSAtMTl2MXEtNDYgLTg5IC0yMCAtMTk2cTI1IC0zIDQ3IC0zeg0KTTE0MzQgNjQ0cTggLTM4IDE2LjUgLTEwOC41dDExLjUgLTg5LjVxMyAtMTggOS41IC0yMS41dDIzLjUgNC41cTQwIDIwIDYyIDg1LjV0MjMgMTI1LjVxLTI0IDIgLTE0NiA0ek0xMTUyIDEyODVxLTExNiAwIC0xOTkgLTgyLjV0LTgzIC0xOTguNXEwIC0xMTcgODMgLTE5OS41dDE5OSAtODIuNXQxOTkgODIuNXQ4MyAxOTkuNXEwIDExNiAtODMgMTk4LjV0LTE5OSA4Mi41ek0xMzgwIDY0NnEtMTA1IDIgLTIxMSAwdjFxLTEgLTI3IDIuNSAtODYNCnQxMy41IC02NnEyOSAtMTQgOTMuNSAtMTQuNXQ5NS41IDEwLjVxOSAzIDExIDM5dC0wLjUgNjkuNXQtNC41IDQ2LjV6TTExMTIgNDQ3cTggNCA5LjUgNDh0LTAuNSA4OHQtNCA2M3YxcS0yMTIgLTMgLTIxNCAtM3EtNCAtMjAgLTcgLTYydDAgLTgzdDE0IC00NnEzNCAtMTUgMTAxIC0xNnQxMDEgMTB6TTcxOCA2MzZxLTE2IC01OSA0LjUgLTExOC41dDc3LjUgLTg0LjVxMTUgLTggMjQgLTV0MTIgMjFxMyAxNiA4IDkwdDEwIDEwMw0KcS02OSAtMiAtMTM2IC02ek01OTEgNTEwcTMgLTIzIC0zNCAtMzZxMTMyIC0xNDEgMjcxLjUgLTI0MHQzMDUuNSAtMTU0cTE3MiA0OSAzMTAuNSAxNDZ0MjkzLjUgMjUwcS0zMyAxMyAtMzAgMzRxMCAyIDAuNSAzLjV0MS41IDN0MSAyLjV2MXYtMXEtMTcgMiAtNTAgNS41dC00OCA0LjVxLTI2IC05MCAtODIgLTEzMnEtNTEgLTM4IC04MiAxcS01IDYgLTkgMTRxLTcgMTMgLTE3IDYycS0yIC01IC01IC05dC03LjUgLTd0LTggLTUuNXQtOS41IC00DQpsLTEwIC0yLjV0LTEyIC0ybC0xMiAtMS41dC0xMy41IC0xdC0xMy41IC0wLjVxLTEwNiAtOSAtMTYzIDExcS00IC0xNyAtMTAgLTI2LjV0LTIxIC0xNXQtMjMgLTd0LTM2IC0zLjVxLTYgLTEgLTkgLTFxLTE3OSAtMTcgLTIwMyA0MHEtMiAtNjMgLTU2IC01NHEtNDcgOCAtOTEgNTRxLTEyIDEzIC0yMCAyNnEtMTcgMjkgLTI2IDY1cS01OCAtNiAtODcgLTEwcTEgLTIgNCAtMTB6TTUwNyAtMTE4cTMgMTQgMyAzMHEtMTcgNzEgLTUxIDEzMA0KdC03MyA3MHEtNDEgMTIgLTEwMS41IC0xNC41dC0xMDQuNSAtODB0LTM5IC0xMDcuNXEzNSAtNTMgMTAwIC05M3QxMTkgLTQycTUxIC0yIDk0IDI4dDUzIDc5ek01MTAgNTNxMjMgLTYzIDI3IC0xMTlxMTk1IDExMyAzOTIgMTc0cS05OCA1MiAtMTgwLjUgMTIwdC0xNzkuNSAxNjVxLTYgLTQgLTI5IC0xM3EwIC0xIC0xIC00dC0xIC01cTMxIC0xOCAyMiAtMzdxLTEyIC0yMyAtNTYgLTM0cS0xMCAtMTMgLTI5IC0yNGgtMXEtMiAtODMgMSAtMTUwDQpxMTkgLTM0IDM1IC03M3pNNTc5IC0xMTNxNTMyIC0yMSAxMTQ1IDBxLTI1NCAxNDcgLTQyOCAxOTZxLTc2IC0zNSAtMTU2IC01N3EtOCAtMyAtMTYgMHEtNjUgMjEgLTEyOSA0OXEtMjA4IC02MCAtNDE2IC0xODhoLTF2LTFxMSAwIDEgMXpNMTc2MyAtNjdxNCA1NCAyOCAxMjBxMTQgMzggMzMgNzFsLTEgLTFxMyA3NyAzIDE1M3EtMTUgOCAtMzAgMjVxLTQyIDkgLTU2IDMzcS05IDIwIDIyIDM4cS0yIDQgLTIgOXEtMTYgNCAtMjggMTINCnEtMjA0IC0xOTAgLTM4MyAtMjg0cTE5OCAtNTkgNDE0IC0xNzZ6TTIxNTUgLTkwcTUgNTQgLTM5IDEwNy41dC0xMDQgODB0LTEwMiAxNC41cS0zOCAtMTEgLTcyLjUgLTcwLjV0LTUxLjUgLTEyOS41cTAgLTE2IDMgLTMwcTEwIC00OSA1MyAtNzl0OTQgLTI4cTU0IDIgMTE5IDQydDEwMCA5M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzgiIHVuaWNvZGU9IiYjeGYyM2Q7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTUyNCAtMjVxMCAtNjggLTQ4IC0xMTZ0LTExNiAtNDh0LTExNi41IDQ4dC00OC41IDExNnQ0OC41IDExNi41dDExNi41IDQ4LjV0MTE2IC00OC41dDQ4IC0xMTYuNXpNNzc1IC0yNXEwIC02OCAtNDguNSAtMTE2dC0xMTYuNSAtNDh0LTExNiA0OHQtNDggMTE2dDQ4IDExNi41dDExNiA0OC41dDExNi41IC00OC41dDQ4LjUgLTExNi41ek0wIDE0NjlxNTcgLTYwIDExMC41IC0xMDQuNXQxMjEgLTgydDEzNiAtNjN0MTY2IC00NS41DQp0MjAwIC0zMS41dDI1MCAtMTguNXQzMDQgLTkuNXQzNzIuNSAtMi41cTEzOSAwIDI0NC41IC01dDE4MSAtMTYuNXQxMjQgLTI3LjV0NzEgLTM5LjV0MjQgLTUxLjV0LTE5LjUgLTY0dC01Ni41IC03Ni41dC04OS41IC05MXQtMTE2IC0xMDQuNXQtMTM5IC0xMTlxLTE4NSAtMTU3IC0yODYgLTI0N3EyOSA1MSA3Ni41IDEwOXQ5NCAxMDUuNXQ5NC41IDk4LjV0ODMgOTEuNXQ1NCA4MC41dDEzIDcwdC00NS41IDU1LjV0LTExNi41IDQxdC0yMDQgMjMuNQ0KdC0zMDQgNXEtMTY4IC0yIC0zMTQgNnQtMjU2IDIzdC0yMDQuNSA0MXQtMTU5LjUgNTEuNXQtMTIyLjUgNjIuNXQtOTEuNSA2Ni41dC02OCA3MS41dC01MC41IDY5LjV0LTQwIDY4dC0zNi41IDU5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTM5IiB1bmljb2RlPSImI3hmMjNlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTg5NiAxNDcycS0xNjkgMCAtMzIzIC02NnQtMjY1LjUgLTE3Ny41dC0xNzcuNSAtMjY1LjV0LTY2IC0zMjN0NjYgLTMyM3QxNzcuNSAtMjY1LjV0MjY1LjUgLTE3Ny41dDMyMyAtNjZ0MzIzIDY2dDI2NS41IDE3Ny41dDE3Ny41IDI2NS41dDY2IDMyM3QtNjYgMzIzdC0xNzcuNSAyNjUuNXQtMjY1LjUgMTc3LjV0LTMyMyA2NnpNODk2IDE1MzZxMTgyIDAgMzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4dC03MSAtMzQ4DQp0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTQ5NiA3MDRxMTYgMCAxNiAtMTZ2LTQ4MHEwIC0xNiAtMTYgLTE2aC0zMnEtMTYgMCAtMTYgMTZ2NDgwcTAgMTYgMTYgMTZoMzJ6TTg5NiA2NDBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjVxMCAtMzUgLTE3LjUgLTY0dC00Ni41IC00NnYtMTE0cTAgLTE0IC05IC0yMw0KdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTE0cS0yOSAxNyAtNDYuNSA0NnQtMTcuNSA2NHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV6TTg5NiAxNDA4cTIwOSAwIDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV0LTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN6TTU0NCA5Mjh2LTk2DQpxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2OTZxMCA5MyA2NS41IDE1OC41dDE1OC41IDY1LjV0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV2LTk2cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzdjk2cTAgMTQ2IC0xMDMgMjQ5dC0yNDkgMTAzdC0yNDkgLTEwM3QtMTAzIC0yNDl6TTE0MDggMTkydjUxMnEwIDI2IC0xOSA0NXQtNDUgMTloLTg5NnEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTUxMg0KcTAgLTI2IDE5IC00NXQ0NSAtMTloODk2cTI2IDAgNDUgMTl0MTkgNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQwIiB1bmljb2RlPSImI3hmMjQwOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTE5MjAgMTAyNHYtNzY4aC0xNjY0djc2OGgxNjY0ek0yMDQ4IDQ0OGgxMjh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yM3YtOTYwcTAgLTE0IDkgLTIzdDIzIC05aDE4NTZxMTQgMCAyMyA5dDkgMjN2Mjg4ek0yMzA0IDgzMnYtMzg0cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41di0xNjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE4NTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzDQp2OTYwcTAgNjYgNDcgMTEzdDExMyA0N2gxODU2cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0xNjBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQxIiB1bmljb2RlPSImI3hmMjQxOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTI1NiAyNTZ2NzY4aDEyODB2LTc2OGgtMTI4MHpNMjE3NiA5NjBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV2LTM4NHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXYtMTYwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xODU2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDE4NTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTE2MHpNMjE3NiA0NDh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDkNCmgtMTg1NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi05NjBxMCAtMTQgOSAtMjN0MjMgLTloMTg1NnExNCAwIDIzIDl0OSAyM3YyODhoMTI4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0MiIgdW5pY29kZT0iJiN4ZjI0MjsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0yNTYgMjU2djc2OGg4OTZ2LTc2OGgtODk2ek0yMTc2IDk2MHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXYtMzg0cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41di0xNjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE4NTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjk2MHEwIDY2IDQ3IDExM3QxMTMgNDdoMTg1NnE2NiAwIDExMyAtNDd0NDcgLTExM3YtMTYwek0yMTc2IDQ0OHYzODRoLTEyOHYyODhxMCAxNCAtOSAyM3QtMjMgOQ0KaC0xODU2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2MHEwIC0xNCA5IC0yM3QyMyAtOWgxODU2cTE0IDAgMjMgOXQ5IDIzdjI4OGgxMjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQzIiB1bmljb2RlPSImI3hmMjQzOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTI1NiAyNTZ2NzY4aDUxMnYtNzY4aC01MTJ6TTIxNzYgOTYwcTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41di0zODRxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV2LTE2MHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTg1NnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2OTYwcTAgNjYgNDcgMTEzdDExMyA0N2gxODU2cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0xNjB6TTIxNzYgNDQ4djM4NGgtMTI4djI4OHEwIDE0IC05IDIzdC0yMyA5DQpoLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yM3YtOTYwcTAgLTE0IDkgLTIzdDIzIC05aDE4NTZxMTQgMCAyMyA5dDkgMjN2Mjg4aDEyOHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NDQiIHVuaWNvZGU9IiYjeGYyNDQ7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMjE3NiA5NjBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV2LTM4NHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXYtMTYwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xODU2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDE4NTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTE2MHpNMjE3NiA0NDh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yMw0Kdi05NjBxMCAtMTQgOSAtMjN0MjMgLTloMTg1NnExNCAwIDIzIDl0OSAyM3YyODhoMTI4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0NSIgdW5pY29kZT0iJiN4ZjI0NTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMTMzIDQ5M3EzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtMzgybDIwMSAtNDc2cTEwIC0yNSAwIC00OXQtMzQgLTM1bC0xNzcgLTc1cS0yNSAtMTAgLTQ5IDB0LTM1IDM0bC0xOTEgNDUybC0zMTIgLTMxMnEtMTkgLTE5IC00NSAtMTlxLTEyIDAgLTI0IDVxLTQwIDE3IC00MCA1OXYxNTA0cTAgNDIgNDAgNTlxMTIgNSAyNCA1cTI3IDAgNDUgLTE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0NiIgdW5pY29kZT0iJiN4ZjI0NjsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik04MzIgMTQwOHEtMzIwIDAgLTMyMCAtMjI0di00MTZoMTI4di0xMjhoLTEyOHYtNTQ0cTAgLTIyNCAzMjAgLTIyNGg2NHYtMTI4aC02NHEtMjcyIDAgLTM4NCAxNDZxLTExMiAtMTQ2IC0zODQgLTE0NmgtNjR2MTI4aDY0cTMyMCAwIDMyMCAyMjR2NTQ0aC0xMjh2MTI4aDEyOHY0MTZxMCAyMjQgLTMyMCAyMjRoLTY0djEyOGg2NHEyNzIgMCAzODQgLTE0NnExMTIgMTQ2IDM4NCAxNDZoNjR2LTEyOGgtNjR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQ3IiB1bmljb2RlPSImI3hmMjQ3OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTIwNDggMTE1MmgtMTI4di0xMDI0aDEyOHYtMzg0aC0zODR2MTI4aC0xMjgwdi0xMjhoLTM4NHYzODRoMTI4djEwMjRoLTEyOHYzODRoMzg0di0xMjhoMTI4MHYxMjhoMzg0di0zODR6TTE3OTIgMTQwOHYtMTI4aDEyOHYxMjhoLTEyOHpNMTI4IDE0MDh2LTEyOGgxMjh2MTI4aC0xMjh6TTI1NiAtMTI4djEyOGgtMTI4di0xMjhoMTI4ek0xNjY0IDB2MTI4aDEyOHYxMDI0aC0xMjh2MTI4aC0xMjgwdi0xMjhoLTEyOHYtMTAyNGgxMjh2LTEyOA0KaDEyODB6TTE5MjAgLTEyOHYxMjhoLTEyOHYtMTI4aDEyOHpNMTI4MCA4OTZoMzg0di03NjhoLTg5NnYyNTZoLTM4NHY3NjhoODk2di0yNTZ6TTUxMiA1MTJoNjQwdjUxMmgtNjQwdi01MTJ6TTE1MzYgMjU2djUxMmgtMjU2di0zODRoLTM4NHYtMTI4aDY0MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NDgiIHVuaWNvZGU9IiYjeGYyNDg7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMjMwNCA3NjhoLTEyOHYtNjQwaDEyOHYtMzg0aC0zODR2MTI4aC04OTZ2LTEyOGgtMzg0djM4NGgxMjh2MTI4aC0zODR2LTEyOGgtMzg0djM4NGgxMjh2NjQwaC0xMjh2Mzg0aDM4NHYtMTI4aDg5NnYxMjhoMzg0di0zODRoLTEyOHYtMTI4aDM4NHYxMjhoMzg0di0zODR6TTIwNDggMTAyNHYtMTI4aDEyOHYxMjhoLTEyOHpNMTQwOCAxNDA4di0xMjhoMTI4djEyOGgtMTI4ek0xMjggMTQwOHYtMTI4aDEyOHYxMjhoLTEyOHpNMjU2IDI1Ng0KdjEyOGgtMTI4di0xMjhoMTI4ek0xNTM2IDM4NGgtMTI4di0xMjhoMTI4djEyOHpNMzg0IDM4NGg4OTZ2MTI4aDEyOHY2NDBoLTEyOHYxMjhoLTg5NnYtMTI4aC0xMjh2LTY0MGgxMjh2LTEyOHpNODk2IC0xMjh2MTI4aC0xMjh2LTEyOGgxMjh6TTIxNzYgLTEyOHYxMjhoLTEyOHYtMTI4aDEyOHpNMjA0OCAxMjh2NjQwaC0xMjh2MTI4aC0zODR2LTM4NGgxMjh2LTM4NGgtMzg0djEyOGgtMzg0di0xMjhoMTI4di0xMjhoODk2djEyOGgxMjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQ5IiB1bmljb2RlPSImI3hmMjQ5OyIgDQpkPSJNMTAyNCAyODh2LTQxNmgtOTI4cS00MCAwIC02OCAyOHQtMjggNjh2MTM0NHEwIDQwIDI4IDY4dDY4IDI4aDEzNDRxNDAgMCA2OCAtMjh0MjggLTY4di05MjhoLTQxNnEtNDAgMCAtNjggLTI4dC0yOCAtNjh6TTExNTIgMjU2aDM4MXEtMTUgLTgyIC02NSAtMTMybC0xODQgLTE4NHEtNTAgLTUwIC0xMzIgLTY1djM4MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTAiIHVuaWNvZGU9IiYjeGYyNGE7IiANCmQ9Ik0xNDAwIDI1NmgtMjQ4di0yNDhxMjkgMTAgNDEgMjJsMTg1IDE4NXExMiAxMiAyMiA0MXpNMTEyMCAzODRoMjg4djg5NmgtMTI4MHYtMTI4MGg4OTZ2Mjg4cTAgNDAgMjggNjh0NjggMjh6TTE1MzYgMTMxMnYtMTAyNHEwIC00MCAtMjAgLTg4dC00OCAtNzZsLTE4NCAtMTg0cS0yOCAtMjggLTc2IC00OHQtODggLTIwaC0xMDI0cS00MCAwIC02OCAyOHQtMjggNjh2MTM0NHEwIDQwIDI4IDY4dDY4IDI4aDEzNDRxNDAgMCA2OCAtMjh0MjggLTY4DQp6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTUxIiB1bmljb2RlPSImI3hmMjRiOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTE5NTEgNTM4cTAgLTI2IC0xNS41IC00NC41dC0zOC41IC0yMy41cS04IC0yIC0xOCAtMmgtMTUzdjE0MGgxNTNxMTAgMCAxOCAtMnEyMyAtNSAzOC41IC0yMy41dDE1LjUgLTQ0LjV6TTE5MzMgNzUxcTAgLTI1IC0xNSAtNDJ0LTM4IC0yMXEtMyAtMSAtMTUgLTFoLTEzOXYxMjloMTM5cTMgMCA4LjUgLTAuNXQ2LjUgLTAuNXEyMyAtNCAzOCAtMjEuNXQxNSAtNDIuNXpNNzI4IDU4N3YzMDhoLTIyOHYtMzA4cTAgLTU4IC0zOCAtOTQuNQ0KdC0xMDUgLTM2LjVxLTEwOCAwIC0yMjkgNTl2LTExMnE1MyAtMTUgMTIxIC0yM3QxMDkgLTlsNDIgLTFxMzI4IDAgMzI4IDIxN3pNMTQ0MiA0MDN2MTEzcS05OSAtNTIgLTIwMCAtNTlxLTEwOCAtOCAtMTY5IDQxdC02MSAxNDJ0NjEgMTQydDE2OSA0MXExMDEgLTcgMjAwIC01OHYxMTJxLTQ4IDEyIC0xMDAgMTkuNXQtODAgOS41bC0yOCAycS0xMjcgNiAtMjE4LjUgLTE0dC0xNDAuNSAtNjB0LTcxIC04OHQtMjIgLTEwNnQyMiAtMTA2dDcxIC04OA0KdDE0MC41IC02MHQyMTguNSAtMTRxMTAxIDQgMjA4IDMxek0yMTc2IDUxOHEwIDU0IC00MyA4OC41dC0xMDkgMzkuNXYzcTU3IDggODkgNDEuNXQzMiA3OS41cTAgNTUgLTQxIDg4dC0xMDcgMzZxLTMgMCAtMTIgMC41dC0xNCAwLjVoLTQ1NXYtNTEwaDQ5MXE3NCAwIDEyMS41IDM2LjV0NDcuNSA5Ni41ek0yMzA0IDEyODB2LTEyODBxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0yMDQ4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwDQp0OTAgMzhoMjA0OHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTUyIiB1bmljb2RlPSImI3hmMjRjOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTg1OCAyOTV2NjkzcS0xMDYgLTQxIC0xNzIgLTEzNS41dC02NiAtMjExLjV0NjYgLTIxMS41dDE3MiAtMTM0LjV6TTEzNjIgNjQxcTAgMTE3IC02NiAyMTEuNXQtMTcyIDEzNS41di02OTRxMTA2IDQxIDE3MiAxMzUuNXQ2NiAyMTEuNXpNMTU3NyA2NDFxMCAtMTU5IC03OC41IC0yOTR0LTIxMy41IC0yMTMuNXQtMjk0IC03OC41cS0xMTkgMCAtMjI3LjUgNDYuNXQtMTg3IDEyNXQtMTI1IDE4N3QtNDYuNSAyMjcuNXEwIDE1OSA3OC41IDI5NA0KdDIxMy41IDIxMy41dDI5NCA3OC41dDI5NCAtNzguNXQyMTMuNSAtMjEzLjV0NzguNSAtMjk0ek0xOTYwIDYzNHEwIDEzOSAtNTUuNSAyNjEuNXQtMTQ3LjUgMjA1LjV0LTIxMy41IDEzMXQtMjUyLjUgNDhoLTMwMXEtMTc2IDAgLTMyMy41IC04MXQtMjM1IC0yMzB0LTg3LjUgLTMzNXEwIC0xNzEgODcgLTMxNy41dDIzNiAtMjMxLjV0MzIzIC04NWgzMDFxMTI5IDAgMjUxLjUgNTAuNXQyMTQuNSAxMzV0MTQ3LjUgMjAyLjV0NTUuNSAyNDZ6DQpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgyMDQ4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTMiIHVuaWNvZGU9IiYjeGYyNGQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTY2NCAtOTZ2MTA4OHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTEwODhxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0xMDg4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTA4OHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNzkyIDk5MnYtMTA4OHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTA4OHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTA4OHE2NiAwIDExMyAtNDd0NDcgLTExMw0Kek0xNDA4IDEzNzZ2LTE2MGgtMTI4djE2MHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTEwODhxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0xMDg4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTYwdi0xMjhoLTE2MHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTA4OHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTQiIHVuaWNvZGU9IiYjeGYyNGU7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTcyOCAxMDg4bC0zODQgLTcwNGg3Njh6TTQ0OCAxMDg4bC0zODQgLTcwNGg3Njh6TTEyNjkgMTI4MHEtMTQgLTQwIC00NS41IC03MS41dC03MS41IC00NS41di0xMjkxaDYwOHExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xMzQ0cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDYwOHYxMjkxcS00MCAxNCAtNzEuNSA0NS41dC00NS41IDcxLjVoLTQ5MXEtMTQgMCAtMjMgOXQtOSAyM3Y2NA0KcTAgMTQgOSAyM3QyMyA5aDQ5MXEyMSA1NyA3MCA5Mi41dDExMSAzNS41dDExMSAtMzUuNXQ3MCAtOTIuNWg0OTFxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNDkxek0xMDg4IDEyNjRxMzMgMCA1Ni41IDIzLjV0MjMuNSA1Ni41dC0yMy41IDU2LjV0LTU2LjUgMjMuNXQtNTYuNSAtMjMuNXQtMjMuNSAtNTYuNXQyMy41IC01Ni41dDU2LjUgLTIzLjV6TTIxNzYgMzg0cTAgLTczIC00Ni41IC0xMzF0LTExNy41IC05MQ0KdC0xNDQuNSAtNDkuNXQtMTM5LjUgLTE2LjV0LTEzOS41IDE2LjV0LTE0NC41IDQ5LjV0LTExNy41IDkxdC00Ni41IDEzMXEwIDExIDM1IDgxdDkyIDE3NC41dDEwNyAxOTUuNXQxMDIgMTg0dDU2IDEwMHExOCAzMyA1NiAzM3Q1NiAtMzNxNCAtNyA1NiAtMTAwdDEwMiAtMTg0dDEwNyAtMTk1LjV0OTIgLTE3NC41dDM1IC04MXpNODk2IDM4NHEwIC03MyAtNDYuNSAtMTMxdC0xMTcuNSAtOTF0LTE0NC41IC00OS41dC0xMzkuNSAtMTYuNQ0KdC0xMzkuNSAxNi41dC0xNDQuNSA0OS41dC0xMTcuNSA5MXQtNDYuNSAxMzFxMCAxMSAzNSA4MXQ5MiAxNzQuNXQxMDcgMTk1LjV0MTAyIDE4NHQ1NiAxMDBxMTggMzMgNTYgMzN0NTYgLTMzcTQgLTcgNTYgLTEwMHQxMDIgLTE4NHQxMDcgLTE5NS41dDkyIC0xNzQuNXQzNSAtODF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTU1IiB1bmljb2RlPSImI3hmMjUwOyIgDQpkPSJNMTQwOCAxNDA4cTAgLTI2MSAtMTA2LjUgLTQ2MS41dC0yNjYuNSAtMzA2LjVxMTYwIC0xMDYgMjY2LjUgLTMwNi41dDEwNi41IC00NjEuNWg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2cTAgMjYxIDEwNi41IDQ2MS41dDI2Ni41IDMwNi41cS0xNjAgMTA2IC0yNjYuNSAzMDYuNXQtMTA2LjUgNDYxLjVoLTk2cS0xNCAwIC0yMyA5DQp0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTQ3MnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnpNODc0IDcwMHE3NyAyOSAxNDkgOTIuNXQxMjkuNSAxNTIuNXQ5Mi41IDIxMHQzNSAyNTNoLTEwMjRxMCAtMTMyIDM1IC0yNTN0OTIuNSAtMjEwdDEyOS41IC0xNTIuNXQxNDkgLTkyLjVxMTkgLTcgMzAuNSAtMjMuNXQxMS41IC0zNi41dC0xMS41IC0zNi41dC0zMC41IC0yMy41cS03NyAtMjkgLTE0OSAtOTIuNQ0KdC0xMjkuNSAtMTUyLjV0LTkyLjUgLTIxMHQtMzUgLTI1M2gxMDI0cTAgMTMyIC0zNSAyNTN0LTkyLjUgMjEwdC0xMjkuNSAxNTIuNXQtMTQ5IDkyLjVxLTE5IDcgLTMwLjUgMjMuNXQtMTEuNSAzNi41dDExLjUgMzYuNXQzMC41IDIzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTU2IiB1bmljb2RlPSImI3hmMjUxOyIgDQpkPSJNMTQwOCAxNDA4cTAgLTI2MSAtMTA2LjUgLTQ2MS41dC0yNjYuNSAtMzA2LjVxMTYwIC0xMDYgMjY2LjUgLTMwNi41dDEwNi41IC00NjEuNWg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2cTAgMjYxIDEwNi41IDQ2MS41dDI2Ni41IDMwNi41cS0xNjAgMTA2IC0yNjYuNSAzMDYuNXQtMTA2LjUgNDYxLjVoLTk2cS0xNCAwIC0yMyA5DQp0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTQ3MnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnpNMTI4MCAxNDA4aC0xMDI0cTAgLTY2IDkgLTEyOGgxMDA2cTkgNjEgOSAxMjh6TTEyODAgLTEyOHEwIDEzMCAtMzQgMjQ5LjV0LTkwLjUgMjA4dC0xMjYuNSAxNTJ0LTE0NiA5NC41aC0yMzBxLTc2IC0zMSAtMTQ2IC05NC41dC0xMjYuNSAtMTUydC05MC41IC0yMDh0LTM0IC0yNDkuNWgxMDI0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU1NyIgdW5pY29kZT0iJiN4ZjI1MjsiIA0KZD0iTTE0MDggMTQwOHEwIC0yNjEgLTEwNi41IC00NjEuNXQtMjY2LjUgLTMwNi41cTE2MCAtMTA2IDI2Ni41IC0zMDYuNXQxMDYuNSAtNDYxLjVoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTQ3MnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnEwIDI2MSAxMDYuNSA0NjEuNXQyNjYuNSAzMDYuNXEtMTYwIDEwNiAtMjY2LjUgMzA2LjV0LTEwNi41IDQ2MS41aC05NnEtMTQgMCAtMjMgOQ0KdC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE0NzJxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ6TTEyODAgMTQwOGgtMTAyNHEwIC0yMDYgODUgLTM4NGg4NTRxODUgMTc4IDg1IDM4NHpNMTIyMyAxOTJxLTU0IDE0MSAtMTQ1LjUgMjQxLjV0LTE5NC41IDE0Mi41aC0yMzBxLTEwMyAtNDIgLTE5NC41IC0xNDIuNXQtMTQ1LjUgLTI0MS41aDkxMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTgiIHVuaWNvZGU9IiYjeGYyNTM7IiANCmQ9Ik0xNDA4IDE0MDhxMCAtMjYxIC0xMDYuNSAtNDYxLjV0LTI2Ni41IC0zMDYuNXExNjAgLTEwNiAyNjYuNSAtMzA2LjV0MTA2LjUgLTQ2MS41aDk2cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTE0NzJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloOTZxMCAyNjEgMTA2LjUgNDYxLjV0MjY2LjUgMzA2LjVxLTE2MCAxMDYgLTI2Ni41IDMwNi41dC0xMDYuNSA0NjEuNWgtOTZxLTE0IDAgLTIzIDkNCnQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgxNDcycTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTk2ek04NzQgNzAwcTc3IDI5IDE0OSA5Mi41dDEyOS41IDE1Mi41dDkyLjUgMjEwdDM1IDI1M2gtMTAyNHEwIC0xMzIgMzUgLTI1M3Q5Mi41IC0yMTB0MTI5LjUgLTE1Mi41dDE0OSAtOTIuNXExOSAtNyAzMC41IC0yMy41dDExLjUgLTM2LjV0LTExLjUgLTM2LjV0LTMwLjUgLTIzLjVxLTEzNyAtNTEgLTI0NCAtMTk2DQpoNzAwcS0xMDcgMTQ1IC0yNDQgMTk2cS0xOSA3IC0zMC41IDIzLjV0LTExLjUgMzYuNXQxMS41IDM2LjV0MzAuNSAyMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU1OSIgdW5pY29kZT0iJiN4ZjI1NDsiIA0KZD0iTTE1MDQgLTY0cTE0IDAgMjMgLTl0OSAtMjN2LTEyOHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjEyOHEwIDE0IDkgMjN0MjMgOWgxNDcyek0xMzAgMHEzIDU1IDE2IDEwN3QzMCA5NXQ0NiA4N3Q1My41IDc2dDY0LjUgNjkuNXQ2NiA2MHQ3MC41IDU1dDY2LjUgNDcuNXQ2NSA0M3EtNDMgMjggLTY1IDQzdC02Ni41IDQ3LjV0LTcwLjUgNTV0LTY2IDYwdC02NC41IDY5LjV0LTUzLjUgNzZ0LTQ2IDg3DQp0LTMwIDk1dC0xNiAxMDdoMTI3NnEtMyAtNTUgLTE2IC0xMDd0LTMwIC05NXQtNDYgLTg3dC01My41IC03NnQtNjQuNSAtNjkuNXQtNjYgLTYwdC03MC41IC01NXQtNjYuNSAtNDcuNXQtNjUgLTQzcTQzIC0yOCA2NSAtNDN0NjYuNSAtNDcuNXQ3MC41IC01NXQ2NiAtNjB0NjQuNSAtNjkuNXQ1My41IC03NnQ0NiAtODd0MzAgLTk1dDE2IC0xMDdoLTEyNzZ6TTE1MDQgMTUzNnExNCAwIDIzIC05dDkgLTIzdi0xMjhxMCAtMTQgLTkgLTIzdC0yMyAtOQ0KaC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjEyOHEwIDE0IDkgMjN0MjMgOWgxNDcyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU2MCIgdW5pY29kZT0iJiN4ZjI1NTsiIA0KZD0iTTc2OCAxMTUycS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41di0xMjhoLTMydjkzcTAgNDggLTMyIDgxLjV0LTgwIDMzLjVxLTQ2IDAgLTc5IC0zM3QtMzMgLTc5di00MjlsLTMyIDMwdjE3MnEwIDQ4IC0zMiA4MS41dC04MCAzMy41cS00NiAwIC03OSAtMzN0LTMzIC03OXYtMjI0cTAgLTQ3IDM1IC04MmwzMTAgLTI5NnEzOSAtMzkgMzkgLTEwMnEwIC0yNiAxOSAtNDV0NDUgLTE5aDY0MHEyNiAwIDQ1IDE5dDE5IDQ1djI1DQpxMCA0MSAxMCA3N2wxMDggNDM2cTEwIDM2IDEwIDc3djI0NnEwIDQ4IC0zMiA4MS41dC04MCAzMy41cS00NiAwIC03OSAtMzN0LTMzIC03OXYtMzJoLTMydjEyNXEwIDQwIC0yNSA3Mi41dC02NCA0MC41cS0xNCAyIC0yMyAycS00NiAwIC03OSAtMzN0LTMzIC03OXYtMTI4aC0zMnYxMjJxMCA1MSAtMzIuNSA4OS41dC04Mi41IDQzLjVxLTUgMSAtMTMgMXpNNzY4IDEyODBxODQgMCAxNDkgLTUwcTU3IDM0IDEyMyAzNHE1OSAwIDExMSAtMjcNCnQ4NiAtNzZxMjcgNyA1OSA3cTEwMCAwIDE3MCAtNzEuNXQ3MCAtMTcxLjV2LTI0NnEwIC01MSAtMTMgLTEwOGwtMTA5IC00MzZxLTYgLTI0IC02IC03MXEwIC04MCAtNTYgLTEzNnQtMTM2IC01NmgtNjQwcS04NCAwIC0xMzggNTguNXQtNTQgMTQyLjVsLTMwOCAyOTZxLTc2IDczIC03NiAxNzV2MjI0cTAgOTkgNzAuNSAxNjkuNXQxNjkuNSA3MC41cTExIDAgMTYgLTFxNiA5NSA3NS41IDE2MHQxNjQuNSA2NXE1MiAwIDk4IC0yMQ0KcTcyIDY5IDE3NCA2OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NjEiIHVuaWNvZGU9IiYjeGYyNTY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODgwIDE0MDhxLTQ2IDAgLTc5IC0zM3QtMzMgLTc5di02NTZoLTMydjUyOHEwIDQ2IC0zMyA3OXQtNzkgMzN0LTc5IC0zM3QtMzMgLTc5di01Mjh2LTI1NmwtMTU0IDIwNXEtMzggNTEgLTEwMiA1MXEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXEwIC00MyAyNiAtNzdsMzg0IC01MTJxMzggLTUxIDEwMiAtNTFoNjg4cTM0IDAgNjEgMjJ0MzQgNTZsNzYgNDA1cTUgMzIgNSA1OXY0OThxMCA0NiAtMzMgNzl0LTc5IDMzdC03OSAtMzMNCnQtMzMgLTc5di0yNzJoLTMydjUyOHEwIDQ2IC0zMyA3OXQtNzkgMzN0LTc5IC0zM3QtMzMgLTc5di01MjhoLTMydjY1NnEwIDQ2IC0zMyA3OXQtNzkgMzN6TTg4MCAxNTM2cTY4IDAgMTI1LjUgLTM1LjV0ODguNSAtOTYuNXExOSA0IDQyIDRxOTkgMCAxNjkuNSAtNzAuNXQ3MC41IC0xNjkuNXYtMTdxMTA1IDYgMTgwLjUgLTY0dDc1LjUgLTE3NXYtNDk4cTAgLTQwIC04IC04M2wtNzYgLTQwNHEtMTQgLTc5IC03Ni41IC0xMzF0LTE0My41IC01Mg0KaC02ODhxLTYwIDAgLTExNC41IDI3LjV0LTkwLjUgNzQuNWwtMzg0IDUxMnEtNTEgNjggLTUxIDE1NHEwIDEwNiA3NSAxODF0MTgxIDc1cTc4IDAgMTI4IC0zNHY0MzRxMCA5OSA3MC41IDE2OS41dDE2OS41IDcwLjVxMjMgMCA0MiAtNHEzMSA2MSA4OC41IDk2LjV0MTI1LjUgMzUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NjIiIHVuaWNvZGU9IiYjeGYyNTc7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTA3MyAtMTI4aC0xNzdxLTE2MyAwIC0yMjYgMTQxcS0yMyA0OSAtMjMgMTAydjVxLTYyIDMwIC05OC41IDg4LjV0LTM2LjUgMTI3LjVxMCAzOCA1IDQ4aC0yNjFxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXQ3NSAxODF0MTgxIDc1aDExM2wtNDQgMTdxLTc0IDI4IC0xMTkuNSA5My41dC00NS41IDE0NS41cTAgMTA2IDc1IDE4MXQxODEgNzVxNDYgMCA5MSAtMTdsNjI4IC0yMzloNDAxcTEwNiAwIDE4MSAtNzV0NzUgLTE4MXYtNjY4DQpxMCAtODggLTU0IC0xNTcuNXQtMTQwIC05MC41bC0zMzkgLTg1cS05MiAtMjMgLTE4NiAtMjN6TTEwMjQgNTgzbC0xNTUgLTcxbC0xNjMgLTc0cS0zMCAtMTQgLTQ4IC00MS41dC0xOCAtNjAuNXEwIC00NiAzMyAtNzl0NzkgLTMzcTI2IDAgNDYgMTBsMzM4IDE1NHEtNDkgMTAgLTgwLjUgNTB0LTMxLjUgOTB2NTV6TTEzNDQgMjcycTAgNDYgLTMzIDc5dC03OSAzM3EtMjYgMCAtNDYgLTEwbC0yOTAgLTEzMnEtMjggLTEzIC0zNyAtMTcNCnQtMzAuNSAtMTd0LTI5LjUgLTIzLjV0LTE2IC0yOXQtOCAtNDAuNXEwIC01MCAzMS41IC04MnQ4MS41IC0zMnEyMCAwIDM4IDlsMzUyIDE2MHEzMCAxNCA0OCA0MS41dDE4IDYwLjV6TTExMTIgMTAyNGwtNjUwIDI0OHEtMjQgOCAtNDYgOHEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXEwIC00MCAyMi41IC03M3Q1OS41IC00N2w1MjYgLTIwMHYtNjRoLTY0MHEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41DQp0OTAuNSAtMzcuNWg1MzVsMjMzIDEwNnYxOThxMCA2MyA0NiAxMDZsMTExIDEwMmgtNjl6TTEwNzMgMHE4MiAwIDE1NSAxOWwzMzkgODVxNDMgMTEgNzAgNDUuNXQyNyA3OC41djY2OHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNWgtMzA4bC0xMzYgLTEyNnEtMzYgLTMzIC0zNiAtODJ2LTI5NnEwIC00NiAzMyAtNzd0NzkgLTMxdDc5IDM1dDMzIDgxdjIwOGgzMnYtMjA4cTAgLTcwIC01NyAtMTE0cTUyIC04IDg2LjUgLTQ4LjV0MzQuNSAtOTMuNQ0KcTAgLTQyIC0yMyAtNzh0LTYxIC01M2wtMzEwIC0xNDFoOTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTYzIiB1bmljb2RlPSImI3hmMjU4OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTExNTEgMTUzNnE2MSAwIDExNiAtMjh0OTEgLTc3bDU3MiAtNzgxcTExOCAtMTU5IDExOCAtMzU5di0zNTVxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZoLTM4NHEtODAgMCAtMTM2IDU2dC01NiAxMzZ2MTc3bC0yODYgMTQzaC01NDZxLTgwIDAgLTEzNiA1NnQtNTYgMTM2djMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg0MjBsNDIgMTI4aC02ODZxLTEwMCAwIC0xNzMuNSA2Ny41dC04MS41IDE2Ni41cS02NSA3OSAtNjUgMTgydjMyDQpxMCA4MCA1NiAxMzZ0MTM2IDU2aDk1OXpNMTkyMCAtNjR2MzU1cTAgMTU3IC05MyAyODRsLTU3MyA3ODFxLTM5IDUyIC0xMDMgNTJoLTk1OXEtMjYgMCAtNDUgLTE5dC0xOSAtNDVxMCAtMzIgMS41IC00OS41dDkuNSAtNDAuNXQyNSAtNDNxMTAgMzEgMzUuNSA1MHQ1Ni41IDE5aDgzMnYtMzJoLTgzMnEtMjYgMCAtNDUgLTE5dC0xOSAtNDVxMCAtNDQgMyAtNThxOCAtNDQgNDQgLTczdDgxIC0yOWg2NDBoOTFxNDAgMCA2OCAtMjh0MjggLTY4DQpxMCAtMTUgLTUgLTMwbC02NCAtMTkycS0xMCAtMjkgLTM1IC00Ny41dC01NiAtMTguNWgtNDQzcS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdi0zMnEwIC0yNiAxOSAtNDV0NDUgLTE5aDU2MXExNiAwIDI5IC03bDMxNyAtMTU4cTI0IC0xMyAzOC41IC0zNnQxNC41IC01MHYtMTk3cTAgLTI2IDE5IC00NXQ0NSAtMTloMzg0cTI2IDAgNDUgMTl0MTkgNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY0IiB1bmljb2RlPSImI3hmMjU5OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTQ1OSAtMjU2cS03NyAwIC0xMzcuNSA0Ny41dC03OS41IDEyMi41bC0xMDEgNDAxcS0xMyA1NyAtMTMgMTA4cTAgNDUgLTUgNjdsLTExNiA0NzdxLTcgMjcgLTcgNTdxMCA5MyA2MiAxNjF0MTU1IDc4cTE3IDg1IDgyLjUgMTM5dDE1Mi41IDU0cTgzIDAgMTQ4IC01MS41dDg1IC0xMzIuNWw4MyAtMzQ4bDEwMyA0MjhxMjAgODEgODUgMTMyLjV0MTQ4IDUxLjVxODkgMCAxNTUuNSAtNTcuNXQ4MC41IC0xNDQuNXE5MiAtMTAgMTUyIC03OQ0KdDYwIC0xNjJxMCAtMjQgLTcgLTU5bC0xMjMgLTUxMnExMCA3IDM3LjUgMjguNXQzOC41IDI5LjV0MzUgMjN0NDEgMjAuNXQ0MS41IDExdDQ5LjUgNS41cTEwNSAwIDE4MCAtNzR0NzUgLTE3OXEwIC02MiAtMjguNSAtMTE4dC03OC41IC05NGwtNTA3IC0zODBxLTY4IC01MSAtMTUzIC01MWgtNjk0ek0xMTA0IDE0MDhxLTM4IDAgLTY4LjUgLTI0dC0zOS41IC02MmwtMTY0IC02ODJoLTEyN2wtMTQ1IDYwMnEtOSAzOCAtMzkuNSA2MnQtNjguNSAyNA0KcS00OCAwIC04MCAtMzN0LTMyIC04MHEwIC0xNSAzIC0yOGwxMzIgLTU0N2gtMjZsLTk5IDQwOHEtOSAzNyAtNDAgNjIuNXQtNjkgMjUuNXEtNDcgMCAtODAgLTMzdC0zMyAtNzlxMCAtMTQgMyAtMjZsMTE2IC00NzhxNyAtMjggOSAtODZ0MTAgLTg4bDEwMCAtNDAxcTggLTMyIDM0IC01Mi41dDU5IC0yMC41aDY5NHE0MiAwIDc2IDI2bDUwNyAzNzlxNTYgNDMgNTYgMTEwcTAgNTIgLTM3LjUgODguNXQtODkuNSAzNi41cS00MyAwIC03NyAtMjYNCmwtMzA3IC0yMzB2MjI3cTAgNCAzMiAxMzh0NjggMjgydDM5IDE2MXE0IDE4IDQgMjlxMCA0NyAtMzIgODF0LTc5IDM0cS0zOSAwIC02OS41IC0yNHQtMzkuNSAtNjJsLTExNiAtNDgyaC0yNmwxNTAgNjI0cTMgMTQgMyAyOHEwIDQ4IC0zMS41IDgydC03OS41IDM0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU2NSIgdW5pY29kZT0iJiN4ZjI1YTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02NDAgMTQwOHEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXYtNTEydi0zODRsLTE1MSAyMDJxLTQxIDU0IC0xMDcgNTRxLTUyIDAgLTg5IC0zOHQtMzcgLTkwcTAgLTQzIDI2IC03N2wzODQgLTUxMnEzOCAtNTEgMTAyIC01MWg3MThxMjIgMCAzOS41IDEzLjV0MjIuNSAzNC41bDkyIDM2OHEyNCA5NiAyNCAxOTR2MjE3cTAgNDEgLTI4IDcxdC02OCAzMHQtNjggLTI4dC0yOCAtNjhoLTMydjYxcTAgNDggLTMyIDgxLjV0LTgwIDMzLjUNCnEtNDYgMCAtNzkgLTMzdC0zMyAtNzl2LTY0aC0zMnY5MHEwIDU1IC0zNyA5NC41dC05MSAzOS41cS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41di05NmgtMzJ2NTcwcTAgNTUgLTM3IDk0LjV0LTkxIDM5LjV6TTY0MCAxNTM2cTEwNyAwIDE4MS41IC03Ny41dDc0LjUgLTE4NC41di0yMjBxMjIgMiAzMiAycTk5IDAgMTczIC02OXE0NyAyMSA5OSAyMXExMTMgMCAxODQgLTg3cTI3IDcgNTYgN3E5NCAwIDE1OSAtNjcuNXQ2NSAtMTYxLjUNCnYtMjE3cTAgLTExNiAtMjggLTIyNWwtOTIgLTM2OHEtMTYgLTY0IC02OCAtMTA0LjV0LTExOCAtNDAuNWgtNzE4cS02MCAwIC0xMTQuNSAyNy41dC05MC41IDc0LjVsLTM4NCA1MTJxLTUxIDY4IC01MSAxNTRxMCAxMDUgNzQuNSAxODAuNXQxNzkuNSA3NS41cTcxIDAgMTMwIC0zNXY1NDdxMCAxMDYgNzUgMTgxdDE4MSA3NXpNNzY4IDEyOHYzODRoLTMydi0zODRoMzJ6TTEwMjQgMTI4djM4NGgtMzJ2LTM4NGgzMnpNMTI4MCAxMjh2Mzg0aC0zMg0Kdi0zODRoMzJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY2IiB1bmljb2RlPSImI3hmMjViOyIgDQpkPSJNMTI4OCA4ODlxNjAgMCAxMDcgLTIzcTE0MSAtNjMgMTQxIC0yMjZ2LTE3N3EwIC05NCAtMjMgLTE4NmwtODUgLTMzOXEtMjEgLTg2IC05MC41IC0xNDB0LTE1Ny41IC01NGgtNjY4cS0xMDYgMCAtMTgxIDc1dC03NSAxODF2NDAxbC0yMzkgNjI4cS0xNyA0NSAtMTcgOTFxMCAxMDYgNzUgMTgxdDE4MSA3NXE4MCAwIDE0NS41IC00NS41dDkzLjUgLTExOS41bDE3IC00NHYxMTNxMCAxMDYgNzUgMTgxdDE4MSA3NXQxODEgLTc1dDc1IC0xODENCnYtMjYxcTI3IDUgNDggNXE2OSAwIDEyNy41IC0zNi41dDg4LjUgLTk4LjV6TTEwNzIgODk2cS0zMyAwIC02MC41IC0xOHQtNDEuNSAtNDhsLTc0IC0xNjNsLTcxIC0xNTVoNTVxNTAgMCA5MCAtMzEuNXQ1MCAtODAuNWwxNTQgMzM4cTEwIDIwIDEwIDQ2cTAgNDYgLTMzIDc5dC03OSAzM3pNMTI5MyA3NjFxLTIyIDAgLTQwLjUgLTh0LTI5IC0xNnQtMjMuNSAtMjkuNXQtMTcgLTMwLjV0LTE3IC0zN2wtMTMyIC0yOTBxLTEwIC0yMCAtMTAgLTQ2DQpxMCAtNDYgMzMgLTc5dDc5IC0zM3EzMyAwIDYwLjUgMTh0NDEuNSA0OGwxNjAgMzUycTkgMTggOSAzOHEwIDUwIC0zMiA4MS41dC04MiAzMS41ek0xMjggMTEyMHEwIC0yMiA4IC00NmwyNDggLTY1MHYtNjlsMTAyIDExMXE0MyA0NiAxMDYgNDZoMTk4bDEwNiAyMzN2NTM1cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41di02NDBoLTY0bC0yMDAgNTI2cS0xNCAzNyAtNDcgNTkuNXQtNzMgMjIuNQ0KcS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41ek0xMTgwIC0xMjhxNDQgMCA3OC41IDI3dDQ1LjUgNzBsODUgMzM5cTE5IDczIDE5IDE1NXY5MWwtMTQxIC0zMTBxLTE3IC0zOCAtNTMgLTYxdC03OCAtMjNxLTUzIDAgLTkzLjUgMzQuNXQtNDguNSA4Ni41cS00NCAtNTcgLTExNCAtNTdoLTIwOHYzMmgyMDhxNDYgMCA4MSAzM3QzNSA3OXQtMzEgNzl0LTc3IDMzaC0yOTZxLTQ5IDAgLTgyIC0zNmwtMTI2IC0xMzZ2LTMwOA0KcTAgLTUzIDM3LjUgLTkwLjV0OTAuNSAtMzcuNWg2Njh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY3IiB1bmljb2RlPSImI3hmMjVjOyIgaG9yaXotYWR2LXg9IjE5NzMiIA0KZD0iTTg1NyA5OTJ2LTExN3EwIC0xMyAtOS41IC0yMnQtMjIuNSAtOWgtMjk4di04MTJxMCAtMTMgLTkgLTIyLjV0LTIyIC05LjVoLTEzNXEtMTMgMCAtMjIuNSA5dC05LjUgMjN2ODEyaC0yOTdxLTEzIDAgLTIyLjUgOXQtOS41IDIydjExN3EwIDE0IDkgMjN0MjMgOWg3OTNxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xODk1IDk5NWw3NyAtOTYxcTEgLTEzIC04IC0yNHEtMTAgLTEwIC0yMyAtMTBoLTEzNHEtMTIgMCAtMjEgOC41DQp0LTEwIDIwLjVsLTQ2IDU4OGwtMTg5IC00MjVxLTggLTE5IC0yOSAtMTloLTEyMHEtMjAgMCAtMjkgMTlsLTE4OCA0MjdsLTQ1IC01OTBxLTEgLTEyIC0xMCAtMjAuNXQtMjEgLTguNWgtMTM1cS0xMyAwIC0yMyAxMHEtOSAxMCAtOSAyNGw3OCA5NjFxMSAxMiAxMCAyMC41dDIxIDguNWgxNDJxMjAgMCAyOSAtMTlsMjIwIC01MjBxMTAgLTI0IDIwIC01MXEzIDcgOS41IDI0LjV0MTAuNSAyNi41bDIyMSA1MjBxOSAxOSAyOSAxOWgxNDENCnExMyAwIDIyIC04LjV0MTAgLTIwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY4IiB1bmljb2RlPSImI3hmMjVkOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwNDIgODMzcTAgODggLTYwIDEyMXEtMzMgMTggLTExNyAxOGgtMTIzdi0yODFoMTYycTY2IDAgMTAyIDM3dDM2IDEwNXpNMTA5NCA1NDhsMjA1IC0zNzNxOCAtMTcgLTEgLTMxcS04IC0xNiAtMjcgLTE2aC0xNTJxLTIwIDAgLTI4IDE3bC0xOTQgMzY1aC0xNTV2LTM1MHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xMzRxLTE0IDAgLTIzIDl0LTkgMjN2OTYwcTAgMTQgOSAyM3QyMyA5aDI5NHExMjggMCAxOTAgLTI0cTg1IC0zMSAxMzQgLTEwOQ0KdDQ5IC0xODBxMCAtOTIgLTQyLjUgLTE2NS41dC0xMTUuNSAtMTA5LjVxNiAtMTAgOSAtMTZ6TTg5NiAxMzc2cS0xNTAgMCAtMjg2IC01OC41dC0yMzQuNSAtMTU3dC0xNTcgLTIzNC41dC01OC41IC0yODZ0NTguNSAtMjg2dDE1NyAtMjM0LjV0MjM0LjUgLTE1N3QyODYgLTU4LjV0Mjg2IDU4LjV0MjM0LjUgMTU3dDE1NyAyMzQuNXQ1OC41IDI4NnQtNTguNSAyODZ0LTE1NyAyMzQuNXQtMjM0LjUgMTU3dC0yODYgNTguNXpNMTc5MiA2NDANCnEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU2OSIgdW5pY29kZT0iJiN4ZjI1ZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02MDUgMzAzcTE1MyAwIDI1NyAxMDRxMTQgMTggMyAzNmwtNDUgODJxLTYgMTMgLTI0IDE3cS0xNiAyIC0yNyAtMTFsLTQgLTNxLTQgLTQgLTExLjUgLTEwdC0xNy41IC0xMy41dC0yMy41IC0xNC41dC0yOC41IC0xM3QtMzMuNSAtOS41dC0zNy41IC0zLjVxLTc2IDAgLTEyNSA1MHQtNDkgMTI3cTAgNzYgNDggMTI1LjV0MTIyIDQ5LjVxMzcgMCA3MS41IC0xNHQ1MC41IC0yOGwxNiAtMTRxMTEgLTExIDI2IC0xMHExNiAyIDI0IDE0bDUzIDc4DQpxMTMgMjAgLTIgMzlxLTMgNCAtMTEgMTJ0LTMwIDIzLjV0LTQ4LjUgMjh0LTY3LjUgMjIuNXQtODYgMTBxLTE0OCAwIC0yNDYgLTk2LjV0LTk4IC0yNDAuNXEwIC0xNDYgOTcgLTI0MS41dDI0NyAtOTUuNXpNMTIzNSAzMDNxMTUzIDAgMjU3IDEwNHExNCAxOCA0IDM2bC00NSA4MnEtOCAxNCAtMjUgMTdxLTE2IDIgLTI3IC0xMWwtNCAtM3EtNCAtNCAtMTEuNSAtMTB0LTE3LjUgLTEzLjV0LTIzLjUgLTE0LjV0LTI4LjUgLTEzdC0zMy41IC05LjUNCnQtMzcuNSAtMy41cS03NiAwIC0xMjUgNTB0LTQ5IDEyN3EwIDc2IDQ4IDEyNS41dDEyMiA0OS41cTM3IDAgNzEuNSAtMTR0NTAuNSAtMjhsMTYgLTE0cTExIC0xMSAyNiAtMTBxMTYgMiAyNCAxNGw1MyA3OHExMyAyMCAtMiAzOXEtMyA0IC0xMSAxMnQtMzAgMjMuNXQtNDguNSAyOHQtNjcuNSAyMi41dC04NiAxMHEtMTQ3IDAgLTI0NS41IC05Ni41dC05OC41IC0yNDAuNXEwIC0xNDYgOTcgLTI0MS41dDI0NyAtOTUuNXpNODk2IDEzNzYNCnEtMTUwIDAgLTI4NiAtNTguNXQtMjM0LjUgLTE1N3QtMTU3IC0yMzQuNXQtNTguNSAtMjg2dDU4LjUgLTI4NnQxNTcgLTIzNC41dDIzNC41IC0xNTd0Mjg2IC01OC41dDI4NiA1OC41dDIzNC41IDE1N3QxNTcgMjM0LjV0NTguNSAyODZ0LTU4LjUgMjg2dC0xNTcgMjM0LjV0LTIzNC41IDE1N3QtMjg2IDU4LjV6TTg5NiAxNTM2cTE4MiAwIDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHQtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxDQp0LTM0OCAtNzF0LTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjI2MCIgdW5pY29kZT0iJiN4ZjI2MDsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik03MzYgNzM2bDM4NCAtMzg0bC0zODQgLTM4NGwtNjcyIDY3Mmw2NzIgNjcybDE2OCAtMTY4bC05NiAtOTZsLTcyIDcybC00ODAgLTQ4MGw0ODAgLTQ4MGwxOTMgMTkzbC0yODkgMjg3ek0xMzEyIDEzMTJsNjcyIC02NzJsLTY3MiAtNjcybC0xNjggMTY4bDk2IDk2bDcyIC03Mmw0ODAgNDgwbC00ODAgNDgwbC0xOTMgLTE5M2wyODkgLTI4N2wtOTYgLTk2bC0zODQgMzg0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjI2MSIgdW5pY29kZT0iJiN4ZjI2MTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik03MTcgMTgybDI3MSAyNzFsLTI3OSAyNzlsLTg4IC04OGwxOTIgLTE5MWwtOTYgLTk2bC0yNzkgMjc5bDI3OSAyNzlsNDAgLTQwbDg3IDg3bC0xMjcgMTI4bC00NTQgLTQ1NHpNMTA3NSAxOTBsNDU0IDQ1NGwtNDU0IDQ1NGwtMjcxIC0yNzFsMjc5IC0yNzlsODggODhsLTE5MiAxOTFsOTYgOTZsMjc5IC0yNzlsLTI3OSAtMjc5bC00MCA0MGwtODcgLTg4ek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MQ0KdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTcyIiB1bmljb2RlPSImI3hmMjYyOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTY1MSA1MzlxMCAtMzkgLTI3LjUgLTY2LjV0LTY1LjUgLTI3LjVxLTM5IDAgLTY2LjUgMjcuNXQtMjcuNSA2Ni41cTAgMzggMjcuNSA2NS41dDY2LjUgMjcuNXEzOCAwIDY1LjUgLTI3LjV0MjcuNSAtNjUuNXpNMTgwNSA1NDBxMCAtMzkgLTI3LjUgLTY2LjV0LTY2LjUgLTI3LjV0LTY2LjUgMjcuNXQtMjcuNSA2Ni41dDI3LjUgNjZ0NjYuNSAyN3Q2Ni41IC0yN3QyNy41IC02NnpNNzY1IDUzOXEwIDc5IC01Ni41IDEzNnQtMTM2LjUgNTcNCnQtMTM2LjUgLTU2LjV0LTU2LjUgLTEzNi41dDU2LjUgLTEzNi41dDEzNi41IC01Ni41dDEzNi41IDU2LjV0NTYuNSAxMzYuNXpNMTkxOCA1NDBxMCA4MCAtNTYuNSAxMzYuNXQtMTM2LjUgNTYuNXEtNzkgMCAtMTM2IC01Ni41dC01NyAtMTM2LjV0NTYuNSAtMTM2LjV0MTM2LjUgLTU2LjV0MTM2LjUgNTYuNXQ1Ni41IDEzNi41ek04NTAgNTM5cTAgLTExNiAtODEuNSAtMTk3LjV0LTE5Ni41IC04MS41cS0xMTYgMCAtMTk3LjUgODJ0LTgxLjUgMTk3DQp0ODIgMTk2LjV0MTk3IDgxLjV0MTk2LjUgLTgxLjV0ODEuNSAtMTk2LjV6TTIwMDQgNTQwcTAgLTExNSAtODEuNSAtMTk2LjV0LTE5Ny41IC04MS41cS0xMTUgMCAtMTk2LjUgODEuNXQtODEuNSAxOTYuNXQ4MS41IDE5Ni41dDE5Ni41IDgxLjVxMTE2IDAgMTk3LjUgLTgxLjV0ODEuNSAtMTk2LjV6TTEwNDAgNTM3cTAgMTkxIC0xMzUuNSAzMjYuNXQtMzI2LjUgMTM1LjVxLTEyNSAwIC0yMzEgLTYydC0xNjggLTE2OC41dC02MiAtMjMxLjUNCnQ2MiAtMjMxLjV0MTY4IC0xNjguNXQyMzEgLTYycTE5MSAwIDMyNi41IDEzNS41dDEzNS41IDMyNi41ek0xNzA4IDExMTBxLTI1NCAxMTEgLTU1NiAxMTFxLTMxOSAwIC01NzMgLTExMHExMTcgMCAyMjMgLTQ1LjV0MTgyLjUgLTEyMi41dDEyMiAtMTgzdDQ1LjUgLTIyM3EwIDExNSA0My41IDIxOS41dDExOCAxODAuNXQxNzcuNSAxMjN0MjE3IDUwek0yMTg3IDUzN3EwIDE5MSAtMTM1IDMyNi41dC0zMjYgMTM1LjV0LTMyNi41IC0xMzUuNQ0KdC0xMzUuNSAtMzI2LjV0MTM1LjUgLTMyNi41dDMyNi41IC0xMzUuNXQzMjYgMTM1LjV0MTM1IDMyNi41ek0xOTIxIDExMDNoMzgzcS00NCAtNTEgLTc1IC0xMTQuNXQtNDAgLTExNC41cTExMCAtMTUxIDExMCAtMzM3cTAgLTE1NiAtNzcgLTI4OHQtMjA5IC0yMDguNXQtMjg3IC03Ni41cS0xMzMgMCAtMjQ5IDU2dC0xOTYgMTU1cS00NyAtNTYgLTEyOSAtMTc5cS0xMSAyMiAtNTMuNSA4Mi41dC03NC41IDk3LjUNCnEtODAgLTk5IC0xOTYuNSAtMTU1LjV0LTI0OS41IC01Ni41cS0xNTUgMCAtMjg3IDc2LjV0LTIwOSAyMDguNXQtNzcgMjg4cTAgMTg2IDExMCAzMzdxLTkgNTEgLTQwIDExNC41dC03NSAxMTQuNWgzNjVxMTQ5IDEwMCAzNTUgMTU2LjV0NDMyIDU2LjVxMjI0IDAgNDIxIC01NnQzNDggLTE1N3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImYyNjMiIHVuaWNvZGU9IiYjeGYyNjM7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNNjQwIDYyOXEtMTg4IDAgLTMyMSAxMzN0LTEzMyAzMjBxMCAxODggMTMzIDMyMXQzMjEgMTMzdDMyMSAtMTMzdDEzMyAtMzIxcTAgLTE4NyAtMTMzIC0zMjB0LTMyMSAtMTMzek02NDAgMTMwNnEtOTIgMCAtMTU3LjUgLTY1LjV0LTY1LjUgLTE1OC41cTAgLTkyIDY1LjUgLTE1Ny41dDE1Ny41IC02NS41dDE1Ny41IDY1LjV0NjUuNSAxNTcuNXEwIDkzIC02NS41IDE1OC41dC0xNTcuNSA2NS41ek0xMTYzIDU3NHExMyAtMjcgMTUgLTQ5LjUNCnQtNC41IC00MC41dC0yNi41IC0zOC41dC00Mi41IC0zN3QtNjEuNSAtNDEuNXEtMTE1IC03MyAtMzE1IC05NGw3MyAtNzJsMjY3IC0yNjdxMzAgLTMxIDMwIC03NHQtMzAgLTczbC0xMiAtMTNxLTMxIC0zMCAtNzQgLTMwdC03NCAzMHEtNjcgNjggLTI2NyAyNjhsLTI2NyAtMjY4cS0zMSAtMzAgLTc0IC0zMHQtNzMgMzBsLTEyIDEzcS0zMSAzMCAtMzEgNzN0MzEgNzRsMjY3IDI2N2w3MiA3MnEtMjAzIDIxIC0zMTcgOTQNCnEtMzkgMjUgLTYxLjUgNDEuNXQtNDIuNSAzN3QtMjYuNSAzOC41dC00LjUgNDAuNXQxNSA0OS41cTEwIDIwIDI4IDM1dDQyIDIydDU2IC0ydDY1IC0zNXE1IC00IDE1IC0xMXQ0MyAtMjQuNXQ2OSAtMzAuNXQ5MiAtMjR0MTEzIC0xMXE5MSAwIDE3NCAyNS41dDEyMCA1MC41bDM4IDI1cTMzIDI2IDY1IDM1dDU2IDJ0NDIgLTIydDI4IC0zNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NzQiIHVuaWNvZGU9IiYjeGYyNjQ7IiANCmQ9Ik05MjcgOTU2cTAgLTY2IC00Ni41IC0xMTIuNXQtMTEyLjUgLTQ2LjV0LTExMi41IDQ2LjV0LTQ2LjUgMTEyLjV0NDYuNSAxMTIuNXQxMTIuNSA0Ni41dDExMi41IC00Ni41dDQ2LjUgLTExMi41ek0xMTQxIDU5M3EtMTAgMjAgLTI4IDMydC00Ny41IDkuNXQtNjAuNSAtMjcuNXEtMTAgLTggLTI5IC0yMHQtODEgLTMydC0xMjcgLTIwdC0xMjQgMTh0LTg2IDM2bC0yNyAxOHEtMzEgMjUgLTYwLjUgMjcuNXQtNDcuNSAtOS41dC0yOCAtMzINCnEtMjIgLTQ1IC0yIC03NC41dDg3IC03My41cTgzIC01MyAyMjYgLTY3bC01MSAtNTJxLTE0MiAtMTQyIC0xOTEgLTE5MHEtMjIgLTIyIC0yMiAtNTIuNXQyMiAtNTIuNWw5IC05cTIyIC0yMiA1Mi41IC0yMnQ1Mi41IDIybDE5MSAxOTFxMTE0IC0xMTUgMTkxIC0xOTFxMjIgLTIyIDUyLjUgLTIydDUyLjUgMjJsOSA5cTIyIDIyIDIyIDUyLjV0LTIyIDUyLjVsLTE5MSAxOTBsLTUyIDUycTE0MSAxNCAyMjUgNjdxNjcgNDQgODcgNzMuNXQtMiA3NC41DQp6TTEwOTIgOTU2cTAgMTM0IC05NSAyMjl0LTIyOSA5NXQtMjI5IC05NXQtOTUgLTIyOXQ5NSAtMjI5dDIyOSAtOTV0MjI5IDk1dDk1IDIyOXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTc1IiB1bmljb2RlPSImI3hmMjY1OyIgaG9yaXotYWR2LXg9IjE3MjAiIA0KZD0iTTE1NjUgMTQwOHE2NSAwIDExMCAtNDUuNXQ0NSAtMTEwLjV2LTUxOXEwIC0xNzYgLTY4IC0zMzZ0LTE4Mi41IC0yNzV0LTI3NCAtMTgyLjV0LTMzNC41IC02Ny41cS0xNzYgMCAtMzM1LjUgNjcuNXQtMjc0LjUgMTgyLjV0LTE4MyAyNzV0LTY4IDMzNnY1MTlxMCA2NCA0NiAxMTB0MTEwIDQ2aDE0MDl6TTg2MSAzNDRxNDcgMCA4MiAzM2w0MDQgMzg4cTM3IDM1IDM3IDg1cTAgNDkgLTM0LjUgODMuNXQtODMuNSAzNC41cS00NyAwIC04MiAtMzMNCmwtMzIzIC0zMTBsLTMyMyAzMTBxLTM1IDMzIC04MSAzM3EtNDkgMCAtODMuNSAtMzQuNXQtMzQuNSAtODMuNXEwIC01MSAzNiAtODVsNDA1IC0zODhxMzMgLTMzIDgxIC0zM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NzYiIHVuaWNvZGU9IiYjeGYyNjY7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTQ5NCAtMTAzbC0yOTUgNjk1cS0yNSAtNDkgLTE1OC41IC0zMDUuNXQtMTk4LjUgLTM4OS41cS0xIC0xIC0yNy41IC0wLjV0LTI2LjUgMS41cS04MiAxOTMgLTI1NS41IDU4N3QtMjU5LjUgNTk2cS0yMSA1MCAtNjYuNSAxMDcuNXQtMTAzLjUgMTAwLjV0LTEwMiA0M3EwIDUgLTAuNSAyNHQtMC41IDI3aDU4M3YtNTBxLTM5IC0yIC03OS41IC0xNnQtNjYuNSAtNDN0LTEwIC02NHEyNiAtNTkgMjE2LjUgLTQ5OXQyMzUuNSAtNTQwDQpxMzEgNjEgMTQwIDI2Ni41dDEzMSAyNDcuNXEtMTkgMzkgLTEyNiAyODF0LTEzNiAyOTVxLTM4IDY5IC0yMDEgNzF2NTBsNTEzIC0xdi00N3EtNjAgLTIgLTkzLjUgLTI1dC0xMi41IC02OXEzMyAtNzAgODcgLTE4OS41dDg2IC0xODcuNXExMTAgMjE0IDE3MyAzNjNxMjQgNTUgLTEwIDc5LjV0LTEyOSAyNi41cTEgNyAxIDI1djI0cTY0IDAgMTcwLjUgMC41dDE4MCAxdDkyLjUgMC41di00OXEtNjIgLTIgLTExOSAtMzN0LTkwIC04MQ0KbC0yMTMgLTQ0MnExMyAtMzMgMTI3LjUgLTI5MHQxMjEuNSAtMjc0bDQ0MSAxMDE3cS0xNCAzOCAtNDkuNSA2Mi41dC02NSAzMS41dC01NS41IDh2NTBsNDYwIC00bDEgLTJsLTEgLTQ0cS0xMzkgLTQgLTIwMSAtMTQ1cS01MjYgLTEyMTYgLTU1OSAtMTI5MWgtNDl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTc3IiB1bmljb2RlPSImI3hmMjY3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTk0OSA2NDNxMCAtMjYgLTE2LjUgLTQ1dC00MS41IC0xOXEtMjYgMCAtNDUgMTYuNXQtMTkgNDEuNXEwIDI2IDE3IDQ1dDQyIDE5dDQ0IC0xNi41dDE5IC00MS41ek05NjQgNTg1bDM1MCA1ODFxLTkgLTggLTY3LjUgLTYyLjV0LTEyNS41IC0xMTYuNXQtMTM2LjUgLTEyN3QtMTE3IC0xMTAuNXQtNTAuNSAtNTEuNWwtMzQ5IC01ODBxNyA3IDY3IDYydDEyNiAxMTYuNXQxMzYgMTI3dDExNyAxMTF0NTAgNTAuNXpNMTYxMSA2NDANCnEwIC0yMDEgLTEwNCAtMzcxcS0zIDIgLTE3IDExdC0yNi41IDE2LjV0LTE2LjUgNy41cS0xMyAwIC0xMyAtMTNxMCAtMTAgNTkgLTQ0cS03NCAtMTEyIC0xODQuNSAtMTkwLjV0LTI0MS41IC0xMTAuNWwtMTYgNjdxLTEgMTAgLTE1IDEwcS01IDAgLTggLTUuNXQtMiAtOS41bDE2IC02OHEtNzIgLTE1IC0xNDYgLTE1cS0xOTkgMCAtMzcyIDEwNXExIDIgMTMgMjAuNXQyMS41IDMzLjV0OS41IDE5cTAgMTMgLTEzIDEzcS02IDAgLTE3IC0xNC41DQp0LTIyLjUgLTM0LjV0LTEzLjUgLTIzcS0xMTMgNzUgLTE5MiAxODcuNXQtMTEwIDI0NC41bDY5IDE1cTEwIDMgMTAgMTVxMCA1IC01LjUgOHQtMTAuNSAybC02OCAtMTVxLTE0IDcyIC0xNCAxMzlxMCAyMDYgMTA5IDM3OXEyIC0xIDE4LjUgLTEydDMwIC0xOXQxNy41IC04cTEzIDAgMTMgMTJxMCA2IC0xMi41IDE1LjV0LTMyLjUgMjEuNWwtMjAgMTJxNzcgMTEyIDE4OSAxODl0MjQ0IDEwN2wxNSAtNjdxMiAtMTAgMTUgLTEwcTUgMCA4IDUuNQ0KdDIgMTAuNWwtMTUgNjZxNzEgMTMgMTM0IDEzcTIwNCAwIDM3OSAtMTA5cS0zOSAtNTYgLTM5IC02NXEwIC0xMyAxMiAtMTNxMTEgMCA0OCA2NHExMTEgLTc1IDE4Ny41IC0xODZ0MTA3LjUgLTI0MWwtNTYgLTEycS0xMCAtMiAtMTAgLTE2cTAgLTUgNS41IC04dDkuNSAtMmw1NyAxM3ExNCAtNzIgMTQgLTE0MHpNMTY5NiA2NDBxMCAxNjMgLTYzLjUgMzExdC0xNzAuNSAyNTV0LTI1NSAxNzAuNXQtMzExIDYzLjV0LTMxMSAtNjMuNQ0KdC0yNTUgLTE3MC41dC0xNzAuNSAtMjU1dC02My41IC0zMTF0NjMuNSAtMzExdDE3MC41IC0yNTV0MjU1IC0xNzAuNXQzMTEgLTYzLjV0MzExIDYzLjV0MjU1IDE3MC41dDE3MC41IDI1NXQ2My41IDMxMXpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2IC0xOTF0LTM0OCAtNzF0LTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzF0Mjg2IC0xOTENCnQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU3OCIgdW5pY29kZT0iJiN4ZjI2ODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04OTMgMTUzNnEyNDAgMiA0NTEgLTEyMHEyMzIgLTEzNCAzNTIgLTM3MmwtNzQyIDM5cS0xNjAgOSAtMjk0IC03NC41dC0xODUgLTIyOS41bC0yNzYgNDI0cTEyOCAxNTkgMzExIDI0NS41dDM4MyA4Ny41ek0xNDYgMTEzMWwzMzcgLTY2M3E3MiAtMTQzIDIxMSAtMjE3dDI5MyAtNDVsLTIzMCAtNDUxcS0yMTIgMzMgLTM4NSAxNTcuNXQtMjcyLjUgMzE2dC05OS41IDQxMS41cTAgMjY3IDE0NiA0OTF6TTE3MzIgOTYyDQpxNTggLTE1MCA1OS41IC0zMTAuNXQtNDguNSAtMzA2dC0xNTMgLTI3MnQtMjQ2IC0yMDkuNXEtMjMwIC0xMzMgLTQ5OCAtMTE5bDQwNSA2MjNxODggMTMxIDgyLjUgMjkwLjV0LTEwNi41IDI3Ny41ek04OTYgOTQycTEyNSAwIDIxMy41IC04OC41dDg4LjUgLTIxMy41dC04OC41IC0yMTMuNXQtMjEzLjUgLTg4LjV0LTIxMy41IDg4LjV0LTg4LjUgMjEzLjV0ODguNSAyMTMuNXQyMTMuNSA4OC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU3OSIgdW5pY29kZT0iJiN4ZjI2OTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05MDMgLTI1NnEtMjgzIDAgLTUwNC41IDE1MC41dC0zMjkuNSAzOTguNXEtNTggMTMxIC02NyAzMDF0MjYgMzMyLjV0MTExIDMxMnQxNzkgMjQyLjVsLTExIC0yODFxMTEgMTQgNjggMTUuNXQ3MCAtMTUuNXE0MiA4MSAxNjAuNSAxMzh0MjM0LjUgNTlxLTU0IC00NSAtMTE5LjUgLTE0OC41dC01OC41IC0xNjMuNXEyNSAtOCA2Mi41IC0xMy41dDYzIC03LjV0NjggLTR0NTAuNSAtM3ExNSAtNSA5LjUgLTQ1LjV0LTMwLjUgLTc1LjUNCnEtNSAtNyAtMTYuNSAtMTguNXQtNTYuNSAtMzUuNXQtMTAxIC0zNGwxNSAtMTg5bC0xMzkgNjdxLTE4IC00MyAtNy41IC04MS41dDM2IC02Ni41dDY1LjUgLTQxLjV0ODEgLTYuNXE1MSA5IDk4IDM0LjV0ODMuNSA0NXQ3My41IDE3LjVxNjEgLTQgODkuNSAtMzN0MTkuNSAtNjVxLTEgLTIgLTIuNSAtNS41dC04LjUgLTEyLjV0LTE4IC0xNS41dC0zMS41IC0xMC41dC00Ni41IC0xcS02MCAtOTUgLTE0NC41IC0xMzUuNXQtMjA5LjUgLTI5LjUNCnE3NCAtNjEgMTYyLjUgLTgyLjV0MTY4LjUgLTZ0MTU0LjUgNTJ0MTI4IDg3LjV0ODAuNSAxMDRxNDMgOTEgMzkgMTkyLjV0LTM3LjUgMTg4LjV0LTc4LjUgMTI1cTg3IC0zOCAxMzcgLTc5LjV0NzcgLTExMi41cTE1IDE3MCAtNTcuNSAzNDN0LTIwOS41IDI4NHEyNjUgLTc3IDQxMiAtMjc5LjV0MTUxIC01MTcuNXEyIC0xMjcgLTQwLjUgLTI1NXQtMTIzLjUgLTIzOHQtMTg5IC0xOTZ0LTI0Ny41IC0xMzUuNXQtMjg4LjUgLTQ5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTgwIiB1bmljb2RlPSImI3hmMjZhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE0OTMgMTMwOHEtMTY1IDExMCAtMzU5IDExMHEtMTU1IDAgLTI5MyAtNzN0LTI0MCAtMjAwcS03NSAtOTMgLTExOS41IC0yMTh0LTQ4LjUgLTI2NnYtNDJxNCAtMTQxIDQ4LjUgLTI2NnQxMTkuNSAtMjE4cTEwMiAtMTI3IDI0MCAtMjAwdDI5MyAtNzNxMTk0IDAgMzU5IDExMHEtMTIxIC0xMDggLTI3NC41IC0xNjh0LTMyMi41IC02MHEtMjkgMCAtNDMgMXEtMTc1IDggLTMzMyA4MnQtMjcyIDE5M3QtMTgxIDI4MXQtNjcgMzM5DQpxMCAxODIgNzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzFoM3ExNjggLTEgMzIwLjUgLTYwLjV0MjczLjUgLTE2Ny41ek0xNzkyIDY0MHEwIC0xOTIgLTc3IC0zNjIuNXQtMjEzIC0yOTYuNXEtMTA0IC02MyAtMjIyIC02M3EtMTM3IDAgLTI1NSA4NHExNTQgNTYgMjUzLjUgMjMzdDk5LjUgNDA1cTAgMjI3IC05OSA0MDR0LTI1MyAyMzRxMTE5IDgzIDI1NCA4M3ExMTkgMCAyMjYgLTY1cTEzNSAtMTI1IDIxMC41IC0yOTV0NzUuNSAtMzYxeg0KIiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTgxIiB1bmljb2RlPSImI3hmMjZiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNTk5cTAgLTU2IC03IC0xMDRoLTExNTFxMCAtMTQ2IDEwOS41IC0yNDQuNXQyNTcuNSAtOTguNXE5OSAwIDE4NS41IDQ2LjV0MTM2LjUgMTMwLjVoNDIzcS01NiAtMTU5IC0xNzAuNSAtMjgxdC0yNjcuNSAtMTg4LjV0LTMyMSAtNjYuNXEtMTg3IDAgLTM1NiA4M3EtMjI4IC0xMTYgLTM5NCAtMTE2cS0yMzcgMCAtMjM3IDI2M3EwIDExNSA0NSAyNzVxMTcgNjAgMTA5IDIyOXExOTkgMzYwIDQ3NSA2MDYNCnEtMTg0IC03OSAtNDI3IC0zNTRxNjMgMjc0IDI4My41IDQ0OS41dDUwMS41IDE3NS41cTMwIDAgNDUgLTFxMjU1IDExNyA0MzMgMTE3cTY0IDAgMTE2IC0xM3Q5NC41IC00MC41dDY2LjUgLTc2LjV0MjQgLTExNXEwIC0xMTYgLTc1IC0yODZxMTAxIC0xODIgMTAxIC0zOTB6TTE3MjIgMTIzOXEwIDgzIC01MyAxMzJ0LTEzNyA0OXEtMTA4IDAgLTI1NCAtNzBxMTIxIC00NyAyMjIuNSAtMTMxLjV0MTcwLjUgLTE5NS41cTUxIDEzNSA1MSAyMTZ6DQpNMTI4IDJxMCAtODYgNDguNSAtMTMyLjV0MTM0LjUgLTQ2LjVxMTE1IDAgMjY2IDgzcS0xMjIgNzIgLTIxMy41IDE4M3QtMTM3LjUgMjQ1cS05OCAtMjA1IC05OCAtMzMyek02MzIgNzE1aDcyOHEtNSAxNDIgLTExMyAyMzd0LTI1MSA5NXEtMTQ0IDAgLTI1MS41IC05NXQtMTEyLjUgLTIzN3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODIiIHVuaWNvZGU9IiYjeGYyNmM7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMTc5MiAyODh2OTYwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTYwMHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2MHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE2MDBxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTkyMCAxMjQ4di05NjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTczNnYtMTI4aDM1MnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC04MzJxLTE0IDAgLTIzIDl0LTkgMjMNCnY2NHEwIDE0IDkgMjN0MjMgOWgzNTJ2MTI4aC03MzZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjk2MHEwIDY2IDQ3IDExM3QxMTMgNDdoMTYwMHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODMiIHVuaWNvZGU9IiYjeGYyNmQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTM4IDE0MDhoMTk3cS03MCAtNjQgLTEyNiAtMTQ5cS0zNiAtNTYgLTU5IC0xMTV0LTMwIC0xMjUuNXQtOC41IC0xMjB0MTAuNSAtMTMydDIxIC0xMjZ0MjggLTEzNi41cTQgLTE5IDYgLTI4cTUxIC0yMzggODEgLTMyOXE1NyAtMTcxIDE1MiAtMjc1aC0yNzJxLTQ4IDAgLTgyIDM0dC0zNCA4MnYxMzA0cTAgNDggMzQgODJ0ODIgMzR6TTEzNDYgMTQwOGgzMDhxNDggMCA4MiAtMzR0MzQgLTgydi0xMzA0cTAgLTQ4IC0zNCAtODJ0LTgyIC0zNA0KaC0xNzhxMjEyIDIxMCAxOTYgNTY1bC00NjkgLTEwMXEtMiAtNDUgLTEyIC04MnQtMzEgLTcydC01OS41IC01OS41dC05My41IC0zNi41cS0xMjMgLTI2IC0xOTkgNDBxLTMyIDI3IC01MyA2MXQtNTEuNSAxMjl0LTY0LjUgMjU4cS0zNSAxNjMgLTQ1LjUgMjYzdC01LjUgMTM5dDIzIDc3cTIwIDQxIDYyLjUgNzN0MTAyLjUgNDVxNDUgMTIgODMuNSA2LjV0NjcgLTE3dDU0IC0zNXQ0MyAtNDh0MzQuNSAtNTYuNWw0NjggMTAwDQpxLTY4IDE3NSAtMTgwIDI4N3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODQiIHVuaWNvZGU9IiYjeGYyNmU7IiANCmQ9Ik0xNDAxIC0xMWwtNiAtNnEtMTEzIC0xMTMgLTI1OSAtMTc1cS0xNTQgLTY0IC0zMTcgLTY0cS0xNjUgMCAtMzE3IDY0cS0xNDggNjMgLTI1OSAxNzVxLTExMyAxMTIgLTE3NSAyNThxLTQyIDEwMyAtNTQgMTg5cS00IDI4IDQ4IDM2cTUxIDggNTYgLTIwcTEgLTEgMSAtNHExOCAtOTAgNDYgLTE1OXE1MCAtMTI0IDE1MiAtMjI2cTk4IC05OCAyMjYgLTE1MnExMzIgLTU2IDI3NiAtNTZxMTQzIDAgMjc2IDU2cTEyOCA1NSAyMjUgMTUybDYgNg0KcTEwIDEwIDI1IDZxMTIgLTMgMzMgLTIycTM2IC0zNyAxNyAtNTh6TTkyOSA2MDRsLTY2IC02Nmw2MyAtNjNxMjEgLTIxIC03IC00OXEtMTcgLTE3IC0zMiAtMTdxLTEwIDAgLTE5IDEwbC02MiA2MWwtNjYgLTY2cS01IC01IC0xNSAtNXEtMTUgMCAtMzEgMTZsLTIgMnEtMTggMTUgLTE4IDI5cTAgNyA4IDE3bDY2IDY1bC02NiA2NnEtMTYgMTYgMTQgNDVxMTggMTggMzEgMThxNiAwIDEzIC01bDY1IC02Nmw2NSA2NXExOCAxNyA0OCAtMTMNCnEyNyAtMjcgMTEgLTQ0ek0xNDAwIDU0N3EwIC0xMTggLTQ2IC0yMjhxLTQ1IC0xMDUgLTEyNiAtMTg2cS04MCAtODAgLTE4NyAtMTI2dC0yMjggLTQ2dC0yMjggNDZ0LTE4NyAxMjZxLTgyIDgyIC0xMjUgMTg2cS0xNSAzMyAtMTUgNDBoLTFxLTkgMjcgNDMgNDRxNTAgMTYgNjAgLTEycTM3IC05OSA5NyAtMTY3aDF2MzM5djJxMyAxMzYgMTAyIDIzMnExMDUgMTAzIDI1MyAxMDNxMTQ3IDAgMjUxIC0xMDN0MTA0IC0yNDkNCnEwIC0xNDcgLTEwNC41IC0yNTF0LTI1MC41IC0xMDRxLTU4IDAgLTExMiAxNnEtMjggMTEgLTEzIDYxcTE2IDUxIDQ0IDQzbDE0IC0zcTE0IC0zIDMzIC02dDMwIC0zcTEwNCAwIDE3NiA3MS41dDcyIDE3NC41cTAgMTAxIC03MiAxNzFxLTcxIDcxIC0xNzUgNzFxLTEwNyAwIC0xNzggLTgwcS02NCAtNzIgLTY0IC0xNjB2LTQxM3ExMTAgLTY3IDI0MiAtNjdxOTYgMCAxODUgMzYuNXQxNTYgMTAzLjV0MTAzLjUgMTU1dDM2LjUgMTgzDQpxMCAxOTggLTE0MSAzMzlxLTE0MCAxNDAgLTMzOSAxNDBxLTIwMCAwIC0zNDAgLTE0MHEtNTMgLTUzIC03NyAtODdsLTIgLTJxLTggLTExIC0xMyAtMTUuNXQtMjEuNSAtOS41dC0zOC41IDNxLTIxIDUgLTM2LjUgMTYuNXQtMTUuNSAyNi41djY4MHEwIDE1IDEwLjUgMjYuNXQyNy41IDExLjVoODc3cTMwIDAgMzAgLTU1dC0zMCAtNTVoLTgxMXYtNDgzaDFxNDAgNDIgMTAyIDg0dDEwOCA2MXExMDkgNDYgMjMxIDQ2cTEyMSAwIDIyOCAtNDYNCnQxODcgLTEyNnE4MSAtODEgMTI2IC0xODZxNDYgLTExMiA0NiAtMjI5ek0xMzY5IDExMjhxOSAtOCA5IC0xOHQtNS41IC0xOHQtMTYuNSAtMjFxLTI2IC0yNiAtMzkgLTI2cS05IDAgLTE2IDdxLTEwNiA5MSAtMjA3IDEzM3EtMTI4IDU2IC0yNzYgNTZxLTEzMyAwIC0yNjIgLTQ5cS0yNyAtMTAgLTQ1IDM3cS05IDI1IC04IDM4cTMgMTYgMTYgMjBxMTMwIDU3IDI5OSA1N3ExNjQgMCAzMTYgLTY0cTEzNyAtNTggMjM1IC0xNTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTg1IiB1bmljb2RlPSImI3hmMjcwOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE1NTEgNjBxMTUgNiAyNiAzdDExIC0xNy41dC0xNSAtMzMuNXEtMTMgLTE2IC00NCAtNDMuNXQtOTUuNSAtNjh0LTE0MSAtNzR0LTE4OCAtNTh0LTIyOS41IC0yNC41cS0xMTkgMCAtMjM4IDMxdC0yMDkgNzYuNXQtMTcyLjUgMTA0dC0xMzIuNSAxMDV0LTg0IDg3LjVxLTggOSAtMTAgMTYuNXQxIDEydDggN3QxMS41IDJ0MTEuNSAtNC41cTE5MiAtMTE3IDMwMCAtMTY2cTM4OSAtMTc2IDc5OSAtOTBxMTkwIDQwIDM5MSAxMzV6DQpNMTc1OCAxNzVxMTEgLTE2IDIuNSAtNjkuNXQtMjguNSAtMTAyLjVxLTM0IC04MyAtODUgLTEyNHEtMTcgLTE0IC0yNiAtOXQwIDI0cTIxIDQ1IDQ0LjUgMTIxLjV0Ni41IDk4LjVxLTUgNyAtMTUuNSAxMS41dC0yNyA2dC0yOS41IDIuNXQtMzUgMHQtMzEuNSAtMnQtMzEgLTN0LTIyLjUgLTJxLTYgLTEgLTEzIC0xLjV0LTExIC0xdC04LjUgLTF0LTcgLTAuNWgtNS41aC00LjV0LTMgMC41dC0yIDEuNWwtMS41IDNxLTYgMTYgNDcgNDB0MTAzIDMwDQpxNDYgNyAxMDggMXQ3NiAtMjR6TTEzNjQgNjE4cTAgLTMxIDEzLjUgLTY0dDMyIC01OHQzNy41IC00NnQzMyAtMzJsMTMgLTExbC0yMjcgLTIyNHEtNDAgMzcgLTc5IDc1LjV0LTU4IDU4LjVsLTE5IDIwcS0xMSAxMSAtMjUgMzNxLTM4IC01OSAtOTcuNSAtMTAyLjV0LTEyNy41IC02My41dC0xNDAgLTIzdC0xMzcuNSAyMXQtMTE3LjUgNjUuNXQtODMgMTEzdC0zMSAxNjIuNXEwIDg0IDI4IDE1NHQ3MiAxMTYuNXQxMDYuNSA4M3QxMjIuNSA1Nw0KdDEzMCAzNC41dDExOS41IDE4LjV0OTkuNSA2LjV2MTI3cTAgNjUgLTIxIDk3cS0zNCA1MyAtMTIxIDUzcS02IDAgLTE2LjUgLTF0LTQwLjUgLTEydC01NiAtMjkuNXQtNTYgLTU5LjV0LTQ4IC05NmwtMjk0IDI3cTAgNjAgMjIgMTE5dDY3IDExM3QxMDggOTV0MTUxLjUgNjUuNXQxOTAuNSAyNC41cTEwMCAwIDE4MSAtMjV0MTI5LjUgLTYxLjV0ODEgLTgzdDQ1IC04NnQxMi41IC03My41di01ODl6TTY5MiA1OTdxMCAtODYgNzAgLTEzMw0KcTY2IC00NCAxMzkgLTIycTg0IDI1IDExNCAxMjNxMTQgNDUgMTQgMTAxdjE2MnEtNTkgLTIgLTExMSAtMTJ0LTEwNi41IC0zMy41dC04NyAtNzF0LTMyLjUgLTExNC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU4NiIgdW5pY29kZT0iJiN4ZjI3MTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNTM2IDEyODBxNTIgMCA5MCAtMzh0MzggLTkwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgxMjh6TTExNTIgMTM3NnYtMjg4cTAgLTE0IDkgLTIzdDIzIC05DQpoNjRxMTQgMCAyMyA5dDkgMjN2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN6TTM4NCAxMzc2di0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN6TTE1MzYgLTEyOHYxMDI0aC0xNDA4di0xMDI0aDE0MDh6TTg5NiA0NDhoMjI0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTIyNA0Kdi0yMjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMjI0djIyNHEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi0yMjR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTg3IiB1bmljb2RlPSImI3hmMjcyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTExNTIgNDE2di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC01NzZxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNTc2cTE0IDAgMjMgLTl0OSAtMjN6TTEyOCAtMTI4aDE0MDh2MTAyNGgtMTQwOHYtMTAyNHpNNTEyIDEwODh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTI4MCAxMDg4djI4OHEwIDE0IC05IDIzDQp0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTY2NCAxMTUydi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00Nw0KdDQ3IC0xMTN2LTk2aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTg4IiB1bmljb2RlPSImI3hmMjczOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTExMTEgMTUxbC00NiAtNDZxLTkgLTkgLTIyIC05dC0yMyA5bC0xODggMTg5bC0xODggLTE4OXEtMTAgLTkgLTIzIC05dC0yMiA5bC00NiA0NnEtOSA5IC05IDIydDkgMjNsMTg5IDE4OGwtMTg5IDE4OHEtOSAxMCAtOSAyM3Q5IDIybDQ2IDQ2cTkgOSAyMiA5dDIzIC05bDE4OCAtMTg4bDE4OCAxODhxMTAgOSAyMyA5dDIyIC05bDQ2IC00NnE5IC05IDkgLTIydC05IC0yM2wtMTg4IC0xODhsMTg4IC0xODhxOSAtMTAgOSAtMjN0LTkgLTIyeg0KTTEyOCAtMTI4aDE0MDh2MTAyNGgtMTQwOHYtMTAyNHpNNTEyIDEwODh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTI4MCAxMDg4djI4OHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTE1MnYtMTI4MA0KcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgxMjhxNTIgMCA5MCAtMzh0MzggLTkweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU4OSIgdW5pY29kZT0iJiN4ZjI3NDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMzAzIDU3MmwtNTEyIC01MTJxLTEwIC05IC0yMyAtOXQtMjMgOWwtMjg4IDI4OHEtOSAxMCAtOSAyM3Q5IDIybDQ2IDQ2cTkgOSAyMiA5dDIzIC05bDIyMCAtMjIwbDQ0NCA0NDRxMTAgOSAyMyA5dDIyIC05bDQ2IC00NnE5IC05IDkgLTIydC05IC0yM3pNMTI4IC0xMjhoMTQwOHYxMDI0aC0xNDA4di0xMDI0ek01MTIgMTA4OHYyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtMjg4cTAgLTE0IDkgLTIzDQp0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTEyODAgMTA4OHYyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtMjg4cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0xNjY0IDExNTJ2LTEyODBxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0xNDA4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwdDkwIDM4aDEyOHY5NnEwIDY2IDQ3IDExM3QxMTMgNDdoNjRxNjYgMCAxMTMgLTQ3DQp0NDcgLTExM3YtOTZoMzg0djk2cTAgNjYgNDcgMTEzdDExMyA0N2g2NHE2NiAwIDExMyAtNDd0NDcgLTExM3YtOTZoMTI4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTAiIHVuaWNvZGU9IiYjeGYyNzU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNDQ4IDE1MzZxMjYgMCA0NSAtMTl0MTkgLTQ1di04OTFsNTM2IDQyOXExNyAxNCA0MCAxNHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTM3OWw1MzYgNDI5cTE3IDE0IDQwIDE0cTI2IDAgNDUgLTE5dDE5IC00NXYtMTE1MnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE2NjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNjY0cTAgMjYgMTkgNDV0NDUgMTloMzg0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU5MSIgdW5pY29kZT0iJiN4ZjI3NjsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik01MTIgNDQ4cTY2IDAgMTI4IDE1di02NTVxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY2NTVxNjIgLTE1IDEyOCAtMTV6TTUxMiAxNTM2cTIxMiAwIDM2MiAtMTUwdDE1MCAtMzYydC0xNTAgLTM2MnQtMzYyIC0xNTB0LTM2MiAxNTB0LTE1MCAzNjJ0MTUwIDM2MnQzNjIgMTUwek01MTIgMTMxMnExNCAwIDIzIDl0OSAyM3QtOSAyM3QtMjMgOXEtMTQ2IDAgLTI0OSAtMTAzdC0xMDMgLTI0OQ0KcTAgLTE0IDkgLTIzdDIzIC05dDIzIDl0OSAyM3EwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTkyIiB1bmljb2RlPSImI3hmMjc3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NDUgMTIzOXExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTE0MSAtMTQxcS0yOCAtMjggLTY4IC0yOGgtMTM0NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDU3NnY2NHEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTY0aDUxMnE0MCAwIDY4IC0yOHpNNzY4IDMyMGgyNTZ2LTUxMnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djUxMnpNMTYwMCA3NjgNCnEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI1NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEzNDRxLTQwIDAgLTY4IDI4bC0xNDEgMTQxcS0xMCAxMCAtMTAgMjN0MTAgMjNsMTQxIDE0MXEyOCAyOCA2OCAyOGg1MTJ2MTkyaDI1NnYtMTkyaDU3NnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTMiIHVuaWNvZGU9IiYjeGYyNzg7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMjAyMCAxNTI1cTI4IC0yMCAyOCAtNTN2LTE0MDhxMCAtMjAgLTExIC0zNnQtMjkgLTIzbC02NDAgLTI1NnEtMjQgLTExIC00OCAwbC02MTYgMjQ2bC02MTYgLTI0NnEtMTAgLTUgLTI0IC01cS0xOSAwIC0zNiAxMXEtMjggMjAgLTI4IDUzdjE0MDhxMCAyMCAxMSAzNnQyOSAyM2w2NDAgMjU2cTI0IDExIDQ4IDBsNjE2IC0yNDZsNjE2IDI0NnEzMiAxMyA2MCAtNnpNNzM2IDEzOTB2LTEyNzBsNTc2IC0yMzB2MTI3MHpNMTI4IDExNzMNCnYtMTI3MGw1NDQgMjE3djEyNzB6TTE5MjAgMTA3djEyNzBsLTU0NCAtMjE3di0xMjcweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU5NCIgdW5pY29kZT0iJiN4ZjI3OTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik01MTIgMTUzNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE0NzJxMCAtMjAgLTE3IC0yOGwtNDgwIC0yNTZxLTcgLTQgLTE1IC00cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTQ3MnEwIDIwIDE3IDI4bDQ4MCAyNTZxNyA0IDE1IDR6TTE3NjAgMTUzNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE0NzJxMCAtMjAgLTE3IC0yOGwtNDgwIC0yNTZxLTcgLTQgLTE1IC00cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTQ3Mg0KcTAgMjAgMTcgMjhsNDgwIDI1NnE3IDQgMTUgNHpNNjQwIDE1MzZxOCAwIDE0IC0zbDUxMiAtMjU2cTE4IC0xMCAxOCAtMjl2LTE0NzJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41cS04IDAgLTE0IDNsLTUxMiAyNTZxLTE4IDEwIC0xOCAyOXYxNDcycTAgMTMgOS41IDIyLjV0MjIuNSA5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTk1IiB1bmljb2RlPSImI3hmMjdhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTY0MCA2NDBxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMjQgNjQwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNDA4IDY0MHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNQ0KdC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNzkyIDY0MHEwIC0xNzQgLTEyMCAtMzIxLjV0LTMyNiAtMjMzdC00NTAgLTg1LjVxLTExMCAwIC0yMTEgMThxLTE3MyAtMTczIC00MzUgLTIyOXEtNTIgLTEwIC04NiAtMTNxLTEyIC0xIC0yMiA2dC0xMyAxOHEtNCAxNSAyMCAzN3E1IDUgMjMuNSAyMS41dDI1LjUgMjMuNXQyMy41IDI1LjV0MjQgMzEuNXQyMC41IDM3DQp0MjAgNDh0MTQuNSA1Ny41dDEyLjUgNzIuNXEtMTQ2IDkwIC0yMjkuNSAyMTYuNXQtODMuNSAyNjkuNXEwIDE3NCAxMjAgMzIxLjV0MzI2IDIzM3Q0NTAgODUuNXQ0NTAgLTg1LjV0MzI2IC0yMzN0MTIwIC0zMjEuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTYiIHVuaWNvZGU9IiYjeGYyN2I7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjQwIDY0MHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTEwMjQgNjQwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTQwOCA2NDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjUNCnQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTg5NiAxMTUycS0yMDQgMCAtMzgxLjUgLTY5LjV0LTI4MiAtMTg3LjV0LTEwNC41IC0yNTVxMCAtMTEyIDcxLjUgLTIxMy41dDIwMS41IC0xNzUuNWw4NyAtNTBsLTI3IC05NnEtMjQgLTkxIC03MCAtMTcycTE1MiA2MyAyNzUgMTcxbDQzIDM4bDU3IC02cTY5IC04IDEzMCAtOHEyMDQgMCAzODEuNSA2OS41dDI4MiAxODcuNQ0KdDEwNC41IDI1NXQtMTA0LjUgMjU1dC0yODIgMTg3LjV0LTM4MS41IDY5LjV6TTE3OTIgNjQwcTAgLTE3NCAtMTIwIC0zMjEuNXQtMzI2IC0yMzN0LTQ1MCAtODUuNXEtNzAgMCAtMTQ1IDhxLTE5OCAtMTc1IC00NjAgLTI0MnEtNDkgLTE0IC0xMTQgLTIyaC01cS0xNSAwIC0yNyAxMC41dC0xNiAyNy41djFxLTMgNCAtMC41IDEydDIgMTB0NC41IDkuNWw2IDl0NyA4LjV0OCA5cTcgOCAzMSAzNC41dDM0LjUgMzh0MzEgMzkuNXQzMi41IDUxDQp0MjcgNTl0MjYgNzZxLTE1NyA4OSAtMjQ3LjUgMjIwdC05MC41IDI4MXEwIDEzMCA3MSAyNDguNXQxOTEgMjA0LjV0Mjg2IDEzNi41dDM0OCA1MC41dDM0OCAtNTAuNXQyODYgLTEzNi41dDE5MSAtMjA0LjV0NzEgLTI0OC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU5NyIgdW5pY29kZT0iJiN4ZjI3YzsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik01MTIgMzQ1bDUxMiAyOTV2LTU5MWwtNTEyIC0yOTZ2NTkyek0wIDY0MHYtNTkxbDUxMiAyOTZ6TTUxMiAxNTI3di01OTFsLTUxMiAtMjk2djU5MXpNNTEyIDkzNmw1MTIgMjk1di01OTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTk4IiB1bmljb2RlPSImI3hmMjdkOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3MDkgMTAxOHEtMTAgLTIzNiAtMzMyIC02NTFxLTMzMyAtNDMxIC01NjIgLTQzMXEtMTQyIDAgLTI0MCAyNjNxLTQ0IDE2MCAtMTMyIDQ4MnEtNzIgMjYyIC0xNTcgMjYycS0xOCAwIC0xMjcgLTc2bC03NyA5OHEyNCAyMSAxMDggOTYuNXQxMzAgMTE1LjVxMTU2IDEzOCAyNDEgMTQ2cTk1IDkgMTUzIC01NS41dDgxIC0yMDMuNXE0NCAtMjg3IDY2IC0zNzNxNTUgLTI0OSAxMjAgLTI0OXE1MSAwIDE1NCAxNjFxMTAxIDE2MSAxMDkgMjQ2DQpxMTMgMTM5IC0xMDkgMTM5cS01NyAwIC0xMjEgLTI2cTEyMCAzOTMgNDU5IDM4MnEyNTEgLTggMjM2IC0zMjZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMjdlIiB1bmljb2RlPSImI3hmMjdlOyIgDQpkPSJNMCAxNDA4aDE1MzZ2LTE1MzZoLTE1MzZ2MTUzNnpNMTA4NSAyOTNsLTIyMSA2MzFsMjIxIDI5N2gtNjM0bDIyMSAtMjk3bC0yMjEgLTYzMWwzMTcgLTMwNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyODAiIHVuaWNvZGU9IiYjeGYyODA7IiANCmQ9Ik0wIDE0MDhoMTUzNnYtMTUzNmgtMTUzNnYxNTM2ek05MDggMTA4OGwtMTIgLTMzbDc1IC04M2wtMzEgLTExNGwyNSAtMjVsMTA3IDU3bDEwNyAtNTdsMjUgMjVsLTMxIDExNGw3NSA4M2wtMTIgMzNoLTk1bC01MyA5NmgtMzJsLTUzIC05NmgtOTV6TTY0MSA5MjVxMzIgMCA0NC41IC0xNnQxMS41IC02M2wxNzQgMjFxMCA1NSAtMTcuNSA5Mi41dC01MC41IDU2dC02OSAyNS41dC04NSA3cS0xMzMgMCAtMTk5IC01Ny41dC02NiAtMTgyLjV2LTcyDQpoLTk2di0xMjhoNzZxMjAgMCAyMCAtOHYtMzgycTAgLTE0IC01IC0yMHQtMTggLTdsLTczIC03di04OGg0NDh2ODZsLTE0OSAxNHEtNiAxIC04LjUgMS41dC0zLjUgMi41dC0wLjUgNHQxIDd0MC41IDEwdjM4N2gxOTFsMzggMTI4aC0yMzFxLTYgMCAtMiA2dDQgOXY4MHEwIDI3IDEuNSA0MC41dDcuNSAyOHQxOS41IDIwdDM2LjUgNS41ek0xMjQ4IDk2djg2bC01NCA5cS03IDEgLTkuNSAyLjV0LTIuNSAzdDEgNy41dDEgMTJ2NTIwaC0yNzUNCmwtMjMgLTEwMWw4MyAtMjJxMjMgLTcgMjMgLTI3di0zNzBxMCAtMTQgLTYgLTE4LjV0LTIwIC02LjVsLTcwIC05di04NmgzNTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMjgxIiB1bmljb2RlPSImI3hmMjgxOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNjkwcTAgLTU4IC0yOS41IC0xMDUuNXQtNzkuNSAtNzIuNXExMiAtNDYgMTIgLTk2cTAgLTE1NSAtMTA2LjUgLTI4N3QtMjkwLjUgLTIwOC41dC00MDAgLTc2LjV0LTM5OS41IDc2LjV0LTI5MCAyMDguNXQtMTA2LjUgMjg3cTAgNDcgMTEgOTRxLTUxIDI1IC04MiA3My41dC0zMSAxMDYuNXEwIDgyIDU4IDE0MC41dDE0MSA1OC41cTg1IDAgMTQ1IC02M3EyMTggMTUyIDUxNSAxNjJsMTE2IDUyMXEzIDEzIDE1IDIxdDI2IDUNCmwzNjkgLTgxcTE4IDM3IDU0IDU5LjV0NzkgMjIuNXE2MiAwIDEwNiAtNDMuNXQ0NCAtMTA1LjV0LTQ0IC0xMDZ0LTEwNiAtNDR0LTEwNS41IDQzLjV0LTQzLjUgMTA1LjVsLTMzNCA3NGwtMTA0IC00NzJxMzAwIC05IDUxOSAtMTYwcTU4IDYxIDE0MyA2MXE4MyAwIDE0MSAtNTguNXQ1OCAtMTQwLjV6TTQxOCA0OTFxMCAtNjIgNDMuNSAtMTA2dDEwNS41IC00NHQxMDYgNDR0NDQgMTA2dC00NCAxMDUuNXQtMTA2IDQzLjVxLTYxIDAgLTEwNSAtNDQNCnQtNDQgLTEwNXpNMTIyOCAxMzZxMTEgMTEgMTEgMjZ0LTExIDI2cS0xMCAxMCAtMjUgMTB0LTI2IC0xMHEtNDEgLTQyIC0xMjEgLTYydC0xNjAgLTIwdC0xNjAgMjB0LTEyMSA2MnEtMTEgMTAgLTI2IDEwdC0yNSAtMTBxLTExIC0xMCAtMTEgLTI1LjV0MTEgLTI2LjVxNDMgLTQzIDExOC41IC02OHQxMjIuNSAtMjkuNXQ5MSAtNC41dDkxIDQuNXQxMjIuNSAyOS41dDExOC41IDY4ek0xMjI1IDM0MXE2MiAwIDEwNS41IDQ0dDQzLjUgMTA2DQpxMCA2MSAtNDQgMTA1dC0xMDUgNDRxLTYyIDAgLTEwNiAtNDMuNXQtNDQgLTEwNS41dDQ0IC0xMDZ0MTA2IC00NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MDIiIHVuaWNvZGU9IiYjeGYyODI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjkgNzQxaDFxMTYgMTI2IDU4LjUgMjQxLjV0MTE1IDIxN3QxNjcuNSAxNzZ0MjIzLjUgMTE3LjV0Mjc2LjUgNDNxMjMxIDAgNDE0IC0xMDUuNXQyOTQgLTMwMy41cTEwNCAtMTg3IDEwNCAtNDQydi0xODhoLTExMjVxMSAtMTExIDUzLjUgLTE5Mi41dDEzNi41IC0xMjIuNXQxODkuNSAtNTd0MjEzIC0zdDIwOCA0Ni41dDE3My41IDg0LjV2LTM3N3EtOTIgLTU1IC0yMjkuNSAtOTJ0LTMxMi41IC0zOHQtMzE2IDUzDQpxLTE4OSA3MyAtMzExLjUgMjQ5dC0xMjQuNSAzNzJxLTMgMjQyIDExMSA0MTJ0MzI1IDI2OHEtNDggLTYwIC03OCAtMTI1LjV0LTQ2IC0xNTkuNWg2MzVxOCA3NyAtOCAxNDB0LTQ3IDEwMS41dC03MC41IDY2LjV0LTgwLjUgNDF0LTc1IDIwLjV0LTU2IDguNWwtMjIgMXEtMTM1IC01IC0yNTkuNSAtNDQuNXQtMjIzLjUgLTEwNC41dC0xNzYgLTE0MC41dC0xMzggLTE2My41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYwMyIgdW5pY29kZT0iJiN4ZjI4MzsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0wIDMydjYwOGgyMzA0di02MDhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE5ODRxLTY2IDAgLTExMyA0N3QtNDcgMTEzek02NDAgMjU2di0xMjhoMzg0djEyOGgtMzg0ek0yNTYgMjU2di0xMjhoMjU2djEyOGgtMjU2ek0yMTQ0IDE0MDhxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTIyNGgtMjMwNHYyMjRxMCA2NiA0NyAxMTN0MTEzIDQ3aDE5ODR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjA0IiB1bmljb2RlPSImI3hmMjg0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE1ODQgMjQ2bC0yMTggMTExcS03NCAtMTIwIC0xOTYuNSAtMTg5dC0yNjMuNSAtNjlxLTE0NyAwIC0yNzEgNzJ0LTE5NiAxOTZ0LTcyIDI3MHEwIDExMCA0Mi41IDIwOS41dDExNSAxNzJ0MTcyIDExNXQyMDkuNSA0Mi41cTEzMSAwIDI0Ny41IC02MC41dDE5Mi41IC0xNjguNWwyMTUgMTI1cS0xMTAgMTY5IC0yODYuNSAyNjV0LTM3OC41IDk2cS0xNjEgMCAtMzA4IC02M3QtMjUzIC0xNjl0LTE2OSAtMjUzdC02MyAtMzA4dDYzIC0zMDgNCnQxNjkgLTI1M3QyNTMgLTE2OXQzMDggLTYzcTIxMyAwIDM5Ny41IDEwN3QyOTAuNSAyOTJ6TTEwMzAgNjQzbDY5MyAtMzUycS0xMTYgLTI1MyAtMzM0LjUgLTQwMHQtNDkyLjUgLTE0N3EtMTgyIDAgLTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxcTI2MCAwIDQ3MC41IC0xMzMuNXQzMzUuNSAtMzY2LjV6TTE1NDMgNjQwaC0zOXYtMTYwaC05NnYzNTJoMTM2cTMyIDAgNTQuNSAtMjANCnQyOC41IC00OHQxIC01NnQtMjcuNSAtNDh0LTU3LjUgLTIweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjI4NSIgdW5pY29kZT0iJiN4ZjI4NTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNDI3IDgyN2wtNjE0IDM4Nmw5MiAxNTFoODU1ek00MDUgNTYybC0xODQgMTE2djg1OGwxMTgzIC03NDN6TTE0MjQgNjk3bDE0NyAtOTV2LTg1OGwtNTMyIDMzNXpNMTM4NyA3MThsLTUwMCAtODAyaC04NTVsMzU2IDU3MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyODYiIHVuaWNvZGU9IiYjeGYyODY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjQwIDUyOHYyMjRxMCAxNiAtMTYgMTZoLTk2cS0xNiAwIC0xNiAtMTZ2LTIyNHEwIC0xNiAxNiAtMTZoOTZxMTYgMCAxNiAxNnpNMTE1MiA1Mjh2MjI0cTAgMTYgLTE2IDE2aC05NnEtMTYgMCAtMTYgLTE2di0yMjRxMCAtMTYgMTYgLTE2aDk2cTE2IDAgMTYgMTZ6TTE2NjQgNDk2di03NTJoLTY0MHYzMjBxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZ2LTMyMGgtNjQwdjc1MnEwIDE2IDE2IDE2aDk2DQpxMTYgMCAxNiAtMTZ2LTExMmgxMjh2NjI0cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ2LTExMmgxMjh2MTEycTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ2LTExMmgxMjh2MTEycTAgNiAyLjUgOS41dDguNSA1dDkuNSAydDExLjUgMHQ5IC0wLjV2MzkxcS0zMiAxNSAtMzIgNTBxMCAyMyAxNi41IDM5dDM4LjUgMTZ0MzguNSAtMTZ0MTYuNSAtMzlxMCAtMzUgLTMyIC01MHYtMTdxNDUgMTAgODMgMTBxMjEgMCA1OS41IC03LjV0NTQuNSAtNy41DQpxMTcgMCA0NyA3LjV0MzcgNy41cTE2IDAgMTYgLTE2di0yMTBxMCAtMTUgLTM1IC0yMS41dC02MiAtNi41cS0xOCAwIC01NC41IDcuNXQtNTUuNSA3LjVxLTQwIDAgLTkwIC0xMnYtMTMzcTEgMCA5IDAuNXQxMS41IDB0OS41IC0ydDguNSAtNXQyLjUgLTkuNXYtMTEyaDEyOHYxMTJxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnYtMTEyaDEyOHYxMTJxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnYtNjI0aDEyOHYxMTJxMCAxNiAxNiAxNmg5Ng0KcTE2IDAgMTYgLTE2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYwNyIgdW5pY29kZT0iJiN4ZjI4NzsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0yMjg4IDczMXExNiAtOCAxNiAtMjd0LTE2IC0yN2wtMzIwIC0xOTJxLTggLTUgLTE2IC01cS05IDAgLTE2IDRxLTE2IDEwIC0xNiAyOHYxMjhoLTg1OHEzNyAtNTggODMgLTE2NXExNiAtMzcgMjQuNSAtNTV0MjQgLTQ5dDI3IC00N3QyNyAtMzR0MzEuNSAtMjZ0MzMgLThoOTZ2OTZxMCAxNCA5IDIzdDIzIDloMzIwcTE0IDAgMjMgLTl0OSAtMjN2LTMyMHEwIC0xNCAtOSAtMjN0LTIzIC05aC0zMjBxLTE0IDAgLTIzIDl0LTkgMjN2OTZoLTk2DQpxLTMyIDAgLTYxIDEwdC01MSAyMy41dC00NSA0MC41dC0zNyA0NnQtMzMuNSA1N3QtMjguNSA1Ny41dC0yOCA2MC41cS0yMyA1MyAtMzcgODEuNXQtMzYgNjV0LTQ0LjUgNTMuNXQtNDYuNSAxN2gtMzYwcS0yMiAtODQgLTkxIC0xMzh0LTE1NyAtNTRxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXQ3NSAxODF0MTgxIDc1cTg4IDAgMTU3IC01NHQ5MSAtMTM4aDEwNHEyNCAwIDQ2LjUgMTd0NDQuNSA1My41dDM2IDY1dDM3IDgxLjVxMTkgNDEgMjggNjAuNQ0KdDI4LjUgNTcuNXQzMy41IDU3dDM3IDQ2dDQ1IDQwLjV0NTEgMjMuNXQ2MSAxMGgxMDdxMjEgNTcgNzAgOTIuNXQxMTEgMzUuNXE4MCAwIDEzNiAtNTZ0NTYgLTEzNnQtNTYgLTEzNnQtMTM2IC01NnEtNjIgMCAtMTExIDM1LjV0LTcwIDkyLjVoLTEwN3EtMTcgMCAtMzMgLTh0LTMxLjUgLTI2dC0yNyAtMzR0LTI3IC00N3QtMjQgLTQ5dC0yNC41IC01NXEtNDYgLTEwNyAtODMgLTE2NWgxMTE0djEyOHEwIDE4IDE2IDI4dDMyIC0xeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYwOCIgdW5pY29kZT0iJiN4ZjI4ODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMTUwIDc3NHEwIC01NiAtMzkuNSAtOTV0LTk1LjUgLTM5aC0yNTN2MjY5aDI1M3E1NiAwIDk1LjUgLTM5LjV0MzkuNSAtOTUuNXpNMTMyOSA3NzRxMCAxMzAgLTkxLjUgMjIydC0yMjIuNSA5MmgtNDMzdi04OTZoMTgwdjI2OWgyNTNxMTMwIDAgMjIyIDkxLjV0OTIgMjIxLjV6TTE3OTIgNjQwcTAgLTE4MiAtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OA0KdDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MDkiIHVuaWNvZGU9IiYjeGYyODk7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTY0NSA0MzhxMCA1OSAtMzQgMTA2LjV0LTg3IDY4LjVxLTcgLTQ1IC0yMyAtOTJxLTcgLTI0IC0yNy41IC0zOHQtNDQuNSAtMTRxLTEyIDAgLTI0IDNxLTMxIDEwIC00NSAzOC41dC00IDU4LjVxMjMgNzEgMjMgMTQzcTAgMTIzIC02MSAyMjcuNXQtMTY2IDE2NS41dC0yMjggNjFxLTEzNCAwIC0yNDcgLTczdC0xNjcgLTE5NHExMDggLTI4IDE4OCAtMTA2cTIyIC0yMyAyMiAtNTV0LTIyIC01NHQtNTQgLTIydC01NSAyMg0KcS03NSA3NSAtMTgwIDc1cS0xMDYgMCAtMTgxIC03NC41dC03NSAtMTgwLjV0NzUgLTE4MC41dDE4MSAtNzQuNWgxMDQ2cTc5IDAgMTM0LjUgNTUuNXQ1NS41IDEzMy41ek0xNzk4IDQzOHEwIC0xNDIgLTEwMC41IC0yNDJ0LTI0Mi41IC0xMDBoLTEwNDZxLTE2OSAwIC0yODkgMTE5LjV0LTEyMCAyODguNXEwIDE1MyAxMDAgMjY3dDI0OSAxMzZxNjIgMTg0IDIyMSAyOTh0MzU0IDExNHEyMzUgMCA0MDguNSAtMTU4LjV0MTk2LjUgLTM4OS41DQpxMTE2IC0yNSAxOTIuNSAtMTE4LjV0NzYuNSAtMjE0LjV6TTIwNDggNDM4cTAgLTE3NSAtOTcgLTMxOXEtMjMgLTMzIC02NCAtMzNxLTI0IDAgLTQzIDEzcS0yNiAxNyAtMzIgNDguNXQxMiA1Ny41cTcxIDEwNCA3MSAyMzN0LTcxIDIzM3EtMTggMjYgLTEyIDU3dDMyIDQ5dDU3LjUgMTEuNXQ0OS41IC0zMi41cTk3IC0xNDIgOTcgLTMxOHpNMjMwNCA0MzhxMCAtMjQ0IC0xMzQgLTQ0M3EtMjMgLTM0IC02NCAtMzRxLTIzIDAgLTQyIDEzDQpxLTI2IDE4IC0zMi41IDQ5dDExLjUgNTdxMTA4IDE2NCAxMDggMzU4cTAgMTk1IC0xMDggMzU3cS0xOCAyNiAtMTEuNSA1Ny41dDMyLjUgNDguNXEyNiAxOCA1NyAxMnQ0OSAtMzNxMTM0IC0xOTggMTM0IC00NDJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjEwIiB1bmljb2RlPSImI3hmMjhhOyIgDQpkPSJNMTUwMCAtMTNxMCAtODkgLTYzIC0xNTIuNXQtMTUzIC02My41dC0xNTMuNSA2My41dC02My41IDE1Mi41cTAgOTAgNjMuNSAxNTMuNXQxNTMuNSA2My41dDE1MyAtNjMuNXQ2MyAtMTUzLjV6TTEyNjcgMjY4cS0xMTUgLTE1IC0xOTIuNSAtMTAyLjV0LTc3LjUgLTIwNS41cTAgLTc0IDMzIC0xMzhxLTE0NiAtNzggLTM3OSAtNzhxLTEwOSAwIC0yMDEgMjF0LTE1My41IDU0LjV0LTExMC41IDc2LjV0LTc2IDg1dC00NC41IDgzDQp0LTIzLjUgNjYuNXQtNiAzOS41cTAgMTkgNC41IDQyLjV0MTguNSA1NnQzNi41IDU4dDY0IDQzLjV0OTQuNSAxOHQ5NCAtMTcuNXQ2MyAtNDF0MzUuNSAtNTN0MTcuNSAtNDl0NCAtMzMuNXEwIC0zNCAtMjMgLTgxcTI4IC0yNyA4MiAtNDJ0OTMgLTE3bDQwIC0xcTExNSAwIDE5MCA1MXQ3NSAxMzNxMCAyNiAtOSA0OC41dC0zMS41IDQ0LjV0LTQ5LjUgNDF0LTc0IDQ0dC05My41IDQ3LjV0LTExOS41IDU2LjVxLTI4IDEzIC00MyAyMA0KcS0xMTYgNTUgLTE4NyAxMDB0LTEyMi41IDEwMnQtNzIgMTI1LjV0LTIwLjUgMTYyLjVxMCA3OCAyMC41IDE1MHQ2NiAxMzcuNXQxMTIuNSAxMTR0MTY2LjUgNzd0MjIxLjUgMjguNXExMjAgMCAyMjAgLTI2dDE2NC41IC02N3QxMDkuNSAtOTR0NjQgLTEwNS41dDE5IC0xMDMuNXEwIC00NiAtMTUgLTgyLjV0LTM2LjUgLTU4dC00OC41IC0zNnQtNDkgLTE5LjV0LTM5IC01aC04aC0zMnQtMzkgNXQtNDQgMTR0LTQxIDI4dC0zNyA0NnQtMjQgNzAuNQ0KdC0xMCA5Ny41cS0xNSAxNiAtNTkgMjUuNXQtODEgMTAuNWwtMzcgMXEtNjggMCAtMTE3LjUgLTMxdC03MC41IC03MHQtMjEgLTc2cTAgLTI0IDUgLTQzdDI0IC00NnQ1MyAtNTF0OTcgLTUzLjV0MTUwIC01OC41cTc2IC0yNSAxMzguNSAtNTMuNXQxMDkgLTU1LjV0ODMgLTU5dDYwLjUgLTU5LjV0NDEgLTYyLjV0MjYuNSAtNjJ0MTQuNSAtNjMuNXQ2IC02MnQxIC02Mi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxMSIgdW5pY29kZT0iJiN4ZjI4YjsiIA0KZD0iTTcwNCAzNTJ2NTc2cTAgMTQgLTkgMjN0LTIzIDloLTI1NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi01NzZxMCAtMTQgOSAtMjN0MjMgLTloMjU2cTE0IDAgMjMgOXQ5IDIzek0xMTUyIDM1MnY1NzZxMCAxNCAtOSAyM3QtMjMgOWgtMjU2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTU3NnEwIC0xNCA5IC0yM3QyMyAtOWgyNTZxMTQgMCAyMyA5dDkgMjN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzDQp0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjEyIiB1bmljb2RlPSImI3hmMjhjOyIgDQpkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNNzY4IDk2cTE0OCAwIDI3MyA3M3QxOTggMTk4dDczIDI3M3QtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczDQp0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczek04NjQgMzIwcS0xNCAwIC0yMyA5dC05IDIzdjU3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtNTc2cTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnpNNDgwIDMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjEzIiB1bmljb2RlPSImI3hmMjhkOyIgDQpkPSJNMTA4OCAzNTJ2NTc2cTAgMTQgLTkgMjN0LTIzIDloLTU3NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi01NzZxMCAtMTQgOSAtMjN0MjMgLTloNTc2cTE0IDAgMjMgOXQ5IDIzek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjUNCnQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxNCIgdW5pY29kZT0iJiN4ZjI4ZTsiIA0KZD0iTTc2OCAxNDA4cTIwOSAwIDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV0LTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN6TTc2OCA5NnExNDggMCAyNzMgNzN0MTk4IDE5OHQ3MyAyNzN0LTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3Mw0KdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3pNNDgwIDMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloNTc2cTE0IDAgMjMgLTl0OSAtMjN2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC01NzZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE1IiB1bmljb2RlPSImI3hmMjkwOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NTcgMTI4bDM1IC0zMTNxMyAtMjggLTE2IC01MHEtMTkgLTIxIC00OCAtMjFoLTE2NjRxLTI5IDAgLTQ4IDIxcS0xOSAyMiAtMTYgNTBsMzUgMzEzaDE3MjJ6TTE2NjQgOTY3bDg2IC03NzVoLTE3MDhsODYgNzc1cTMgMjQgMjEgNDAuNXQ0MyAxNi41aDI1NnYtMTI4cTAgLTUzIDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41djEyOGgzODR2LTEyOHEwIC01MyAzNy41IC05MC41dDkwLjUgLTM3LjUNCnQ5MC41IDM3LjV0MzcuNSA5MC41djEyOGgyNTZxMjUgMCA0MyAtMTYuNXQyMSAtNDAuNXpNMTI4MCAxMTUydi0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV2MjU2cTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI1NnEwIDE1OSAxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNXQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxNiIgdW5pY29kZT0iJiN4ZjI5MTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xOTIwIDc2OHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXQtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNWgtMTVsLTExNSAtNjYycS04IC00NiAtNDQgLTc2dC04MiAtMzBoLTEyODBxLTQ2IDAgLTgyIDMwdC00NCA3NmwtMTE1IDY2MmgtMTVxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41dDM3LjUgOTAuNXQ5MC41IDM3LjVoMTc5MnpNNDg1IC0zMnEyNiAyIDQzLjUgMjIuNXQxNS41IDQ2LjVsLTMyIDQxNnEtMiAyNiAtMjIuNSA0My41DQp0LTQ2LjUgMTUuNXQtNDMuNSAtMjIuNXQtMTUuNSAtNDYuNWwzMiAtNDE2cTIgLTI1IDIwLjUgLTQydDQzLjUgLTE3aDV6TTg5NiAzMnY0MTZxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXYtNDE2cTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTEyODAgMzJ2NDE2cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV2LTQxNnEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNjMyIDI3bDMyIDQxNg0KcTIgMjYgLTE1LjUgNDYuNXQtNDMuNSAyMi41dC00Ni41IC0xNS41dC0yMi41IC00My41bC0zMiAtNDE2cS0yIC0yNiAxNS41IC00Ni41dDQzLjUgLTIyLjVoNXEyNSAwIDQzLjUgMTd0MjAuNSA0MnpNNDc2IDEyNDRsLTkzIC00MTJoLTEzMmwxMDEgNDQxcTE5IDg4IDg5IDE0My41dDE2MCA1NS41aDE2N3EwIDI2IDE5IDQ1dDQ1IDE5aDM4NHEyNiAwIDQ1IC0xOXQxOSAtNDVoMTY3cTkwIDAgMTYwIC01NS41dDg5IC0xNDMuNWwxMDEgLTQ0MQ0KaC0xMzJsLTkzIDQxMnEtMTEgNDQgLTQ1LjUgNzJ0LTc5LjUgMjhoLTE2N3EwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTM4NHEtMjYgMCAtNDUgMTl0LTE5IDQ1aC0xNjdxLTQ1IDAgLTc5LjUgLTI4dC00NS41IC03MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MTciIHVuaWNvZGU9IiYjeGYyOTI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNOTkxIDUxMmw2NCAyNTZoLTI1NGwtNjQgLTI1NmgyNTR6TTE3NTkgMTAxNmwtNTYgLTIyNHEtNyAtMjQgLTMxIC0yNGgtMzI3bC02NCAtMjU2aDMxMXExNSAwIDI1IC0xMnExMCAtMTQgNiAtMjhsLTU2IC0yMjRxLTUgLTI0IC0zMSAtMjRoLTMyN2wtODEgLTMyOHEtNyAtMjQgLTMxIC0yNGgtMjI0cS0xNiAwIC0yNiAxMnEtOSAxMiAtNiAyOGw3OCAzMTJoLTI1NGwtODEgLTMyOHEtNyAtMjQgLTMxIC0yNGgtMjI1cS0xNSAwIC0yNSAxMg0KcS05IDEyIC02IDI4bDc4IDMxMmgtMzExcS0xNSAwIC0yNSAxMnEtOSAxMiAtNiAyOGw1NiAyMjRxNyAyNCAzMSAyNGgzMjdsNjQgMjU2aC0zMTFxLTE1IDAgLTI1IDEycS0xMCAxNCAtNiAyOGw1NiAyMjRxNSAyNCAzMSAyNGgzMjdsODEgMzI4cTcgMjQgMzIgMjRoMjI0cTE1IDAgMjUgLTEycTkgLTEyIDYgLTI4bC03OCAtMzEyaDI1NGw4MSAzMjhxNyAyNCAzMiAyNGgyMjRxMTUgMCAyNSAtMTJxOSAtMTIgNiAtMjhsLTc4IC0zMTJoMzExDQpxMTUgMCAyNSAtMTJxOSAtMTIgNiAtMjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE4IiB1bmljb2RlPSImI3hmMjkzOyIgDQpkPSJNODQxIDQ4M2wxNDggLTE0OGwtMTQ5IC0xNDl6TTg0MCAxMDk0bDE0OSAtMTQ5bC0xNDggLTE0OHpNNzEwIC0xMzBsNDY0IDQ2NGwtMzA2IDMwNmwzMDYgMzA2bC00NjQgNDY0di02MTFsLTI1NSAyNTVsLTkzIC05M2wzMjAgLTMyMWwtMzIwIC0zMjFsOTMgLTkzbDI1NSAyNTV2LTYxMXpNMTQyOSA2NDBxMCAtMjA5IC0zMiAtMzY1LjV0LTg3LjUgLTI1N3QtMTQwLjUgLTE2Mi41dC0xODEuNSAtODYuNXQtMjE5LjUgLTI0LjUNCnQtMjE5LjUgMjQuNXQtMTgxLjUgODYuNXQtMTQwLjUgMTYyLjV0LTg3LjUgMjU3dC0zMiAzNjUuNXQzMiAzNjUuNXQ4Ny41IDI1N3QxNDAuNSAxNjIuNXQxODEuNSA4Ni41dDIxOS41IDI0LjV0MjE5LjUgLTI0LjV0MTgxLjUgLTg2LjV0MTQwLjUgLTE2Mi41dDg3LjUgLTI1N3QzMiAtMzY1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE5IiB1bmljb2RlPSImI3hmMjk0OyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTU5NiAxMTNsMTczIDE3MmwtMTczIDE3MnYtMzQ0ek01OTYgODIzbDE3MyAxNzJsLTE3MyAxNzJ2LTM0NHpNNjI4IDY0MGwzNTYgLTM1NmwtNTM5IC01NDB2NzExbC0yOTcgLTI5NmwtMTA4IDEwOGwzNzIgMzczbC0zNzIgMzczbDEwOCAxMDhsMjk3IC0yOTZ2NzExbDUzOSAtNTQweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYyMCIgdW5pY29kZT0iJiN4ZjI5NTsiIA0KZD0iTTEyODAgMjU2cTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTB0MzggLTkwdDkwIC0zOHQ5MCAzOHQzOCA5MHpNNTEyIDEwMjRxMCA1MiAtMzggOTB0LTkwIDM4dC05MCAtMzh0LTM4IC05MHQzOCAtOTB0OTAgLTM4dDkwIDM4dDM4IDkwek0xNTM2IDI1NnEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41dC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41DQp0MTEyLjUgLTI3MS41ek0xNDQwIDEzNDRxMCAtMjAgLTEzIC0zOGwtMTA1NiAtMTQwOHEtMTkgLTI2IC01MSAtMjZoLTE2MHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMjAgMTMgMzhsMTA1NiAxNDA4cTE5IDI2IDUxIDI2aDE2MHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTc2OCAxMDI0cTAgLTE1OSAtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjV0LTI3MS41IDExMi41dC0xMTIuNSAyNzEuNXQxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNQ0KdDI3MS41IC0xMTIuNXQxMTIuNSAtMjcxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjIxIiB1bmljb2RlPSImI3hmMjk2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwNCA4MzBsNzkyIC0xMDE1bC04NjggNjMwcS0xOCAxMyAtMjUgMzQuNXQwIDQyLjVsMTAxIDMwOHYwek01NjYgODMwaDY2MGwtMzMwIC0xMDE1djB6TTM2OCAxNDQybDE5OCAtNjEyaC00NjJsMTk4IDYxMnE4IDIzIDMzIDIzdDMzIC0yM3pNMTY4OCA4MzBsMTAxIC0zMDhxNyAtMjEgMCAtNDIuNXQtMjUgLTM0LjVsLTg2OCAtNjMwbDc5MiAxMDE1djB6TTE2ODggODMwaC00NjJsMTk4IDYxMnE4IDIzIDMzIDIzdDMzIC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjIiIHVuaWNvZGU9IiYjeGYyOTc7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMzg0IDcwNGgxNjB2MjI0aC0xNjB2LTIyNHpNMTIyMSAzNzJ2OTJxLTEwNCAtMzYgLTI0MyAtMzhxLTEzNSAtMSAtMjU5LjUgNDYuNXQtMjIwLjUgMTIyLjVsMSAtOTZxODggLTgwIDIxMiAtMTI4LjV0MjcyIC00Ny41cTEyOSAwIDIzOCA0OXpNNjQwIDcwNGg2NDB2MjI0aC02NDB2LTIyNHpNMTc5MiA3MzZxMCAtMTg3IC05OSAtMzUycTg5IC0xMDIgODkgLTIyOXEwIC0xNTcgLTEyOS41IC0yNjh0LTMxMy41IC0xMTENCnEtMTIyIDAgLTIyNSA1Mi41dC0xNjEgMTQwLjVxLTE5IC0xIC01NyAtMXQtNTcgMXEtNTggLTg4IC0xNjEgLTE0MC41dC0yMjUgLTUyLjVxLTE4NCAwIC0zMTMuNSAxMTF0LTEyOS41IDI2OHEwIDEyNyA4OSAyMjlxLTk5IDE2NSAtOTkgMzUycTAgMjA5IDEyMCAzODUuNXQzMjYuNSAyNzkuNXQ0NDkuNSAxMDN0NDQ5LjUgLTEwM3QzMjYuNSAtMjc5LjV0MTIwIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjMiIHVuaWNvZGU9IiYjeGYyOTg7IiANCmQ9Ik01MTUgNjI1di0xMjhoLTI1MnYxMjhoMjUyek01MTUgODgwdi0xMjdoLTI1MnYxMjdoMjUyek0xMjczIDM2OXYtMTI4aC0zNDF2MTI4aDM0MXpNMTI3MyA2MjV2LTEyOGgtNjcydjEyOGg2NzJ6TTEyNzMgODgwdi0xMjdoLTY3MnYxMjdoNjcyek0xNDA4IDIwdjEyNDBxMCA4IC02IDE0dC0xNCA2aC0zMmwtMzc4IC0yNTZsLTIxMCAxNzFsLTIxMCAtMTcxbC0zNzggMjU2aC0zMnEtOCAwIC0xNCAtNnQtNiAtMTR2LTEyNDBxMCAtOCA2IC0xNA0KdDE0IC02aDEyNDBxOCAwIDE0IDZ0NiAxNHpNNTUzIDExMzBsMTg1IDE1MGgtNDA2ek05ODMgMTEzMGwyMjEgMTUwaC00MDZ6TTE1MzYgMTI2MHYtMTI0MHEwIC02MiAtNDMgLTEwNXQtMTA1IC00M2gtMTI0MHEtNjIgMCAtMTA1IDQzdC00MyAxMDV2MTI0MHEwIDYyIDQzIDEwNXQxMDUgNDNoMTI0MHE2MiAwIDEwNSAtNDN0NDMgLTEwNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjQiIHVuaWNvZGU9IiYjeGYyOTk7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODk2IDcyMHEtMTA0IDE5NiAtMTYwIDI3OHEtMTM5IDIwMiAtMzQ3IDMxOHEtMzQgMTkgLTcwIDM2cS04OSA0MCAtOTQgMzJ0MzQgLTM4bDM5IC0zMXE2MiAtNDMgMTEyLjUgLTkzLjV0OTQuNSAtMTE2LjV0NzAuNSAtMTEzdDcwLjUgLTEzMXE5IC0xNyAxMyAtMjVxNDQgLTg0IDg0IC0xNTN0OTggLTE1NHQxMTUuNSAtMTUwdDEzMSAtMTIzLjV0MTQ4LjUgLTkwLjVxMTUzIC02NiAxNTQgLTYwcTEgMyAtNDkgMzdxLTUzIDM2IC04MSA1Nw0KcS03NyA1OCAtMTc5IDIxMXQtMTg1IDMxMHpNNTQ5IDE3N3EtNzYgNjAgLTEzMi41IDEyNXQtOTggMTQzLjV0LTcxIDE1NC41dC01OC41IDE4NnQtNTIgMjA5dC02MC41IDI1MnQtNzYuNSAyODlxMjczIDAgNDk3LjUgLTM2dDM3OSAtOTJ0MjcxIC0xNDQuNXQxODUuNSAtMTcyLjV0MTEwIC0xOTguNXQ1NiAtMTk5LjV0MTIuNSAtMTk4LjV0LTkuNSAtMTczdC0yMCAtMTQzLjV0LTEzIC0xMDdsMzIzIC0zMjdoLTEwNGwtMjgxIDI4NQ0KcS0yMiAtMiAtOTEuNSAtMTR0LTEyMS41IC0xOXQtMTM4IC02dC0xNjAuNSAxN3QtMTY3LjUgNTl0LTE3OSAxMTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI1IiB1bmljb2RlPSImI3hmMjlhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEzNzQgODc5cS02IDI2IC0yOC41IDM5LjV0LTQ4LjUgNy41cS0yNjEgLTYyIC00MDEgLTYydC00MDEgNjJxLTI2IDYgLTQ4LjUgLTcuNXQtMjguNSAtMzkuNXQ3LjUgLTQ4LjV0MzkuNSAtMjguNXExOTQgLTQ2IDMwMyAtNThxLTIgLTE1OCAtMTUuNSAtMjY5dC0yNi41IC0xNTUuNXQtNDEgLTExNS41bC05IC0yMXEtMTAgLTI1IDEgLTQ5dDM2IC0zNHE5IC00IDIzIC00cTQ0IDAgNjAgNDFsOCAyMHE1NCAxMzkgNzEgMjU5aDQyDQpxMTcgLTEyMCA3MSAtMjU5bDggLTIwcTE2IC00MSA2MCAtNDFxMTQgMCAyMyA0cTI1IDEwIDM2IDM0dDEgNDlsLTkgMjFxLTI4IDcxIC00MSAxMTUuNXQtMjYuNSAxNTUuNXQtMTUuNSAyNjlxMTA5IDEyIDMwMyA1OHEyNiA2IDM5LjUgMjguNXQ3LjUgNDguNXpNMTAyNCAxMDI0cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41eg0KTTE2MDAgNjQwcTAgLTE0MyAtNTUuNSAtMjczLjV0LTE1MCAtMjI1dC0yMjUgLTE1MHQtMjczLjUgLTU1LjV0LTI3My41IDU1LjV0LTIyNSAxNTB0LTE1MCAyMjV0LTU1LjUgMjczLjV0NTUuNSAyNzMuNXQxNTAgMjI1dDIyNSAxNTB0MjczLjUgNTUuNXQyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXpNODk2IDE0MDhxLTE1NiAwIC0yOTggLTYxdC0yNDUgLTE2NHQtMTY0IC0yNDV0LTYxIC0yOTh0NjEgLTI5OA0KdDE2NCAtMjQ1dDI0NSAtMTY0dDI5OCAtNjF0Mjk4IDYxdDI0NSAxNjR0MTY0IDI0NXQ2MSAyOTh0LTYxIDI5OHQtMTY0IDI0NXQtMjQ1IDE2NHQtMjk4IDYxek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYyNiIgdW5pY29kZT0iJiN4ZjI5YjsiIA0KZD0iTTE0MzggNzIzcTM0IC0zNSAyOSAtODJsLTQ0IC01NTFxLTQgLTQyIC0zNC41IC03MHQtNzEuNSAtMjhxLTYgMCAtOSAxcS00NCAzIC03Mi41IDM2LjV0LTI1LjUgNzcuNWwzNSA0MjlsLTE0MyAtOHE1NSAtMTEzIDU1IC0yNDBxMCAtMjE2IC0xNDggLTM3MmwtMTM3IDEzN3E5MSAxMDEgOTEgMjM1cTAgMTQ1IC0xMDIuNSAyNDh0LTI0Ny41IDEwM3EtMTM0IDAgLTIzNiAtOTJsLTEzNyAxMzhxMTIwIDExNCAyODQgMTQxbDI2NCAzMDANCmwtMTQ5IDg3bC0xODEgLTE2MXEtMzMgLTMwIC03NyAtMjcuNXQtNzMgMzUuNXQtMjYuNSA3N3QzNC41IDczbDIzOSAyMTNxMjYgMjMgNjAgMjYuNXQ2NCAtMTQuNWw0ODggLTI4M3EzNiAtMjEgNDggLTY4cTE3IC02NyAtMjYgLTExN2wtMjA1IC0yMzJsMzcxIDIwcTQ5IDMgODMgLTMyek0xMjQwIDExODBxLTc0IDAgLTEyNiA1MnQtNTIgMTI2dDUyIDEyNnQxMjYgNTJ0MTI2LjUgLTUydDUyLjUgLTEyNnQtNTIuNSAtMTI2dC0xMjYuNSAtNTJ6DQpNNjEzIC02MnExMDYgMCAxOTYgNjFsMTM5IC0xMzlxLTE0NiAtMTE2IC0zMzUgLTExNnEtMTQ4IDAgLTI3My41IDczdC0xOTguNSAxOTh0LTczIDI3M3EwIDE4OCAxMTYgMzM2bDEzOSAtMTM5cS02MCAtODggLTYwIC0xOTdxMCAtMTQ1IDEwMi41IC0yNDcuNXQyNDcuNSAtMTAyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI3IiB1bmljb2RlPSImI3hmMjljOyIgDQpkPSJNODgwIDMzNnYtMTYwcTAgLTE0IC05IC0yM3QtMjMgLTloLTE2MHEtMTQgMCAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloMTYwcTE0IDAgMjMgLTl0OSAtMjN6TTExMzYgODMycTAgLTUwIC0xNSAtOTB0LTQ1LjUgLTY5dC01MiAtNDR0LTU5LjUgLTM2cS0zMiAtMTggLTQ2LjUgLTI4dC0yNiAtMjR0LTExLjUgLTI5di0zMnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNjBxLTE0IDAgLTIzIDl0LTkgMjN2NjhxMCAzNSAxMC41IDY0LjUNCnQyNCA0Ny41dDM5IDM1LjV0NDEgMjUuNXQ0NC41IDIxcTUzIDI1IDc1IDQzdDIyIDQ5cTAgNDIgLTQzLjUgNzEuNXQtOTUuNSAyOS41cS01NiAwIC05NSAtMjdxLTI5IC0yMCAtODAgLTgzcS05IC0xMiAtMjUgLTEycS0xMSAwIC0xOSA2bC0xMDggODJxLTEwIDcgLTEyIDIwdDUgMjNxMTIyIDE5MiAzNDkgMTkycTEyOSAwIDIzOC41IC04OS41dDEwOS41IC0yMTQuNXpNNzY4IDEyODBxLTEzMCAwIC0yNDguNSAtNTF0LTIwNCAtMTM2LjUNCnQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV0LTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41DQp0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI4IiB1bmljb2RlPSImI3hmMjlkOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTM2NiAxMjI1cS02NCAwIC0xMTAgNDUuNXQtNDYgMTEwLjVxMCA2NCA0NiAxMDkuNXQxMTAgNDUuNXQxMDkuNSAtNDUuNXQ0NS41IC0xMDkuNXEwIC02NSAtNDUuNSAtMTEwLjV0LTEwOS41IC00NS41ek05MTcgNTgzcTAgLTUwIC0zMCAtNjcuNXQtNjMuNSAtNi41dC00Ny41IDM0bC0zNjcgNDM4cS03IDEyIC0xNCAxNS41dC0xMSAxLjVsLTMgLTNxLTcgLTggNCAtMjFsMTIyIC0xMzlsMSAtMzU0bC0xNjEgLTQ1Nw0KcS02NyAtMTkyIC05MiAtMjM0cS0xNSAtMjYgLTI4IC0zMnEtNTAgLTI2IC0xMDMgLTFxLTI5IDEzIC00MS41IDQzdC05LjUgNTdxMiAxNyAxOTcgNjE4bDUgNDE2bC04NSAtMTY0bDM1IC0yMjJxNCAtMjQgLTEgLTQydC0xNCAtMjcuNXQtMTkgLTE2dC0xNyAtNy41bC03IC0ycS0xOSAtMyAtMzQuNSAzdC0yNCAxNnQtMTQgMjJ0LTcuNSAxOS41dC0yIDkuNWwtNDYgMjk5bDIxMSAzODFxMjMgMzQgMTEzIDM0cTc1IDAgMTA3IC00MGw0MjQgLTUyMQ0KcTcgLTUgMTQgLTE3bDMgLTNsLTEgLTFxNyAtMTMgNyAtMjl6TTUxNCA0MzNxNDMgLTExMyA4OC41IC0yMjV0NjkuNSAtMTY4bDI0IC01NXEzNiAtOTMgNDIgLTEyNXExMSAtNzAgLTM2IC05N3EtMzUgLTIyIC02NiAtMTZ0LTUxIDIydC0yOSAzNWgtMXEtNiAxNiAtOCAyNWwtMTI0IDM1MXpNMTMzOCAtMTU5cTMxIC00OSAzMSAtNTdxMCAtNSAtMyAtN3EtOSAtNSAtMTQuNSAwLjV0LTE1LjUgMjZ0LTE2IDMwLjVxLTExNCAxNzIgLTQyMyA2NjENCnEzIC0xIDcgMXQ3IDRsMyAycTExIDkgMTEgMTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI5IiB1bmljb2RlPSImI3hmMjllOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTUwNCA1NDJoMTcxbC0xIDI2NXpNMTUzMCA2NDFxMCA4NyAtNTAuNSAxNDB0LTE0Ni41IDUzaC01NHYtMzg4aDUycTkxIDAgMTQ1IDU3dDU0IDEzOHpNOTU2IDEwMThsMSAtNzU2cTAgLTE0IC05LjUgLTI0dC0yMy41IC0xMGgtMjE2cS0xNCAwIC0yMy41IDEwdC05LjUgMjR2NjJoLTI5MWwtNTUgLTgxcS0xMCAtMTUgLTI4IC0xNWgtMjY3cS0yMSAwIC0zMC41IDE4dDMuNSAzNWw1NTYgNzU3cTkgMTQgMjcgMTRoMzMycTE0IDAgMjQgLTEwDQp0MTAgLTI0ek0xNzgzIDY0MXEwIC0xOTMgLTEyNS41IC0zMDN0LTMyNC41IC0xMTBoLTI3MHEtMTQgMCAtMjQgMTB0LTEwIDI0djc1NnEwIDE0IDEwIDI0dDI0IDEwaDI2OHEyMDAgMCAzMjYgLTEwOXQxMjYgLTMwMnpNMTkzOSA2NDBxMCAtMTEgLTAuNSAtMjl0LTggLTcxLjV0LTIxLjUgLTEwMnQtNDQuNSAtMTA4dC03My41IC0xMDIuNWgtNTFxMzggNDUgNjYuNSAxMDQuNXQ0MS41IDExMnQyMSA5OHQ5IDcyLjVsMSAyN3EwIDggLTAuNSAyMi41DQp0LTcuNSA2MHQtMjAgOTEuNXQtNDEgMTExLjV0LTY2IDEyNC41aDQzcTQxIC00NyA3MiAtMTA3dDQ1LjUgLTExMS41dDIzIC05NnQxMC41IC03MC41ek0yMTIzIDY0MHEwIC0xMSAtMC41IC0yOXQtOCAtNzEuNXQtMjEuNSAtMTAydC00NSAtMTA4dC03NCAtMTAyLjVoLTUxcTM4IDQ1IDY2LjUgMTA0LjV0NDEuNSAxMTJ0MjEgOTh0OSA3Mi41bDEgMjdxMCA4IC0wLjUgMjIuNXQtNy41IDYwdC0xOS41IDkxLjV0LTQwLjUgMTExLjV0LTY2IDEyNC41DQpoNDNxNDEgLTQ3IDcyIC0xMDd0NDUuNSAtMTExLjV0MjMgLTk2dDEwLjUgLTcwLjV6TTIzMDQgNjQwcTAgLTExIC0wLjUgLTI5dC04IC03MS41dC0yMS41IC0xMDJ0LTQ0LjUgLTEwOHQtNzMuNSAtMTAyLjVoLTUxcTM4IDQ1IDY2IDEwNC41dDQxIDExMnQyMSA5OHQ5IDcyLjVsMSAyN3EwIDggLTAuNSAyMi41dC03LjUgNjB0LTE5LjUgOTEuNXQtNDAuNSAxMTEuNXQtNjYgMTI0LjVoNDNxNDEgLTQ3IDcyIC0xMDd0NDUuNSAtMTExLjV0MjMgLTk2DQp0OS41IC03MC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBMCIgdW5pY29kZT0iJiN4ZjJhMDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik02MTcgLTE1M3EwIDExIC0xMyA1OHQtMzEgMTA3dC0yMCA2OXEtMSA0IC01IDI2LjV0LTguNSAzNnQtMTMuNSAyMS41cS0xNSAxNCAtNTEgMTRxLTIzIDAgLTcwIC01LjV0LTcxIC01LjVxLTM0IDAgLTQ3IDExcS02IDUgLTExIDE1LjV0LTcuNSAyMHQtNi41IDI0dC01IDE4LjVxLTM3IDEyOCAtMzcgMjU1dDM3IDI1NXExIDQgNSAxOC41dDYuNSAyNHQ3LjUgMjB0MTEgMTUuNXExMyAxMSA0NyAxMXEyNCAwIDcxIC01LjV0NzAgLTUuNQ0KcTM2IDAgNTEgMTRxOSA4IDEzLjUgMjEuNXQ4LjUgMzZ0NSAyNi41cTIgOSAyMCA2OXQzMSAxMDd0MTMgNThxMCAyMiAtNDMuNSA1Mi41dC03NS41IDQyLjVxLTIwIDggLTQ1IDhxLTM0IDAgLTk4IC0xOHEtNTcgLTE3IC05Ni41IC00MC41dC03MSAtNjZ0LTQ2IC03MHQtNDUuNSAtOTQuNXEtNiAtMTIgLTkgLTE5cS00OSAtMTA3IC02OCAtMjE2dC0xOSAtMjQ0dDE5IC0yNDR0NjggLTIxNnE1NiAtMTIyIDgzIC0xNjFxNjMgLTkxIDE3OSAtMTI3DQpsNiAtMnE2NCAtMTggOTggLTE4cTI1IDAgNDUgOHEzMiAxMiA3NS41IDQyLjV0NDMuNSA1Mi41ek03NzYgNzYwcS0yNiAwIC00NSAxOXQtMTkgNDUuNXQxOSA0NS41cTM3IDM3IDM3IDkwcTAgNTIgLTM3IDkxcS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5cTc1IC03NSA3NSAtMTgxdC03NSAtMTgxcS0yMSAtMTkgLTQ1IC0xOXpNOTU3IDU3OXEtMjcgMCAtNDUgMTlxLTE5IDE5IC0xOSA0NXQxOSA0NXExMTIgMTE0IDExMiAyNzINCnQtMTEyIDI3MnEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXExNTAgLTE1MCAxNTAgLTM2MnQtMTUwIC0zNjJxLTE4IC0xOSAtNDUgLTE5ek0xMTM4IDM5OHEtMjcgMCAtNDUgMTlxLTE5IDE5IC0xOSA0NXQxOSA0NXE5MCA5MSAxMzguNSAyMDh0NDguNSAyNDV0LTQ4LjUgMjQ1dC0xMzguNSAyMDhxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTlxMTA5IC0xMDkgMTY3IC0yNDl0NTggLTI5NHQtNTggLTI5NHQtMTY3IC0yNDkNCnEtMTggLTE5IC00NSAtMTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkExIiB1bmljb2RlPSImI3hmMmExOyIgaG9yaXotYWR2LXg9IjIxNzYiIA0KZD0iTTE5MiAzNTJxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN0LTQ3IDExM3QtMTEzIDQ3ek03MDQgMzUycS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3pNNzA0IDg2NHEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTE0NzIgMzUyDQpxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN0LTQ3IDExM3QtMTEzIDQ3ek0xOTg0IDM1MnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTE0NzIgODY0cS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3pNMTk4NCA4NjQNCnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTE5ODQgMTM3NnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTM4NCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek04OTYgMTkycTAgLTgwIC01NiAtMTM2DQp0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0zODQgNzA0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNODk2IDcwNHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTM4NCAxMjE2cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2DQp0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjY0IDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTg5NiAxMjE2cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMjE3NiAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1Ng0KdC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTE2NjQgNzA0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMjE3NiA3MDRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjY0IDEyMTZxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2DQp0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTIxNzYgMTIxNnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkEyIiB1bmljb2RlPSImI3hmMmEyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyOCAtMTkycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTMyMCAwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTM2NSAzNjVsMjU2IC0yNTZsLTkwIC05MGwtMjU2IDI1NnpNNzA0IDM4NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1eg0KTTE0MTEgNzA0cTAgLTU5IC0xMS41IC0xMDguNXQtMzcuNSAtOTMuNXQtNDQgLTY3LjV0LTUzIC02NC41cS0zMSAtMzUgLTQ1LjUgLTU0dC0zMy41IC01MHQtMjYuNSAtNjR0LTcuNSAtNzRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5cTEwNiAwIDE4MSA3NXQ3NSAxODFxMCA1NyAxMS41IDEwNS41dDM3IDkxdDQzLjUgNjYuNXQ1MiA2M3E0MCA0NiA1OS41IDcyDQp0MzcuNSA3NC41dDE4IDEwMy41cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1cTAgMTE3IDQ1LjUgMjIzLjV0MTIzIDE4NHQxODQgMTIzdDIyMy41IDQ1LjV0MjIzLjUgLTQ1LjV0MTg0IC0xMjN0MTIzIC0xODR0NDUuNSAtMjIzLjV6TTg5NiA1NzZxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDUNCnQ0NSAxOXQ0NSAtMTl0MTkgLTQ1ek0xMTg0IDcwNHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXEwIDkzIC02NS41IDE1OC41dC0xNTguNSA2NS41cS05MiAwIC0xNTggLTY1LjV0LTY2IC0xNTguNXEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXEwIDE0NiAxMDMgMjQ5dDI0OSAxMDN0MjQ5IC0xMDN0MTAzIC0yNDl6TTE1NzggOTkzcTEwIC0yNSAtMSAtNDl0LTM2IC0zNHEtOSAtNCAtMjMgLTQNCnEtMTkgMCAtMzUuNSAxMXQtMjMuNSAzMHEtNjggMTc4IC0yMjQgMjk1cS0yMSAxNiAtMjUgNDJ0MTIgNDdxMTcgMjEgNDMgMjV0NDcgLTEycTE4MyAtMTM3IDI2NiAtMzUxek0xNzg4IDEwNzRxOSAtMjUgLTEuNSAtNDl0LTM1LjUgLTM0cS0xMSAtNCAtMjMgLTRxLTQ0IDAgLTYwIDQxcS05MiAyMzggLTI5NyAzOTNxLTIyIDE2IC0yNS41IDQydDEyLjUgNDdxMTYgMjIgNDIgMjUuNXQ0NyAtMTIuNXEyMzUgLTE3NSAzNDEgLTQ0OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQTMiIHVuaWNvZGU9IiYjeGYyYTM7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTAzMiA1NzZxLTU5IDIgLTg0IDU1cS0xNyAzNCAtNDggNTMuNXQtNjggMTkuNXEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXEwIC01NiAzNiAtODlsMTAgLThxMzQgLTMxIDgyIC0zMXEzNyAwIDY4IDE5LjV0NDggNTMuNXEyNSA1MyA4NCA1NXpNMTYwMCA3MDRxMCA1NiAtMzYgODlsLTEwIDhxLTM0IDMxIC04MiAzMXEtMzcgMCAtNjggLTE5LjV0LTQ4IC01My41cS0yNSAtNTMgLTg0IC01NXE1OSAtMiA4NCAtNTUNCnExNyAtMzQgNDggLTUzLjV0NjggLTE5LjVxNTMgMCA5MC41IDM3LjV0MzcuNSA5MC41ek0xMTc0IDkyNXEtMTcgLTM1IC01NSAtNDh0LTczIDRxLTYyIDMxIC0xMzQgMzFxLTUxIDAgLTk5IC0xN3EzIDAgOS41IDAuNXQ5LjUgMC41cTkyIDAgMTcwLjUgLTUwdDExOC41IC0xMzNxMTcgLTM2IDMuNSAtNzMuNXQtNDkuNSAtNTQuNXEtMTggLTkgLTM5IC05cTIxIDAgMzkgLTlxMzYgLTE3IDQ5LjUgLTU0LjV0LTMuNSAtNzMuNQ0KcS00MCAtODMgLTExOC41IC0xMzN0LTE3MC41IC01MGgtNnEtMTYgMiAtNDQgNGwtMjkwIDI3bC0yMzkgLTEyMHEtMTQgLTcgLTI5IC03cS00MCAwIC01NyAzNWwtMTYwIDMyMHEtMTEgMjMgLTQgNDcuNXQyOSAzNy41bDIwOSAxMTlsMTQ4IDI2N3ExNyAxNTUgOTEuNSAyOTEuNXQxOTUuNSAyMzYuNXEzMSAyNSA3MC41IDIxLjV0NjQuNSAtMzQuNXQyMS41IC03MHQtMzQuNSAtNjVxLTcwIC01OSAtMTE3IC0xMjhxMTIzIDg0IDI2NyAxMDENCnE0MCA1IDcxLjUgLTE5dDM1LjUgLTY0cTUgLTQwIC0xOSAtNzEuNXQtNjQgLTM1LjVxLTg0IC0xMCAtMTU5IC01NXE0NiAxMCA5OSAxMHExMTUgMCAyMTggLTUwcTM2IC0xOCA0OSAtNTUuNXQtNSAtNzMuNXpNMjEzNyAxMDg1bDE2MCAtMzIwcTExIC0yMyA0IC00Ny41dC0yOSAtMzcuNWwtMjA5IC0xMTlsLTE0OCAtMjY3cS0xNyAtMTU1IC05MS41IC0yOTEuNXQtMTk1LjUgLTIzNi41cS0yNiAtMjIgLTYxIC0yMnEtNDUgMCAtNzQgMzUNCnEtMjUgMzEgLTIxLjUgNzB0MzQuNSA2NXE3MCA1OSAxMTcgMTI4cS0xMjMgLTg0IC0yNjcgLTEwMXEtNCAtMSAtMTIgLTFxLTM2IDAgLTYzLjUgMjR0LTMxLjUgNjBxLTUgNDAgMTkgNzEuNXQ2NCAzNS41cTg0IDEwIDE1OSA1NXEtNDYgLTEwIC05OSAtMTBxLTExNSAwIC0yMTggNTBxLTM2IDE4IC00OSA1NS41dDUgNzMuNXExNyAzNSA1NSA0OHQ3MyAtNHE2MiAtMzEgMTM0IC0zMXE1MSAwIDk5IDE3cS0zIDAgLTkuNSAtMC41dC05LjUgLTAuNQ0KcS05MiAwIC0xNzAuNSA1MHQtMTE4LjUgMTMzcS0xNyAzNiAtMy41IDczLjV0NDkuNSA1NC41cTE4IDkgMzkgOXEtMjEgMCAtMzkgOXEtMzYgMTcgLTQ5LjUgNTQuNXQzLjUgNzMuNXE0MCA4MyAxMTguNSAxMzN0MTcwLjUgNTBoNmgxcTE0IC0yIDQyIC00bDI5MSAtMjdsMjM5IDEyMHExNCA3IDI5IDdxNDAgMCA1NyAtMzV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE0IiB1bmljb2RlPSImI3hmMmE0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwNTYgNzA0cTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDVxMCAxNDYgLTEwMyAyNDl0LTI0OSAxMDN0LTI0OSAtMTAzdC0xMDMgLTI0OXEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1cTAgOTMgNjYgMTU4LjV0MTU4IDY1LjV0MTU4IC02NS41dDY2IC0xNTguNXpNODM1IDEyODBxLTExNyAwIC0yMjMuNSAtNDUuNXQtMTg0IC0xMjN0LTEyMyAtMTg0dC00NS41IC0yMjMuNXEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5DQp0MTkgNDVxMCAxODUgMTMxLjUgMzE2LjV0MzE2LjUgMTMxLjV0MzE2LjUgLTEzMS41dDEzMS41IC0zMTYuNXEwIC01NSAtMTggLTEwMy41dC0zNy41IC03NC41dC01OS41IC03MnEtMzQgLTM5IC01MiAtNjN0LTQzLjUgLTY2LjV0LTM3IC05MXQtMTEuNSAtMTA1LjVxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1cS0yNiAwIC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5cTE1OSAwIDI3MS41IDExMi41dDExMi41IDI3MS41cTAgNDEgNy41IDc0DQp0MjYuNSA2NHQzMy41IDUwdDQ1LjUgNTRxMzUgNDEgNTMgNjQuNXQ0NCA2Ny41dDM3LjUgOTMuNXQxMS41IDEwOC41cTAgMTE3IC00NS41IDIyMy41dC0xMjMgMTg0dC0xODQgMTIzdC0yMjMuNSA0NS41ek01OTEgNTYxbDIyNiAtMjI2bC01NzkgLTU3OXEtMTIgLTEyIC0yOSAtMTJ0LTI5IDEybC0xNjggMTY4cS0xMiAxMiAtMTIgMjl0MTIgMjl6TTE2MTIgMTUyNGwxNjggLTE2OHExMiAtMTIgMTIgLTI5dC0xMiAtMzBsLTIzMyAtMjMzDQpsLTI2IC0yNWwtNzEgLTcxcS02NiAxNTMgLTE5NSAyNThsOTEgOTFsMjA3IDIwN3ExMyAxMiAzMCAxMnQyOSAtMTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE1IiB1bmljb2RlPSImI3hmMmE1OyIgDQpkPSJNODY2IDEwMjFxMCAtMjcgLTEzIC05NHEtMTEgLTUwIC0zMS41IC0xNTB0LTMwLjUgLTE1MHEtMiAtMTEgLTQuNSAtMTIuNXQtMTMuNSAtMi41cS0yMCAtMiAtMzEgLTJxLTU4IDAgLTg0IDQ5LjV0LTI2IDExMy41cTAgODggMzUgMTc0dDEwMyAxMjRxMjggMTQgNTEgMTRxMjggMCAzNi41IC0xNi41dDguNSAtNDcuNXpNMTM1MiA1OTdxMCAxNCAtMzkgNzUuNXQtNTIgNjYuNXEtMjEgOCAtMzQgOHEtOTEgMCAtMjI2IC03N2wtMiAyDQpxMyAyMiAyNy41IDEzNXQyNC41IDE3OHEwIDIzMyAtMjQyIDIzM3EtMjQgMCAtNjggLTZxLTk0IC0xNyAtMTY4LjUgLTg5LjV0LTExMS41IC0xNjYuNXQtMzcgLTE4OXEwIC0xNDYgODAuNSAtMjI1dDIyNy41IC03OXEyNSAwIDI1IC0zdC0xIC01cS00IC0zNCAtMjYgLTExN3EtMTQgLTUyIC01MS41IC0xMDF0LTgyLjUgLTQ5cS00MiAwIC00MiA0N3EwIDI0IDEwLjUgNDcuNXQyNSAzOS41dDI5LjUgMjguNXQyNiAyMHQxMSA4LjVxMCAzIC03IDEwDQpxLTI0IDIyIC01OC41IDM2LjV0LTY1LjUgMTQuNXEtMzUgMCAtNjMuNSAtMzR0LTQxIC03NXQtMTIuNSAtNzVxMCAtODggNTEuNSAtMTQydDEzOC41IC01NHE4MiAwIDE1NSA1M3QxMTcuNSAxMjZ0NjUuNSAxNTNxNiAyMiAxNS41IDY2LjV0MTQuNSA2Ni41cTMgMTIgMTQgMThxMTE4IDYwIDIyNyA2MHE0OCAwIDEyNyAtMThxMSAtMSA0IC0xcTUgMCA5LjUgNC41dDQuNSA4LjV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjUNCnQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE2IiB1bmljb2RlPSImI3hmMmE2OyIgaG9yaXotYWR2LXg9IjE1MzUiIA0KZD0iTTc0NCAxMjMxcTAgMjQgLTIgMzguNXQtOC41IDMwdC0yMSAyM3QtMzcuNSA3LjVxLTM5IDAgLTc4IC0yM3EtMTA1IC01OCAtMTU5IC0xOTAuNXQtNTQgLTI2OS41cTAgLTQ0IDguNSAtODUuNXQyNi41IC04MC41dDUyLjUgLTYyLjV0ODEuNSAtMjMuNXE0IDAgMTggLTAuNXQyMCAwdDE2IDN0MTUgOC41dDcgMTZxMTYgNzcgNDggMjMxLjV0NDggMjMxLjVxMTkgOTEgMTkgMTQ2ek0xNDk4IDU3NXEwIC03IC03LjUgLTEzLjV0LTE1LjUgLTYuNQ0KbC02IDFxLTIyIDMgLTYyIDExdC03MiAxMi41dC02MyA0LjVxLTE2NyAwIC0zNTEgLTkzcS0xNSAtOCAtMjEgLTI3cS0xMCAtMzYgLTI0LjUgLTEwNS41dC0yMi41IC0xMDAuNXEtMjMgLTkxIC03MCAtMTc5LjV0LTExMi41IC0xNjQuNXQtMTU0LjUgLTEyM3QtMTg1IC00N3EtMTM1IDAgLTIxNC41IDgzLjV0LTc5LjUgMjE5LjVxMCA1MyAxOS41IDExN3Q2MyAxMTYuNXQ5Ny41IDUyLjVxMzggMCAxMjAgLTMzLjV0ODMgLTYxLjUNCnEwIC0xIC0xNi41IC0xMi41dC0zOS41IC0zMXQtNDYgLTQ0LjV0LTM5IC02MXQtMTYgLTc0cTAgLTMzIDE2LjUgLTUzdDQ4LjUgLTIwcTQ1IDAgODUgMzEuNXQ2Ni41IDc4dDQ4IDEwNS41dDMyLjUgMTA3dDE2IDkwdjlxMCAyIC0zLjUgMy41dC04LjUgMS41aC0xMHQtMTAgLTAuNXQtNiAtMC41cS0yMjcgMCAtMzUyIDEyMi41dC0xMjUgMzQ4LjVxMCAxMDggMzQuNSAyMjF0OTYgMjEwdDE1NiAxNjcuNXQyMDQuNSA4OS41cTUyIDkgMTA2IDkNCnEzNzQgMCAzNzQgLTM2MHEwIC05OCAtMzggLTI3M3QtNDMgLTIxMWwzIC0zcTEwMSA1NyAxODIuNSA4OHQxNjcuNSAzMXEyMiAwIDUzIC0xM3ExOSAtNyA4MCAtMTAyLjV0NjEgLTExNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBNyIgdW5pY29kZT0iJiN4ZjJhNzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik04MzEgODYzcTMyIDAgNTkgLTE4bDIyMiAtMTQ4cTYxIC00MCAxMTAgLTk3bDE0NiAtMTcwcTQwIC00NiAyOSAtMTA2bC03MiAtNDEzcS02IC0zMiAtMjkuNSAtNTMuNXQtNTUuNSAtMjUuNWwtNTI3IC01NmwtMzUyIC0zMmgtOXEtMzkgMCAtNjcuNSAyOHQtMjguNSA2OHEwIDM3IDI3IDY0dDY1IDMybDI2MCAzMmgtNDQ4cS00MSAwIC02OS41IDMwdC0yNi41IDcxcTIgMzkgMzIgNjV0NjkgMjZsNDQyIDFsLTUyMSA2NHEtNDEgNSAtNjYgMzcNCnQtMTkgNzNxNiAzNSAzNC41IDU3LjV0NjUuNSAyMi41aDEwbDQ4MSAtNjBsLTM1MSA5NHEtMzggMTAgLTYyIDQxLjV0LTE4IDY4LjVxNiAzNiAzMyA1OC41dDYyIDIyLjVxNiAwIDIwIC0ybDQ0OCAtOTZsMjE3IC0zN3ExIDAgMyAtMC41dDMgLTAuNXEyMyAwIDMwLjUgMjN0LTEyLjUgMzZsLTE4NiAxMjVxLTM1IDIzIC00MiA2My41dDE4IDczLjVxMjcgMzggNzYgMzh6TTc2MSA2NjFsMTg2IC0xMjVsLTIxOCAzN2wtNSAybC0zNiAzOA0KbC0yMzggMjYycS0xIDEgLTIuNSAzLjV0LTIuNSAzLjVxLTI0IDMxIC0xOC41IDcwdDM3LjUgNjRxMzEgMjMgNjggMTcuNXQ2NCAtMzMuNWwxNDIgLTE0N3EtMiAtMSAtNSAtMy41dC00IC00LjVxLTMyIC00NSAtMjMgLTk5dDU1IC04NXpNMTY0OCAxMTE1bDE1IC0yNjZxNCAtNzMgLTExIC0xNDdsLTQ4IC0yMTlxLTEyIC01OSAtNjcgLTg3bC0xMDYgLTU0cTIgNjIgLTM5IDEwOWwtMTQ2IDE3MHEtNTMgNjEgLTExNyAxMDNsLTIyMiAxNDgNCnEtMzQgMjMgLTc2IDIzcS01MSAwIC04OCAtMzdsLTIzNSAzMTJxLTI1IDMzIC0xOCA3My41dDQxIDYzLjVxMzMgMjIgNzEuNSAxNHQ2Mi41IC00MGwyNjYgLTM1MmwtMjYyIDQ1NXEtMjEgMzUgLTEwLjUgNzV0NDcuNSA1OXEzNSAxOCA3Mi41IDZ0NTcuNSAtNDZsMjQxIC00MjBsLTEzNiAzMzdxLTE1IDM1IC00LjUgNzR0NDQuNSA1NnEzNyAxOSA3NiA2dDU2IC01MWwxOTMgLTQxNWwxMDEgLTE5NnE4IC0xNSAyMyAtMTcuNXQyNyA3LjV0MTEgMjYNCmwtMTIgMjI0cS0yIDQxIDI2IDcxdDY5IDMxcTM5IDAgNjcgLTI4LjV0MzAgLTY3LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE4IiB1bmljb2RlPSImI3hmMmE4OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTMzNSAxODBxLTIgMCAtNiAycS04NiA1NyAtMTY4LjUgMTQ1dC0xMzkuNSAxODBxLTIxIDMwIC0yMSA2OXEwIDkgMiAxOXQ0IDE4dDcgMTh0OC41IDE2dDEwLjUgMTd0MTAgMTV0MTIgMTUuNXQxMSAxNC41cTE4NCAyNTEgNDUyIDM2NXEtMTEwIDE5OCAtMTEwIDIxMXEwIDE5IDE3IDI5cTExNiA2NCAxMjggNjRxMTggMCAyOCAtMTZsMTI0IC0yMjlxOTIgMTkgMTkyIDE5cTI2NiAwIDQ5Ny41IC0xMzcuNXQzNzguNSAtMzY5LjUNCnEyMCAtMzEgMjAgLTY5dC0yMCAtNjlxLTkxIC0xNDIgLTIxOC41IC0yNTMuNXQtMjc4LjUgLTE3NS41cTExMCAtMTk4IDExMCAtMjExcTAgLTIwIC0xNyAtMjlxLTExNiAtNjQgLTEyNyAtNjRxLTE5IDAgLTI5IDE2bC0xMjQgMjI5bC02NCAxMTlsLTQ0NCA4MjBsNyA3cS01OCAtMjQgLTk5IC00N3EzIC01IDEyNyAtMjM0dDI0MyAtNDQ5dDExOSAtMjIzcTAgLTcgLTkgLTlxLTEzIC0zIC03MiAtM3EtNTcgMCAtNjAgN2wtNDU2IDg0MQ0KcS0zOSAtMjggLTgyIC02OHEyNCAtNDMgMjE0IC0zOTMuNXQxOTAgLTM1NC41cTAgLTEwIC0xMSAtMTBxLTE0IDAgLTgyLjUgMjJ0LTcyLjUgMjhsLTEwNiAxOTdsLTIyNCA0MTNxLTQ0IC01MyAtNzggLTEwNnEyIC0zIDE4IC0yNXQyMyAtMzRsMTc2IC0zMjdxMCAtMTAgLTEwIC0xMHpNMTE2NSAyODJsNDkgLTkxcTI3MyAxMTEgNDUwIDM4NXEtMTgwIDI3NyAtNDU5IDM4OXE2NyAtNjQgMTAzIC0xNDguNXQzNiAtMTc2LjUNCnEwIC0xMDYgLTQ3IC0yMDAuNXQtMTMyIC0xNTcuNXpNODQ4IDg5NnEwIC0yMCAxNCAtMzR0MzQgLTE0cTg2IDAgMTQ3IC02MXQ2MSAtMTQ3cTAgLTIwIDE0IC0zNHQzNCAtMTR0MzQgMTR0MTQgMzRxMCAxMjYgLTg5IDIxNXQtMjE1IDg5cS0yMCAwIC0zNCAtMTR0LTE0IC0zNHpNMTIxNCA5NjFsLTkgNGw3IC03eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBOSIgdW5pY29kZT0iJiN4ZjJhOTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMDUwIDQzMHEwIC0yMTUgLTE0NyAtMzc0cS0xNDggLTE2MSAtMzc4IC0xNjFxLTIzMiAwIC0zNzggMTYxcS0xNDcgMTU5IC0xNDcgMzc0cTAgMTQ3IDY4IDI3MC41dDE4OSAxOTYuNXQyNjggNzNxOTYgMCAxODIgLTMxcS0zMiAtNjIgLTM5IC0xMjZxLTY2IDI4IC0xNDMgMjhxLTE2NyAwIC0yODAuNSAtMTIzdC0xMTMuNSAtMjkxcTAgLTE3MCAxMTIuNSAtMjg4LjV0MjgxLjUgLTExOC41dDI4MSAxMTguNXQxMTIgMjg4LjUNCnEwIDg5IC0zMiAxNjZxNjYgMTMgMTIzIDQ5cTQxIC05OCA0MSAtMjEyek04NDYgNjE5cTAgLTE5MiAtNzkuNSAtMzQ1dC0yMzguNSAtMjUzbC0xNCAtMXEtMjkgMCAtNjIgNXE4MyAzMiAxNDYuNSAxMDIuNXQ5OS41IDE1NC41dDU4LjUgMTg5dDMwIDE5Mi41dDcuNSAxNzguNXEwIDY5IC0zIDEwM3E1NSAtMTYwIDU1IC0zMjZ6TTc5MSA5NDd2LTJxLTczIDIxNCAtMjA2IDQ0MHE4OCAtNTkgMTQyLjUgLTE4Ni41dDYzLjUgLTI1MS41eg0KTTEwMzUgNzQ0cS04MyAwIC0xNjAgNzVxMjE4IDEyMCAyOTAgMjQ3cTE5IDM3IDIxIDU2cS00MiAtOTQgLTEzOS41IC0xNjYuNXQtMjA0LjUgLTk3LjVxLTM1IDU0IC0zNSAxMTNxMCAzNyAxNyA3OXQ0MyA2OHE0NiA0NCAxNTcgNzRxNTkgMTYgMTA2IDU4LjV0NzQgMTAwLjVxNzQgLTEwNSA3NCAtMjUzcTAgLTEwOSAtMjQgLTE3MHEtMzIgLTc3IC04OC41IC0xMzAuNXQtMTMwLjUgLTUzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkFBIiB1bmljb2RlPSImI3hmMmFhOyIgDQpkPSJNMTA1MCA0OTVxMCA3OCAtMjggMTQ3cS00MSAtMjUgLTg1IC0zNHEyMiAtNTAgMjIgLTExNHEwIC0xMTcgLTc3IC0xOTguNXQtMTkzIC04MS41dC0xOTMuNSA4MS41dC03Ny41IDE5OC41cTAgMTE1IDc4IDE5OS41dDE5MyA4NC41cTUzIDAgOTggLTE5cTQgNDMgMjcgODdxLTYwIDIxIC0xMjUgMjFxLTE1NCAwIC0yNTcuNSAtMTA4LjV0LTEwMy41IC0yNjMuNXQxMDMuNSAtMjYxdDI1Ny41IC0xMDZ0MjU3LjUgMTA2LjV0MTAzLjUgMjYwLjV6DQpNODcyIDg1MHEyIC0yNCAyIC03MXEwIC02MyAtNSAtMTIzdC0yMC41IC0xMzIuNXQtNDAuNSAtMTMwdC02OC41IC0xMDZ0LTEwMC41IC03MC41cTIxIC0zIDQyIC0zaDEwcTIxOSAxMzkgMjE5IDQxMXEwIDExNiAtMzggMjI1ek04NzIgODUwcS00IDgwIC00NCAxNzEuNXQtOTggMTMwLjVxOTIgLTE1NiAxNDIgLTMwMnpNMTIwNyA5NTVxMCAxMDIgLTUxIDE3NHEtNDEgLTg2IC0xMjQgLTEwOXEtNjkgLTE5IC0xMDkgLTUzLjV0LTQwIC05OS41DQpxMCAtNDAgMjQgLTc3cTc0IDE3IDE0MC41IDY3dDk1LjUgMTE1cS00IC01MiAtNzQuNSAtMTExLjV0LTEzOC41IC05Ny41cTUyIC01MiAxMTAgLTUycTUxIDAgOTAgMzd0NjAgOTBxMTcgNDIgMTcgMTE3ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNQ0KdDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBQiIgdW5pY29kZT0iJiN4ZjJhYjsiIA0KZD0iTTEyNzkgMzg4cTAgMjIgLTIyIDI3cS02NyAxNSAtMTE4IDU5dC04MCAxMDhxLTcgMTkgLTcgMjVxMCAxNSAxOS41IDI2dDQzIDE3dDQzIDIwLjV0MTkuNSAzNi41cTAgMTkgLTE4LjUgMzEuNXQtMzguNSAxMi41cS0xMiAwIC0zMiAtOHQtMzEgLThxLTQgMCAtMTIgMnE1IDk1IDUgMTE0cTAgNzkgLTE3IDExNHEtMzYgNzggLTEwMyAxMjEuNXQtMTUyIDQzLjVxLTE5OSAwIC0yNzUgLTE2NXEtMTcgLTM1IC0xNyAtMTE0cTAgLTE5IDUgLTExNA0KcS00IC0yIC0xNCAtMnEtMTIgMCAtMzIgNy41dC0zMCA3LjVxLTIxIDAgLTM4LjUgLTEydC0xNy41IC0zMnEwIC0yMSAxOS41IC0zNS41dDQzIC0yMC41dDQzIC0xN3QxOS41IC0yNnEwIC02IC03IC0yNXEtNjQgLTEzOCAtMTk4IC0xNjdxLTIyIC01IC0yMiAtMjdxMCAtNDYgMTM3IC02OHEyIC01IDYgLTI2dDExLjUgLTMwLjV0MjMuNSAtOS41cTEyIDAgMzcuNSA0LjV0MzkuNSA0LjVxMzUgMCA2NyAtMTV0NTQgLTMyLjV0NTcuNSAtMzIuNQ0KdDc2LjUgLTE1cTQzIDAgNzkgMTV0NTcuNSAzMi41dDUzLjUgMzIuNXQ2NyAxNXExNCAwIDM5LjUgLTR0MzguNSAtNHExNiAwIDIzIDEwdDExIDMwdDYgMjVxMTM3IDIyIDEzNyA2OHpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41DQp0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQUMiIHVuaWNvZGU9IiYjeGYyYWM7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNODQ4IDE0MDhxMTM0IDEgMjQwLjUgLTY4LjV0MTYzLjUgLTE5Mi41cTI3IC01OCAyNyAtMTc5cTAgLTQ3IC05IC0xOTFxMTQgLTcgMjggLTdxMTggMCA1MSAxMy41dDUxIDEzLjVxMjkgMCA1NiAtMTh0MjcgLTQ2cTAgLTMyIC0zMS41IC01NHQtNjkgLTMxLjV0LTY5IC0yOXQtMzEuNSAtNDcuNXEwIC0xNSAxMiAtNDNxMzcgLTgyIDEwMi41IC0xNTB0MTQ0LjUgLTEwMXEyOCAtMTIgODAgLTIzcTI4IC02IDI4IC0zNQ0KcTAgLTcwIC0yMTkgLTEwM3EtNyAtMTEgLTExIC0zOXQtMTQgLTQ2LjV0LTMzIC0xOC41cS0yMCAwIC02MiA2LjV0LTY0IDYuNXEtMzcgMCAtNjIgLTVxLTMyIC01IC02MyAtMjIuNXQtNTggLTM4dC01OCAtNDAuNXQtNzYgLTMzLjV0LTk5IC0xMy41cS01MiAwIC05Ni41IDEzLjV0LTc1IDMzLjV0LTU3LjUgNDAuNXQtNTggMzh0LTYyIDIyLjVxLTI2IDUgLTYzIDVxLTI0IDAgLTY1LjUgLTcuNXQtNTguNSAtNy41cS0yNSAwIC0zNSAxOC41DQp0LTE0IDQ3LjV0LTExIDQwcS0yMTkgMzMgLTIxOSAxMDNxMCAyOSAyOCAzNXE1MiAxMSA4MCAyM3E3OCAzMiAxNDQuNSAxMDF0MTAyLjUgMTUwcTEyIDI4IDEyIDQzcTAgMjggLTMxLjUgNDcuNXQtNjkuNSAyOS41dC02OS41IDMxLjV0LTMxLjUgNTIuNXEwIDI3IDI2IDQ1LjV0NTUgMTguNXExNSAwIDQ4IC0xM3Q1MyAtMTNxMTggMCAzMiA3cS05IDE0MiAtOSAxOTBxMCAxMjIgMjcgMTgwcTY0IDEzNyAxNzIgMTk4dDI2NCA2M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQUQiIHVuaWNvZGU9IiYjeGYyYWQ7IiANCmQ9Ik0xMjgwIDM4OHEwIDIyIC0yMiAyN3EtNjcgMTQgLTExOCA1OHQtODAgMTA5cS03IDE0IC03IDI1cTAgMTUgMTkuNSAyNnQ0Mi41IDE3dDQyLjUgMjAuNXQxOS41IDM2LjVxMCAxOSAtMTguNSAzMS41dC0zOC41IDEyLjVxLTExIDAgLTMxIC04dC0zMiAtOHEtNCAwIC0xMiAycTUgNjMgNSAxMTVxMCA3OCAtMTcgMTE0cS0zNiA3OCAtMTAyLjUgMTIxLjV0LTE1Mi41IDQzLjVxLTE5OCAwIC0yNzUgLTE2NXEtMTggLTM4IC0xOCAtMTE1DQpxMCAtMzggNiAtMTE0cS0xMCAtMiAtMTUgLTJxLTExIDAgLTMxLjUgOHQtMzAuNSA4cS0yMCAwIC0zNy41IC0xMi41dC0xNy41IC0zMi41cTAgLTIxIDE5LjUgLTM1LjV0NDIuNSAtMjAuNXQ0Mi41IC0xN3QxOS41IC0yNnEwIC0xMSAtNyAtMjVxLTY0IC0xMzggLTE5OCAtMTY3cS0yMiAtNSAtMjIgLTI3cTAgLTQ3IDEzOCAtNjlxMiAtNSA2IC0yNnQxMSAtMzAuNXQyMyAtOS41cTEzIDAgMzguNSA1dDM4LjUgNXEzNSAwIDY3LjUgLTE1DQp0NTQuNSAtMzIuNXQ1Ny41IC0zMi41dDc2LjUgLTE1cTQzIDAgNzkgMTV0NTcuNSAzMi41dDU0IDMyLjV0NjcuNSAxNXExMyAwIDM5IC00LjV0MzkgLTQuNXExNSAwIDIyLjUgOS41dDExLjUgMzF0NSAyNC41cTEzOCAyMiAxMzggNjl6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwDQpxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkFFIiB1bmljb2RlPSImI3hmMmFlOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTIzMDQgMTUzNnEtNjkgLTQ2IC0xMjUgLTkydC04OSAtODF0LTU5LjUgLTcxLjV0LTM3LjUgLTU3LjV0LTIyIC00NC41dC0xNCAtMjkuNXEtMTAgLTE4IC0zNS41IC0xMzYuNXQtNDguNSAtMTY0LjVxLTE1IC0yOSAtNTAgLTYwLjV0LTY3LjUgLTUwLjV0LTcyLjUgLTQxdC00OCAtMjhxLTQ3IC0zMSAtMTUxIC0yMzFxLTM0MSAxNCAtNjMwIC0xNThxLTkyIC01MyAtMzAzIC0xNzlxNDcgMTYgODYgMzF0NTUgMjJsMTUgNw0KcTcxIDI3IDE2MyA2NC41dDEzMy41IDUzLjV0MTA4IDM0LjV0MTQyLjUgMzEuNXExODYgMzEgNDY1IC03cTEgMCAxMCAtM3ExMSAtNiAxNCAtMTd0LTMgLTIybC0xOTQgLTM0NXEtMTUgLTI5IC00NyAtMjJxLTEyOCAyNCAtMzU0IDI0cS0xNDYgMCAtNDAyIC00NC41dC0zOTIgLTQ2LjVxLTgyIC0xIC0xNDkgMTN0LTEwNyAzN3QtNjEgNDB0LTMzIDM0bC0xIDF2MnEwIDYgNiA2cTEzOCAwIDM3MSA1NXExOTIgMzY2IDM3NC41IDUyNHQzODMuNSAxNTgNCnE1IDAgMTQuNSAtMC41dDM4IC01dDU1IC0xMnQ2MS41IC0yNC41dDYzIC0zOS41dDU0IC01OXQ0MCAtODIuNWwxMDIgMTc3cTIgNCAyMSA0Mi41dDQ0LjUgODYuNXQ2MSAxMDkuNXQ4NCAxMzMuNXQxMDAuNSAxMzdxNjYgODIgMTI4IDE0MS41dDEyMS41IDk2LjV0OTIuNSA1My41dDg4IDM5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkIwIiB1bmljb2RlPSImI3hmMmIwOyIgDQpkPSJNMTMyMiA2NDBxMCAtNDUgLTUgLTc2bC0yMzYgMTRsMjI0IC03OHEtMTkgLTczIC01OCAtMTQxbC0yMTQgMTAzbDE3NyAtMTU4cS00NCAtNjEgLTEwNyAtMTA4bC0xNTcgMTc4bDEwMyAtMjE1cS02MSAtMzcgLTE0MCAtNTlsLTc5IDIyOGwxNCAtMjQwcS0zOCAtNiAtNzYgLTZ0LTc2IDZsMTQgMjM4bC03OCAtMjI2cS03NCAxOSAtMTQwIDU5bDEwMyAyMTVsLTE1NyAtMTc4cS01OSA0MyAtMTA4IDEwOGwxNzggMTU4bC0yMTQgLTEwNA0KcS0zOSA2OSAtNTggMTQxbDIyNCA3OWwtMjM3IC0xNHEtNSA0MiAtNSA3NnEwIDM1IDUgNzdsMjM4IC0xNGwtMjI1IDc5cTE5IDczIDU4IDE0MGwyMTQgLTEwNGwtMTc3IDE1OXE0NiA2MSAxMDcgMTA4bDE1OCAtMTc4bC0xMDMgMjE1cTY3IDM5IDE0MCA1OGw3NyAtMjI0bC0xMyAyMzZxMzYgNiA3NSA2cTM4IDAgNzYgLTZsLTE0IC0yMzdsNzggMjI1cTc0IC0xOSAxNDAgLTU5bC0xMDMgLTIxNGwxNTggMTc4cTYxIC00NyAxMDcgLTEwOA0KbC0xNzcgLTE1OWwyMTMgMTA0cTM3IC02MiA1OCAtMTQxbC0yMjQgLTc4bDIzNyAxNHE1IC0zMSA1IC03N3pNMTM1MiA2NDBxMCAxNjAgLTc4LjUgMjk1LjV0LTIxMyAyMTR0LTI5Mi41IDc4LjVxLTExOSAwIC0yMjcgLTQ2LjV0LTE4Ni41IC0xMjV0LTEyNC41IC0xODcuNXQtNDYgLTIyOXEwIC0xMTkgNDYgLTIyOHQxMjQuNSAtMTg3LjV0MTg2LjUgLTEyNXQyMjcgLTQ2LjVxMTU4IDAgMjkyLjUgNzguNXQyMTMgMjE0dDc4LjUgMjk0LjV6DQpNMTQyNSAxMDIzdi03NjZsLTY1NyAtMzgzbC02NTcgMzgzdjc2Nmw2NTcgMzgzek03NjggLTE4M2w3MDggNDEydjgyM2wtNzA4IDQxMWwtNzA4IC00MTF2LTgyM3pNMTUzNiAxMDg4di04OTZsLTc2OCAtNDQ4bC03NjggNDQ4djg5Nmw3NjggNDQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCMSIgdW5pY29kZT0iJiN4ZjJiMTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0zMzkgMTMxOGg2OTFsLTI2IC03MmgtNjY1cS0xMTAgMCAtMTg4LjUgLTc5dC03OC41IC0xODl2LTc3MXEwIC05NSA2MC41IC0xNjkuNXQxNTMuNSAtOTMuNXEyMyAtNSA5OCAtNXYtNzJoLTQ1cS0xNDAgMCAtMjM5LjUgMTAwdC05OS41IDI0MHY3NzFxMCAxNDAgOTkuNSAyNDB0MjM5LjUgMTAwek0xMTkwIDE1MzZoMjQ3bC00ODIgLTEyOTRxLTIzIC02MSAtNDAuNSAtMTAzLjV0LTQ1IC05OHQtNTQgLTkzLjV0LTY0LjUgLTc4LjUNCnQtNzkuNSAtNjV0LTk1LjUgLTQxdC0xMTYgLTE4LjV2MTk1cTE2MyAyNiAyMjAgMTgycTIwIDUyIDIwIDEwNXEwIDU0IC0yMCAxMDZsLTI4NSA3MzNoMjI4bDE4NyAtNTg1ek0xNjY0IDk3OHYtMTExMWgtNzk1cTM3IDU1IDQ1IDczaDY3OHYxMDM4cTAgODUgLTQ5LjUgMTU1dC0xMjkuNSA5OWwyNSA2N3ExMDEgLTM0IDE2My41IC0xMjMuNXQ2Mi41IC0xOTcuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjIiIHVuaWNvZGU9IiYjeGYyYjI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODUyIDEyMjdxMCAtMjkgLTE3IC01Mi41dC00NSAtMjMuNXQtNDUgMjMuNXQtMTcgNTIuNXQxNyA1Mi41dDQ1IDIzLjV0NDUgLTIzLjV0MTcgLTUyLjV6TTY4OCAtMTQ5djExNHEwIDMwIC0yMC41IDUxLjV0LTUwLjUgMjEuNXQtNTAgLTIxLjV0LTIwIC01MS41di0xMTRxMCAtMzAgMjAuNSAtNTJ0NDkuNSAtMjJxMzAgMCA1MC41IDIydDIwLjUgNTJ6TTg2MCAtMTQ5djExNHEwIDMwIC0yMCA1MS41dC01MCAyMS41dC01MC41IC0yMS41DQp0LTIwLjUgLTUxLjV2LTExNHEwIC0zMCAyMC41IC01MnQ1MC41IC0yMnEyOSAwIDQ5LjUgMjJ0MjAuNSA1MnpNMTAzNCAtMTQ5djExNHEwIDMwIC0yMC41IDUxLjV0LTUwLjUgMjEuNXQtNTAuNSAtMjEuNXQtMjAuNSAtNTEuNXYtMTE0cTAgLTMwIDIwLjUgLTUydDUwLjUgLTIydDUwLjUgMjJ0MjAuNSA1MnpNMTIwOCAtMTQ5djExNHEwIDMwIC0yMC41IDUxLjV0LTUwLjUgMjEuNXQtNTAuNSAtMjEuNXQtMjAuNSAtNTEuNXYtMTE0DQpxMCAtMzAgMjAuNSAtNTJ0NTAuNSAtMjJ0NTAuNSAyMnQyMC41IDUyek0xNDc2IDUzNXEtODQgLTE2MCAtMjMyIC0yNTkuNXQtMzIzIC05OS41cS0xMjMgMCAtMjI5LjUgNTEuNXQtMTc4LjUgMTM3dC0xMTMgMTk3LjV0LTQxIDIzMnEwIDg4IDIxIDE3NHEtMTA0IC0xNzUgLTEwNCAtMzkwcTAgLTE2MiA2NSAtMzEydDE4NSAtMjUxcTMwIDU3IDkxIDU3cTU2IDAgODYgLTUwcTMyIDUwIDg3IDUwcTU2IDAgODYgLTUwcTMyIDUwIDg3IDUwdDg3IC01MA0KcTMwIDUwIDg2IDUwcTI4IDAgNTIuNSAtMTUuNXQzNy41IC00MC41cTExMiA5NCAxNzcgMjMxLjV0NzMgMjg3LjV6TTEzMjYgNTY0cTAgNzUgLTcyIDc1cS0xNyAwIC00NyAtNnEtOTUgLTE5IC0xNDkgLTE5cS0yMjYgMCAtMjI2IDI0M3EwIDg2IDMwIDIwNHEtODMgLTEyNyAtODMgLTI3NXEwIC0xNTAgODkgLTI2MC41dDIzNSAtMTEwLjVxMTExIDAgMjEwIDcwcTEzIDQ4IDEzIDc5ek04ODQgMTIyM3EwIDUwIC0zMiA4OS41dC04MSAzOS41DQp0LTgxIC0zOS41dC0zMiAtODkuNXEwIC01MSAzMS41IC05MC41dDgxLjUgLTM5LjV0ODEuNSAzOS41dDMxLjUgOTAuNXpNMTUxMyA4ODRxMCA5NiAtMzcuNSAxNzl0LTExMyAxMzd0LTE3My41IDU0cS03NyAwIC0xNDkgLTM1dC0xMjcgLTk0cS00OCAtMTU5IC00OCAtMjY4cTAgLTEwNCA0NS41IC0xNTd0MTQ3LjUgLTUzcTUzIDAgMTQyIDE5cTM2IDYgNTMgNnE1MSAwIDc3LjUgLTI4dDI2LjUgLTgwcTAgLTI2IC00IC00Ng0KcTc1IDY4IDExNy41IDE2NS41dDQyLjUgMjAwLjV6TTE3OTIgNjY3cTAgLTExMSAtMzMuNSAtMjQ5LjV0LTkzLjUgLTIwNC41cS01OCAtNjQgLTE5NSAtMTQyLjV0LTIyOCAtMTA0LjVsLTQgLTF2LTExNHEwIC00MyAtMjkuNSAtNzV0LTcyLjUgLTMycS01NiAwIC04NiA1MHEtMzIgLTUwIC04NyAtNTB0LTg3IDUwcS0zMCAtNTAgLTg2IC01MHEtNTUgMCAtODcgNTBxLTMwIC01MCAtODYgLTUwcS00NyAwIC03NSAzMy41dC0yOCA4MS41DQpxLTkwIC02OCAtMTk4IC02OHEtMTE4IDAgLTIxMSA4MHE1NCAxIDEwNiAyMHEtMTEzIDMxIC0xODIgMTI3cTMyIC03IDcxIC03cTg5IDAgMTY0IDQ2cS0xOTIgMTkyIC0yNDAgMzA2cS0yNCA1NiAtMjQgMTYwcTAgNTcgOSAxMjUuNXQzMS41IDE0Ni41dDU1IDE0MXQ4Ni41IDEwNXQxMjAgNDJxNTkgMCA4MSAtNTJxMTkgMjkgNDIgNTRxMiAzIDEyIDEzdDEzIDE2cTEwIDE1IDIzIDM4dDI1IDQydDI4IDM5cTg3IDExMSAyMTEuNSAxNzcNCnQyNjAuNSA2NnEzNSAwIDYyIC00cTU5IDY0IDE0NiA2NHE4MyAwIDE0MCAtNTdxNSAtNSA1IC0xMnEwIC01IC02IC0xMy41dC0xMi41IC0xNnQtMTYgLTE3bC0xMC41IC0xMC41cTE3IC02IDM2IC0xOHQxOSAtMjRxMCAtNiAtMTYgLTI1cTE1NyAtMTM4IDE5NyAtMzc4cTI1IDMwIDYwIDMwcTQ1IDAgMTAwIC00OXE5MCAtODAgOTAgLTI3OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjMiIHVuaWNvZGU9IiYjeGYyYjM7IiANCmQ9Ik05MTcgNjMxcTAgMzMgLTYgNjRoLTM2MnYtMTMyaDIxN3EtMTIgLTc2IC03NC41IC0xMjAuNXQtMTQyLjUgLTQ0LjVxLTk5IDAgLTE2OSA3MS41dC03MCAxNzAuNXQ3MCAxNzAuNXQxNjkgNzEuNXE5MyAwIDE1MyAtNTlsMTA0IDEwMXEtMTA4IDEwMCAtMjU3IDEwMHEtMTYwIDAgLTI3MiAtMTEyLjV0LTExMiAtMjcxLjV0MTEyIC0yNzEuNXQyNzIgLTExMi41cTE2NSAwIDI2Ni41IDEwNXQxMDEuNSAyNzB6TTEyNjIgNTg1aDEwOXYxMTANCmgtMTA5djExMGgtMTEwdi0xMTBoLTExMHYtMTEwaDExMHYtMTEwaDExMHYxMTB6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCNCIgdW5pY29kZT0iJiN4ZjJiNDsiIA0KZD0iTTE1MzYgMTAyNHYtODM5cTAgLTQ4IC00OSAtNjJxLTE3NCAtNTIgLTMzOCAtNTJxLTczIDAgLTIxNS41IDI5LjV0LTIyNy41IDI5LjVxLTE2NCAwIC0zNzAgLTQ4di0zMzhoLTE2MHYxMzY4cS02MyAyNSAtMTAxIDgxdC0zOCAxMjRxMCA5MSA2NCAxNTV0MTU1IDY0dDE1NSAtNjR0NjQgLTE1NXEwIC02OCAtMzggLTEyNHQtMTAxIC04MXYtNjhxMTkwIDQ0IDM0MyA0NHE5OSAwIDE5OCAtMTVxMTQgLTIgMTExLjUgLTIyLjV0MTQ5LjUgLTIwLjUNCnE3NyAwIDE2NSAxOHExMSAyIDgwIDIxdDg5IDE5cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjUiIHVuaWNvZGU9IiYjeGYyYjU7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTkyIDM4NHE0MCAwIDU2IDMydDAgNjR0LTU2IDMydC01NiAtMzJ0MCAtNjR0NTYgLTMyek0xNjY1IDQ0MnEtMTAgMTMgLTM4LjUgNTB0LTQxLjUgNTR0LTM4IDQ5dC00Mi41IDUzdC00MC41IDQ3dC00NSA0OWwtMTI1IC0xNDBxLTgzIC05NCAtMjA4LjUgLTkydC0yMDUuNSA5OHEtNTcgNjkgLTU2LjUgMTU4dDU4LjUgMTU3bDE3NyAyMDZxLTIyIDExIC01MSAxNi41dC00Ny41IDZ0LTU2LjUgLTAuNXQtNDkgLTFxLTkyIDAgLTE1OCAtNjYNCmwtMTU4IC0xNThoLTE1NXYtNTQ0cTUgMCAyMSAwLjV0MjIgMHQxOS41IC0ydDIwLjUgLTQuNXQxNy41IC04LjV0MTguNSAtMTMuNWwyOTcgLTI5MnExMTUgLTExMSAyMjcgLTExMXE3OCAwIDEyNSA0N3E1NyAtMjAgMTEyLjUgOHQ3Mi41IDg1cTc0IC02IDEyNyA0NHEyMCAxOCAzNiA0NS41dDE0IDUwLjVxMTAgLTEwIDQzIC0xMHE0MyAwIDc3IDIxdDQ5LjUgNTN0MTIgNzEuNXQtMzAuNSA3My41ek0xODI0IDM4NGg5NnY1MTJoLTkzbC0xNTcgMTgwDQpxLTY2IDc2IC0xNjkgNzZoLTE2N3EtODkgMCAtMTQ2IC02N2wtMjA5IC0yNDNxLTI4IC0zMyAtMjggLTc1dDI3IC03NXE0MyAtNTEgMTEwIC01MnQxMTEgNDlsMTkzIDIxOHEyNSAyMyA1My41IDIxLjV0NDcgLTI3dDguNSAtNTYuNXExNiAtMTkgNTYgLTYzdDYwIC02OHEyOSAtMzYgODIuNSAtMTA1LjV0NjQuNSAtODQuNXE1MiAtNjYgNjAgLTE0MHpNMjExMiAzODRxNDAgMCA1NiAzMnQwIDY0dC01NiAzMnQtNTYgLTMydDAgLTY0dDU2IC0zMnoNCk0yMzA0IDk2MHYtNjQwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNDM0cS0yNyAtNjUgLTgyIC0xMDYuNXQtMTI1IC01MS41cS0zMyAtNDggLTgwLjUgLTgxLjV0LTEwMi41IC00NS41cS00MiAtNTMgLTEwNC41IC04MS41dC0xMjguNSAtMjQuNXEtNjAgLTM0IC0xMjYgLTM5LjV0LTEyNy41IDE0dC0xMTcgNTMuNXQtMTAzLjUgODFsLTI4NyAyODJoLTM1OHEtMjYgMCAtNDUgMTl0LTE5IDQ1djY3MnEwIDI2IDE5IDQ1dDQ1IDE5aDQyMQ0KcTE0IDE0IDQ3IDQ4dDQ3LjUgNDh0NDQgNDB0NTAuNSAzNy41dDUxIDI1LjV0NjIgMTkuNXQ2OCA1LjVoMTE3cTk5IDAgMTgxIC01NnE4MiA1NiAxODEgNTZoMTY3cTM1IDAgNjcgLTZ0NTYuNSAtMTQuNXQ1MS41IC0yNi41dDQ0LjUgLTMxdDQzIC0zOS41dDM5IC00MnQ0MSAtNDh0NDEuNSAtNDguNWgzNTVxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCNiIgdW5pY29kZT0iJiN4ZjJiNjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDg4MnYtOTc4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NzhxMCAxNSAxMSAyNHE4IDcgMzkgMzQuNXQ0MS41IDM2dDQ1LjUgMzcuNXQ3MCA1NS41dDk2IDczdDE0My41IDEwN3QxOTIuNSAxNDAuNXE1IDQgNTIuNSA0MHQ3MS41IDUyLjV0NjQgMzV0NjkgMTguNXQ2OSAtMTguNXQ2NSAtMzUuNXQ3MSAtNTJ0NTIgLTQwcTExMCAtODAgMTkyLjUgLTE0MC41dDE0My41IC0xMDcNCnQ5NiAtNzN0NzAgLTU1LjV0NDUuNSAtMzcuNXQ0MS41IC0zNnQzOSAtMzQuNXExMSAtOSAxMSAtMjR6TTEyMjggMjk3cTI2MyAxOTEgMzQ1IDI1MnExMSA4IDEyLjUgMjAuNXQtNi41IDIzLjVsLTM4IDUycS04IDExIC0yMSAxMi41dC0yNCAtNi41cS0yMzEgLTE2OSAtMzQzIC0yNTBxLTUgLTMgLTUyIC0zOXQtNzEuNSAtNTIuNXQtNjQuNSAtMzV0LTY5IC0xOC41dC02OSAxOC41dC02NC41IDM1dC03MS41IDUyLjV0LTUyIDM5DQpxLTE4NiAxMzQgLTM0MyAyNTBxLTExIDggLTI0IDYuNXQtMjEgLTEyLjVsLTM4IC01MnEtOCAtMTEgLTYuNSAtMjMuNXQxMi41IC0yMC41cTgyIC02MSAzNDUgLTI1MnExMCAtOCA1MCAtMzh0NjUgLTQ3dDY0IC0zOS41dDc3LjUgLTMzLjV0NzUuNSAtMTF0NzUuNSAxMXQ3OSAzNC41dDY0LjUgMzkuNXQ2NSA0Ny41dDQ4IDM2LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkI3IiB1bmljb2RlPSImI3hmMmI3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE0NzQgNjIzbDM5IC01MXE4IC0xMSA2LjUgLTIzLjV0LTExLjUgLTIwLjVxLTQzIC0zNCAtMTI2LjUgLTk4LjV0LTE0Ni41IC0xMTN0LTY3IC01MS41cS0zOSAtMzIgLTYwIC00OHQtNjAuNSAtNDF0LTc2LjUgLTM2LjV0LTc0IC0xMS41aC0xaC0xcS0zNyAwIC03NCAxMS41dC03NiAzNi41dC02MSA0MS41dC02MCA0Ny41cS01IDQgLTY1IDUwLjV0LTE0My41IDExMXQtMTIyLjUgOTQuNXEtMTEgOCAtMTIuNSAyMC41dDYuNSAyMy41DQpsMzcgNTJxOCAxMSAyMS41IDEzdDI0LjUgLTdxOTQgLTczIDMwNiAtMjM2cTUgLTQgNDMuNSAtMzV0NjAuNSAtNDYuNXQ1Ni41IC0zMi41dDU4LjUgLTE3aDFoMXEyNCAwIDU4LjUgMTd0NTYuNSAzMi41dDYwLjUgNDYuNXQ0My41IDM1cTI1OCAxOTggMzEzIDI0MnExMSA4IDI0IDYuNXQyMSAtMTIuNXpNMTY2NCAtOTZ2OTI4cS05MCA4MyAtMTU5IDEzOXEtOTEgNzQgLTM4OSAzMDRxLTMgMiAtNDMgMzV0LTYxIDQ4dC01NiAzMi41dC01OSAxNy41DQpoLTFoLTFxLTI0IDAgLTU5IC0xNy41dC01NiAtMzIuNXQtNjEgLTQ4dC00MyAtMzVxLTIxNSAtMTY2IC0zMTUuNSAtMjQ1LjV0LTEyOS41IC0xMDR0LTgyIC03NC41cS0xNCAtMTIgLTIxIC0xOXYtOTI4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTQ3MnExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNzkyIDgzMnYtOTI4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5MjhxMCA1NiA0MSA5NA0KcTEyMyAxMTQgMzUwIDI5MC41dDIzMyAxODEuNXEzNiAzMCA1OSA0Ny41dDYxLjUgNDJ0NzYgMzYuNXQ3NC41IDEyaDFoMXEzNyAwIDc0LjUgLTEydDc2IC0zNi41dDYxLjUgLTQydDU5IC00Ny41cTQzIC0zNiAxNTYgLTEyMnQyMjYgLTE3N3QyMDEgLTE3M3E0MSAtMzggNDEgLTk0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCOCIgdW5pY29kZT0iJiN4ZjJiODsiIA0KZD0iTTMzMCAxbDIwMiAtMjE0bC0zNCAyMzZsLTIxNiAyMTN6TTU1NiAtMjI1bDI3NCAyMThsLTExIDI0NWwtMzAwIC0yMTV6TTI0NSA0MTNsMjI3IC0yMTNsLTQ4IDMyN2wtMjQ1IDIwNHpNNDk1IDE4OWwzMTcgMjE0bC0xNCAzMjRsLTM1MiAtMjAwek04NDMgMTc4bDk1IC04MGwtMiAyMzlsLTEwMyA3OXEwIC0xIDEgLTguNXQwIC0xMnQtNSAtNy41bC03OCAtNTJsODUgLTcwcTcgLTYgNyAtODh6TTEzOCA5MzBsMjU2IC0yMDBsLTY4IDQ2NQ0KbC0yNzkgMTczek0xMTczIDI2N2wxNSAyMzRsLTIzMCAtMTY0bDIgLTI0MHpNNDE3IDcyMmwzNzMgMTk0bC0xOSA0NDFsLTQyMyAtMTYzek0xMjcwIDM1N2wyMCAyMzNsLTIyNiAxNDJsLTIgLTEwNWwxNDQgLTk1cTYgLTQgNCAtOWwtNyAtMTE5ek0xNDYxIDQ5NmwzMCAyMjJsLTE3OSAtMTI4bC0yMCAtMjI4ek0xMjczIDMyOWwtNzEgNDlsLTggLTExN3EwIC01IC00IC04bC0yMzQgLTE4N3EtNyAtNSAtMTQgMGwtOTggODNsNyAtMTYxDQpxMCAtNSAtNCAtOGwtMjkzIC0yMzRxLTQgLTIgLTYgLTJxLTggMiAtOCAzbC0yMjggMjQycS00IDQgLTU5IDI3N3EtMiA3IDUgMTFsNjEgMzdxLTk0IDg2IC05NSA5MmwtNzIgMzUxcS0yIDcgNiAxMmw5NCA0NXEtMTMzIDEwMCAtMTM1IDEwOGwtOTYgNDY2cS0yIDEwIDcgMTNsNDMzIDEzNXE1IDAgOCAtMWwzMTcgLTE1M3E2IC00IDYgLTlsMjAgLTQ2M3EwIC03IC02IC0xMGwtMTE4IC02MWwxMjYgLTg1cTUgLTIgNSAtOGw1IC0xMjNsMTIxIDc0DQpxNSA0IDExIDBsODQgLTU2bDMgMTEwcTAgNiA1IDlsMjA2IDEyNnE2IDMgMTEgMGwyNDUgLTEzNXE0IC00IDUgLTd0LTYuNSAtNjB0LTE3LjUgLTEyNC41dC0xMCAtNzAuNXEwIC01IC00IC03bC0xOTEgLTE1M3EtNiAtNSAtMTMgMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjkiIHVuaWNvZGU9IiYjeGYyYjk7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTIwMSAyOThxMCA1NyAtNS41IDEwN3QtMjEgMTAwLjV0LTM5LjUgODZ0LTY0IDU4dC05MSAyMi41cS02IC00IC0zMy41IC0yMC41dC00Mi41IC0yNC41dC00MC41IC0yMHQtNDkgLTE3dC00Ni41IC01dC00Ni41IDV0LTQ5IDE3dC00MC41IDIwdC00Mi41IDI0LjV0LTMzLjUgMjAuNXEtNTEgMCAtOTEgLTIyLjV0LTY0IC01OHQtMzkuNSAtODZ0LTIxIC0xMDAuNXQtNS41IC0xMDdxMCAtNzMgNDIgLTEyMS41dDEwMyAtNDguNWg1NzYNCnE2MSAwIDEwMyA0OC41dDQyIDEyMS41ek0xMDI4IDg5MnEwIDEwOCAtNzYuNSAxODR0LTE4My41IDc2dC0xODMuNSAtNzZ0LTc2LjUgLTE4NHEwIC0xMDcgNzYuNSAtMTgzdDE4My41IC03NnQxODMuNSA3NnQ3Ni41IDE4M3pNMTY2NCAzNTJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtMjI0cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMjE2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxNDcycTAgNjYgNDcgMTEzdDExMyA0N2gxMjE2DQpxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTIyNGg5NnExNCAwIDIzIC05dDkgLTIzdi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTEyOGg5NnExNCAwIDIzIC05dDkgLTIzdi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTEyOGg5NnExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCQSIgdW5pY29kZT0iJiN4ZjJiYTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xMDI4IDg5MnEwIC0xMDcgLTc2LjUgLTE4M3QtMTgzLjUgLTc2dC0xODMuNSA3NnQtNzYuNSAxODNxMCAxMDggNzYuNSAxODR0MTgzLjUgNzZ0MTgzLjUgLTc2dDc2LjUgLTE4NHpNOTgwIDY3MnE0NiAwIDgyLjUgLTE3dDYwIC00Ny41dDM5LjUgLTY3dDI0IC04MXQxMS41IC04Mi41dDMuNSAtNzlxMCAtNjcgLTM5LjUgLTExOC41dC0xMDUuNSAtNTEuNWgtNTc2cS02NiAwIC0xMDUuNSA1MS41dC0zOS41IDExOC41cTAgNDggNC41IDkzLjUNCnQxOC41IDk4LjV0MzYuNSA5MS41dDYzIDY0LjV0OTMuNSAyNmg1cTcgLTQgMzIgLTE5LjV0MzUuNSAtMjF0MzMgLTE3dDM3IC0xNnQzNSAtOXQzOS41IC00LjV0MzkuNSA0LjV0MzUgOXQzNyAxNnQzMyAxN3QzNS41IDIxdDMyIDE5LjV6TTE2NjQgOTI4cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtOTZ2LTEyOGg5NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTk2di0xMjhoOTYNCnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTk2di0yMjRxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTEyMTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjE0NzJxMCA2NiA0NyAxMTN0MTEzIDQ3aDEyMTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTIyNGg5NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE5MnpNMTQwOCAtOTZ2MTQ3MnEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTEyMTYNCnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTE0NzJxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxMjE2cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkJCIiB1bmljb2RlPSImI3hmMmJiOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTEwMjQgNDA1cTAgNjQgLTkgMTE3LjV0LTI5LjUgMTAzdC02MC41IDc4dC05NyAyOC41cS02IC00IC0zMCAtMTh0LTM3LjUgLTIxLjV0LTM1LjUgLTE3LjV0LTQzIC0xNC41dC00MiAtNC41dC00MiA0LjV0LTQzIDE0LjV0LTM1LjUgMTcuNXQtMzcuNSAyMS41dC0zMCAxOHEtNTcgMCAtOTcgLTI4LjV0LTYwLjUgLTc4dC0yOS41IC0xMDN0LTkgLTExNy41dDM3IC0xMDYuNXQ5MSAtNDIuNWg1MTJxNTQgMCA5MSA0Mi41dDM3IDEwNi41eg0KTTg2NyA5MjVxMCA5NCAtNjYuNSAxNjAuNXQtMTYwLjUgNjYuNXQtMTYwLjUgLTY2LjV0LTY2LjUgLTE2MC41dDY2LjUgLTE2MC41dDE2MC41IC02Ni41dDE2MC41IDY2LjV0NjYuNSAxNjAuNXpNMTc5MiA0MTZ2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNTc2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDU3NnExNCAwIDIzIDl0OSAyM3pNMTc5MiA2NzZ2NTZxMCAxNSAtMTAuNSAyNS41dC0yNS41IDEwLjVoLTU2OA0KcS0xNSAwIC0yNS41IC0xMC41dC0xMC41IC0yNS41di01NnEwIC0xNSAxMC41IC0yNS41dDI1LjUgLTEwLjVoNTY4cTE1IDAgMjUuNSAxMC41dDEwLjUgMjUuNXpNMTc5MiA5Mjh2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNTc2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDU3NnExNCAwIDIzIDl0OSAyM3pNMjA0OCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0zNTJ2OTZxMCAxNCAtOSAyM3QtMjMgOQ0KaC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi05NmgtNzY4djk2cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2aC0zNTJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE3MjhxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkJDIiB1bmljb2RlPSImI3hmMmJjOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTEwMjQgNDA1cTAgLTY0IC0zNyAtMTA2LjV0LTkxIC00Mi41aC01MTJxLTU0IDAgLTkxIDQyLjV0LTM3IDEwNi41dDkgMTE3LjV0MjkuNSAxMDN0NjAuNSA3OHQ5NyAyOC41cTYgLTQgMzAgLTE4dDM3LjUgLTIxLjV0MzUuNSAtMTcuNXQ0MyAtMTQuNXQ0MiAtNC41dDQyIDQuNXQ0MyAxNC41dDM1LjUgMTcuNXQzNy41IDIxLjV0MzAgMThxNTcgMCA5NyAtMjguNXQ2MC41IC03OHQyOS41IC0xMDN0OSAtMTE3LjV6TTg2NyA5MjUNCnEwIC05NCAtNjYuNSAtMTYwLjV0LTE2MC41IC02Ni41dC0xNjAuNSA2Ni41dC02Ni41IDE2MC41dDY2LjUgMTYwLjV0MTYwLjUgNjYuNXQxNjAuNSAtNjYuNXQ2Ni41IC0xNjAuNXpNMTc5MiA0ODB2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTU3NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg1NzZxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiA3MzJ2LTU2cTAgLTE1IC0xMC41IC0yNS41dC0yNS41IC0xMC41aC01NjgNCnEtMTUgMCAtMjUuNSAxMC41dC0xMC41IDI1LjV2NTZxMCAxNSAxMC41IDI1LjV0MjUuNSAxMC41aDU2OHExNSAwIDI1LjUgLTEwLjV0MTAuNSAtMjUuNXpNMTc5MiA5OTJ2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTU3NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg1NzZxMTQgMCAyMyAtOXQ5IC0yM3pNMTkyMCAzMnYxMjE2cTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTcyOHEtMTMgMCAtMjIuNSAtOS41DQp0LTkuNSAtMjIuNXYtMTIxNnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDM1MnY5NnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi05Nmg3Njh2OTZxMCAxNCA5IDIzdDIzIDloNjRxMTQgMCAyMyAtOXQ5IC0yM3YtOTZoMzUycTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTIwNDggMTI0OHYtMTIxNnEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTcyOHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTIxNnEwIDY2IDQ3IDExMw0KdDExMyA0N2gxNzI4cTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCRCIgdW5pY29kZT0iJiN4ZjJiZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNTIzIDE5N3EtMjIgMTU1IC04Ny41IDI1Ny41dC0xODQuNSAxMTguNXEtNjcgLTc0IC0xNTkuNSAtMTE1LjV0LTE5NS41IC00MS41dC0xOTUuNSA0MS41dC0xNTkuNSAxMTUuNXEtMTE5IC0xNiAtMTg0LjUgLTExOC41dC04Ny41IC0yNTcuNXExMDYgLTE1MCAyNzEgLTIzNy41dDM1NiAtODcuNXQzNTYgODcuNXQyNzEgMjM3LjV6TTEyODAgODk2cTAgMTU5IC0xMTIuNSAyNzEuNXQtMjcxLjUgMTEyLjV0LTI3MS41IC0xMTIuNQ0KdC0xMTIuNSAtMjcxLjV0MTEyLjUgLTI3MS41dDI3MS41IC0xMTIuNXQyNzEuNSAxMTIuNXQxMTIuNSAyNzEuNXpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ3LjV0LTE5MC41IC0yODZ0LTI4NS41IC0xOTEuNXQtMzQ5IC03MXEtMTgyIDAgLTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQkUiIHVuaWNvZGU9IiYjeGYyYmU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODk2IDE1MzZxMTgyIDAgMzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4cTAgLTE4MSAtNzAuNSAtMzQ3dC0xOTAuNSAtMjg2dC0yODYgLTE5MS41dC0zNDkgLTcxLjV0LTM0OSA3MXQtMjg1LjUgMTkxLjV0LTE5MC41IDI4NnQtNzEgMzQ3LjV0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTE1MTUgMTg1cTE0OSAyMDUgMTQ5IDQ1NXEwIDE1NiAtNjEgMjk4dC0xNjQgMjQ1dC0yNDUgMTY0dC0yOTggNjF0LTI5OCAtNjENCnQtMjQ1IC0xNjR0LTE2NCAtMjQ1dC02MSAtMjk4cTAgLTI1MCAxNDkgLTQ1NXE2NiAzMjcgMzA2IDMyN3ExMzEgLTEyOCAzMTMgLTEyOHQzMTMgMTI4cTI0MCAwIDMwNiAtMzI3ek0xMjgwIDgzMnEwIDE1OSAtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41dC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjV0MjcxLjUgLTExMi41dDI3MS41IDExMi41dDExMi41IDI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDMCIgdW5pY29kZT0iJiN4ZjJjMDsiIA0KZD0iTTEyMDEgNzUycTQ3IC0xNCA4OS41IC0zOHQ4OSAtNzN0NzkuNSAtMTE1LjV0NTUgLTE3MnQyMiAtMjM2LjVxMCAtMTU0IC0xMDAgLTI2My41dC0yNDEgLTEwOS41aC04NTRxLTE0MSAwIC0yNDEgMTA5LjV0LTEwMCAyNjMuNXEwIDEzMSAyMiAyMzYuNXQ1NSAxNzJ0NzkuNSAxMTUuNXQ4OSA3M3Q4OS41IDM4cS03OSAxMjUgLTc5IDI3MnEwIDEwNCA0MC41IDE5OC41dDEwOS41IDE2My41dDE2My41IDEwOS41dDE5OC41IDQwLjUNCnQxOTguNSAtNDAuNXQxNjMuNSAtMTA5LjV0MTA5LjUgLTE2My41dDQwLjUgLTE5OC41cTAgLTE0NyAtNzkgLTI3MnpNNzY4IDE0MDhxLTE1OSAwIC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjV0MjcxLjUgLTExMi41dDI3MS41IDExMi41dDExMi41IDI3MS41dC0xMTIuNSAyNzEuNXQtMjcxLjUgMTEyLjV6TTExOTUgLTEyOHE4OCAwIDE1MC41IDcxLjV0NjIuNSAxNzMuNXEwIDIzOSAtNzguNSAzNzd0LTIyNS41IDE0NQ0KcS0xNDUgLTEyNyAtMzM2IC0xMjd0LTMzNiAxMjdxLTE0NyAtNyAtMjI1LjUgLTE0NXQtNzguNSAtMzc3cTAgLTEwMiA2Mi41IC0xNzMuNXQxNTAuNSAtNzEuNWg4NTR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkMxIiB1bmljb2RlPSImI3hmMmMxOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEwMjQgMjc4cTAgLTY0IC0zNyAtMTA3dC05MSAtNDNoLTUxMnEtNTQgMCAtOTEgNDN0LTM3IDEwN3Q5IDExOHQyOS41IDEwNHQ2MSA3OC41dDk2LjUgMjguNXE4MCAtNzUgMTg4IC03NXQxODggNzVxNTYgMCA5Ni41IC0yOC41dDYxIC03OC41dDI5LjUgLTEwNHQ5IC0xMTh6TTg3MCA3OTdxMCAtOTQgLTY3LjUgLTE2MC41dC0xNjIuNSAtNjYuNXQtMTYyLjUgNjYuNXQtNjcuNSAxNjAuNXQ2Ny41IDE2MC41dDE2Mi41IDY2LjUNCnQxNjIuNSAtNjYuNXQ2Ny41IC0xNjAuNXpNMTE1MiAtOTZ2MTM3NmgtMTAyNHYtMTM3NnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDk2MHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xMjgwIDEzNzZ2LTE0NzJxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTk2MHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTQ3MnEwIDY2IDQ3IDExM3QxMTMgNDdoMzUydi05NnEwIC0xNCA5IC0yM3QyMyAtOWgxOTJxMTQgMCAyMyA5dDkgMjN2OTZoMzUyDQpxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkMyIiB1bmljb2RlPSImI3hmMmMyOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTg5NiAzMjRxMCA1NCAtNy41IDEwMC41dC0yNC41IDkwdC01MSA2OC41dC04MSAyNXEtNjQgLTY0IC0xNTYgLTY0dC0xNTYgNjRxLTQ3IDAgLTgxIC0yNXQtNTEgLTY4LjV0LTI0LjUgLTkwdC03LjUgLTEwMC41cTAgLTU1IDMxLjUgLTkzLjV0NzUuNSAtMzguNWg0MjZxNDQgMCA3NS41IDM4LjV0MzEuNSA5My41ek03NjggNzY4cTAgODAgLTU2IDEzNnQtMTM2IDU2dC0xMzYgLTU2dC01NiAtMTM2dDU2IC0xMzZ0MTM2IC01NnQxMzYgNTYNCnQ1NiAxMzZ6TTE3OTIgMjg4djY0cTAgMTQgLTkgMjN0LTIzIDloLTcwNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg3MDRxMTQgMCAyMyA5dDkgMjN6TTE0MDggNTQ0djY0cTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE3OTIgNTQ0djY0cTAgMTQgLTkgMjN0LTIzIDloLTE5MnEtMTQgMCAtMjMgLTl0LTkgLTIzDQp2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3pNMTc5MiA4MDB2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNzA0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDcwNHExNCAwIDIzIDl0OSAyM3pNMTI4IDExNTJoMTc5MnY5NnEwIDE0IC05IDIzdC0yMyA5aC0xNzI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2ek0yMDQ4IDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE3MjgNCnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTIxNnEwIDY2IDQ3IDExM3QxMTMgNDdoMTcyOHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzMiIHVuaWNvZGU9IiYjeGYyYzM7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNODk2IDMyNHEwIC01NSAtMzEuNSAtOTMuNXQtNzUuNSAtMzguNWgtNDI2cS00NCAwIC03NS41IDM4LjV0LTMxLjUgOTMuNXEwIDU0IDcuNSAxMDAuNXQyNC41IDkwdDUxIDY4LjV0ODEgMjVxNjQgLTY0IDE1NiAtNjR0MTU2IDY0cTQ3IDAgODEgLTI1dDUxIC02OC41dDI0LjUgLTkwdDcuNSAtMTAwLjV6TTc2OCA3NjhxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2eg0KTTE3OTIgMzUydi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC03MDRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNzA0cTE0IDAgMjMgLTl0OSAtMjN6TTE0MDggNjA4di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0zMjBxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMzIwcTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgNjA4di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2NjQNCnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiA4NjR2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTcwNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg3MDRxMTQgMCAyMyAtOXQ5IC0yM3pNMTkyMCAzMnYxMTIwaC0xNzkydi0xMTIwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTcyOHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0yMDQ4IDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDcNCmgtMTcyOHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTIxNnEwIDY2IDQ3IDExM3QxMTMgNDdoMTcyOHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzQiIHVuaWNvZGU9IiYjeGYyYzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTI1NSA3NDlxMCAzMTggLTEwNSA0NzQuNXQtMzMwIDE1Ni41cS0yMjIgMCAtMzI2IC0xNTd0LTEwNCAtNDc0cTAgLTMxNiAxMDQgLTQ3MS41dDMyNiAtMTU1LjVxNzQgMCAxMzEgMTdxLTIyIDQzIC0zOSA3M3QtNDQgNjV0LTUzLjUgNTYuNXQtNjMgMzZ0LTc3LjUgMTQuNXEtNDYgMCAtNzkgLTE2bC00OSA5N3ExMDUgOTEgMjc2IDkxcTEzMiAwIDIxNS41IC01NHQxNTAuNSAtMTU1cTY3IDE0OSA2NyA0MDJ6TTE2NDUgMTE3aDExNw0KcTMgLTI3IC0yIC02N3QtMjYuNSAtOTV0LTU4IC0xMDAuNXQtMTA3IC03OHQtMTYyLjUgLTMyLjVxLTcxIDAgLTEzMC41IDE5dC0xMDUuNSA1NnQtNzkgNzh0LTY2IDk2cS05NyAtMjcgLTIwNSAtMjdxLTE1MCAwIC0yOTIuNSA1OHQtMjUzIDE1OC41dC0xNzggMjQ5dC02Ny41IDMxNy41cTAgMTcwIDY3LjUgMzE5LjV0MTc4LjUgMjUwLjV0MjUzLjUgMTU5dDI5MS41IDU4cTEyMSAwIDIzOC41IC0zNnQyMTcgLTEwNnQxNzYgLTE2NC41DQp0MTE5LjUgLTIxOXQ0MyAtMjYxLjVxMCAtMTkwIC04MC41IC0zNDcuNXQtMjE4LjUgLTI2NC41cTQ3IC03MCA5My41IC0xMDYuNXQxMDQuNSAtMzYuNXE2MSAwIDk0IDM3LjV0MzggODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzUiIHVuaWNvZGU9IiYjeGYyYzU7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNNDUzIC0xMDFxMCAtMjEgLTE2IC0zNy41dC0zNyAtMTYuNXEtMSAwIC0xMyAzcS02MyAxNSAtMTYyIDE0MHEtMjI1IDI4NCAtMjI1IDY3NnEwIDM0MSAyMTMgNjE0cTM5IDUxIDk1IDEwMy41dDk0IDUyLjVxMTkgMCAzNSAtMTMuNXQxNiAtMzIuNXEwIC0yNyAtNjMgLTkwcS05OCAtMTAyIC0xNDcgLTE4NHEtMTE5IC0xOTkgLTExOSAtNDQ5cTAgLTI4MSAxMjMgLTQ5MXE1MCAtODUgMTM2IC0xNzNxMiAtMyAxNC41IC0xNnQxOS41IC0yMQ0KdDE3IC0yMC41dDE0LjUgLTIzLjV0NC41IC0yMXpNMTc5NiAzM3EwIC0yOSAtMTcuNSAtNDguNXQtNDYuNSAtMTkuNWgtMTA4MXEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMjkgMTcuNSA0OC41dDQ2LjUgMTkuNWgxMDgxcTI2IDAgNDUgLTE5dDE5IC00NXpNMTU4MSA2NDRxMCAtMTM0IC02NyAtMjMzcS0yNSAtMzggLTY5LjUgLTc4LjV0LTgzLjUgLTYwLjVxLTE2IC0xMCAtMjcgLTEwcS03IDAgLTE1IDZ0LTggMTJxMCA5IDE5IDMwdDQyIDQ2DQp0NDIgNjcuNXQxOSA4OC41cTAgNzYgLTM1IDEzMHEtMjkgNDIgLTQ2IDQycS0zIDAgLTMgLTVxMCAtMTIgNy41IC0zNS41dDcuNSAtMzYuNXEwIC0yMiAtMjEuNSAtMzV0LTQ0LjUgLTEzcS02NiAwIC02NiA3NnEwIDE1IDEuNSA0NHQxLjUgNDRxMCAyNSAtMTAgNDZxLTEzIDI1IC00MiA1My41dC01MSAyOC41cS01IDAgLTcgLTAuNXQtMy41IC0yLjV0LTEuNSAtNnEwIC0yIDE2IC0yNnQxNiAtNTRxMCAtMzcgLTE5IC02OHQtNDYgLTU0DQp0LTUzLjUgLTQ2dC00NS41IC01NHQtMTkgLTY4cTAgLTk4IDQyIC0xNjBxMjkgLTQzIDc5IC02M3ExNiAtNSAxNyAtMTBxMSAtMiAxIC01cTAgLTE2IC0xOCAtMTZxLTYgMCAtMzMgMTFxLTExOSA0MyAtMTk1IDEzOS41dC03NiAyMTguNXEwIDU1IDI0LjUgMTE1LjV0NjAgMTE1dDcwLjUgMTA4LjV0NTkuNSAxMTMuNXQyNC41IDExMS41cTAgNTMgLTI1IDk0cS0yOSA0OCAtNTYgNjRxLTE5IDkgLTE5IDIxcTAgMjAgNDEgMjBxNTAgMCAxMTAgLTI5DQpxNDEgLTE5IDcxIC00NC41dDQ5LjUgLTUxdDMzLjUgLTYyLjV0MjIgLTY5dDE2IC04MHEwIC0xIDMgLTE3LjV0NC41IC0yNXQ1LjUgLTI1dDkgLTI3dDExIC0yMS41dDE0LjUgLTE2LjV0MTguNSAtNS41cTIzIDAgMzcgMTR0MTQgMzdxMCAyNSAtMjAgNjd0LTIwIDUydDEwIDEwcTI3IDAgOTMgLTcwcTcyIC03NiAxMDIuNSAtMTU2dDMwLjUgLTE4NnpNMjMwNCA2MTVxMCAtMjc0IC0xMzggLTUwM3EtMTkgLTMyIC00OCAtNzJ0LTY4IC04Ni41DQp0LTgxIC03N3QtNzQgLTMwLjVxLTE2IDAgLTMxIDE1LjV0LTE1IDMxLjVxMCAxNSAyOSA1MC41dDY4LjUgNzd0NDguNSA1Mi41cTE4MyAyMzAgMTgzIDUzMXEwIDEzMSAtMjAuNSAyMzV0LTcyLjUgMjExcS01OCAxMTkgLTE2MyAyMjhxLTIgMyAtMTMgMTMuNXQtMTYuNSAxNi41dC0xNSAxNy41dC0xNSAyMHQtOS41IDE4LjV0LTQgMTlxMCAxOSAxNiAzNS41dDM1IDE2LjVxNzAgMCAxOTYgLTE2OXE5OCAtMTMxIDE0NiAtMjczdDYwIC0zMTQNCnEyIC00MiAyIC02NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzYiIHVuaWNvZGU9IiYjeGYyYzY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTE4OSAyMjlsMTQ3IDY5M3E5IDQ0IC0xMC41IDYzdC01MS41IDdsLTg2NCAtMzMzcS0yOSAtMTEgLTM5LjUgLTI1dC0yLjUgLTI2LjV0MzIgLTE5LjVsMjIxIC02OWw1MTMgMzIzcTIxIDE0IDMyIDZxNyAtNSAtNCAtMTVsLTQxNSAtMzc1djB2MGwtMTYgLTIyOHEyMyAwIDQ1IDIybDEwOCAxMDRsMjI0IC0xNjVxNjQgLTM2IDgxIDM4ek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MQ0KdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkM3IiB1bmljb2RlPSImI3hmMmM3OyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTY0MCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2cTAgNjAgMzUgMTEwdDkzIDcxdjkwN2gxMjh2LTkwN3E1OCAtMjEgOTMgLTcxdDM1IC0xMTB6TTc2OCAxOTJxMCA3NyAtMzQgMTQ0dC05NCAxMTJ2NzY4cTAgODAgLTU2IDEzNnQtMTM2IDU2dC0xMzYgLTU2dC01NiAtMTM2di03NjhxLTYwIC00NSAtOTQgLTExMnQtMzQgLTE0NHEwIC0xMzMgOTMuNSAtMjI2LjV0MjI2LjUgLTkzLjV0MjI2LjUgOTMuNQ0KdDkzLjUgMjI2LjV6TTg5NiAxOTJxMCAtMTg1IC0xMzEuNSAtMzE2LjV0LTMxNi41IC0xMzEuNXQtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTgyIDEyOCAzMTN2NzExcTAgMTMzIDkzLjUgMjI2LjV0MjI2LjUgOTMuNXQyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXYtNzExcTEyOCAtMTMxIDEyOCAtMzEzek0xMDI0IDc2OHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMDI0di0xMjhoLTE5MnYxMjhoMTkyek0xMDI0IDEyODB2LTEyOGgtMTkyDQp2MTI4aDE5MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzgiIHVuaWNvZGU9IiYjeGYyYzg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNjQwIDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZxMCA2MCAzNSAxMTB0OTMgNzF2NjUxaDEyOHYtNjUxcTU4IC0yMSA5MyAtNzF0MzUgLTExMHpNNzY4IDE5MnEwIDc3IC0zNCAxNDR0LTk0IDExMnY3NjhxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZ2LTc2OHEtNjAgLTQ1IC05NCAtMTEydC0zNCAtMTQ0cTAgLTEzMyA5My41IC0yMjYuNXQyMjYuNSAtOTMuNXQyMjYuNSA5My41DQp0OTMuNSAyMjYuNXpNODk2IDE5MnEwIC0xODUgLTEzMS41IC0zMTYuNXQtMzE2LjUgLTEzMS41dC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxODIgMTI4IDMxM3Y3MTFxMCAxMzMgOTMuNSAyMjYuNXQyMjYuNSA5My41dDIyNi41IC05My41dDkzLjUgLTIyNi41di03MTFxMTI4IC0xMzEgMTI4IC0zMTN6TTEwMjQgNzY4di0xMjhoLTE5MnYxMjhoMTkyek0xMDI0IDEwMjR2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTI4MHYtMTI4aC0xOTINCnYxMjhoMTkyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDOSIgdW5pY29kZT0iJiN4ZjJjOTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik02NDAgMTkycTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnEwIDYwIDM1IDExMHQ5MyA3MXYzOTVoMTI4di0zOTVxNTggLTIxIDkzIC03MXQzNSAtMTEwek03NjggMTkycTAgNzcgLTM0IDE0NHQtOTQgMTEydjc2OHEwIDgwIC01NiAxMzZ0LTEzNiA1NnQtMTM2IC01NnQtNTYgLTEzNnYtNzY4cS02MCAtNDUgLTk0IC0xMTJ0LTM0IC0xNDRxMCAtMTMzIDkzLjUgLTIyNi41dDIyNi41IC05My41dDIyNi41IDkzLjUNCnQ5My41IDIyNi41ek04OTYgMTkycTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDE4MiAxMjggMzEzdjcxMXEwIDEzMyA5My41IDIyNi41dDIyNi41IDkzLjV0MjI2LjUgLTkzLjV0OTMuNSAtMjI2LjV2LTcxMXExMjggLTEzMSAxMjggLTMxM3pNMTAyNCA3Njh2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTAyNHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMjgwdi0xMjhoLTE5Mg0KdjEyOGgxOTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkNBIiB1bmljb2RlPSImI3hmMmNhOyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTY0MCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2cTAgNjAgMzUgMTEwdDkzIDcxdjEzOWgxMjh2LTEzOXE1OCAtMjEgOTMgLTcxdDM1IC0xMTB6TTc2OCAxOTJxMCA3NyAtMzQgMTQ0dC05NCAxMTJ2NzY4cTAgODAgLTU2IDEzNnQtMTM2IDU2dC0xMzYgLTU2dC01NiAtMTM2di03NjhxLTYwIC00NSAtOTQgLTExMnQtMzQgLTE0NHEwIC0xMzMgOTMuNSAtMjI2LjV0MjI2LjUgLTkzLjV0MjI2LjUgOTMuNQ0KdDkzLjUgMjI2LjV6TTg5NiAxOTJxMCAtMTg1IC0xMzEuNSAtMzE2LjV0LTMxNi41IC0xMzEuNXQtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTgyIDEyOCAzMTN2NzExcTAgMTMzIDkzLjUgMjI2LjV0MjI2LjUgOTMuNXQyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXYtNzExcTEyOCAtMTMxIDEyOCAtMzEzek0xMDI0IDc2OHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMDI0di0xMjhoLTE5MnYxMjhoMTkyek0xMDI0IDEyODB2LTEyOGgtMTkyDQp2MTI4aDE5MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQ0IiIHVuaWNvZGU9IiYjeGYyY2I7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNjQwIDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZxMCA3OSA1NiAxMzUuNXQxMzYgNTYuNXQxMzYgLTU2LjV0NTYgLTEzNS41ek03NjggMTkycTAgNzcgLTM0IDE0NHQtOTQgMTEydjc2OHEwIDgwIC01NiAxMzZ0LTEzNiA1NnQtMTM2IC01NnQtNTYgLTEzNnYtNzY4cS02MCAtNDUgLTk0IC0xMTJ0LTM0IC0xNDRxMCAtMTMzIDkzLjUgLTIyNi41dDIyNi41IC05My41dDIyNi41IDkzLjV0OTMuNSAyMjYuNXoNCk04OTYgMTkycTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDE4MiAxMjggMzEzdjcxMXEwIDEzMyA5My41IDIyNi41dDIyNi41IDkzLjV0MjI2LjUgLTkzLjV0OTMuNSAtMjI2LjV2LTcxMXExMjggLTEzMSAxMjggLTMxM3pNMTAyNCA3Njh2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTAyNHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMjgwdi0xMjhoLTE5MnYxMjhoMTkyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDQyIgdW5pY29kZT0iJiN4ZjJjYzsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xNDMzIDEyODdxMTAgLTEwIDEwIC0yM3QtMTAgLTIzbC02MjYgLTYyNnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC04MiA4MnEtMTAgMTAgLTEwIDIzdDEwIDIzbDQ0IDQ0cS03MiA5MSAtODEuNSAyMDd0NDYuNSAyMTVxLTc0IDcxIC0xNzYgNzFxLTEwNiAwIC0xODEgLTc1dC03NSAtMTgxdi0xMjgwaC0yNTZ2MTI4MHEwIDEwNCA0MC41IDE5OC41dDEwOS41IDE2My41dDE2My41IDEwOS41dDE5OC41IDQwLjVxMTA2IDAgMjAxIC00MQ0KdDE2NiAtMTE1cTk0IDM5IDE5NyAyNC41dDE4NSAtNzkuNWw0NCA0NHExMCAxMCAyMyAxMHQyMyAtMTB6TTEzNDQgMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTE2MDAgODk2cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl6TTE4NTYgMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5DQp0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTIxNiA4OTZxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xNDA4IDgzMnEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV6TTE3MjggODk2cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTA4OCA3NjgNCnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTEzNDQgNjQwcS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl6TTE2MDAgNzY4cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTIxNiA1MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTkNCnQxOSAtNDV0LTE5IC00NXQtNDUgLTE5ek0xNDcyIDY0MHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTEwODggNTEycTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTM0NCA1MTJxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xMjE2IDM4NA0KcTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTA4OCAyNTZxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDRCIgdW5pY29kZT0iJiN4ZjJjZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjY0IDQ0OHYtMTkycTAgLTE2OSAtMTI4IC0yODZ2LTE5NHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMThxLTYzIC0yMiAtMTI4IC0yMmgtNzY4cS02NSAwIC0xMjggMjJ2LTExMHEwIC0xNyAtOS41IC0yOC41dC0yMi41IC0xMS41aC02NHEtMTMgMCAtMjIuNSAxMS41dC05LjUgMjguNXYxODZxLTEyOCAxMTcgLTEyOCAyODZ2MTkyaDE1MzZ6TTcwNCA4NjRxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOQ0KdC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNNzY4IDkyOHEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNNzA0IDk5MnEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNODMyIDk5MnEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNNzY4IDEwNTZxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOQ0KdC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNNzA0IDExMjBxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTE3OTIgNjA4di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNzI4cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2djY0MHEwIDEwNiA3NSAxODF0MTgxIDc1cTEwOCAwIDE4NCAtNzhxNDYgMTkgOTggMTJ0OTMgLTM5bDIyIDIycTExIDExIDIyIDBsNDIgLTQyDQpxMTEgLTExIDAgLTIybC0zMTQgLTMxNHEtMTEgLTExIC0yMiAwbC00MiA0MnEtMTEgMTEgMCAyMmwyMiAyMnEtMzYgNDYgLTQwLjUgMTA0dDIzLjUgMTA4cS0zNyAzNSAtODggMzVxLTUzIDAgLTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV2LTY0MGgxNTA0cTE0IDAgMjMgLTl0OSAtMjN6TTg5NiAxMDU2cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek04MzIgMTEyMHEwIC0xNCAtOSAtMjN0LTIzIC05DQp0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek03NjggMTE4NHEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNOTYwIDExMjBxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTg5NiAxMTg0cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek04MzIgMTI0OHEwIC0xNCAtOSAtMjMNCnQtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek0xMDI0IDExODRxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTk2MCAxMjQ4cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek0xMDg4IDEyNDhxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkNFIiB1bmljb2RlPSImI3hmMmNlOyIgDQpkPSJNOTk0IDM0NHEwIC04NiAtMTcgLTE5N3EtMzEgLTIxNSAtNTUgLTMxM3EtMjIgLTkwIC0xNTIgLTkwdC0xNTIgOTBxLTI0IDk4IC01NSAzMTNxLTE3IDExMCAtMTcgMTk3cTAgMTY4IDIyNCAxNjh0MjI0IC0xNjh6TTE1MzYgNzY4cTAgLTI0MCAtMTM0IC00MzR0LTM1MCAtMjgwcS04IC0zIC0xNSAzdC02IDE1cTcgNDggMTAgNjZxNCAzMiA2IDQ3cTEgOSA5IDEycTE1OSA4MSAyNTUuNSAyMzR0OTYuNSAzMzdxMCAxODAgLTkxIDMzMC41DQp0LTI0NyAyMzQuNXQtMzM3IDc0cS0xMjQgLTcgLTIzNyAtNjF0LTE5My41IC0xNDAuNXQtMTI4IC0yMDJ0LTQ2LjUgLTI0MC41cTEgLTE4NCA5OSAtMzM2LjV0MjU3IC0yMzEuNXE3IC0zIDkgLTEycTMgLTIxIDYgLTQ1cTEgLTkgNSAtMzIuNXQ2IC0zNS41cTEgLTkgLTYuNSAtMTV0LTE1LjUgLTJxLTE0OCA1OCAtMjYxIDE2OS41dC0xNzMuNSAyNjR0LTUyLjUgMzE5LjVxNyAxNDMgNjYgMjczLjV0MTU0LjUgMjI3dDIyNSAxNTcuNXQyNzIuNSA3MA0KcTE2NCAxMCAzMTUuNSAtNDYuNXQyNjEgLTE2MC41dDE3NSAtMjUwLjV0NjUuNSAtMzA4LjV6TTk5NCA4MDBxMCAtOTMgLTY1LjUgLTE1OC41dC0xNTguNSAtNjUuNXQtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjV0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV6TTEyODIgNzY4cTAgLTEyMiAtNTMuNSAtMjI4LjV0LTE0Ni41IC0xNzcuNXEtOCAtNiAtMTYgLTJ0LTEwIDE0cS02IDUyIC0yOSA5MnEtNyAxMCAzIDIwDQpxNTggNTQgOTEgMTI3dDMzIDE1NXEwIDExMSAtNTguNSAyMDR0LTE1Ny41IDE0MS41dC0yMTIgMzYuNXEtMTMzIC0xNSAtMjI5IC0xMTN0LTEwOSAtMjMxcS0xMCAtOTIgMjMuNSAtMTc2dDk4LjUgLTE0NHExMCAtMTAgMyAtMjBxLTI0IC00MSAtMjkgLTkzcS0yIC05IC0xMCAtMTN0LTE2IDJxLTk1IDc0IC0xNDguNSAxODN0LTUxLjUgMjM0cTMgMTMxIDY5IDI0NHQxNzcgMTgxLjV0MjQxIDc0LjVxMTQ0IDcgMjY4IC02MHQxOTYuNSAtMTg3LjUNCnQ3Mi41IC0yNjMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDAiIHVuaWNvZGU9IiYjeGYyZDA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjU2IDEyOGgxMjgwdjc2OGgtMTI4MHYtNzY4ek0xNzkyIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQxIiB1bmljb2RlPSImI3hmMmQxOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgMjI0di0xOTJxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjE5MnEwIDY2IDQ3IDExM3QxMTMgNDdoMTQ3MnE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDIiIHVuaWNvZGU9IiYjeGYyZDI7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMjU2IDBoNzY4djUxMmgtNzY4di01MTJ6TTEyODAgNTEyaDUxMnY3NjhoLTc2OHYtMjU2aDk2cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0zNTJ6TTIwNDggMTM3NnYtOTYwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC02MDh2LTM1MnEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtOTYwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDYwOHYzNTJxMCA2NiA0NyAxMTN0MTEzIDQ3aDk2MHE2NiAwIDExMyAtNDcNCnQ0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJEMyIgdW5pY29kZT0iJiN4ZjJkMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMTc1IDIxNWwxNDYgMTQ2cTEwIDEwIDEwIDIzdC0xMCAyM2wtMjMzIDIzM2wyMzMgMjMzcTEwIDEwIDEwIDIzdC0xMCAyM2wtMTQ2IDE0NnEtMTAgMTAgLTIzIDEwdC0yMyAtMTBsLTIzMyAtMjMzbC0yMzMgMjMzcS0xMCAxMCAtMjMgMTB0LTIzIC0xMGwtMTQ2IC0xNDZxLTEwIC0xMCAtMTAgLTIzdDEwIC0yM2wyMzMgLTIzM2wtMjMzIC0yMzNxLTEwIC0xMCAtMTAgLTIzdDEwIC0yM2wxNDYgLTE0NnExMCAtMTAgMjMgLTEwdDIzIDEwDQpsMjMzIDIzM2wyMzMgLTIzM3ExMCAtMTAgMjMgLTEwdDIzIDEwek0xNzkyIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQ0IiB1bmljb2RlPSImI3hmMmQ0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyNTcgNDI1bC0xNDYgLTE0NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xNjkgMTY5bC0xNjkgLTE2OXEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xNDYgMTQ2cS0xMCAxMCAtMTAgMjN0MTAgMjNsMTY5IDE2OWwtMTY5IDE2OXEtMTAgMTAgLTEwIDIzdDEwIDIzbDE0NiAxNDZxMTAgMTAgMjMgMTB0MjMgLTEwbDE2OSAtMTY5bDE2OSAxNjlxMTAgMTAgMjMgMTB0MjMgLTEwbDE0NiAtMTQ2cTEwIC0xMCAxMCAtMjN0LTEwIC0yMw0KbC0xNjkgLTE2OWwxNjkgLTE2OXExMCAtMTAgMTAgLTIzdC0xMCAtMjN6TTI1NiAxMjhoMTI4MHYxMDI0aC0xMjgwdi0xMDI0ek0xNzkyIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQ1IiB1bmljb2RlPSImI3hmMmQ1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwNzAgMzU4bDMwNiA1NjRoLTY1NGwtMzA2IC01NjRoNjU0ek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJENiIgdW5pY29kZT0iJiN4ZjJkNjsiIGhvcml6LWFkdi14PSIxNzk0IiANCmQ9Ik0xMjkxIDEwNjBxLTE1IDE3IC0zNSA4LjV0LTI2IC0yOC41dDUgLTM4cTE0IC0xNyA0MCAtMTQuNXQzNCAyMC41dC0xOCA1MnpNODk1IDgxNHEtOCAtOCAtMTkuNSAtOHQtMTguNSA4cS04IDggLTggMTl0OCAxOHE3IDggMTguNSA4dDE5LjUgLThxNyAtNyA3IC0xOHQtNyAtMTl6TTEwNjAgNzQwbC0zNSAtMzVxLTEyIC0xMyAtMjkuNSAtMTN0LTMwLjUgMTNsLTM4IDM4cS0xMiAxMyAtMTIgMzB0MTIgMzBsMzUgMzVxMTIgMTIgMjkuNSAxMg0KdDMwLjUgLTEybDM4IC0zOXExMiAtMTIgMTIgLTI5LjV0LTEyIC0yOS41ek05NTEgODcwcS03IC04IC0xOC41IC04dC0xOS41IDhxLTcgOCAtNyAxOXQ3IDE5cTggOCAxOSA4dDE5IC04dDggLTE5dC04IC0xOXpNMTM1NCA5NjhxLTM0IC02NCAtMTA3LjUgLTg1LjV0LTEyNy41IDE2LjVxLTM4IDI4IC02MSA2Ni41dC0yMSA4Ny41dDM5IDkydDc1LjUgNTN0NzAuNSAtNXQ3MCAtNTFxMiAtMiAxMyAtMTIuNXQxNC41IC0xMy41dDEzIC0xMy41DQp0MTIuNSAtMTUuNXQxMCAtMTUuNXQ4LjUgLTE4dDQgLTE4LjV0MSAtMjF0LTUgLTIydC05LjUgLTI0ek0xNTU1IDQ4NnEzIDIwIC04LjUgMzQuNXQtMjcuNSAyMS41dC0zMyAxN3QtMjMgMjBxLTQwIDcxIC04NCA5OC41dC0xMTMgMTEuNXExOSAxMyA0MCAxOC41dDMzIDQuNWwxMiAtMXEyIDQ1IC0zNCA5MHE2IDIwIDYuNSA0MC41dC0yLjUgMzAuNWwtMyAxMHE0MyAyNCA3MSA2NXQzNCA5MXExMCA4NCAtNDMgMTUwLjV0LTEzNyA3Ni41DQpxLTYwIDcgLTExNCAtMTguNXQtODIgLTc0LjVxLTMwIC01MSAtMzMuNSAtMTAxdDE0LjUgLTg3dDQzLjUgLTY0dDU2LjUgLTQycS00NSA0IC04OCAzNnQtNTcgODhxLTI4IDEwOCAzMiAyMjJxLTE2IDIxIC0yOSAzMnEtNTAgMCAtODkgLTE5cTE5IDI0IDQyIDM3dDM2IDE0bDEzIDFxMCA1MCAtMTMgNzhxLTEwIDIxIC0zMi41IDI4LjV0LTQ3IC0zLjV0LTM3LjUgLTQwcTIgNCA0IDdxLTcgLTI4IC02LjUgLTc1LjV0MTkgLTExN3Q0OC41IC0xMjIuNQ0KcS0yNSAtMTQgLTQ3IC0zNnEtMzUgLTE2IC04NS41IC03MC41dC04NC41IC0xMDEuNWwtMzMgLTQ2cS05MCAtMzQgLTE4MSAtMTI1LjV0LTc1IC0xNjIuNXExIC0xNiAxMSAtMjdxLTE1IC0xMiAtMzAgLTMwcS0yMSAtMjUgLTIxIC01NHQyMS41IC00MHQ2My41IDZxNDEgMTkgNzcgNDkuNXQ1NSA2MC41cS0yIDIgLTYuNSA1dC0yMC41IDcuNXQtMzMgMy41cTIzIDUgNTEgMTIuNXQ0MCAxMHQyNy41IDZ0MjYgNHQyMy41IDAuNXExNCAtNyAyMiAzNA0KcTcgMzcgNyA5MHEwIDEwMiAtNDAgMTUwcTEwNiAtMTAzIDEwMSAtMjE5cS0xIC0yOSAtMTUgLTUwdC0yNyAtMjdsLTEzIC02cS00IC03IC0xOSAtMzJ0LTI2IC00NS41dC0yNi41IC01MnQtMjUgLTYxdC0xNyAtNjN0LTYuNSAtNjYuNXQxMCAtNjNxLTM1IDU0IC0zNyA4MHEtMjIgLTI0IC0zNC41IC0zOXQtMzMuNSAtNDJ0LTMwLjUgLTQ2dC0xNi41IC00MXQtMC41IC0zOHQyNS41IC0yN3E0NSAtMjUgMTQ0IDY0dDE5MC41IDIyMS41DQp0MTIyLjUgMjI4LjVxODYgNTIgMTQ1IDExNS41dDg2IDExOS41cTQ3IC05MyAxNTQgLTE3OHExMDQgLTgzIDE2NyAtODBxMzkgMiA0NiA0M3pNMTc5NCA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2LjUgLTE5MXQtMzQ4LjUgLTcxdC0zNDguNSA3MXQtMjg2LjUgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2LjUgMTkxdDM0OC41IDcxdDM0OC41IC03MXQyODYuNSAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQ3IiB1bmljb2RlPSImI3hmMmQ3OyIgDQpkPSJNNTE4IDEzNTN2LTY1NXExMDMgLTEgMTkxLjUgMS41dDEyNS41IDUuNWwzNyAzcTY4IDIgOTAuNSAyNC41dDM5LjUgOTQuNWwzMyAxNDJoMTAzbC0xNCAtMzIybDcgLTMxOWgtMTAzbC0yOSAxMjdxLTE1IDY4IC00NSA5M3QtODQgMjZxLTg3IDggLTM1MiA4di01NTZxMCAtNzggNDMuNSAtMTE1LjV0MTMzLjUgLTM3LjVoMzU3cTM1IDAgNTkuNSAydDU1IDcuNXQ1NCAxOHQ0OC41IDMydDQ2IDUwLjV0MzkgNzNsOTMgMjE2aDg5DQpxLTYgLTM3IC0zMS41IC0yNTJ0LTMwLjUgLTI3NnEtMTQ2IDUgLTI2My41IDh0LTE2Mi41IDRoLTQ0aC02MjhsLTM3NiAtMTJ2MTAybDEyNyAyNXE2NyAxMyA5MS41IDM3dDI1LjUgNzlsOCA2NDNxMyA0MDIgLTggNjQ1cS0yIDYxIC0yNS41IDg0dC05MS41IDM2bC0xMjcgMjR2MTAybDM3NiAtMTJoNzAycTEzOSAwIDM3NCAyN3EtNiAtNjggLTE0IC0xOTQuNXQtMTIgLTIxOS41bC01IC05MmgtOTNsLTMyIDEyNHEtMzEgMTIxIC03NCAxNzkuNQ0KdC0xMTMgNTguNWgtNTQ4cS0yOCAwIC0zNS41IC04LjV0LTcuNSAtMzAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDgiIHVuaWNvZGU9IiYjeGYyZDg7IiANCmQ9Ik05MjIgNzM5di0xODJxMCAtNCAwLjUgLTE1dDAgLTE1bC0xLjUgLTEydC0zLjUgLTExLjV0LTYuNSAtNy41dC0xMSAtNS41dC0xNiAtMS41djMwOXE5IDAgMTYgLTF0MTEgLTV0Ni41IC01LjV0My41IC05LjV0MSAtMTAuNXYtMTMuNXYtMTR6TTEyMzggNjQzdi0xMjFxMCAtMSAwLjUgLTEyLjV0MCAtMTUuNXQtMi41IC0xMS41dC03LjUgLTEwLjV0LTEzLjUgLTNxLTkgMCAtMTQgOXEtNCAxMCAtNCAxNjV2N3Y4LjV2OXQxLjUgOC41bDMuNSA3DQp0NSA1LjV0OCAxLjVxNiAwIDEwIC0xLjV0Ni41IC00LjV0NCAtNnQyIC04LjV0MC41IC04di05LjV2LTl6TTE4MCA0MDdoMTIydjQ3MmgtMTIydi00NzJ6TTYxNCA0MDdoMTA2djQ3MmgtMTU5bC0yOCAtMjIxcS0yMCAxNDggLTMyIDIyMWgtMTU4di00NzJoMTA3djMxMmw0NSAtMzEyaDc2bDQzIDMxOXYtMzE5ek0xMDM5IDcxMnEwIDY3IC01IDkwcS0zIDE2IC0xMSAyOC41dC0xNyAyMC41dC0yNSAxNHQtMjYuNSA4LjV0LTMxIDR0LTI5IDEuNQ0KaC0yOS41aC0xMmgtOTF2LTQ3Mmg1NnExNjkgLTEgMTk3IDI0LjV0MjUgMTgwLjVxLTEgNjIgLTEgMTAwek0xMzU2IDUxNXYxMzNxMCAyOSAtMiA0NXQtOS41IDMzLjV0LTI0LjUgMjV0LTQ2IDcuNXEtNDYgMCAtNzcgLTM0djE1NGgtMTE3di00NzJoMTEwbDcgMzBxMzAgLTM2IDc3IC0zNnE1MCAwIDY2IDMwLjV0MTYgODMuNXpNMTUzNiAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMjE2cS02NiAwIC0xMTMgNDd0LTQ3IDExMw0KdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDEyMTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQ5IiB1bmljb2RlPSImI3hmMmQ5OyIgaG9yaXotYWR2LXg9IjIxNzYiIA0KZD0iTTExNDMgLTE5N3EtNiAxIC0xMSA0cS0xMyA4IC0zNiAyM3QtODYgNjV0LTExNi41IDEwNC41dC0xMTIgMTQwdC04OS41IDE3Mi41cS0xNyAzIC0xNzUgMzdxNjYgLTIxMyAyMzUgLTM2MnQzOTEgLTE4NHpNNTAyIDQwOWwxNjggLTI4cS0yNSA3NiAtNDEgMTY3LjV0LTE5IDE0NS41bC00IDUzcS04NCAtODIgLTEyMSAtMjI0cTUgLTY1IDE3IC0xMTR6TTYxMiAxMDE4cS00MyAtNjQgLTc3IC0xNDhxNDQgNDYgNzQgNjh6TTIwNDkgNTg0DQpxMCAxNjEgLTYyIDMwN3QtMTY3LjUgMjUydC0yNTAuNSAxNjguNXQtMzA0IDYyLjVxLTE0NyAwIC0yODEgLTUyLjV0LTI0MCAtMTQ4LjVxLTMwIC01OCAtNDUgLTE2MHE2MCA1MSAxNDMgODMuNXQxNTguNSA0M3QxNDMgMTMuNXQxMDguNSAtMWw0MCAtM3EzMyAtMSA1MyAtMTUuNXQyNC41IC0zM3Q2LjUgLTM3dC0xIC0yOC41cS0xMjYgMTEgLTIyNy41IDAuNXQtMTgzIC00My41dC0xNDIuNSAtNzEuNXQtMTMxIC05OC41DQpxNCAtMzYgMTEuNSAtOTIuNXQzNS41IC0xNzh0NjIgLTE3OS41cTEyMyAtNiAyNDcuNSAxNC41dDIxNC41IDUzLjV0MTYyLjUgNjd0MTA5LjUgNTlsMzcgMjRxMjIgMTYgMzkuNSAyMC41dDMwLjUgLTV0MTcgLTM0LjVxMTQgLTk3IC0zOSAtMTIxcS0yMDggLTk3IC00NjcgLTEzNHEtMTM1IC0yMCAtMzE3IC0xNnE0MSAtOTYgMTEwIC0xNzYuNXQxMzcgLTEyN3QxMzAuNSAtNzl0MTAxLjUgLTQzLjVsMzkgLTEycTE0MyAtMjMgMjYzIDE1DQpxMTk1IDk5IDMxNCAyODl0MTE5IDQxOHpNMjEyMyA2MjFxLTE0IC0xMzUgLTQwIC0yMTJxLTcwIC0yMDggLTE4MS41IC0zNDYuNXQtMzE4LjUgLTI1My41cS00OCAtMzMgLTgyIC00NHEtNzIgLTI2IC0xNjMgLTE2cS0zNiAtMyAtNzMgLTNxLTI4MyAwIC01MDQuNSAxNzN0LTI5NS41IDQ0MnEtMSAwIC00IDAuNXQtNSAwLjVxLTYgLTUwIDIuNSAtMTEyLjV0MjYgLTExNXQzNiAtOTh0MzEuNSAtNzEuNWwxNCAtMjZxOCAtMTIgNTQgLTgyDQpxLTcxIDM4IC0xMjQuNSAxMDYuNXQtNzguNSAxNDB0LTM5LjUgMTM3dC0xNy41IDEwNy41bC0yIDQycS01IDIgLTMzLjUgMTIuNXQtNDguNSAxOHQtNTMgMjAuNXQtNTcuNSAyNXQtNTAgMjUuNXQtNDIuNSAyN3QtMjUgMjUuNXExOSAtMTAgNTAuNSAtMjUuNXQxMTMgLTQ1LjV0MTQ1LjUgLTM4bDIgMzJxMTEgMTQ5IDk0IDI5MHE0MSAyMDIgMTc2IDM2NXEyOCAxMTUgODEgMjE0cTE1IDI4IDMyIDQ1dDQ5IDMycTE1OCA3NCAzMDMuNSAxMDQNCnQzMDIgMTF0MzA2LjUgLTk3cTIyMCAtMTE1IDMzMyAtMzM2dDg3IC00NzR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkRBIiB1bmljb2RlPSImI3hmMmRhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEzNDEgNzUycTI5IDQ0IC02LjUgMTI5LjV0LTEyMS41IDE0Mi41cS01OCAzOSAtMTI1LjUgNTMuNXQtMTE4IDQuNXQtNjguNSAtMzdxLTEyIC0yMyAtNC41IC0yOHQ0Mi41IC0xMHEyMyAtMyAzOC41IC01dDQ0LjUgLTkuNXQ1NiAtMTcuNXEzNiAtMTMgNjcuNSAtMzEuNXQ1MyAtMzd0NDAgLTM4LjV0MzAuNSAtMzh0MjIgLTM0LjV0MTYuNSAtMjguNXQxMiAtMTguNXQxMC41IC02dDExIDkuNXpNMTcwNCAxNzgNCnEtNTIgLTEyNyAtMTQ4LjUgLTIyMHQtMjE0LjUgLTE0MS41dC0yNTMgLTYwLjV0LTI2NiAxMy41dC0yNTEgOTF0LTIxMCAxNjEuNXQtMTQxLjUgMjM1LjV0LTQ2LjUgMzAzLjVxMSA0MSA4LjUgODQuNXQxMi41IDY0dDI0IDgwLjV0MjMgNzNxLTUxIC0yMDggMSAtMzk3dDE3MyAtMzE4dDI5MSAtMjA2dDM0NiAtODN0MzQ5IDc0LjV0Mjg5IDI0NC41cTIwIDI3IDE4IDE0cTAgLTQgLTQgLTE0ek0xNDY1IDYyN3EwIC0xMDQgLTQwLjUgLTE5OQ0KdC0xMDguNSAtMTY0dC0xNjIgLTEwOS41dC0xOTggLTQwLjV0LTE5OCA0MC41dC0xNjIgMTA5LjV0LTEwOC41IDE2NHQtNDAuNSAxOTl0NDAuNSAxOTl0MTA4LjUgMTY0dDE2MiAxMDkuNXQxOTggNDAuNXQxOTggLTQwLjV0MTYyIC0xMDkuNXQxMDguNSAtMTY0dDQwLjUgLTE5OXpNMTc1MiA5MTVxLTY1IDE0NyAtMTgwLjUgMjUxdC0yNTMgMTUzLjV0LTI5MiA1My41dC0zMDEgLTM2LjV0LTI3NS41IC0xMjl0LTIyMCAtMjExLjV0LTEzMSAtMjk3DQp0LTEwIC0zNzNxLTQ5IDE2MSAtNTEuNSAzMTEuNXQzNS41IDI3Mi41dDEwOSAyMjd0MTY1LjUgMTgwLjV0MjA3IDEyNnQyMzIgNzF0MjQyLjUgOXQyMzYgLTU0dDIxNiAtMTI0LjV0MTc4IC0xOTdxMzMgLTUwIDYyIC0xMjF0MzEgLTExMnpNMTY5MCA1NzNxMTIgMjQ0IC0xMzYuNSA0MTZ0LTM5Ni41IDI0MHEtOCAwIC0xMCA1dDI0IDhxMTI1IC00IDIzMCAtNTB0MTczIC0xMjB0MTE2IC0xNjguNXQ1OC41IC0xOTl0LTEgLTIwOA0KdC02MS41IC0xOTcuNXQtMTIyLjUgLTE2N3QtMTg1IC0xMTcuNXQtMjQ4LjUgLTQ2LjVxMTA4IDMwIDIwMS41IDgwdDE3NCAxMjN0MTI5LjUgMTc2LjV0NTUgMjI1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkRCIiB1bmljb2RlPSImI3hmMmRiOyIgDQpkPSJNMTkyIDI1NnYtMTI4aC0xMTJxLTE2IDAgLTE2IDE2djE2aC00OHEtMTYgMCAtMTYgMTZ2MzJxMCAxNiAxNiAxNmg0OHYxNnEwIDE2IDE2IDE2aDExMnpNMTkyIDUxMnYtMTI4aC0xMTJxLTE2IDAgLTE2IDE2djE2aC00OHEtMTYgMCAtMTYgMTZ2MzJxMCAxNiAxNiAxNmg0OHYxNnEwIDE2IDE2IDE2aDExMnpNMTkyIDc2OHYtMTI4aC0xMTJxLTE2IDAgLTE2IDE2djE2aC00OHEtMTYgMCAtMTYgMTZ2MzJxMCAxNiAxNiAxNmg0OHYxNg0KcTAgMTYgMTYgMTZoMTEyek0xOTIgMTAyNHYtMTI4aC0xMTJxLTE2IDAgLTE2IDE2djE2aC00OHEtMTYgMCAtMTYgMTZ2MzJxMCAxNiAxNiAxNmg0OHYxNnEwIDE2IDE2IDE2aDExMnpNMTkyIDEyODB2LTEyOGgtMTEycS0xNiAwIC0xNiAxNnYxNmgtNDhxLTE2IDAgLTE2IDE2djMycTAgMTYgMTYgMTZoNDh2MTZxMCAxNiAxNiAxNmgxMTJ6TTEyODAgMTQ0MHYtMTQ3MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTgzMnEtNDAgMCAtNjggMjgNCnQtMjggNjh2MTQ3MnEwIDQwIDI4IDY4dDY4IDI4aDgzMnE0MCAwIDY4IC0yOHQyOCAtNjh6TTE1MzYgMjA4di0zMnEwIC0xNiAtMTYgLTE2aC00OHYtMTZxMCAtMTYgLTE2IC0xNmgtMTEydjEyOGgxMTJxMTYgMCAxNiAtMTZ2LTE2aDQ4cTE2IDAgMTYgLTE2ek0xNTM2IDQ2NHYtMzJxMCAtMTYgLTE2IC0xNmgtNDh2LTE2cTAgLTE2IC0xNiAtMTZoLTExMnYxMjhoMTEycTE2IDAgMTYgLTE2di0xNmg0OHExNiAwIDE2IC0xNnpNMTUzNiA3MjB2LTMyDQpxMCAtMTYgLTE2IC0xNmgtNDh2LTE2cTAgLTE2IC0xNiAtMTZoLTExMnYxMjhoMTEycTE2IDAgMTYgLTE2di0xNmg0OHExNiAwIDE2IC0xNnpNMTUzNiA5NzZ2LTMycTAgLTE2IC0xNiAtMTZoLTQ4di0xNnEwIC0xNiAtMTYgLTE2aC0xMTJ2MTI4aDExMnExNiAwIDE2IC0xNnYtMTZoNDhxMTYgMCAxNiAtMTZ6TTE1MzYgMTIzMnYtMzJxMCAtMTYgLTE2IC0xNmgtNDh2LTE2cTAgLTE2IC0xNiAtMTZoLTExMnYxMjhoMTEycTE2IDAgMTYgLTE2di0xNg0KaDQ4cTE2IDAgMTYgLTE2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJEQyIgdW5pY29kZT0iJiN4ZjJkYzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNTY2IDQxOWwtMTY3IC0zM2wxODYgLTEwN3EyMyAtMTMgMjkuNSAtMzguNXQtNi41IC00OC41cS0xNCAtMjMgLTM5IC0yOS41dC00OCA2LjVsLTE4NiAxMDZsNTUgLTE2MHExMyAtMzggLTEyIC02My41dC02MC41IC0yMC41dC00OC41IDQybC0xMDIgMzAwbC0yNzEgMTU2di0zMTNsMjA4IC0yMzhxMTYgLTE4IDE3IC0zOXQtMTEgLTM2LjV0LTI4LjUgLTI1dC0zNyAtNS41dC0zNi41IDIybC0xMTIgMTI4di0yMTRxMCAtMjYgLTE5IC00NQ0KdC00NSAtMTl0LTQ1IDE5dC0xOSA0NXYyMTRsLTExMiAtMTI4cS0xNiAtMTggLTM2LjUgLTIydC0zNyA1LjV0LTI4LjUgMjV0LTExIDM2LjV0MTcgMzlsMjA4IDIzOHYzMTNsLTI3MSAtMTU2bC0xMDIgLTMwMHEtMTMgLTM3IC00OC41IC00MnQtNjAuNSAyMC41dC0xMiA2My41bDU1IDE2MGwtMTg2IC0xMDZxLTIzIC0xMyAtNDggLTYuNXQtMzkgMjkuNXEtMTMgMjMgLTYuNSA0OC41dDI5LjUgMzguNWwxODYgMTA3bC0xNjcgMzMNCnEtMjkgNiAtNDIgMjl0LTguNSA0Ni41dDI1LjUgNDB0NTAgMTAuNWwzMTAgLTYybDI3MSAxNTdsLTI3MSAxNTdsLTMxMCAtNjJxLTQgLTEgLTEzIC0xcS0yNyAwIC00NCAxOHQtMTkgNDB0MTEgNDN0NDAgMjZsMTY3IDMzbC0xODYgMTA3cS0yMyAxMyAtMjkuNSAzOC41dDYuNSA0OC41dDM5IDMwdDQ4IC03bDE4NiAtMTA2bC01NSAxNjBxLTEzIDM4IDEyIDYzLjV0NjAuNSAyMC41dDQ4LjUgLTQybDEwMiAtMzAwbDI3MSAtMTU2djMxMw0KbC0yMDggMjM4cS0xNiAxOCAtMTcgMzl0MTEgMzYuNXQyOC41IDI1dDM3IDUuNXQzNi41IC0yMmwxMTIgLTEyOHYyMTRxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di0yMTRsMTEyIDEyOHExNiAxOCAzNi41IDIydDM3IC01LjV0MjguNSAtMjV0MTEgLTM2LjV0LTE3IC0zOWwtMjA4IC0yMzh2LTMxM2wyNzEgMTU2bDEwMiAzMDBxMTMgMzcgNDguNSA0MnQ2MC41IC0yMC41dDEyIC02My41bC01NSAtMTYwbDE4NiAxMDYNCnEyMyAxMyA0OCA2LjV0MzkgLTI5LjVxMTMgLTIzIDYuNSAtNDguNXQtMjkuNSAtMzguNWwtMTg2IC0xMDdsMTY3IC0zM3EyNyAtNSA0MCAtMjZ0MTEgLTQzdC0xOSAtNDB0LTQ0IC0xOHEtOSAwIC0xMyAxbC0zMTAgNjJsLTI3MSAtMTU3bDI3MSAtMTU3bDMxMCA2MnEyOSA2IDUwIC0xMC41dDI1LjUgLTQwdC04LjUgLTQ2LjV0LTQyIC0yOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyREQiIHVuaWNvZGU9IiYjeGYyZGQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTQ3MyA2MDdxNyAxMTggLTMzIDIyNi41dC0xMTMgMTg5dC0xNzcgMTMxdC0yMjEgNTcuNXEtMTE2IDcgLTIyNS41IC0zMnQtMTkyIC0xMTAuNXQtMTM1IC0xNzV0LTU5LjUgLTIyMC41cS03IC0xMTggMzMgLTIyNi41dDExMyAtMTg5dDE3Ny41IC0xMzF0MjIxLjUgLTU3LjVxMTU1IC05IDI5MyA1OXQyMjQgMTk1LjV0OTQgMjgzLjV6TTE3OTIgMTUzNmwtMzQ5IC0zNDhxMTIwIC0xMTcgMTgwLjUgLTI3MnQ1MC41IC0zMjENCnEtMTEgLTE4MyAtMTAyIC0zMzl0LTI0MSAtMjU1LjV0LTMzMiAtMTI0LjVsLTk5OSAtMTMybDM0NyAzNDdxLTEyMCAxMTYgLTE4MC41IDI3MS41dC01MC41IDMyMS41cTExIDE4NCAxMDIgMzQwdDI0MS41IDI1NS41dDMzMi41IDEyNC41cTE2NyAyMiA1MDAgNjZ0NTAwIDY2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJERSIgdW5pY29kZT0iJiN4ZjJkZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05NDggNTA4bDE2MyAtMzI5aC01MWwtMTc1IDM1MGwtMTcxIC0zNTBoLTQ5bDE3OSAzNzRsLTc4IDMzbDIxIDQ5bDI0MCAtMTAybC0yMSAtNTB6TTU2MyAxMTAwbDMwNCAtMTMwbC0xMzAgLTMwNGwtMzA0IDEzMHpNOTA3IDkxNWwyNDAgLTEwM2wtMTAzIC0yMzlsLTIzOSAxMDJ6TTExODggNzY1bDE5MSAtODFsLTgyIC0xOTBsLTE5MCA4MXpNMTY4MCA2NDBxMCAxNTkgLTYyIDMwNHQtMTY3LjUgMjUwLjV0LTI1MC41IDE2Ny41dC0zMDQgNjINCnQtMzA0IC02MnQtMjUwLjUgLTE2Ny41dC0xNjcuNSAtMjUwLjV0LTYyIC0zMDR0NjIgLTMwNHQxNjcuNSAtMjUwLjV0MjUwLjUgLTE2Ny41dDMwNCAtNjJ0MzA0IDYydDI1MC41IDE2Ny41dDE2Ny41IDI1MC41dDYyIDMwNHpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2IC0xOTF0LTM0OCAtNzF0LTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzENCnQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFMCIgdW5pY29kZT0iJiN4ZjJlMDsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xMzM0IDMwMnEtNCAyNCAtMjcuNSAzNHQtNDkuNSAxMC41dC00OC41IDEyLjV0LTI1LjUgMzhxLTUgNDcgMzMgMTM5LjV0NzUgMTgxdDMyIDEyNy41cS0xNCAxMDEgLTExNyAxMDNxLTQ1IDEgLTc1IC0xNmwtMyAtMmwtNSAtMi41dC00LjUgLTJ0LTUgLTJ0LTUgLTAuNXQtNiAxLjV0LTYgMy41dC02LjUgNXEtMyAyIC05IDguNXQtOSA5dC04LjUgNy41dC05LjUgNy41dC05LjUgNS41dC0xMSA0LjV0LTExLjUgMi41cS0zMCA1IC00OCAtMw0KdC00NSAtMzFxLTEgLTEgLTkgLTguNXQtMTIuNSAtMTF0LTE1IC0xMHQtMTYuNSAtNS41dC0xNyAzcS01NCAyNyAtODQgNDBxLTQxIDE4IC05NCAtNXQtNzYgLTY1cS0xNiAtMjggLTQxIC05OC41dC00My41IC0xMzIuNXQtNDAgLTEzNHQtMjEuNSAtNzNxLTIyIC02OSAxOC41IC0xMTl0MTEwLjUgLTQ2cTMwIDIgNTAuNSAxNXQzOC41IDQ2cTcgMTMgNzkgMTk5LjV0NzcgMTk0LjVxNiAxMSAyMS41IDE4dDI5LjUgMHEyNyAtMTUgMjEgLTUzDQpxLTIgLTE4IC01MSAtMTM5LjV0LTUwIC0xMzIuNXEtNiAtMzggMTkuNSAtNTYuNXQ2MC41IC03dDU1IDQ5LjVxNCA4IDQ1LjUgOTJ0ODEuNSAxNjMuNXQ0NiA4OC41cTIwIDI5IDQxIDI4cTI5IDAgMjUgLTM4cS0yIC0xNiAtNjUuNSAtMTQ3LjV0LTcwLjUgLTE1OS41cS0xMiAtNTMgMTMgLTEwM3Q3NCAtNzRxMTcgLTkgNTEgLTE1LjV0NzEuNSAtOHQ2Mi41IDE0dDIwIDQ4LjV6TTM4MyA4NnEzIC0xNSAtNSAtMjcuNXQtMjMgLTE1LjUNCnEtMTQgLTMgLTI2LjUgNXQtMTUuNSAyM3EtMyAxNCA1IDI3dDIyIDE2dDI3IC01dDE2IC0yM3pNOTUzIC0xNzdxMTIgLTE3IDguNSAtMzcuNXQtMjAuNSAtMzIuNXQtMzcuNSAtOHQtMzIuNSAyMXEtMTEgMTcgLTcuNSAzNy41dDIwLjUgMzIuNXQzNy41IDh0MzEuNSAtMjF6TTE3NyA2MzVxLTE4IC0yNyAtNDkuNSAtMzN0LTU3LjUgMTNxLTI2IDE4IC0zMiA1MHQxMiA1OHExOCAyNyA0OS41IDMzdDU3LjUgLTEycTI2IC0xOSAzMiAtNTAuNQ0KdC0xMiAtNTguNXpNMTQ2NyAtNDJxMTkgLTI4IDEzIC02MS41dC0zNCAtNTIuNXQtNjAuNSAtMTN0LTUxLjUgMzR0LTEzIDYxdDMzIDUzcTI4IDE5IDYwLjUgMTN0NTIuNSAtMzR6TTE1NzkgNTYycTY5IC0xMTMgNDIuNSAtMjQ0LjV0LTEzNC41IC0yMDcuNXEtOTAgLTYzIC0xOTkgLTYwcS0yMCAtODAgLTg0LjUgLTEyN3QtMTQzLjUgLTQ0LjV0LTE0MCA1Ny41cS0xMiAtOSAtMTMgLTEwcS0xMDMgLTcxIC0yMjUgLTQ4LjV0LTE5MyAxMjYuNQ0KcS01MCA3MyAtNTMgMTY0cS04MyAxNCAtMTQyLjUgNzAuNXQtODAuNSAxMjh0LTIgMTUydDgxIDEzOC41cS0zNiA2MCAtMzggMTI4dDI0LjUgMTI1dDc5LjUgOTguNXQxMjEgNTAuNXEzMiA4NSA5OSAxNDh0MTQ2LjUgOTEuNXQxNjggMTd0MTU5LjUgLTY2LjVxNzIgMjEgMTQwIDE3LjV0MTI4LjUgLTM2dDEwNC41IC04MHQ2Ny41IC0xMTV0MTcuNSAtMTQwLjVxNTIgLTE2IDg3IC01N3Q0NS41IC04OXQtNS41IC05OS41dC01OCAtODcuNXoNCk00NTUgMTIyMnExNCAtMjAgOS41IC00NC41dC0yNC41IC0zOC41cS0xOSAtMTQgLTQzLjUgLTkuNXQtMzcuNSAyNC41cS0xNCAyMCAtOS41IDQ0LjV0MjQuNSAzOC41cTE5IDE0IDQzLjUgOS41dDM3LjUgLTI0LjV6TTYxNCAxNTAzcTQgLTE2IC01IC0zMC41dC0yNiAtMTguNXQtMzEgNS41dC0xOCAyNi41cS0zIDE3IDYuNSAzMXQyNS41IDE4cTE3IDQgMzEgLTUuNXQxNyAtMjYuNXpNMTgwMCA1NTVxNCAtMjAgLTYuNSAtMzd0LTMwLjUgLTIxDQpxLTE5IC00IC0zNiA2LjV0LTIxIDMwLjV0Ni41IDM3dDMwLjUgMjJxMjAgNCAzNi41IC03LjV0MjAuNSAtMzAuNXpNMTEzNiAxNDQ4cTE2IC0yNyA4LjUgLTU4LjV0LTM1LjUgLTQ3LjVxLTI3IC0xNiAtNTcuNSAtOC41dC00Ni41IDM0LjVxLTE2IDI4IC04LjUgNTl0MzQuNSA0OHQ1OCA5dDQ3IC0zNnpNMTg4MiA3OTJxNCAtMTUgLTQgLTI3LjV0LTIzIC0xNi41cS0xNSAtMyAtMjcuNSA1LjV0LTE1LjUgMjIuNXEtMyAxNSA1IDI4dDIzIDE2DQpxMTQgMyAyNi41IC01dDE1LjUgLTIzek0xNjkxIDEwMzNxMTUgLTIyIDEwLjUgLTQ5dC0yNi41IC00M3EtMjIgLTE1IC00OSAtMTB0LTQyIDI3dC0xMCA0OXQyNyA0M3Q0OC41IDExdDQxLjUgLTI4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFMSIgdW5pY29kZT0iJiN4ZjJlMTsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkUyIiB1bmljb2RlPSImI3hmMmUyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTMiIHVuaWNvZGU9IiYjeGYyZTM7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFNCIgdW5pY29kZT0iJiN4ZjJlNDsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkU1IiB1bmljb2RlPSImI3hmMmU1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTYiIHVuaWNvZGU9IiYjeGYyZTY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFNyIgdW5pY29kZT0iJiN4ZjJlNzsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjk4IiB1bmljb2RlPSImI3hmMmU4OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTkiIHVuaWNvZGU9IiYjeGYyZTk7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFQSIgdW5pY29kZT0iJiN4ZjJlYTsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkVCIiB1bmljb2RlPSImI3hmMmViOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRUMiIHVuaWNvZGU9IiYjeGYyZWM7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFRCIgdW5pY29kZT0iJiN4ZjJlZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkVFIiB1bmljb2RlPSImI3hmMmVlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imxlc3NlcXVhbCIgdW5pY29kZT0iJiN4ZjUwMDsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICA8L2ZvbnQ+DQo8L2RlZnM+PC9zdmc+DQo=\");\n\n//# sourceURL=webpack://WasmPlayer/./src/font-awesome-4.7.0/fonts/fontawesome-webfont.svg?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0":
|
||
/*!**********************************************************************!*\
|
||
!*** ./src/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0 ***!
|
||
\**********************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/ttf;base64,AAEAAAANAIAAAwBQRkZUTWu+R7kAAoaQAAAAHEdERUYC8AAEAAKGcAAAACBPUy8yiDJ6QAAAAVgAAABgY21hcAq/On8AAAyoAAAC8mdhc3D//wADAAKGaAAAAAhnbHlmj/euTQAAGqwAAky8aGVhZBCJ5S0AAADcAAAANmhoZWEPAwq1AAABFAAAACRobXR4RXkYhQAAAbgAAArwbG9jYQL1olwAAA+cAAALEG1heHADLAIcAAABOAAAACBuYW1l45eLrAACZ2gAAASGcG9zdK+Pm6EAAmvwAAAadQABAAAABAHLkM94WV8PPPUACwcAAAAAANQzzTIAAAAA1DPNMv///wAJAQYAAAAACAACAAEAAAAAAAEAAAYA/wAAAAkA/////wkBAAEAAAAAAAAAAAAAAAAAAAK1AAEAAALDAhkAJwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwZpAZAABQAABIwEMwAAAIYEjAQzAAACcwAAAYoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHlycwBAACD1AAYA/wAAAAYAAQAAAAABAAAAAAAAAAAAAAAgAAEDgABwAAAAAAJVAAABwAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAXQYAAAAGgAAABwAAAAcAAAAGgAAABoAAAAUAAAAHgAAABoAAAAcAAAAHAAAABwAAeQWAAG4GgAAABoAAAAYAAAAHAAAABgAAAAWAAAAGgAAaBgAAAAYAAAAHgAAyBoAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAEgAAABwAAQAaAAAADAAAABIAAAAaAAAAFgAAABwAAAAYAAAAHgAAABoAACgUAAAAGgAAAB4AAAAaAAAAFgAAABAAAAAcAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHgAAABgAAAAQAAAAGAAAABAAAAAcAAAAGgAAABoAAAAcAAAAEAAAABwAAAAaAAHoFgAAABgAAAAYAAAAGgAAABwAAAAQAAAAGAgABBQAAmgUAAFoGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAQAYAAAAGgAA1BoAANQcAAAAGAAAABgAADQWAAAAFgAAABoAAegYAAAAGAAAABwAAAAWAAAAHAAAABwAAAAcAABAFgAAABoAAAAcAAAAHAAAABgAAAAcAAFoHAABaB4AAAAaAAAAGgAAAB4AAAAMAAEAHAAAACAAAAAYAAAAGAAAABwAAAAcAAAAHgAAABwAAAAYAAAAGAAAAA4AAAAcAAAAGgAAABgAAAASAAAAHAAAABgAAAAaAAAAGAAAABoAAAAYAAAAFgAAABYAAAAUAAAAGAAAABoAALAQAAF8GAAAABoAAAAeAAAAFgAAABgAAAAcAAAAHAABABgAAAgcAAAAHAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAaAABUHAAAABYAABQcAAAAGAAAAB4AAAAaAABAHgAAABoAAcwcAAAEHAAAABYAABAYAAAAGAAAABgAAAAcAAAAHAAAPBwAAAAYAAAAGgAAABoAAGwcAAEAGAAAABgAAAAYAAAAJAAAAB4AAAAQAAAAEAAAAAoAAQAKAAAAGgAAABAAAAAQAAAAEAAAABwAAAAYAAAAGAAAABwAAKAcAAAAHAAAABwAAAAOAAAEHAAAABoAAAAcAAAAEAAAABwAAAAeAAAAHgAAABYAAAAWAAAAHAAAABwAAQAeAAAAFgAAABgAAAAWAAAAFgAAAB4AAQAcAAAAHgAAABoAAQAYAAAAGAAAABAAALQQAAA0EgABNBIAATQKAAC0CgAANBIAATQSAAE0HgAAAB4AAAASAAAADAAAABgAAAAaAAAAGgAAABwAAQAYAAAAHAAAABoAAAAaAAAAHgAAABwAAAAcAAAAGAAAABgAAAAYAAAAHgAAAB4AAAAcAAEAHAABABoAADQeAAC0HAAAABoAAAgWAAAIGgAAABAAAAAaAAAAEAABgAoAAAAKAAGIGAAAFBgAABQeAAAEGgAAABIAAAAWAAA0FAAAABoAAAAWAAAMGgAAkBwAAAAYAAAAGAAAABgAAAAYAAAAFgAAABwAADAcAAAAEgAAABgAAAAWAAAABgAAABgAAAAYAAAAHAAA2BgAAAAWAAAAEAAADBAAAAwYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAA0A4IAAAQDAAQFAAAABwAAAAUAADgGAAAABgAAAAaAACIGgAAiBwAAIgcAACIGAAAiBgAAIgaAAAAGgAAABgAAAAYAABsFgAAFBgAAAAcAAAAHAABABgAACwYAAAAGAAAABgAAAAWAAAAGAAAABAAARAYAAAADAAADAwAAAwcAAEAHAAAABYAAAAaAAAAFgAAABgAACwYAAAAGAAAABQAALAYAAAAFAAAABAAAAAYAAAAHAAAsBgAAAAcAAEAGgAAgB4D//wcAAAAGAAAABYAAAAUAABUGAAAABgAAAAYAAAAGAAAABoAAAAYAAAAEgAAABYAAAAiAAAAGgAAABgAAAAcAAAAHAAAACAAAAAkAAAAGAABtBgAAAAcAAAAGAAAABgAAAAeAAAAGAAAACAAAAAYAAAAH9gApBgAAAAYAAAAGAAAABwAAAAYAAAAFAABABoAAAAMAAEAHAAAACQAAAAgAAAAGAAAABwAAAAYAAAAHAAAQCAAAAAgAAAAGAAAgBgAAAAQAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAACcHAAAACAAAAAcAAAAHAAAgBwAAEwcAAAAGAAAABwAARAYAAAAFAAA5BwAAEggAAAAHAAAABwAAAAYAAAAGAAAABwAAPgUAABgGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAABkHAABkBgAAWQgAAAAIAAAqBwAAAAYAAAkHAAAnCQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACAAADggAAA4FgAAABgAAAAYAAAAHAAAABwAAAAcAAAAIAAAABwAAAAgAAAAHAAAABgAAAAgAAAAIAAAACQAAAAYAAAAIAAAABQAACwgAAAAGAAAABgAAAAYAAAAIAAAABgAAAAYAAAAIAAAACAAAAAYAAAAIAAAACAAAAAaAAAAGgAAACAAAAAgAABMGAAAACQAAAAYAAAAHAAAABQAAAgYAAAAFAAAABgAAAgcAAAAHAAACB4AAAQgAAAYGAAAABQAAAggAAAQFAAAABQAAAAcAAAAHAAAABgAAAAUAAAAGAAAABwAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAcAAAAGAAAACPgAVAkAAAAHAAAACQAAAAkAAAAJAAAACQAAAAkAAAAFAAAABAAAAAgAAAAJAAAABgAAAAYAAAAJAAAACQAAAAcAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAIAAAA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AAD8uAAA/QwAAP1gAAD9tAAA/ggAAP64AAD/CAABABQAAQW0AAEG9AABB/gAAQjQAAEJZAABChAAAQqYAAELGAABDAQAAQykAAENLAABDgAAAQ+IAAERLAABEaAAARLMAAETOAABE+QAARSQAAEVKAABFaQAARZYAAEW/AABF8AAARiEAAEZeAABGnwAARtUAAEc1AABHUAAAR3UAAEekAABHwQAAR98AAEgpAABIcAAASJ4AAEjCAABI2wAASQEAAEkzAABJ2gAASjoAAEqTAABLFQAAS5MAAExdAABMfQAATLgAAEzMAABM7AAATSoAAE1dAABNlQAATckAAE4DAABOUgAAToQAAE68AABO5AAATyEAAE82AABP1gAAUAcAAFBwAABQsgAAUPIAAFEnAABRUgAAUZIAAFHcAABSEgAAUl4AAFKIAABSuQAAUvUAAFMoAABTRgAAU5AAAFQQAABUaAAAVLgAAFTRAABVCAAAVVMAAFWYAABVtQAAVdYAAFYNAABWKAAAVoEAAFaiAABW2QAAVvgAAFcfAABXdgAAV6gAAFglAABYUgAAWG8AAFi8AABY1gAAWSsAAFldAABZmgAAWfcAAFotAABaVwAAWp4AAFuhAABcEAAAXPgAAF2EAABd8gAAXiQAAF5iAABeowAAXtoAAF8jAABfRwAAX2kAAF/XAABf5gAAX/4AAGAbAABgXQAAYKQAAGDNAABg6QAAYTIAAGFsAABhqQAAYh0AAGJjAABijgAAYs4AAGLoAABjkwAAY6oAAGPVAABkBAAAZEUAAGTkAABlBQAAZUEAAGV/AABlvgAAZegAAGZfAABmsgAAZwQAAGdCAABndgAAZ58AAGfGAABn+gAAaDEAAGiDAABozQAAaR4AAGlsAABpoAAAadMAAGoHAABqJAAAajsAAGo7AABqOwAAalYAAGqKAABqyAAAavMAAGsrAABragAAa4gAAGuiAABrwQAAa+oAAGwQAABsIgAAba8AAG3bAABuOAAAbl0AAG6BAABupQAAbskAAG7pAABvAgAAbx4AAG9TAABvkwAAb6kAAG/IAABwEgAAcEYAAHBxAABwwQAAcPkAAHEoAABxVQAAcYoAAHG7AAByAwAAckMAAHKiAABy6AAAcz4AAHOHAABz5QAAdBsAAHRZAAB0twAAdNQAAHT+AAB1YQAAdZ4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AgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwDSAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQCUBWdsYXNzBW11c2ljBnNlYXJjaAhlbnZlbG9wZQVoZWFydARzdGFyCnN0YXJfZW1wdHkEdXNlcgRmaWxtCHRoX2xhcmdlAnRoB3RoX2xpc3QCb2sGcmVtb3ZlB3pvb21faW4Iem9vbV9vdXQDb2ZmBnNpZ25hbANjb2cFdHJhc2gEaG9tZQhmaWxlX2FsdAR0aW1lBHJvYWQMZG93bmxvYWRfYWx0CGRvd25sb2FkBnVwbG9hZAVpbmJveAtwbGF5X2NpcmNsZQZyZXBlYXQHcmVmcmVzaAhsaXN0X2FsdARsb2NrBGZsYWcKaGVhZHBob25lcwp2b2x1bWVfb2ZmC3ZvbHVtZV9kb3duCXZvbHVtZV91cAZxcmNvZGUHYmFyY29kZQN0YWcEdGFncwRib29rCGJvb2ttYXJrBXByaW50BmNhbWVyYQRmb250BGJvbGQGaXRhbGljC3RleHRfaGVpZ2h0CnRleHRfd2lkdGgKYWxpZ25fbGVmdAxhbGlnbl9jZW50ZXILYWxpZ25fcmlnaHQNYWxpZ25fanVzdGlmeQRsaXN0C2luZGVudF9sZWZ0DGluZGVudF9yaWdodA5mYWNldGltZV92aWRlbwdwaWN0dXJlBnBlbmNpbAptYXBfbWFya2VyBmFkanVzdAR0aW50BGVkaXQFc2hhcmUFY2hlY2sEbW92ZQ1zdGVwX2JhY2t3YXJkDWZhc3RfYmFja3dhcmQIYmFja3dhcmQEcGxheQVwYXVzZQRzdG9wB2ZvcndhcmQMZmFzdF9mb3J3YXJkDHN0ZXBfZm9yd2FyZAVlamVjdAxjaGV2cm9uX2xlZnQNY2hldnJvbl9yaWdodAlwbHVzX3NpZ24KbWludXNfc2lnbgtyZW1vdmVfc2lnbgdva19zaWduDXF1ZXN0aW9uX3NpZ24JaW5mb19zaWduCnNjcmVlbnNob3QNcmVtb3ZlX2NpcmNsZQlva19jaXJjbGUKYmFuX2NpcmNsZQphcnJvd19sZWZ0C2Fycm93X3JpZ2h0CGFycm93X3VwCmFycm93X2Rvd24Jc2hhcmVfYWx0C3Jlc2l6ZV9mdWxsDHJlc2l6ZV9zbWFsbBBleGNsYW1hdGlvbl9zaWduBGdpZnQEbGVhZgRmaXJlCGV5ZV9vcGVuCWV5ZV9jbG9zZQx3YXJuaW5nX3NpZ24FcGxhbmUIY2FsZW5kYXIGcmFuZG9tB2NvbW1lbnQGbWFnbmV0CmNoZXZyb25fdXAMY2hldnJvbl9kb3duB3JldHdlZXQNc2hvcHBpbmdfY2FydAxmb2xkZXJfY2xvc2ULZm9sZGVyX29wZW4PcmVzaXplX3ZlcnRpY2FsEXJlc2l6ZV9ob3Jpem9udGFsCWJhcl9jaGFydAx0d2l0dGVyX3NpZ24NZmFjZWJvb2tfc2lnbgxjYW1lcmFfcmV0cm8Da2V5BGNvZ3MIY29tbWVudHMNdGh1bWJzX3VwX2FsdA90aHVtYnNfZG93bl9hbHQJc3Rhcl9oYWxmC2hlYXJ0X2VtcHR5B3NpZ25vdXQNbGlua2VkaW5fc2lnbgdwdXNocGluDWV4dGVybmFsX2xpbmsGc2lnbmluBnRyb3BoeQtnaXRodWJfc2lnbgp1cGxvYWRfYWx0BWxlbW9uBXBob25lC2NoZWNrX2VtcHR5DmJvb2ttYXJrX2VtcHR5CnBob25lX3NpZ24HdHdpdHRlcghmYWNlYm9vawZnaXRodWIGdW5sb2NrC2NyZWRpdF9jYXJkA3JzcwNoZGQIYnVsbGhvcm4EYmVsbAtjZXJ0aWZpY2F0ZQpoYW5kX3JpZ2h0CWhhbmRfbGVmdAdoYW5kX3VwCWhhbmRfZG93bhFjaXJjbGVfYXJyb3dfbGVmdBJjaXJjbGVfYXJyb3dfcmlnaHQPY2lyY2xlX2Fycm93X3VwEWNpcmNsZV9hcnJvd19kb3duBWdsb2JlBndyZW5jaAV0YXNrcwZmaWx0ZXIJYnJpZWZjYXNlCmZ1bGxzY3JlZW4FZ3JvdXAEbGluawVjbG91ZAZiZWFrZXIDY3V0BGNvcHkKcGFwZXJfY2xpcARzYXZlCnNpZ25fYmxhbmsHcmVvcmRlcgJ1bAJvbA1zdHJpa2V0aHJvdWdoCXVuZGVybGluZQV0YWJsZQVtYWdpYwV0cnVjawlwaW50ZXJlc3QOcGludGVyZXN0X3NpZ24QZ29vZ2xlX3BsdXNfc2lnbgtnb29nbGVfcGx1cwVtb25leQpjYXJldF9kb3duCGNhcmV0X3VwCmNhcmV0X2xlZnQLY2FyZXRfcmlnaHQHY29sdW1ucwRzb3J0CXNvcnRfZG93bgdzb3J0X3VwDGVudmVsb3BlX2FsdAhsaW5rZWRpbgR1bmRvBWxlZ2FsCWRhc2hib2FyZAtjb21tZW50X2FsdAxjb21tZW50c19hbHQEYm9sdAdzaXRlbWFwCHVtYnJlbGxhBXBhc3RlCmxpZ2h0X2J1bGIIZXhjaGFuZ2UOY2xvdWRfZG93bmxvYWQMY2xvdWRfdXBsb2FkB3VzZXJfbWQLc3RldGhvc2NvcGUIc3VpdGNhc2UIYmVsbF9hbHQGY29mZmVlBGZvb2QNZmlsZV90ZXh0X2FsdAhidWlsZGluZwhob3NwaXRhbAlhbWJ1bGFuY2UGbWVka2l0C2ZpZ2h0ZXJfamV0BGJlZXIGaF9zaWduBGYwZmURZG91YmxlX2FuZ2xlX2xlZnQSZG91YmxlX2FuZ2xlX3JpZ2h0D2RvdWJsZV9hbmdsZV91cBFkb3VibGVfYW5nbGVfZG93bgphbmdsZV9sZWZ0C2FuZ2xlX3JpZ2h0CGFuZ2xlX3VwCmFuZ2xlX2Rvd24HZGVza3RvcAZsYXB0b3AGdGFibGV0DG1vYmlsZV9waG9uZQxjaXJjbGVfYmxhbmsKcXVvdGVfbGVmdAtxdW90ZV9yaWdodAdzcGlubmVyBmNpcmNsZQVyZXBseQpnaXRodWJfYWx0EGZvbGRlcl9jbG9zZV9hbHQPZm9sZGVyX29wZW5fYWx0CmV4cGFuZF9hbHQMY29sbGFwc2VfYWx0BXNtaWxlBWZyb3duA21laAdnYW1lcGFkCGtleWJvYXJkCGZsYWdfYWx0DmZsYWdfY2hlY2tlcmVkCHRlcm1pbmFsBGNvZGUJcmVwbHlfYWxsD3N0YXJfaGFsZl9lbXB0eQ5sb2NhdGlvbl9hcnJvdwRjcm9wCWNvZGVfZm9yawZ1bmxpbmsEXzI3OQtleGNsYW1hdGlvbgtzdXBlcnNjcmlwdAlzdWJzY3JpcHQEXzI4MwxwdXp6bGVfcGllY2UKbWljcm9waG9uZQ5taWNyb3Bob25lX29mZgZzaGllbGQOY2FsZW5kYXJfZW1wdHkRZmlyZV9leHRpbmd1aXNoZXIGcm9ja2V0Bm1heGNkbhFjaGV2cm9uX3NpZ25fbGVmdBJjaGV2cm9uX3NpZ25fcmlnaHQPY2hldnJvbl9zaWduX3VwEWNoZXZyb25fc2lnbl9kb3duBWh0bWw1BGNzczMGYW5jaG9yCnVubG9ja19hbHQIYnVsbHNleWUTZWxsaXBzaXNfaG9yaXpvbnRhbBFlbGxpcHNpc192ZXJ0aWNhbARfMzAzCXBsYXlfc2lnbgZ0aWNrZXQObWludXNfc2lnbl9hbHQLY2hlY2tfbWludXMIbGV2ZWxfdXAKbGV2ZWxfZG93bgpjaGVja19zaWduCWVkaXRfc2lnbgRfMzEyCnNoYXJlX3NpZ24HY29tcGFzcwhjb2xsYXBzZQxjb2xsYXBzZV90b3AEXzMxNwNldXIDZ2JwA3VzZANpbnIDanB5A3J1YgNrcncDYnRjBGZpbGUJZmlsZV90ZXh0EHNvcnRfYnlfYWxwaGFiZXQEXzMyORJzb3J0X2J5X2F0dHJpYnV0ZXMWc29ydF9ieV9hdHRyaWJ1dGVzX2FsdA1zb3J0X2J5X29yZGVyEXNvcnRfYnlfb3JkZXJfYWx0BF8zMzQEXzMzNQx5b3V0dWJlX3NpZ24HeW91dHViZQR4aW5nCXhpbmdfc2lnbgx5b3V0dWJlX3BsYXkHZHJvcGJveA1zdGFja2V4Y2hhbmdlCWluc3RhZ3JhbQZmbGlja3IDYWRuBGYxNzEOYml0YnVja2V0X3NpZ24GdHVtYmxyC3R1bWJscl9zaWduD2xvbmdfYXJyb3dfZG93bg1sb25nX2Fycm93X3VwD2xvbmdfYXJyb3dfbGVmdBBsb25nX2Fycm93X3JpZ2h0B3dpbmRvd3MHYW5kcm9pZAVsaW51eAdkcmliYmxlBXNreXBlCmZvdXJzcXVhcmUGdHJlbGxvBmZlbWFsZQRtYWxlBmdpdHRpcANzdW4EXzM2NgdhcmNoaXZlA2J1ZwJ2awV3ZWlibwZyZW5yZW4EXzM3Mg5zdGFja19leGNoYW5nZQRfMzc0FWFycm93X2NpcmNsZV9hbHRfbGVmdARfMzc2DmRvdF9jaXJjbGVfYWx0BF8zNzgMdmltZW9fc3F1YXJlBF8zODANcGx1c19zcXVhcmVfbwRfMzgyBF8zODMEXzM4NARfMzg1BF8zODYEXzM4NwRfMzg4BF8zODkHdW5pRjFBMARmMWExBF8zOTIEXzM5MwRmMWE0BF8zOTUEXzM5NgRfMzk3BF8zOTgEXzM5OQRfNDAwBGYxYWIEXzQwMgRfNDAzBF80MDQHdW5pRjFCMQRfNDA2BF80MDcEXzQwOARfNDA5BF80MTAEXzQxMQRfNDEyBF80MTMEXzQxNARfNDE1BF80MTYEXzQxNwRfNDE4BF80MTkHdW5pRjFDMAd1bmlGMUMxBF80MjIEXzQyMwRfNDI0BF80MjUEXzQyNgRfNDI3BF80MjgEXzQyOQRfNDMwBF80MzEEXzQzMgRfNDMzBF80MzQHdW5pRjFEMAd1bmlGMUQxB3VuaUYxRDIEXzQzOARfNDM5B3VuaUYxRDUHdW5pRjFENgd1bmlGMUQ3BF80NDMEXzQ0NARfNDQ1BF80NDYEXzQ0NwRfNDQ4BF80NDkHdW5pRjFFMARfNDUxBF80NTIEXzQ1MwRfNDU0BF80NTUEXzQ1NgRfNDU3BF80NTgEXzQ1OQRfNDYwBF80NjEEXzQ2MgRfNDYzBF80NjQHdW5pRjFGMARfNDY2BF80NjcEZjFmMwRfNDY5BF80NzAEXzQ3MQRfNDcyBF80NzMEXzQ3NARfNDc1BF80NzYEZjFmYwRfNDc4BF80NzkEXzQ4MARfNDgxBF80ODIEXzQ4MwRfNDg0BF80ODUEXzQ4NgRfNDg3BF80ODgEXzQ4OQRfNDkwBF80OTEEXzQ5MgRfNDkzBF80OTQEZjIxMARfNDk2BGYyMTIEXzQ5OARfNDk5BF81MDAEXzUwMQRfNTAyBF81MDMEXzUwNARfNTA1BF81MDYEXzUwNwRfNTA4BF81MDkFdmVudXMEXzUxMQRfNTEyBF81MTMEXzUxNARfNTE1BF81MTYEXzUxNwRfNTE4BF81MTkEXzUyMARfNTIxBF81MjIEXzUyMwRfNTI0BF81MjUEXzUyNgRfNTI3BF81MjgEXzUyOQRfNTMwBF81MzEEXzUzMgRfNTMzBF81MzQEXzUzNQRfNTM2BF81MzcEXzUzOARfNTM5BF81NDAEXzU0MQRfNTQyBF81NDMEXzU0NARfNTQ1BF81NDYEXzU0NwRfNTQ4BF81NDkEXzU1MARfNTUxBF81NTIEXzU1MwRfNTU0BF81NTUEXzU1NgRfNTU3BF81NTgEXzU1OQRfNTYwBF81NjEEXzU2MgRfNTYzBF81NjQEXzU2NQRfNTY2BF81NjcEXzU2OARfNTY5BGYyNjAEZjI2MQRfNTcyBGYyNjMEXzU3NARfNTc1BF81NzYEXzU3NwRfNTc4BF81NzkEXzU4MARfNTgxBF81ODIEXzU4MwRfNTg0BF81ODUEXzU4NgRfNTg3BF81ODgEXzU4OQRfNTkwBF81OTEEXzU5MgRfNTkzBF81OTQEXzU5NQRfNTk2BF81OTcEXzU5OARmMjdlB3VuaUYyODAHdW5pRjI4MQRfNjAyBF82MDMEXzYwNAd1bmlGMjg1B3VuaUYyODYEXzYwNwRfNjA4BF82MDkEXzYxMARfNjExBF82MTIEXzYxMwRfNjE0BF82MTUEXzYxNgRfNjE3BF82MTgEXzYxOQRfNjIwBF82MjEEXzYyMgRfNjIzBF82MjQEXzYyNQRfNjI2BF82MjcEXzYyOARfNjI5B3VuaUYyQTAHdW5pRjJBMQd1bmlGMkEyB3VuaUYyQTMHdW5pRjJBNAd1bmlGMkE1B3VuaUYyQTYHdW5pRjJBNwd1bmlGMkE4B3VuaUYyQTkHdW5pRjJBQQd1bmlGMkFCB3VuaUYyQUMHdW5pRjJBRAd1bmlGMkFFB3VuaUYyQjAHdW5pRjJCMQd1bmlGMkIyB3VuaUYyQjMHdW5pRjJCNAd1bmlGMkI1B3VuaUYyQjYHdW5pRjJCNwd1bmlGMkI4B3VuaUYyQjkHdW5pRjJCQQd1bmlGMkJCB3VuaUYyQkMHdW5pRjJCRAd1bmlGMkJFB3VuaUYyQzAHdW5pRjJDMQd1bmlGMkMyB3VuaUYyQzMHdW5pRjJDNAd1bmlGMkM1B3VuaUYyQzYHdW5pRjJDNwd1bmlGMkM4B3VuaUYyQzkHdW5pRjJDQQd1bmlGMkNCB3VuaUYyQ0MHdW5pRjJDRAd1bmlGMkNFB3VuaUYyRDAHdW5pRjJEMQd1bmlGMkQyB3VuaUYyRDMHdW5pRjJENAd1bmlGMkQ1B3VuaUYyRDYHdW5pRjJENwd1bmlGMkQ4B3VuaUYyRDkHdW5pRjJEQQd1bmlGMkRCB3VuaUYyREMHdW5pRjJERAd1bmlGMkRFB3VuaUYyRTAHdW5pRjJFMQd1bmlGMkUyB3VuaUYyRTMHdW5pRjJFNAd1bmlGMkU1B3VuaUYyRTYHdW5pRjJFNwRfNjk4B3VuaUYyRTkHdW5pRjJFQQd1bmlGMkVCB3VuaUYyRUMHdW5pRjJFRAd1bmlGMkVFAAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAQLCAAEABAAAAAIAAAAAAAEAAAAAzD2izwAAAADLTzwwAAAAANQxaLk=\");\n\n//# sourceURL=webpack://WasmPlayer/./src/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0":
|
||
/*!************************************************************************!*\
|
||
!*** ./src/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0 ***!
|
||
\************************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/woff2;base64,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\");\n\n//# sourceURL=webpack://WasmPlayer/./src/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/font-awesome-4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0":
|
||
/*!***********************************************************************!*\
|
||
!*** ./src/font-awesome-4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0 ***!
|
||
\***********************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/woff;base64,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\");\n\n//# sourceURL=webpack://WasmPlayer/./src/font-awesome-4.7.0/fonts/fontawesome-webfont.woff?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/icon/iconfont.css":
|
||
/*!*******************************!*\
|
||
!*** ./src/icon/iconfont.css ***!
|
||
\*******************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var api = __webpack_require__(/*! ../../node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./iconfont.css */ \"./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/icon/iconfont.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack://WasmPlayer/./src/icon/iconfont.css?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/icon/iconfont.eot?t=1595495774403":
|
||
/*!***********************************************!*\
|
||
!*** ./src/icon/iconfont.eot?t=1595495774403 ***!
|
||
\***********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:application/vnd.ms-fontobject;base64,XAwAALQLAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATUvxfgAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzI8e0mmAAABfAAAAFZjbWFwUEDxXAAAAfQAAAH0Z2x5Zt5S+KkAAAP8AAAEzGhlYWQZnTC7AAAA4AAAADZoaGVhB90DiQAAALwAAAAkaG10eCAA//8AAAHUAAAAIGxvY2EGOARyAAAD6AAAABJtYXhwAR0ArgAAARgAAAAgbmFtZT5U/n0AAAjIAAACbXBvc3RMdk7OAAALOAAAAHsAAQAAA4D/gABcBAD//wAABAAAAQAAAAAAAAAAAAAAAAAAAAgAAQAAAAEAAH7xS01fDzz1AAsEAAAAAADbP3ZeAAAAANs/dl7////ABAADQgAAAAgAAgAAAAAAAAABAAAACACiAAsAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQQAAZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA5gXntAOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAQA//8EAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAFAAAAAwAAACwAAAAEAAABkAABAAAAAACKAAMAAQAAACwAAwAKAAABkAAEAF4AAAAQABAAAwAA5gXmEuZV5lfmiuev57T//wAA5gXmEuZV5lfmiuev57T//wAAAAAAAAAAAAAAAAAAAAEAEAAQABAAEAAQABAAEAAAAAYABAAHAAUAAwACAAEAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAGQAAAAAAAAABwAA5gUAAOYFAAAABgAA5hIAAOYSAAAABAAA5lUAAOZVAAAABwAA5lcAAOZXAAAABQAA5ooAAOaKAAAAAwAA568AAOevAAAAAgAA57QAAOe0AAAAAQAAAAAA4gEqATgBWAG4AfACZgAAAAv//wAABAABzQAUABsANQBNAF8AZQBtAHMAewCNAKEAAAEVIwczBxQGIyc3MzUjNz4BOwEeATczHgEPASM/ATMeARUHFAYHBiYvAiYnByM3ND4BFh8BNzEjBzM3IzczBxQGKwEiJjU3NDY7AR4BNxUjBzMHFAYrATczNyM3NDYzFyM3MzIWDwEjFTMHIzclIzczMhYPASMHMwcjNyUHBisBBhQVBwYmPQE2OwEyFg8BBiY9ATQrAS4BPwE2MxcyHQEUARNhAWMCBwZwAWVkAgEGBl8GCRIKBgkBAxmPAwgHCQMEAwYMBQosCwIDGAMIBwkERLJuA1cBPQFUAgYFcgMHAwcGawcIjGMBYwIHBnABZAFkAgcG9XgBZwcJGAFIYwF8AgEDeAFnBwkYAUgBYwF7Av0ZEAIBGgESAgUBBj0DAlEMAwcGLAQDAgwCAzgGAZcCEi8ICAIVEi4HCQELDAELCFMaTgEMCUUEBwEDAwQJLgsFS1kGCAMCBEs3PBQUMAUIBwlHBgoBDA0VEy8HCRYULQcJFRUMHBUTFz8TFQwcFRMXP0ASAgRABRUDAwNxBwaEDQMEBW0HAQgEDgMBB30DAAAAAgAA/9QDwwM6ABIAKAAAAQcGKwEGEA8BBiYnEz4BNwUeAQEHBiYnETYmJwUuAT8BNjMFHgEXAxQDt10HCZsFA00MHQEBARYNAVESC/4tOBIhAgEFF/77FxAPRAoPATIOEwEBAwRKCBv+gR95DQ0UAnwSFQEBAiL9HUoSFBwCfBIfAgEBHRRJDAEBFxH9PhEAAQAAAAADKQLgAAIAAAERAQEAAikC4P1AAWAAAAEAAP/AA74DQgAPAAATIR4BFxEOAQchLgEnET4B9AIXTGUBAWVM/elMZQICZQNBAmVM/eZMZQICZUwCGkxlAAAEAAD/wAPAA0EAEAAhADMARAAAEzMyNj0BNCYiBgcVIyIGFBYTMxUeATI2PQE0JisBIgYUFgUyNjc1MzI2NCYrASIGHQEUFhMzPgE0JisBNS4BIgYdARQWYO8QFBIbEgHTDhISDtMBEhsSFBDvDhISAlsNEgHTDhISDu8QFBIS7w4SEg7TARIbEhQCDRUP7w4SEg7TEhwS/qfUDRISDfAPFRIcEvMSDtMSHBIVD+8OEgJLARIbEtQNExMN8A8UAAACAAAAAANgAuAADwAfAAABMx4BFxEOAQcjLgEnET4BJTMeARcRDgEHIy4BJxE+AQKogBgfAQEfGIAYHwEBH/5IgBgfAQEfGIAYHwEBHwLgAR8Y/a8YHwEBHxgCURgfAQEfGP2vGB8BAR8YAlEYHwAABAAA/9UDqwMrABMAJwA7AE8AADcVHgEXMz4BNCYnIyImPQEuASIGATM+ATc1LgEiBgcVFAYrAQ4BFBYBNS4BJyMOARQWFzMyFh0BHgEyNgEjDgEHFR4BMjY3NTQ2OwE+ATQmVQJINoASGRkSgBIYARgkGAJVgDZIAgEYJBgBGBKAEhkZARICSDaAEhkZEoASGAEYJBj9q4A2SAIBGCQYARgSgBIZGdWANkgCARgkGAEYEoASGRn+7gJINoASGRkSgBIYARgkGAJVgDZIAgEYJBgBGBKAEhkZARICSDaAEhkZEoASGAEYJBgAAAAAABIA3gABAAAAAAAAABUAAAABAAAAAAABAAgAFQABAAAAAAACAAcAHQABAAAAAAADAAgAJAABAAAAAAAEAAgALAABAAAAAAAFAAsANAABAAAAAAAGAAgAPwABAAAAAAAKACsARwABAAAAAAALABMAcgADAAEECQAAACoAhQADAAEECQABABAArwADAAEECQACAA4AvwADAAEECQADABAAzQADAAEECQAEABAA3QADAAEECQAFABYA7QADAAEECQAGABABAwADAAEECQAKAFYBEwADAAEECQALACYBaQpDcmVhdGVkIGJ5IGljb25mb250Cmljb25mb250UmVndWxhcmljb25mb250aWNvbmZvbnRWZXJzaW9uIDEuMGljb25mb250R2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20ACgBDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AAoAaQBjAG8AbgBmAG8AbgB0AFIAZQBnAHUAbABhAHIAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AZgBvAG4AdABWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbgBmAG8AbgB0AEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBAgEDAQQBBQEGAQcBCAEJAApxaW5neGlMT0dPCnFpbmd4aWxvZ28EYWkyMwhpY29uc3RvcBBleGl0LWZ1bGwtc2NyZWVuB3phbnRpbmcIcXVhbnBpbmcAAAA=\");\n\n//# sourceURL=webpack://WasmPlayer/./src/icon/iconfont.eot?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/icon/iconfont.svg?t=1595495774403":
|
||
/*!***********************************************!*\
|
||
!*** ./src/icon/iconfont.svg?t=1595495774403 ***!
|
||
\***********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiA+DQo8IS0tDQoyMDEzLTktMzA6IENyZWF0ZWQuDQotLT4NCjxzdmc+DQo8bWV0YWRhdGE+DQpDcmVhdGVkIGJ5IGljb25mb250DQo8L21ldGFkYXRhPg0KPGRlZnM+DQoNCjxmb250IGlkPSJpY29uZm9udCIgaG9yaXotYWR2LXg9IjEwMjQiID4NCiAgPGZvbnQtZmFjZQ0KICAgIGZvbnQtZmFtaWx5PSJpY29uZm9udCINCiAgICBmb250LXdlaWdodD0iNTAwIg0KICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIg0KICAgIHVuaXRzLXBlci1lbT0iMTAyNCINCiAgICBhc2NlbnQ9Ijg5NiINCiAgICBkZXNjZW50PSItMTI4Ig0KICAvPg0KICAgIDxtaXNzaW5nLWdseXBoIC8+DQogICAgDQogICAgPGdseXBoIGdseXBoLW5hbWU9InFpbmd4aUxPR08iIHVuaWNvZGU9IiYjNTkzMTY7IiBkPSJNMjc1LjQgNDA3bC0wLjEtMS42aC05Ny4ybC0wLjgtMTguN2g5OWwtMS45LTQ2LjhjLTAuMi01LjEtMS40LTkuMS0zLjYtMTItMi4yLTIuNy01LjQtNC05LjUtNGwtMTEyIDEuOSAwLjkgMjEuM2gxMDAuNWwwLjcgMTguMWgtMTAwbDEuOSA0NS41YzAuMiA0LjYgMS40IDguNCAzLjYgMTEuNCAyLjIgMy4xIDUuNCA0LjYgOS42IDQuNmg5NC40YzguNCAwIDE0LjktOC44IDE0LjUtMTkuN3pNMjk0LjIgNDI2LjdoOS44YzguNCAwIDE0LjgtOC44IDE0LjQtMTkuNEwzMTUgMzI0aC0yNWw0LjIgMTAyLjd6TTQzMi41IDM1MC4xbDMuMiA3Ny41aDguNGM5LjIgMCAxNi4yLTkuNSAxNS44LTIxLjNsLTIuOC02OS41Yy0wLjEtMi42LTAuOS01LTIuNC03LjQtMS4zLTItMi44LTMuNi00LjMtNC42LTQuNC0xLjgtOC42LTIuMi0xMi41LTEuMy00LjEgMC43LTcuOSAyLjUtMTEuMyA1LjMtMy4xIDMuMS02LjMgNi4yLTkuNSA5LjMtMy4yIDMuMS02LjYgNi41LTEwLjEgMTAuMi0zLjYgMy43LTcuMyA3LjctMTEuMyAxMS45LTguMSA4LjQtMTUuNyAxNi40LTIzIDI0LTcuNCA3LjUtMTEuNyAxMi42LTEyLjkgMTUuNGwtMy4xLTc0LjhoLTI0bDMuNyA4OS4zYzAuMSAzLjUgMSA3LjcgMy41IDEwLjQgMi43IDIuNyA1LjIgNC4yIDcuOSA1LjEgMy44IDEuMiAxMC45IDEgMTYuMS00LjhsNjguNi03NC43ek02MTAuMyA0MDUuNHYtMC4ySDQ5OS45bC0yLjUtNjBoODYuNWwwLjggMjBoLTYwLjVsMC44IDIwaDg0LjRsLTItNDhjLTAuMy03LjMtNS4yLTEzLjMtMTAuOS0xMy4zSDQ4MS45Yy0yIDAtNC4yIDEuMS02LjYgMy40LTIuMyAyLjItMy40IDYuNS0zLjEgMTIuNmwyLjkgNzAuOGMwLjIgNC41IDEuNCA4LjIgMy42IDExLjIgMi4yIDMuMiA1LjQgNC44IDkuNiA0LjhoMTA2LjJjOS4yIDAgMTYuMi05LjUgMTUuOC0yMS4zek03NTAuNCA0MjcuMmwtMC45LTIxLjNoLTk4LjlsLTAuOC0xOC43aDk5bC0xLjktNDYuOGMtMC4yLTUuMS0xLjQtOS4xLTMuNi0xMi0yLjItMi43LTUuNC00LTkuNS00SDYyMi4zbDAuOSAyMS4zaDEwMGwwLjggMjBINjI0bDEuOSA0NS41YzAuMiA0LjYgMS40IDguNCAzLjYgMTEuNCAyLjIgMy4xIDUuNCA0LjYgOS42IDQuNmgxMTEuM3pNODgzLjcgNDA1LjlINzY0bDAuOSAyMS4zSDg2OGM5LjIgMCAxNi4yLTkuNSAxNS43LTIxLjN6TTg2MC4xIDM4Ny4ybC0wLjktMjEuNWgtNzEuOGwtMC44LTE4LjZoOTlsLTAuOS0yMi43aC0xMjRsMi41IDYyLjh6TTEwMjEuNSA0MDUuOUg5MDEuOGwwLjkgMjEuM2gxMDMuMWM5LjIgMCAxNi4yLTkuNSAxNS43LTIxLjN6TTk5Ny45IDM4Ny4ybC0wLjktMjEuNWgtNzEuOWwtMC43LTE4LjZoOTlsLTEtMjIuN0g4OTguNWwyLjUgNjIuOHpNMTU4LjIgNDUxLjNsLTE2LjUtMTguNmMtMC44LTAuOS0xLjktMS40LTMtMS40SDExM2MtMS4yIDAtMC41LTcyLjEtMS4zLTczLjJsLTE3LjMtMjEuNGMtMi43LTMuNC03LjUtMS4xLTcuNSAzLjZsMC4xIDExM2MwLjEgNC4yIDMuNCA3IDYuNSA3bDYxLjgtMC4xYzMuOSAwLjEgNS44LTUuNyAyLjktOC45ek03OSAzMjIuNGwtMTEuNy0xMy4xYy0zLjktNC40LTEwLjMtMS0xMC4zIDUuNGwwLjQgMTA5LjVjMCA0LTIuNyA3LjMtNi4xIDcuM2wtNDQuNi0wLjFjLTUuNCAwLTguMSA3LjctNC40IDEyLjNsMTIuMSAxNC44YzEuMiAxLjQgMi43IDIuMiA0LjQgMi4ybDU2LjItMC4zYzMuNCAwIDYuMS0zLjMgNi4xLTcuM0w4MSAzMjcuN2MwLTItMC43LTMuOS0yLTUuM3oiICBob3Jpei1hZHYteD0iMTAyNCIgLz4NCg0KICAgIA0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxaW5neGlsb2dvIiB1bmljb2RlPSImIzU5MzExOyIgZD0iTTk1MS4yIDc3Mi40bC05Mi44LTc0LjVjLTQuNS01LjEtMTAuNS04LTE2LjgtOEg2ODYuN2MtNi43IDAtMi42LTQzNS4xLTcuNC00NDEuM2wtNzcuMS0xMjAuNGMtMTUuMi0xOS00Mi4xLTYuMS00Mi4xIDIwLjJsMC44IDYzNS41YzAuNiAyMy4zIDE4LjkgMzkuNiAzNi4zIDM5LjZsMzM3LjItMC42YzIyLjItMC4xIDMyLjktMzIuMyAxNi44LTUwLjV6TTQ5NiA0Ny42bC01NS44LTczLjhjLTIyLTI0LjctNTMtNS45LTUyLjggMzAuMmwtMC44IDYzNS41YzAuMiAyMi44IDYuNCA1MC45LTI2LjMgNTEuM2wtMjYwLjgtMC41Yy0zMC4zLTAuMS00NS44IDIzLjUtMjQuNyA0OS40TDE0Mi43IDgxM2M2LjUgOCAxNS40IDEyLjUgMjQuOCAxMi40bDMwNi4xLTEuN2MxOC45LTAuMSAzNC4xLTE4LjQgMzQuMS00MC45bC0wLjgtNzA1LjRjLTAuMS0xMS4zLTQtMjIuMS0xMC45LTI5Ljh6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+DQoNCiAgICANCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYWkyMyIgdW5pY29kZT0iJiM1OTAxODsiIGQ9Ik0yNTYuMDc5ODE4IDczNS42MzQ2MTYgMjU2LjA3OTgxOCAzMi4zNjY0MDggODA4LjY0OTgxNSAzODQuMDE2MzczWiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPg0KDQogICAgDQogICAgPGdseXBoIGdseXBoLW5hbWU9Imljb25zdG9wIiB1bmljb2RlPSImIzU4ODk4OyIgZD0iTTI0My42MTEzNDQgODMzLjQwMjMxM2w1MzUuNDAzMDEzIDBjOTguNTY1ODc2IDAgMTc4LjQ2NDYwMS04MC4yNjUwNjggMTc4LjQ2NDYwMS0xNzkuMjgzMjQ2bDAtNTM3Ljg0OTczOGMwLTk5LjAwODk2OC03OS44OTg3MjUtMTc5LjI4MzI0Ni0xNzguNDY0NjAxLTE3OS4yODMyNDZMMjQzLjYxMTM0NC02My4wMTM5MTdjLTk4LjU1NjY2NyAwLTE3OC40NTUzOTEgODAuMjc0Mjc4LTE3OC40NTUzOTEgMTc5LjI4MzI0NmwwIDUzNy44NDk3MzhDNjUuMTU1OTUyIDc1My4xMzcyNDUgMTQ1LjA1NDY3NyA4MzMuNDAyMzEzIDI0My42MTEzNDQgODMzLjQwMjMxM3oiICBob3Jpei1hZHYteD0iMTAyNCIgLz4NCg0KICAgIA0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJleGl0LWZ1bGwtc2NyZWVuIiB1bmljb2RlPSImIzU4OTY3OyIgZD0iTTk1Ljk0NCA1MjQuOTE4aDIzOS40ODdjMTkuODUxIDAgMzYgMTYuMTQ5IDM2IDM2djIzOS40ODhjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzJ2LTIxMS40ODhoLTIxMS40ODdjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMiAwLTE3LjY3MiAxNC4zMjctMzIgMzItMzJ6TTk1Ljk0NCAxNzkuOTg0aDIxMS40ODd2LTIxMS40ODdjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYyMzkuNDg3YzAgMTkuODUxLTE2LjE0OSAzNi0zNiAzNmgtMjM5LjQ4N2MtMTcuNjczIDAtMzItMTQuMzI3LTMyLTMyczE0LjMyNy0zMiAzMi0zMnpNNjg0LjUxMy02My40MDJjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjIxMS40ODdoMjExLjQ4N2MxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJzLTE0LjMyNyAzMi0zMiAzMmgtMjM5LjQ4N2MtMTkuODUxIDAtMzYtMTYuMTQ5LTM2LTM2di0yMzkuNDg3YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnpNNjg4LjUxMyA1MjQuMzYxaDIzOS40ODdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMycy0xNC4zMjcgMzItMzIgMzJoLTIxMS40ODd2MjExLjQ4OGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJzLTMyLTE0LjMyNy0zMi0zMnYtMjM5LjQ4OGMwLTE5Ljg1IDE2LjE0OS0zNiAzNi0zNnoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4NCg0KICAgIA0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ6YW50aW5nIiB1bmljb2RlPSImIzU4ODg1OyIgZD0iTTY4MCA3MzZoMTI4YzMwLjkyOCAwIDU2LTI1LjA3MiA1Ni01NnYtNTkzYzAtMzAuOTI4LTI1LjA3Mi01Ni01Ni01Nkg2ODBjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NlY2ODBjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2eiBtLTQ2NCAwaDEyOGMzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU5M2MwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZIMjE2Yy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZWNjgwYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4NCg0KICAgIA0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxdWFucGluZyIgdW5pY29kZT0iJiM1ODk2NTsiIGQ9Ik04NS4zMzMzMzMgMjEzLjMzMzMzM3YtMTI4YTEyOCAxMjggMCAwIDEgMTI4LTEyOGgxMjhhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMSAwIDg1LjMzMzMzNEgyMTMuMzMzMzMzYTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtNDIuNjY2NjY2IDQyLjY2NjY2NnYxMjhhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMS04NS4zMzMzMzQgMHogbTU5Ny4zMzMzMzQtMjU2aDEyOGExMjggMTI4IDAgMCAxIDEyOCAxMjh2MTI4YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDEtODUuMzMzMzM0IDB2LTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTQyLjY2NjY2Ni00Mi42NjY2NjZoLTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAtODUuMzMzMzM0eiBtMjU2IDU5Ny4zMzMzMzRWNjgyLjY2NjY2N2ExMjggMTI4IDAgMCAxLTEyOCAxMjhoLTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAtODUuMzMzMzM0aDEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDQyLjY2NjY2Ni00Mi42NjY2NjZ2LTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDg1LjMzMzMzNCAwek0zNDEuMzMzMzMzIDgxMC42NjY2NjdIMjEzLjMzMzMzM2ExMjggMTI4IDAgMCAxLTEyOC0xMjh2LTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDg1LjMzMzMzNCAwVjY4Mi42NjY2NjdhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMCA0Mi42NjY2NjYgNDIuNjY2NjY2aDEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAgODUuMzMzMzM0eiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPg0KDQogICAgDQoNCg0KICA8L2ZvbnQ+DQo8L2RlZnM+PC9zdmc+DQo=\");\n\n//# sourceURL=webpack://WasmPlayer/./src/icon/iconfont.svg?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/icon/iconfont.ttf?t=1595495774403":
|
||
/*!***********************************************!*\
|
||
!*** ./src/icon/iconfont.ttf?t=1595495774403 ***!
|
||
\***********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/ttf;base64,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\");\n\n//# sourceURL=webpack://WasmPlayer/./src/icon/iconfont.ttf?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/icon/iconfont.woff?t=1595495774403":
|
||
/*!************************************************!*\
|
||
!*** ./src/icon/iconfont.woff?t=1595495774403 ***!
|
||
\************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/woff;base64,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\");\n\n//# sourceURL=webpack://WasmPlayer/./src/icon/iconfont.woff?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/range.css":
|
||
/*!***********************!*\
|
||
!*** ./src/range.css ***!
|
||
\***********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var api = __webpack_require__(/*! ../node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/_style-loader@1.2.1@style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./range.css */ \"./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/range.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack://WasmPlayer/./src/range.css?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ 0:
|
||
/*!**********************!*\
|
||
!*** util (ignored) ***!
|
||
\**********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/* (ignored) */\n\n//# sourceURL=webpack://WasmPlayer/util_(ignored)?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ 1:
|
||
/*!**********************!*\
|
||
!*** util (ignored) ***!
|
||
\**********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/* (ignored) */\n\n//# sourceURL=webpack://WasmPlayer/util_(ignored)?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ 2:
|
||
/*!**********************!*\
|
||
!*** util (ignored) ***!
|
||
\**********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/* (ignored) */\n\n//# sourceURL=webpack://WasmPlayer/util_(ignored)?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ 3:
|
||
/*!**********************!*\
|
||
!*** util (ignored) ***!
|
||
\**********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/* (ignored) */\n\n//# sourceURL=webpack://WasmPlayer/util_(ignored)?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ 4:
|
||
/*!************************!*\
|
||
!*** buffer (ignored) ***!
|
||
\************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/* (ignored) */\n\n//# sourceURL=webpack://WasmPlayer/buffer_(ignored)?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ 5:
|
||
/*!************************!*\
|
||
!*** crypto (ignored) ***!
|
||
\************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/* (ignored) */\n\n//# sourceURL=webpack://WasmPlayer/crypto_(ignored)?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ 6:
|
||
/*!************************!*\
|
||
!*** buffer (ignored) ***!
|
||
\************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/* (ignored) */\n\n//# sourceURL=webpack://WasmPlayer/buffer_(ignored)?");
|
||
|
||
/***/ })
|
||
|
||
/******/ })["default"];
|
||
}); |